Low/high level: programming learning path


Not so long ago, someone ask me what would be the best way of learning to code, and the which programming language to choose. I was just some programmer wannabe at the moment, but having a passion for code and maths, and having learned mostly by physical books of the c programming language and no computer whatsoever, I immediately thought, “Man I would want to start in the exact same way” 😅.

Do not get me wrong, high level languages are really cool, but I genuinely think that if someone with no knowledge, at all, starts with, lets say, python, that person will be missing a lot. And yes, if you only need to write few scripts very occasional it is cool, but I am targeting almost pro level here.

Anyways, here is the catch, I also thought ”.. only difference is that I would love to start learning with a high level language also”, and the reason for that is simple, I just want to make cool programs 😎.

Using pure c the full cycle takes too long, there is no more level of reward that launching a REPL python session load and modify some files, images even, make network requests, or even draw things with turtle, the speed of implementation and prototyping just blows the counterpart out of the water. Of course you can achieve the same in any language, but they exist for a reason.

I know people that wrote barebone games in the that turtle piece of package just for the fun of it and the missing knowledge of something else (not simple games, they draw complex shapes with perspective in the screen, I even daresay they discover..ish the usage of projection and other matrix used in that kind of rendering), that is just awesome.

And that is the beauty of having that duality, you can learn complex, mind opening stuff while messing around with a more accessible, maleable tools and getting things done.

My first options were c and python, the pinacles of both worlds, and in the past I tried to find some professional course that focuses in teaching with this “Low/high level” approach with no success, but I know deep down that the correct people can make materials resulting in a extreme rewarding and empowering experience( I also know that there are degrees that kind of cover this line of thinking, but I mean something in the middle, not a full degree kind of path, this comes with another set of issues that would make another whole post).

Fast forward some years and a career as a software engineer, I have arrived at a little variation of my version of the holy grail of programming learning path, as you probably have guessed already, I just want to ditch the snake and adopt the infamous javascript. I am no expert nor want to discredit anything or anyone, but, javascript(with all its kirks) is the absolute most accessible, stable, friendly programming language that I happen to know of, least to say widespread, you can just open a browser in desktop and start coding, no fuss, no slow runtime, no complex toolchains, no nothing, just you and the machine, and the possibilities are endless.

And all the messy complex graphical stuff, meh, no biggy, just the language of the web, - UI?: html/css got you covered man, - Complex graphics?: ever heard of webGL or the new webgpu?, - But I need strong types: typescript, cough cough…, and so on, the ecosystem is big, and friendly in the most part.

Another big plus are the syntax similarities between the two, I find the transition really seamless, bouncing back and forth between languages is a no brainer for the most part. The performance is great, and you have a lot of tools ready for debug or profiling.

With all that you are not just studying, you are having fun and seeing results fast while learning what things you don’t know. I find the low level coding very exciting, much like chess, math, videogames or other problem solving activities that warms your brain, but reducing the gap between real world applications and your code is just as important and efficient to/for learning.

Programming today is more accessible than ever, most people just have everything right now at arms reach, and js is the nike of programming languages, “just do it”, just always remember to keep reading “advance algorithms and data structures in c” 🤣.