Differences between version 5 and predecessor to the previous major change of AlgolWCompiler.
Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History
Newer page: | version 5 | Last edited on Wednesday, December 10, 2003 10:09:26 am | by GlynWebster | Revert |
Older page: | version 2 | Last edited on Wednesday, August 13, 2003 9:36:52 pm | by JohnMcPherson | Revert |
@@ -1,39 +1,39 @@
!!! Retrocomputing project: an Algol W compiler.
-I've begun writing an Algol W compiler for historical reasons[1]. One
-reason: Algol W was the first language to treat records
as data
+I've begun writing an Algol W compiler for historical reasons[1]. __(Actually, this is on hold, I've found other things to do, but if this project interests you then please contact me.)__
One
+reason: Algol W was the first language to support DataStructures
as
types, that's a fairly significant step. There are open source
implementations of Algol 60[5] and Algol 68[6] but none yet for this
third dialect, Algol W. --GlynWebster
!! What is Algol W?
Algol W is one of Nicholas Wirth's first language designs[2]. Algol
-W is Algol 60 with string handling, complex numbers and dynamically
+W is [
Algol 60 | Algol]
with string handling, complex numbers and dynamically
allocated records, with some of Algol 60's syntactic idiosyncrasies
stripped away. It kept Algol 60's "call by name" argument passing
style, and is the probably the only other language to have used it.
Nicholas Wirth presented it to the committee that was designing the
successor to Algol 60, but it was rejected as a design basis in favour
of a set of vague ideas that later became Algol 68. Which was a shame
really, because Algol 68 turned out to be so difficult to implement it
never really got off the ground, so programmers were left slogging
-along with Fortran and Cobol
for long time.
+along with [
Fortran]
and [COBOL]
for long time.
The recollections of Algol W that I can dredge up from Google News's
archives seem evenly split between fond memories and frustrations with
the original compilers' limitations. In the middle of the primal
-''Goto Considered Harmful'
' flame war one Algol W compiler gave the
+'GoToStatementConsideredHarmful
' flame war one Algol W compiler gave the
warning message "Is this goto really necessary?" for every GOTO, and
there was no way to turn it off. (I don't think I'll do that. None of
you grew up abusing GOTOs, did you?)
! Why did Algol W disappear?
It was not Pascal. Then it was not C. OS/360 is not that popular a
platform anymore. Algol W was rejected as the template language for
-Algol 68. Wirth went on to invent Pascal, which superseded Algol 60
+Algol 68. Wirth went on to invent [
Pascal]
, which superseded Algol 60
and Algol W in schools. The Stanford Algol W compiler seems to have
had annoying limitations. And there was that whole "Is this goto
really necessary?" thing. Historical reasons, like I said :-)
@@ -62,9 +62,8 @@
prod := 0.0;
vectoroperation (i, 10, prod := prod + a(i) * b(i));
''(''prod'' is now the product of vectors ''a'' and ''b'')''
-
__end__.
!! The compiler
@@ -73,18 +72,18 @@
have documentation for.
I'm writing in standard C, and the compiler will generate Gnu C
code. Algol and Pascal-like languages can be translated into Gnu C
-simply and directly because of GNU's extensions to the C
-language. (They fit so well to this task that I think this is the very
-reason Gnu added them.)
Statement expressions, nested functions,
+simply and directly because of [
GNU]
's extensions to the C
+language. (See gcc(1).)
They fit so well to this task that I think this is the very
+reason Gnu added them. Statement expressions, nested functions,
variable length arrays and inline functions are the ones Algol W will
need. Algol W programs need a garbage collector. I'm thinking of using
-the Boehm collector[10]. I'm writing in C just to reduce the number of
+the Boehm collector[10]. I'm writing in [
C]
just to reduce the number of
tools necessary for someone else to get the compiler going[9],
-although I'd prefer to be using Objective Caml for something like
+although I'd prefer to be using [
Objective Caml | Ocaml]
for something like
this. I might use Splint[7] annotations to try to take the curse off
-it
.
+C
.
I was thinking of modifying the GNU Marst[5] compiler to accept Algol
W but Algol 60 and Algol W are enough different that I think the Gnu C
route might be easier.
@@ -131,9 +130,9 @@
[2] See http://www.inf.ethz.ch/~wirth/projects.html
[3] the editor went on to be the manager of the team designing the
-Alpha CPU chips, and now I can't find his email address. Funny that
.
+Alpha CPU chips, and now I can't find his email address. I thnk he's hiding from headhunters
.
[4] [Stanford University Technical Report CS-TR-71-230.pdf | ftp://reports.stanford.edu/pub/cstr/reports/cs/tr/68/89/CS-TR-68-89.pdf]
[[3.5MB], "This manual refers to the version of the Algol W compiler
dated 1.6 January 1972". It has a formal description of the language
@@ -150,9 +149,9 @@
pages of very clear, simple C code, heavily and helpfully
commented. I've printed it out and I'm reading it in bed. (Have you
tried this? A really ''good'' piece of code is readable, and
enjoyable. I'm sure I'm learning things. There are several signs of
-the author being an "
experienced"
hacker: he refers to RAM as "main
+the author being an ''
experienced''
hacker: he refers to RAM as "main
core" for example :-)
[6] Marcel van der Veer's __Algol68G__
(http://www.xs4all.nl/~jmvdveer/algol68g.manual.html) and Sian