5 ms·
Interestingly, this is because -- after reasonable amount of C++, C#, Java coding I have just settled with Clojure (or Lisp in general). I really enjoyed writin
by sz4kerto 12y ago
Interestingly, this is because -- after reasonable amount of C++, C#, Java coding I have just settled with Clojure (or Lisp in general). I really enjoyed writing clever C++ template stuff like class hierarchy generators and so on until I became old enough to think that good!=clever, good==maintainable&&it works.
Too much syntax and cleverness is bad for the industry as usually it attracts a lot of smart people who end up writing C++ (or Scala) -- but the problem is that they use a set of patterns+language subset that is unique to the team/company. Therefore knowing C++ does not mean you can just start at a company using C++, you have to learn their way.
Notable exceptions are Java and C#. Java is so simple and verbose that you can't write unreadable code unless you're really evil, it's a shame that the complexity and cleverness is moved to the frameworks (there aren't many "Java programmers", most of them are Spring, etc. specialists). C# works well because MS dictates the patterns (and those patters are usually quite good) while the language itself is very readable and intuitive, without crazy rules.
And there's Lisp/Clojure where there are only a handful simple rules, and cleverness is usually local, e.g. macros or tricky 'functional' data manipulation stuff; but for me that 'local' cleverness is the most understandable.
- m0th87 12y agoWhat is "local cleverness"? And how does lisp's metaprogramming capabilities avoid cleverness run amok?
- evincarofautumn 12y agoI find it very difficult to read Java code because it tends to be so long-winded and many-layered.
- userbinator 12y agoJava is easy to read at the "micro" level, i.e. the bodies of methods usually don't contain much code; but I think that is precisely what makes it hard to understand at the macro/system level, because that small amount of code depends on a much larger amount throughout the rest of the system, spread across multiple files in different deeply-nested directories. That's when you have to start following chains of method calls, object creations, and class hierarchies.
- Latty 12y agoJava is proof that worse is better. It's never completely unreadable, but it's never pleasantly readable either.