Both your list and your comments look good, generally, but I have to wonder about your mention of logic programming.
I think logic programming has a lot to offer the world, in theory, but in practice it seems to be pretty much dead. True, there is probably more going on with Prolog now than, say, a decade ago. But widespread use is not happening, nor is inclusion of logic-programming features into other languages. Further, I don't see this changing in any truly significant way in the near future.
Apparently, you do see it changing. Would you care to comment on that?
I will make some heretical statements. I think unit-testing sucks. I think current type systems are overrated.
Logic programming + meta-programming as well as Logic programming powered RTEPLs (Read-Typecheck-Eval-Print-Loop) can give us optional rich, strong guarantees without adversely affecting runtime performance. This is a space that needs more exploration.
Erlang is not a logic programming language. They started with a logic programming language and eventually removed every feature that made it a logic programming language.
Correct, what's left in erlang from prolog is the pattern matching syntax for function definition, where you have multiple clauses to test, sequentially, whether runtime args match the number and types of parameters in each clause (and values, if guards are used). No unification/backtrackig involved.
I think logic programming has a lot to offer the world, in theory, but in practice it seems to be pretty much dead. True, there is probably more going on with Prolog now than, say, a decade ago. But widespread use is not happening, nor is inclusion of logic-programming features into other languages. Further, I don't see this changing in any truly significant way in the near future.
Apparently, you do see it changing. Would you care to comment on that?