2 ms·
This is going to be fun! I know he's joking, but I agree-- to a point. First, if you write Haskell-in-Java code, you're going to do a horrible job unless you
by michaelochurch 14y ago
This is going to be fun!
I know he's joking, but I agree-- to a point.
First, if you write Haskell-in-Java code, you're going to do a horrible job unless you have so much autonomy that you end up reinventing Scala... in which case you should just use Scala. (See: Greenspun's Tenth Rule.)
Second, I think you learn a lot by studying other languages, but most of the superiority of Lispers or Haskellers comes from the fact that good programmers in general tend to be a curious set. Learning Lisp will make you a better Python programmer, and possibly a better C++ system architect. Will it make you better as a subordinate grunt on a gigantic C++ codeball? No, absolutely not. It will make you a morale problem and get you fired.
Third, you learn a lot more in expressive languages that makes you a better programmer but the languages itself don't get all the credit. When you use a Lisp, you can get a lot done quickly if you know what you're doing and cover a wide swath of computer science. When you use a true fringe language, you end up implementing a lot of libraries you'd just assume work in Java. These experiences are highly valuable but not rooted in the languages per se. It's just that a lot of the work you have to do to make a non-mainstream language usable in primetime contributes to your long-term awesomeness growth.
Fourth, if you want to be a Corporate Programmer (TM) and not be challenged too much, then maybe get tapped for management in your mid-30s, then Haskell and Python will poison you. I've written a lot about the progress of developer competence (see this, just today: http://michaelochurch.wordpress.com/2013/04/22/gervais-macleod-23-the-shodan-programmer/ http://michaelochurch.wordpress.com/2013/04/22/gervais-macle... ). Once you cross the 1.4 rubicon, there really is no going back, and you'll be in conflict with managerial authority forever. Well, at least until you become so good that it's eminently obvious and you can escape the CrapFactory (or is it CrapVisitorSingletonFactory?) Corporate Programming world.
However, if what you want is to be a great programmer (not an easily employable one) then Haskell and Python will do you favors, and learning a few more languages (also C, because the low-level will always be important for some domains) is probably necessary.
This was written in 2006; I wonder what he'd think of JVM languages, especially Clojure.
- MostAwesomeDude 14y agoI know you're joking, but I agree -- to a point. First, if you write FORTH-in-Java code, you're gonna do a horrible job unless you get to reinvent Factor, at which point you should just use Factor. Also, you get to use Factor, which is awesome. Second, I think you learn a lot by studying other languages, but most of the superiority of FORTH hackers come from the fact that good programmers, in general, tend to be parsimonious. Learning FORTH will make you a better programmer. It will also make you better at C++. In fact, it will make you better at everything, including being a morale problem, getting fired, being a hero to your co-workers, and being promoted. Third, you type less in concatenative languages. When you use a Forth, you can get a lot done quickly because you don't type as much. Forth, if you want to be a Corporate Programmer (R) and not be challenged too much, then just use FORTH, because, like COBOL before it, FORTH lets you hold down the Shift key constantly. However, if what you want is to be a great programmer, then FORTH is still the answer! Why? Because it says so: : ANSWER ." FORTH is pretty much the best way to be a great programmer. " ;
- rdouble 14y ago...good programmers, in general, tend to be parsimonious Good programmers are frugal to the point of stinginess?
- MostAwesomeDude 14y agoGood programmers are terse.
- michaelochurch 14y agoI joke don't fully get.
- MostAwesomeDude 14y agoThere is no joke. FORTH is a serious language. You can tell because it's fully capitalized.