The thing to keep in mind with regard to the significance of the C language and this particular time-frame is that personal computers were becoming capable of hosting a C compiler. Today, we don't think about the ability to host a C compiler to be a constraint, but with early micro-computers it was. For instance, the Atari-era of computers, could not easily host a C-compiler. There was a version called "Deep-Blue-C" which is a subset. In fact, "compilers" were rare. More common were interpreters because they required less resources.
Running alternative operating systems on early micro-computers, such as CP/M on an Apple-II, provided more capabilities, and ability run slightly more powerful software
The IBM PCs and clones around that time-frame certainly had the power to host compilers, Turbo-Pascal was one early example.
Also, back then, with some exceptions, most commercial products on micro-computers were written in Assembly language, not a high-level language. This was done for performance. This was common.
However, C was generally regarded as producing code that's fast enough that enabled programmers to use it instead or coding directly in Assembly. Certainly, with the new crop of computers, the faster IBM PCs (ATs), Macintosh, Atari ST, Amiga, all had sufficiently sophisticated compilers where that became standard issue. Pascal and then C.
So around 1983, C was become something that people were starting to take a much closer look at because of the availability of hardware and operating systems that allowed them to use C. It is not that C was not available previously, but it was used by a different class of developers, the ones with S-100 Bus machines running CP/M of some form.. these are machines that often required you to re-target the BIOS from source when you add more RAM.
C also became the default language for Windows. For the Mac, it was a form of object Pascal at first, and then moved to C++ with MacApp.
This is an example of C being powerful enough, being at the right place and at the right time to where now it's the lingua-franca of system software.
> ... most commercial products on micro-computers were written in Assembly language, not a high-level language. This was done for performance. This was common.
The exceptions were interesting. A common approach was a byte code interpreter/machine. This had the advantage of being easier to port, as you only had to port that piece rather than the whole app. Hardware used to be a lot more interesting back then with all sorts of variations on memory addressing modes, size of units of information (bits & bytes), overlaying (you couldn't fit all your code and data in memory at once), file access, and even something as simple as drawing text or graphics on the screen.
UCSD Pascal, and later large parts of Microsoft Excel (plus Word I believe) also used the approach, especially in the latter case because it needed less space - https://en.wikipedia.org/wiki/P-code_machine
Programming back then was very different to today. Virtually everything was constrained by cpu, memory and storage. Writing products involved working out how you could do things despite those, and debugging was not fun. Just like using 9 inch monitors, it seemed fine at the time, but now I really like having almost unbounded everything, and several freaking huge monitors!
I'm pretty sure it was Multiplan and not Excel that used the p-code approach. Also, when Lotus 1-2-3 shipped, it was written entirely in assembly, was blazing fast, and crushed Multiplan in the marketplace.
The Excel team's ruggedly independent mentality also meant that they always shipped on time, their code was of uniformly high quality, and they had a compiler which, back in the 1980s, generated pcode and could therefore run unmodified on Macintosh's 68000 chip as well as Intel PCs. The pcode also made the executable file about half the size that Intel binaries would have been, which loaded faster from floppy disks and required less RAM.
Thanks. Looks like both Multiplan[1] and Excel were p-code. However, Multiplan was wiped out by 1-2-3, and Excel ... adapted (it certainly isn't p-code today or anytime in recent history).
"The inability to fit the larger code size of compiled C into lower-powered machines forced the company to split its spreadsheet offerings, with 1-2-3 release 3 only for higher-end machines, and a new version 2.2, based on the 2.01 assembler code base, available for PCs without extended memory. By the time these versions were released in 1989, Microsoft was well on its way to breaking through Lotus' market share"
Running alternative operating systems on early micro-computers, such as CP/M on an Apple-II, provided more capabilities, and ability run slightly more powerful software
The IBM PCs and clones around that time-frame certainly had the power to host compilers, Turbo-Pascal was one early example.
Also, back then, with some exceptions, most commercial products on micro-computers were written in Assembly language, not a high-level language. This was done for performance. This was common.
However, C was generally regarded as producing code that's fast enough that enabled programmers to use it instead or coding directly in Assembly. Certainly, with the new crop of computers, the faster IBM PCs (ATs), Macintosh, Atari ST, Amiga, all had sufficiently sophisticated compilers where that became standard issue. Pascal and then C.
So around 1983, C was become something that people were starting to take a much closer look at because of the availability of hardware and operating systems that allowed them to use C. It is not that C was not available previously, but it was used by a different class of developers, the ones with S-100 Bus machines running CP/M of some form.. these are machines that often required you to re-target the BIOS from source when you add more RAM.
C also became the default language for Windows. For the Mac, it was a form of object Pascal at first, and then moved to C++ with MacApp.
This is an example of C being powerful enough, being at the right place and at the right time to where now it's the lingua-franca of system software.