Reading 04: Evidently Lisp is Actually Useful

Talk to the average non-CS normie (or even worse, a business major) and they probably know little about the difference between programming languages. If you asked them if there was one language in particular that was best for a certain project, they would probably have no idea – or they’d spit out whatever generic language they knew a little about (probably Python).

But what if you asked a programmer? What about the average CS student at Notre Dame? While they would probably give a more informed answer, their answer would most likely be skewed by their own preferences and experience. I mean how many CS students would say that a project is best written in Lisp? I know I sure as hell wouldn’t.

The choice of programming language for a project is an important one, yet it’s often overlooked. Programmers can have tunnel-vision when it comes to programming languages, opting for a language they’re comfortable in rather than what fits the project best. If the goal of programming is really just the end product, does the programming language really matter? If the end results are essentially the same, what’s the difference between a program written in Java and a program written in Lisp? Or Python and C++?

The truth is, some languages are simply designed to handle certain functions better than others. I also believe that there are some programming languages that are simply inferior. For example: Java. No one likes it.

But preference in programming language can also depend on how much (or little) a programmer wants going on behind the scenes. Python will do a lot for you behind the scenes – which can make programming in Python extremely useful and powerful. But it can also cause programming in Python to be extremely frustrating. It simply depends on what your end goal for the project is.

My knowledge of programming languages (while still limited) was almost laughable until I took Programming Paradigms. Going into the class I could have comfortably coded in C, C++, and Python. If you had asked me why I might want to code in one language over another, you would’ve been met with a blank stare and maybe some stuttering. The truth is, it’s hard for a novice programmer to wrap his/her head around the idea of the variation among programming languages. Even if one recognizes the differences, it’s difficult to identify which language is best for one project over another.

If we’re being completely honest, most people don’t need to even understand those differences. Coursework (at least at ND) requires more or less the same few languages with little-to-no wiggle room. Almost all of our assignments are done in C, C++, or Python.

When we enter industry, companies are generally all looking for the same language experience. They want some combination of C/C++, Python, Java, Javascript and HTML (gasp). A lot of companies will often list a desire for some “experience in OOP”, leaving the door open for a wide array of experiences, making it easy for an incoming programmer to have very shallow programming experience.

Paul Graham’s argument for a language like Lisp is the competitive advantage it gives. Yet Graham’s article was written in the early 2000’s – a time when the technology industry was an absolute free-for-all and a lot of software was still fairly primitive. While I think taking on a large project in a language like Lisp is still quite doable and even has its advantages, I do not think it provides the same competitive advantage that it once did.

Like Graham, I think there’s a possibility that over time we see the use of programming languages converge on a few more “optimal” languages. I believe we’re even starting to see that now. Javascript dominates far more web development than it once did and Python continues to be the language of choice for a variety of projects.

I applaud Graham for having the audacity to build an application with Lisp, but I don’t think I would ever have any idea how to do that. I guess that’s why he’s rich and I’m not.

Leave a comment