01-02-2025, 09:46 PM
Unfortunately, the trend now goes in the other direction: Even C is now getting out of fashion, and people are moving to Rust or even to slower languages like Python. Even the Linux kernel is getting Rust modules.
I have some assembly skills, but mostly only the Motorola 68000 used on the TI-89 calculator. That was a nice, easy to learn assembly language. (Basically, the only big mistake you can make is reading or writing 2 or 4 bytes at an odd address, which will cause the infamous "Address Error". It does not even require 4-byte alignment for 4-byte accesses, only 2-byte.) Unfortunately, that architecture is no longer relevant for modern devices, even TI has stopped producing calculators using it.
My x86 assembly knowledge is limited, and ARM even more so. Unfortunately, modern CPUs have become so complex that the instruction sets have become a mess. x86 has so many instructions that it is basically impossible to remember them all. (Also, alignment requirements are very inconsistent: legacy instructions have none at all, but can be very slow when unaligned, vector instructions have hard alignment requirements, typically requiring the address to be a multiple of the vector size, which can be quite huge, and will fail with a hardware exception when those are not met.) ARM is a funny animal because it is RISC by design, but then things like implicit shifts and like vector instructions make it not all that reduced anymore. Still, some basic stuff has to be broken down into multiple instructions.
But the inherent issue with assembly is that it is non-portable: move to a different CPU architecture and you have to learn a whole different assembly language, and all the assembly programs have to be largely rewritten. C does not have that issue, but now people want to replace even that with higher-level languages.
I have some assembly skills, but mostly only the Motorola 68000 used on the TI-89 calculator. That was a nice, easy to learn assembly language. (Basically, the only big mistake you can make is reading or writing 2 or 4 bytes at an odd address, which will cause the infamous "Address Error". It does not even require 4-byte alignment for 4-byte accesses, only 2-byte.) Unfortunately, that architecture is no longer relevant for modern devices, even TI has stopped producing calculators using it.
My x86 assembly knowledge is limited, and ARM even more so. Unfortunately, modern CPUs have become so complex that the instruction sets have become a mess. x86 has so many instructions that it is basically impossible to remember them all. (Also, alignment requirements are very inconsistent: legacy instructions have none at all, but can be very slow when unaligned, vector instructions have hard alignment requirements, typically requiring the address to be a multiple of the vector size, which can be quite huge, and will fail with a hardware exception when those are not met.) ARM is a funny animal because it is RISC by design, but then things like implicit shifts and like vector instructions make it not all that reduced anymore. Still, some basic stuff has to be broken down into multiple instructions.
But the inherent issue with assembly is that it is non-portable: move to a different CPU architecture and you have to learn a whole different assembly language, and all the assembly programs have to be largely rewritten. C does not have that issue, but now people want to replace even that with higher-level languages.