[Mathematician here]<p>Greek leters: It's a feature not a bug! The advantage of Greek letters is that they don't collide with normal variables, you can use short (1 letter) names for symbols. That is also the advantage of using special characters for number (and not using something like a->1, b->2, ...).<p>An additional problem is that some letter has an expected behavior, for example \epsilon usually is small, and M (capital M) usually is a big number, p is a prime number and z is usually a complex number. The problem is not that they are Greek letters, the problem is that you have to learn the expected behavior. (It's like using i for a counter in a for loop. Obviously i is integer.)<p>The problem with the syntax is that mathematicians (and humans in general) are too good parsing DSL (domain specific languages). So each mathematical branch has its own DSL (we call it "notation"), and the DSL can barely be combined, but usually a calculation doesn't combine many areas of mathematics. (For example there is a special notation for "function integrals" and "modulo congruence" and "fields towers", but I hope I should never combine the three in the same calculation.) (A similar problem is why regular expressions are so popular, they can be implemented with normal constructions, but sometimes it's easier to use regular expressions. Or the special syntax for here strings.)<p>The problem is that you have to learn all the DSL, but usually the specific details of the DSL have some insight of the main ideas of the area. There is an (perhaps apocryphal) quote from Gauss: "A good notation is half of the solution.".<p>The problem is not that you must use Assembler to write Java classes. The problem is that you must use 50 almost incompatible Lisp packages, that define its own macros and syntax reader (that hides almost all the parenthesis) and define each one a very useful but limited DSL that compiles to the JVM.