I don’t get that argument “programming is hard, and will always be hard, so you can as well code everything in assembly”. It looks like despair. Why not code right from switch panel then?
I hear this argument constantly, not about assembly (praising assembly is rare in 2018 compared to 1996), but about type systems (programming is still hard, type checkers will not help you), about underdesigned languages (js, php), about isolating imperativity (why bother if programming will always be hard and you can as well mutate global state from everywhere).
Speed. Assembly language programs are generally the fastest programs around.
Space. Assembly language programs are often the smallest.
When I was at IBM, one of the veterans was telling me about the confusing calling conventions used on the mainframe. One of the reasons for this was that a large portion of systems mainframe programmers write in assembly, and that, long ago, everyone seemed to come up with their own calling conventions. But the thing was that those calling conventions were terrible.
XPLINK (“Extra Performance Linkage”) is a pretty decent calling convention on z systems. It’s got very little overhead in both space and instructions and is good at detecting stack overflow. As I recall, it’s only a few bytes of instructions for the typical call, and is really fast. By contrast, some of the calling conventions devised by the systems programmers were tens or even a hundred instructions per function call. This made function calls really slow and the code bloated.
It just goes to show that you can write crap in any language. Assembly has the mythos of speed and concision associated with it mostly because only people with a vested interest in actually writing that kind of code (say, compiler writers) have used in seriously in the last 30 years.
I learned 6502 assembler more years ago than I care to admit :) I should pick it up again. There was something lovely about the simple elegance of both the language and the architecture.
There’s even an Eclipse based IDE for 8 bit platforms so you can develop the code in a modern environment.
So many amazing tech toys to play with, so little time. I need to become independenty wealthy already so I can start messing with this stuff :)
I never found another architecture where I was able to have so much fun. But I think that is more linked to the age/environment that I was in, when I was working on my Apple //e than anything else!
Except for the bit about programming environment. What were the assembly tools like for the Apple II? ATASM was SLOW as all get out. I haven’t tried it with a modern system in an emulator yet…
I don’t get that argument “programming is hard, and will always be hard, so you can as well code everything in assembly”. It looks like despair. Why not code right from switch panel then?
I hear this argument constantly, not about assembly (praising assembly is rare in 2018 compared to 1996), but about type systems (programming is still hard, type checkers will not help you), about underdesigned languages (js, php), about isolating imperativity (why bother if programming will always be hard and you can as well mutate global state from everywhere).
When I was at IBM, one of the veterans was telling me about the confusing calling conventions used on the mainframe. One of the reasons for this was that a large portion of systems mainframe programmers write in assembly, and that, long ago, everyone seemed to come up with their own calling conventions. But the thing was that those calling conventions were terrible.
XPLINK (“Extra Performance Linkage”) is a pretty decent calling convention on z systems. It’s got very little overhead in both space and instructions and is good at detecting stack overflow. As I recall, it’s only a few bytes of instructions for the typical call, and is really fast. By contrast, some of the calling conventions devised by the systems programmers were tens or even a hundred instructions per function call. This made function calls really slow and the code bloated.
It just goes to show that you can write crap in any language. Assembly has the mythos of speed and concision associated with it mostly because only people with a vested interest in actually writing that kind of code (say, compiler writers) have used in seriously in the last 30 years.
I learned 6502 assembler more years ago than I care to admit :) I should pick it up again. There was something lovely about the simple elegance of both the language and the architecture.
There’s even an Eclipse based IDE for 8 bit platforms so you can develop the code in a modern environment.
So many amazing tech toys to play with, so little time. I need to become independenty wealthy already so I can start messing with this stuff :)
I don’t know why, but thinking to use Eclipse as the IDE for an 8-bit platform seems to take all the fun out of it :-)
I too spent a lot of time on 6502’s architecture and I really enjoyed this interview with Bill Mensch - co-creator of the 6502: https://ataripodcast.libsyn.com/antic-interview-96-bill-mensch-6502-chip
I never found another architecture where I was able to have so much fun. But I think that is more linked to the age/environment that I was in, when I was working on my Apple //e than anything else!
I know precisely what you mean!
Except for the bit about programming environment. What were the assembly tools like for the Apple II? ATASM was SLOW as all get out. I haven’t tried it with a modern system in an emulator yet…