Fog Creek Software
Discussion Board

Future of Machine Language

Beside embedded & real time systems where ASM
coders are still required ?

Do you think there will always be a need for coders
which can cut code in Assembler ?

Just wondering if I should learn ARM and get back to ASM programming ...

~ CycleBurner ~
Friday, March 19, 2004

On mainframes (like CICS) perhaps? Possibly device drivers? Implementing the HAL of an O/S; writing a compiler back-end.

Christopher Wells
Friday, March 19, 2004

There will always be a need for Assembly Language programming. As compilers get more and more sophisticated, and chips faster and faster, the need decreases, but will never go away.

A lot of special-purpose applications will have a single critical bottleneck that can be speeded up 50% or more with a little tweaking of the machine code.


Mark Bessey
Friday, March 19, 2004

Someone's got to write the low-level firmware and boot loader.  That's pretty hard to do without assembly.

Myron A. Semack
Friday, March 19, 2004

Do you guys find ML programming appealing ?

Or you would rather prefer to write an application with .NET ?

~ CycleBurner ~
Friday, March 19, 2004

ML will always be in demand for virus and trojan writing.  Aside from the built-to-be-exploited MS Office suite of virus platforms, it's going to take a machine coder to exploit buffer overruns.

Clay Dowling
Friday, March 19, 2004

xor machine_language_coders, machine_language_coders

Code Monkey
Friday, March 19, 2004

Some people still use assembly language in games.

Compilers are generally very good these days. You'll get more mileage from better algorithms and more efficient cache use than from low level tweaking. It's been a while since I was able to beat the compiler at day-to-day code, but every now and again it produces something really shocking.

Insert half smiley here.
Friday, March 19, 2004

By itself its pretty much dead. But used inside another programming language (like Delphi), it can be really usefull.

Someone walking by
Friday, March 19, 2004

Referring back to Joel's article about "layers of abstraction", there will always be a need for people who know the lowest level of abstraction which is the assembly language. On the other hand, I doubt that the people who know the true machine language (the 1's and 0's representing instructions, cpu states) will be in that much demand unless you are the guy/gal designing the chips.

As a matter of fact the desktop world is the only place where you have programmers completely oblivious to the low level activities of a computer. I know this might be a shocker to you, but the desktop world is actually a minority compared to the embedded devices world where assembly is still required although it is not a must since most processors these days come with C/C++ compilers. You still have to remember that things might go wrong, and you might have to debug your program in assembly since that is what the CPU sees.

Therefore, I think there will always be a need for programmers who speak the language of the processors and DSPs and microcontrollers, however, the need might not be where you expect or want it.

Friday, March 19, 2004

Assembly language is also essential when you want to implement algorithms to slow down software pirates. Not that you couldn't use any other language, but the closer to the processor you are, the more effective they are.

Friday, March 19, 2004

>there will always be a need for people who know the
>lowest level of abstraction which is the assembly language

No Sir. That's not the lowest level of abstraction.
There are microcodes, silicon (specified in a C like hardware specification language), circuits, and well, electrons running around in circles.

Where do you need assemby?

- operating system code
  (including pre-operating system code as BIOS).
  any code that takes up the role of an operating system.
  (see firmware, lots of embedded operating system (each 
  hardware vendor wants its own OS, sort of a tie in act)

- compilers are said to generate machine language, so you need people who understand it

- just in time compilers for java and .net like systems (you see, it's essentially the same idea)

- anything that has to run faster than possible (i.e. the competition)
(recently i saw an imaging application where they had hand optimized assembly for the graphics stuff)

- Mainframe applications. (Yes, COBOL suxs, and processor time costs a lot on big iron, so people want to pay less of it).

Michael Moser
Saturday, March 20, 2004

  - deeply embedded applications using small processors that need to use very low power and be very small and cost very little.
  - some other development tools such as debuggers
  - emulators
And of course if you happen to be in the business of designing and making and testing microprocessors, then you need to understand machine code. I bet there are quite a few x86 experts at Intel :-).

Gareth McCaughan
Monday, March 22, 2004

*  Recent Topics

*  Fog Creek Home