3 ms·
I think starting with ASM might even be counterproductive. Low level coding is a useful tool for performance optimization, but most of the time programmers are
by eternityforest 4y ago
I think starting with ASM might even be counterproductive. Low level coding is a useful tool for performance optimization, but most of the time programmers are thinking at high levels of abstraction and don't need to bother with details.
ASM seems to give people a really bottom up mindset and it takes a while to adapt to Python-ish practices. ASM people think "Oh I could do it these ways from scratch", Python people think "I know just how to express that in terms of this highly optimized numpy object".
- samsolomon 4y agoMost people just want to build stuff. Programming is just one way to do that. I took two semesters of computer science in college—working in Java. I hated it. I just wanted to build websites that did things and those courses didn't get me any closer. I built a bunch of apps that had to be compiled and nobody would ever use them. I swore programming off until I discovered WordPress a year later and started building WordPress themes.
- GuB-42 4y agoI disagree. Abstractions are leaky, and I think that demystifying the computer is important. You may spend more time with high level abstractions, but under that is hardware that has registers, memory, jump instructions, etc... it is not magic, and if you expect your computer to do magic, it won't work. And what you call bottom-up approaches have value too. You talk about "how to express in numpy?", as if you were dead set on using numpy. But it numpy the right choice? It is highly optimized, sure, but is it highly optimized for your use case? A "bottom-upper" will start to think "how will I solve this problem" and then look for something that will make their task easier. It may be numpy, it may be "from scratch" or it may be something else. Ideally both approaches will lead to the same conclusion. The numpy guy may realize that his favorite library is not the right choice in the same way that the ASM guy may realize that his solution is already implemented in a library. Anyways, a good programmer needs to have an idea of the whole spectrum, from hardware architecture to assembly to low level languages like C to high level languages like Python. Start where you want.