HACKER Q&A
📣 amichail

Why didn't the Amiga require that apps be written using safe languages?


Given that the Amiga didn't have memory protection, wouldn't it have been a good idea to require that all apps be written using safe languages?

And maybe such a requirement would have created a large enough market to make a port of Turbo Pascal to the Amiga worthwhile?


  👤 runjake Accepted Answer ✓
Safe programming wasn't even on the radar back then.

I never even heard of it getting onto the radar until some time after Aleph One's outstanding whitepaper, "Smashing the Stack for Fun and Profit."

https://www.eecs.umich.edu/courses/eecs588/static/stack_smas...

Edit: Yes, buffer overflows were a thing before, but I think the paper drove much more awareness.


👤 bjornsing
I learned C on an Amiga 600 back in the day. But I can’t remember any talk of safe languages back then. In general the “cost” of things like garbage collection or even a compile time borrow checker would probably have been perceived as prohibitive.

👤 gladiatr72
Who, exactly, would have been in the position in 1985 to have cared, let alone enforce such a requirement? Maybe things changed in the 90s but most quality Amiga wares were written in 68x00 assembler.

👤 Someone1234
Safe languages are computationally more expensive and consume more RAM, the Amiga had it hit price targets ($1300~) which meant they gave it an affordable CPU in the 7 Mhz Motorola 68000 series and started at only 256 KB.

It is one of those moments in history where hardware was more expensive than time, so spending longer on unsafe languages (e.g. fixing bugs caused by lack of memory safety) was preferable compared to the expensive context-switching often required by safe languages.

Safe languages are a natural choice when hardware is cheaper than programmer time.


👤 PaulHoule
See https://en.wikipedia.org/wiki/Java_Card for a good example of a safe language substituting for memory management.

I wouldn't say Turbo Pascal was a "safe language". It's less dangerous than C but it still lets you do low level memory operations.