The Stack Overflow podcast is back! Listen to an interview with our new CEO.
1 of 1

Languages shape the way people think. This is true for natural languages. If a child knows only one language with the numbers "one, two, many", teaching that child math is... difficult. (Sorry, I don't have the link) In english we talk about different times as if they were places - hence the concept of time travel is possible to imagine. In some other languages, the idea of time travel would never occur to its speakers.

This is also true for programming languages.

Hence if we have a single programming language, everybody will think about all computational tasks exactly the same. Thus we won't be exploring alternatives, and the best way to do something will remain undiscovered.

The closest thing we have to a universal language is C. C maps very closely to the underlying hardware concepts (how things actually get done in hardware) and programs in every* language is convertible to C. (See how CFront used C compilers for assembler tasks) The problem with C is basically that the above-mentioned conversions wouldn't make sense from a C programmers perspective.

"Lambdas" were always possible in C. The syntax is off, including code spread around the whole project/file, hence it was not a preferred solution. With a no-capture/upvalue/etc version, define a function somewhere else, and pass a pointer to the function. (see qsort()) To use lambdas with captured values, the quantity and complexity of the code you have to write rises a lot - as far as I'm aware noone ever actually wrote the code to use this method of programming in C. As opposed to languages where lambdas are part of the language, and basically used everywhere.

The main difference between C and C++ is how you can ask C++ to take care of stuff for you; but then you can no longer see, from only a single line of code, how much you're really asking of it. The answer becomes: it depends (on all this other code).

Some programming languages are excellent for specific tasks, but where most current programs in use around the world would simply not make sense if programmed in that language. That is, if the language could be used to implement that program to begin with, which is not a given.