I love programming!
I’ve played with lots and lots of programming languages during the past 15 years (chronologically, BASIC -> Pascal -> C -> C++ -> Scheme -> Smalltalk -> Java -> Haskell -> Javascript -> PHP -> Python -> Ruby -> Lisp). Notice that I’ve used the term played. For me, programming is a very fun activity and I actually enjoy it…
As you know, I am a teacher. I teach Computer Science i.e. problem solving using modeling and programming. Unfortunately, I am not really satisfied with the currently fashionable Java language which is used a lot now for introductory programming courses. Java is a relatively good professional language but it should not be used for teaching problem solving and programming. Joel Spolsky has written a great article where he demolishes the concept of JavaSchools:
“But JavaSchools also fail to train the brains of kids to be adept, agile, and flexible enough to do good software design (and I don’t mean OO “design”, where you spend countless hours rewriting your code to rejiggle your object hierarchy, or you fret about faux “problems” like has-a vs. is-a). You need training to think of things at multiple levels of abstraction simultaneously, and that kind of thinking is exactly what you need to design great software architecture.”
Eric Raymond, in his famous article How To Become A Hacker, revealed that every programmer should learn Lisp because of “the profound enlightenment experience you will have when you finally get it. That experience will make you a better programmer for the rest of your days, even if you never actually use LISP itself a lot.”
He recommends learning different types of languages because “they represent very different approaches to programming, and each will educate you in valuable ways.”
Paul Graham has written a convincing article on how to become a better than average programmer by using Lisp. He queries: “What’s so great about Lisp? And if Lisp is so great, why doesn’t everyone use it? These sound like rhetorical questions, but actually they have straightforward answers. Lisp is so great not because of some magic quality visible only to devotees, but because it is simply the most powerful language available. And the reason everyone doesn’t use it is that programming languages are not merely technologies, but habits of mind as well, and nothing changes slower.”
My wish for 2006 is that more and more of my students at the University of Mauritius discover the real joys of problem solving and programming using nice languages like Smalltalk, Ruby and, especially, Lisp.
Happy New Year to you!
Image courtesy of Lisperati
aadil says
Why learn a new language when people still write spaghetti code?
Maybe people shouldn’t Smalltalk in Italian. :D
yan says
Commentaire HS: Etes vous passé àWordPress 2.0? Tous vos derniers articles apparaissent comme non-lu dans mon agregateur.
Anonymous says
I had a great time learning SML as part of my undergraduate degree. I might not use the language much now, but it did teach me one important thing, to think before coding.
avinash says
To Yan: Yes, I’m using WordPress 2.0 now. The upgrade has been pretty much painless except that I am now using the default theme and I need to customise it once more (for Adsense etc)
To Anonymous: Learning a functional language is one of the best ways to discover the joys of programming IMHO. In fact, in many very well known universities, FP is the first programming paradigm taught (ex. Scheme at MIT). As a lecturer, I always try to introduce FP to my students. I’ve used Haskell in the past. And this year at the University of Mauritius, I’ve used the embedded Scheme interpreter in The Gimp!!!
lenatis says
Computer science is not computer industry,a CS course prime job should be training students how to think brilliantly,exploting the philosophy of programming,and enjoy ordering computer do things and to solve hard yet interesting problems.
These has changed as the computer industry grows and the needs for “programmer” in company,all these led to the “JAVA-like” crash course,which probably a good solution for company human resources but not for the computer science.I agree you idea that lisp is different,it brilliant and powerful,hope that this gonna be the introductory course in every cs class.
avinash says
Unfortunately, I can’t see things changing too drastically soon… Students will still be taught programming “in the old fashioned way” for years to come… simply because most academics are only comfortable (relatively speaking) with Java and C-derived languages.
On the other hand, the programming language as such is not that important. What is important is to give the students the ability to think creatively. And, obviously, to do that, one must be creative himself/herself :-)
Anonymous says
Java is a almost acceptable good programming language but it should not be acclimated for teaching problem analytic and programming.