← Back to context

Comment by pavlov

10 years ago

Late '90s is about a decade off, IMO. C was very much the only systems language by then.

I think the last time a popular OS was built on something else than C was the original Mac OS, which had a Pascal API and used Pascal calling conventions.

On the desktop, C was chosen as the API language for Windows and OS/2 around 1986. That meant both Microsoft and IBM agreed that PC software is going to be in written in C.

On MS-DOS, Acorn, Amiga and Atari it was just yet another one.

On Mac OS (after the C transition), Windows and OS/2, they might had C as main implementation, but most of us that couldn't carry on using Turbo/Quick/HiSoft Pascal, Modula-2 or Basic compilers, moved to C++ instead.

We could still make us of improved safety and stronger type checking features, while being compatible with the C toolchains.

EDIT: Also IBM and Microsoft eventually had very good C++ support in the form of SOM, COM, C Set++ and MFC, with Borland providing the very good OWL and VCL.

Also any Windows 3.x old timer remembers the message and event handling macros alongside #define STRICT, that Microsoft used to bring some sanity to Windows programming with straight C.

  • On Amiga it was the only one of significance, as the API language. Having Lattice helped of course. Pretty much everything else was a toy in the early years.

    Most significant DOS development seemed to be C.

    • On Amiga, on my part of the globe we only cared about Assembly, AMOS and GFA Basic. The OS was a mix of Assembly, BCPL and C.

      On MS-DOS, on my part of the globe we only cared about Assembly, Turbo Pascal, Turbo Basic, Turbo C, Turbo C++ and Clipper.

      C was hardly the only choice on MS-DOS.

      All our stuff on demoscene related activities and game programming attempts were in Assembly and Turbo Pascal.

      4 replies →

> Microsoft and IBM agreed

My understanding of the narrative surrounding this is that Microsoft started working for IBM on OS/2 before switching to Windows, which - struggling here - was intended to have a certain amount of binary compatibility (?). Basically IBM decided, Microsoft went along with them, and the rest was history. Would be interesting to understand who made the decision to use C and why ... was OS/2 intended to be "unix-like"?