On Feb 27, 2015, at 1:27 PM, Chuck Guzis <cclist at
sydex.com> wrote:
...
I suppose that it's unreasonable for a language to support processor instruction set
extensions. But APL does a great job of supporting vectors; has a syntax for things such
as dot-product, etc. So it can't be that K&R weren't aware of such things.
It seems to me to be very strange that today we're coding in a language that was
developed for a PDP-11 minicomputer.
I thought it was a PDP-7 minicomputer? (Or is that Unix?)
But while C was first run on a DEC minicomputer, it isn?t in any significant way ?for?
those computers, any more than Fortran or COBOL are for IBM computers. All high level
languages are pretty portable, some a bit more so than others. For example, Fortran fits
comfortably on CDC 6000 machines (60 bits one?s complement) and IBM 1620 (decimal variable
length); C doesn?t. If you really stand on your head, you can sort of make it work; there
exists a C for the 6600, for example. But you have to stretch, if not outright violate, a
number of the language rules to do so.
I think the limitations and design of C come from the fact that it was designed for OS
implementation, not high level application implementation, as APL or various other
languages were. Compare C with Bliss and Sympl and ESPOL, not with APL or Snobol. Given
that focus, it?s pretty good. Certainly better than Bliss. The other two suffer from
being implemented only on single proprietary platforms that have long since disappeared,
and Sympl didn?t have much going for it anyway (being based on Jovial is certainly a
recipe for disaster). It would have been nice if ESPOL had evolved to be a portable
language as C was, but that didn?t happen.
C does have extensions for vectors; I know GCC does, and for all I know those may be
standard rather than GCC specials.
I suppose there?s always Ada if you want a clean portable systems programming language...
paul