Reading 04: On programming languages

When I first learned to code, programming language was extremely important because I really only “knew” one language. Switching languages was difficult because understanding a new programming language required identifying and translating differences in syntax in order to write and read code correctly, and I was still trying to figure out how to come up with a logical solution to a problem that a computer would be able to understand. As I kept writing code, however, the choice of programming language became less and less important because I realized I could use Google and Stack Overflow to help me whenever syntax was getting in my way.

I find myself following the Blub paradox that Paul Graham brings up: I pick whatever language I decide to use, and I decide which language to use based upon how I think about code. I think about the world in English. I think about code in pseudocode that closely resembles Python in most scenarios. Thus, I write prose in English, and code in Python when given the chance. Similar to English, there are limits to thinking in Python. For example, Python is good at abstracting details and interpreting code that is very close to English in most cases, but trying to write low-level code like kernel code doesn’t work very well. Spoken languages like English have similar limitations like the word “love” has several different meanings and Spanish has 6 different words for “love” to distinguish between the different kinds of love one has for people and things. However, in both cases, I overlook the limitations of the language for the purposes of thinking coherently about the problem at hand.

I feel like it’s safe to say that most programmers think about code in a specific way that is modeled by some programming language they have encountered. Perhaps not specific syntax, but if they were to write out pseudocode, it would probably look a lot like their favorite language. Paul Graham touched on the idea that programmers in the future will want more flexible languages. I think future programming languages will mimic pseudocode, or at least mimic the way humans think about code, which is presumably close to English if not actual English. They will also likely have abstractions for complex algorithms related to machine learning, artificial intelligence, and controlling complex systems like the ones in flying cars.

It seems that unconventional programming languages today cater to a specific kind of programming. For example, Swift is one of two languages that can be used for relatively straightforward iOS development. Programming languages of the future will likely cater to increasingly specific and complicated kinds of programming. The only issue I see with future programming languages catering to such specific use cases is if their syntax is not similar enough to conventional programming languages that programmers don’t use those languages because they’re Blub programmers and would rather take their time and write a program in a language they’re familiar with over a language that would make their lives easier.

Leave a comment