Reading 04: Programming Languages

Alejandro Rafael Ayala
Ayala Hackers Blog
Published in
3 min readFeb 23, 2019

I think I can get behind the sentiment that “programming languages are not just technology, but what programmers think in” (Beating the Averages). For me, when I see a problem, I immediately think of how I could implement it in Python or C++. Languages usually have features about them that make their brand of problem solving unique. Regarding Lisp macros: “Macros are harder to write than ordinary Lisp functions, and it’s considered to be bad style to use them when they’re not necessary. So every macro in that code is there because it has to be. What that means is that at least 20–25% of the code in this program is doing things that you can’t easily do in any other language” (Beating the Averages). To me, to think in a language means that you are capable of thinking about problems through those unique features. Someone in class (I think it was Phil?) brought up the point that JavaScript frameworks commonly use asynchronous callbacks and promises, which while not the only language to use these kinds of features, require you to think differently if you’re only used to synchronous code. Some languages handle how you work with similar features differently. For some, one language’s way may make more sense to them. To others, another way of thinking may be more suitable. Yes, lots of languages can solve the same problems, but how you solve them may depend on how that language supports features. Thus, you need to think through them.

I would agree that programming languages vary in power. However, how you describe power may vary. I think that hypothetically, you can make a language that could take advantage of everything the computer could possibly do, but there isn’t one (at least I don’t think there is one) that truly does this. If there were, we probably wouldn’t even be having this debate as there would probably be a most powerful language. That’s why some languages have features and others don’t. They take advantage of their resources in different/better ways. However, perhaps how much a language can do isn’t the only thing that you can use to measure a language’s power. There’s a lot to be said about a language that is easy for programmers to learn and use. In “The Hundred-Year Language,” Graham says “What’s gross is a language that makes programmers do needless work. Wasting programmer time is the true inefficiency, not wasting machine time. This will become ever more clear as computers get faster” (The Hundred-Year Average). I believe that ease of use makes a language more powerful because that means that more users will be able to use a language to its full capabilities. What does it matter if a language can do a lot if no one really understands how to use it?

We used Lisp in Programming Paradigms. I found it very interesting, and it was a good exercise to think in a way I’m not used to. However, I don’t use it at all anymore. I’m sure that it’s more useful than the basic applications we used it for, but I didn’t really explore it beyond the class because I’m just so used to thinking in a different way. It probably has a lot of powerful unique features I haven’t used. It’s just easier to think in what I know already. “Whatever language people happen to be used to, they tend to consider just good enough” (Beating the Averages). For now, our group is planning to do our next project in Haskell. I was really pushing for it because I wanted to challenge myself to get used to thinking in a functional programming paradigm.

--

--