As it were, I do enjoy programming in assembly. I know that as a rule, assembly is platform specific so 'x' assembly will not help me if I had to work with 'y' machines. That said, how common are (at least competent) assembly programmers and how in demand are they?
|
Assembly seems like an awesome skill to have but a rare skill to use. While it certainly proves that you've got something going (knowing how software really works is good value in my opinion), I doubt many companies still use it on a regular basis. Once you feel you have a good grasp of assembly, move on to another language, such as C, C++, C# or maybe Java (what to choose is a whole new topic). This will help you get a much broader spectrum of skills that are more likely to be in demand rather than just assembly. |
|||||||||
|
Assembly by itself probably won't get you a job. If you're a C or C++ programmer, it can be majorly helpful to know it because you can examine the disassembly of a function and see how it's really working. If you work in a higher-level language, it falls more under the "nice to know, but not directly useful" category. This is because the way that higher-level programs get turned into machine instructions becomes much more complex. |
|||
|
A programmer can produce about the same number of lines of debugged production code per day regardless of the language. It takes more lines of code to do the same thing in assembly than in most other languages, so you are per definition less productive in assembly than in most other languages. This means that there must be additional requirements that offset this, where I've heard of the following:
You may want to consider looking at contributing work for some of the new cpu's coming up to a compiler, like gcc. |
|||||||
|
I think one should know assembly for the system you normally work on but it's very rare to actually write in it. Mostly it's something you need to be able to read to understand what's going on at times. |
|||
|
It gives you a deep understanding, how the low level system working, basically, the language may differ to platform to platform, but, you easily adopt to another language, because, you have the deep understanding in low level programming. |
|||
|
As some others have said, assembly language is a good way to learn the architecture of various processors, and get an idea of what is easy for a CPU to do and what is more difficult. Older complex instruction set computer (CISC) architectures tend to be more amenable to be programmed by hand in assembly, where as newer reduced instruction set computer (RISC) architectures more are geared toward compiler generated code. Once you have learned a CISC instruction set, or a RISC one, you will find others of the same type are pretty similar and are easy to pick up. Twenty-five years ago, when good compilers were less common, most microcontrollers were programmed in assembly code. Nowadays, it is much more common for them to be programmed in C. But it is sometimes still useful to be able to debug at the assembly level, stepping through the individual instructions. Also, it is sometimes still necessary to program in assembly when writing software such as a task-switcher for a real-time operating system (RTOS) where one has to manipulate the stack directly. So having programmed in assembly is a good thing to know, particularly if you have any interest in getting into embedded systems programming, but don't expect to be doing a lot of it |
|||
|
I doubt you will find that many pure 'assembly' programmers these days but for malware analysis/vulnerability research knowledge of assembly is very much required. |
|||
|