Arrggh! beware the upgrade...

Dec 19, 2023 Last reply: 2 years ago 136 Replies

My course in the mid 80s had Modula 2 and ML (it wasn't SML at the time) as the main high level languages taught.

A bigger influence was that the main machines we used ran 4.2BSD (and later Ultrix). So those of us who were keen, used C (and the odd shell script) to write useful programs.

During my abortive university CS period (1968-1971) there was a course whose purpose was to expose you to as many programming languages as possible, hitting you with a new one every two weeks. Algol 60, Algol 68, Algol W, LISP, UMIST, SNOBOL4... Fortunately I dropped out before having to take that one.

I remember that. It had something to do with enclosing all keywords in apostrophes in place of the bold-faced type in the reference books. It was nasty both in appearance and typing.

We started off with FORTRAN and moved to IBM 360 assembly language, then on to other languages like PL/I. I decided I liked assembly language because there was no snooty compiler slapping my wrist and telling me I couldn't do something.

In one term project we were divided into three-person groups. The other two wanted to use PL/I while I insisted on assembly language; we compromised by having them do the theoretical processing in PL/I while I wrote the I/O processor in assembly language. Interfacing the two was a bear.

In another term project where we worked individually, I wrote my program in assembly language. During the review my prof (also the CS department head and one of the creators of Algol 68) would repeatedly look at me with a pained expression and ask, "Why did you do it in assembly language?"

However, all ended well. I left the CS types in their ivory tower and found a job in the Real World [tm], writing code in assembly language and RPG. (The machines I worked on were too small to handle COBOL.)

Then along came C - it was a godsend, and I use it to this day.

Yes, yes !! That was it. Quite why we had to do that was a mystery.

It was so that the set of keywords in the language could be extended without any risk of them ever being mistaken for variables. The idea was that keywords were picked out by "stropping" them either by CASE or with 'quotes' or by typeface (bold usually) instead of there being a set of keywords that could not be used as variable names.

Yebbut that was never going to work, given the technology of the day. I think I wrote one program in it and didn't bother after that.

But it *did* work - you could even type the code stropped with quotes or UPPER CASE and print it stropped with bold face or italic.

I quite liked Algol 60, and Algol W was OK as teaching languages go but I really didn't get on with Algol 68C - nasty over-complex mess of a language - meeting it at the same time as BCPL only emphasised the impression.

Not on standard line printers of the day which IIRC didn't even have lower case. And the quotes were just a pain.

No on those it would have to print quote stropping, even if it was typed in with case or bold stropping on some fancy terminal.

No: { ... } is written as BEGIN ... END

Sweet memories of Borland Turbo Pascal with Turbo Vision ...

That makes sense. Remember COBOL reserved words?

What SQLite does is sort of the opposite. If you want to define a column or table with what is in fact a reserved word, then you have to put double-quotes around it in your definition. If you avoid reserved words then nothing (except strings) needs quoting. Much better than what Algol did. Really off-putting, it was.

That does not achieve what the Algol stropping achieves, which is to ensure that code does not need to be changed when the language is extended. If a new keyword is added to Algol it doesn't matter if code uses that word as a variable, it will still compile correctly and do what it ever did.

Funny how no other language I've come across in the intervening 55 or more years has found it necessary to do that.

The problem still exists, other languages just don’t attempt to solve it. All the impacted users get to modify their code to work around the damage instead.

The case of ‘export’ in C++ was particularly grating, since almost no implementations ever supported the functionality, but some of them still error when encountering the new keyword.

Much the best approach. And you don't actually have to do anything unless you are making a new version.

Yes, but in another context

{ this is a comment in pascal }

The first time I saw C, I wondered why it was so much comments ...

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required