Question

A question that gets asked a lot is "Why use low level languages if you can code in high level languages more easily (and often tersely)?". I think the answers are fairly straight forward here, being mainly efficiency concerns.

However, I pose "Why do we use high level languages in the first place?". Besides the fact that a higher level language is easier to code in and therefore less error prone, I would love to hear some opinions on why we use high level languages.

Consider especially an example of someone who is being paid to both learn a language and then develop something in it. Here they would become equally proficient in whichever language chosen (say C vs. Python). As such, why would I not favor the efficiency and power of C in said example?

Was it helpful?

Solution

"Besides the fact that a higher level language is easier to code in and therefore less error prone"

I really think this is a good enough reason all by itself. If you have no compelling reason to work in a low level of abstraction (such as performance, knowledge in the team, etc), then there is no reason to do it. If all you want is a coffee, then you want to tell the barista "I want a coffee", not "I want you to take three steps to the left, stretch out your arms, pick up the beans, put the in the grinder, push the button to grind them [...]" and so on. It wouldn't make the final product any better (in fact, in some cases it'd make it worse since the barista is probably way better than you at making coffee).

High-level languages encourage you to think more about the problem domain and less about the execution platform. There is less ceremony, so you can spend more time on stuff that actually brings you value.

OTHER TIPS

Money. Cheaper developers, faster development speeds, and less bugs equal more money.

Portability. Many high level languages allow you to target different platforms out of the box. Low level languages like C require significant efforts run on multiple platforms.

Training. You can train a developer in Python in a day, while something like C++ takes significantly longer.

Frameworks and Libraries Many good and useful libraries are only available for high level languages. If you don't want to write your own, you need to use a language that works with the framework.

Maintenance Fewer lines of code to maintain means fewer bugs, and faster training of new hires.

This answer assumes we're talking about the popular high level languages, where these points apply.

Higher lever languages are by definition easier to learn, they take away a lot of the complexities of lower level programming such as memory management. Besides that since the explosion of hardware power it is much cheaper to get a faster processor or more RAM into a machine that paying the developer hours that'd come with a more complex programming language.

A big thing to consider is that once a language is "settled" a lot of it comes set in stone. A lot of time and resources are spent making software in that language. And in a lot of cases, once software is done, it's done and only small maintenance remains to be done.

You can't sell: "hey you need to change all the software you made because we introduced modern feature x and y".

Just look at python: python 3 broke a lot of things that work in python 2. And because a lot of shops invested so heavily in python 2 they haven't made the switch. You may even consider python 3 a new language that looks a lot like python 2.

Look at the drama of backwards compatibility of visual basic, everything basically had to be rewritten, multiple times if you want to stay current.

Basically, if you want to "fix" your language of choice and, get rid of all the weak spots and introduce some strong features......your only option is to make a new language.

Licensed under: CC-BY-SA with attribution
scroll top