Penguin
Diff: AlgolWCompiler
EditPageHistoryDiffInfoLikePages

Differences between version 5 and previous revision of AlgolWCompiler.

Other diffs: Previous Major 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