Minimum number of languages that a developer should master?
A funny moment: recently I heard a senior computer scientist blast Java on very poor performance (server side Java performance is very good - the language has other problems in my opinion) while extolling the virtues of Common Lisp as, if I understood him correctly, the one true 'do everything' language. I enjoy Lisp (I wrote 2 Springer-Verlag Lisp books, many years ago), but it is a marginal language if you count developers, available frameworks, and relatively few large deployed systems (a few notable exceptions to this). Lisp is a language that I can recommend to some people as a second or third language, but I would have a difficult time recommending it as any developer's primary language for writing production code. Lisp is great for research.
In any case, whenever I hear someone blasting Java, I know that they likely don't have real experience developing large scale Java server side applications and don't understand the benefits of the server JVM and a huge collection of good tools and frameworks.
Whenever I hear someone knocking scripting languages like Ruby, Python, or Perl I always think that what a shame it is that they don't save themselves a lot of development time using an agile scripting language - when appropriate.
Then there are times when it is "just right" that development be slow and painful, and C++ is used for runtime speed and memory efficiency :-)
Also if you need a carpenter to do some maintenance on your home: don't hire a carpenter who only uses a saw.
In any case, whenever I hear someone blasting Java, I know that they likely don't have real experience developing large scale Java server side applications and don't understand the benefits of the server JVM and a huge collection of good tools and frameworks.
Whenever I hear someone knocking scripting languages like Ruby, Python, or Perl I always think that what a shame it is that they don't save themselves a lot of development time using an agile scripting language - when appropriate.
Then there are times when it is "just right" that development be slow and painful, and C++ is used for runtime speed and memory efficiency :-)
Also if you need a carpenter to do some maintenance on your home: don't hire a carpenter who only uses a saw.
My impression was that the Lisp/Java story went like this:
ReplyDelete1. Project is using Lisp for object database, and Java for a whole lot of stuff. Two sides talk through some XML representation.
2. Some process takes 24 hours to run.
3. Someone's knee-jerk reaction: "Lisp is slow! We should take that part out."
4. Measuring, Lisp took 12 minutes of that time. Off-the-cuff estimate was that even if Java was somehow 5x as slow as Lisp for handling this particular XML parsing, that only means that 1 hour was consumed by talking to Lisp.
Given all that, I understand why he was being a little snippy about the complaint about Lisp coming from the Java side, for this particular task. Clearly, I can't speak for any of the details first-hand, but it was a good story. =)