DEV Community

Discussion on: I have been programming since I'm 10, Ask Me Anything!

Collapse
 
koehr profile image
Norman

Programming a computer is inherently complex. Programming languages are attempts to make the formulation of instructions for computers easier, but this comes at a cost. The machine code that gets generated will be more complex and less optimized the more abstracted the language is. To mitigate this compilers have very sophisticated methods to analyze and optimize the code as much as possible. This requires computing power and lots of RAM.

More abstraction also gives less flexibility as it always leads to specialization. It is for example very easy to calculate things and draw bar graphs with a software like Excel. But it gets very hard to maintain as soon as it grows. On the other hand is it much easier to structure some code of a general purpose language, like Python, to create anything Excel can do and more. But Python is already much more complex and therfore harder to learn than Excel.

To stick with the example: Python also comes with lots of great libraries that abstract away the nitty-gritty. It is very easy to plot formulas with the right library. But as soon as you want to do something that the library doesn't support you have to work around it or, even worse, lose all the nice abstraction and suddenly need to implement drawing routines by yourself.

That became a wall of text already, sorry for that. But one more thing to showcase my point:

Languages like Ruby and Python are attempts to make programming much easier. Compared to C, Java or Rust, they spare you lots of complexities like typing and memory management. And while it seems easy when just using the languages you'll quickly see the main difference as soon as you compare their performance. Ultra high level languages like Python and Ruby are 100s if not 1000s of times slower than lower level languages.