Early Programming Books
Van Snyder
van.snyder at sbcglobal.net
Mon Jun 21 01:48:17 CDT 2021
On Sun, 2021-06-20 at 23:06 -0700, Chuck Guzis via cctalk wrote:
> Some may find this paper interesting on the FORTRAN I compiler:
> https://www.cs.fsu.edu/~lacher/courses/COT4401/notes/cise_v2_i1/fortran.pdf
>
> I will add that the diagnostic error messages for FORTRAN I were
> prettygood for the time. Missing a comma in a computed GOTO? There
> was anerror message that directly addressed this error.
> Back when I was still in the business of writing compilers, the
> "DragonBook" ("Compilers: Principles, Techniques and Tools", Aho,
> Sethi;Ullman) was the standard reference. I don't know if it still
> is. Theearlier book by Saul Rosen is also pretty good.
> FORTRAN (as opposed to Fortran) is somewhat odd lexically when
> comparedwith other languages. There are no reserved words, there is
> no conceptof whitespace (except in Hollerith constants) and
> combinations ofEQUIVALENCE and COMMON have sent many a compiler
> designer to tipple.
You also might like
https://www.cs.sjsu.edu/~mak/CMPE152/IBM1401FORTRANCompiler.pdf "Serial
Compilation and the IBM 1401 FORTRAN Compiler."
1401-FO-050 was more than FORTRAN I but less than FORTRAN II.
The innovation was interesting. The first overlay read the program into
core. The next 62 gradually massaged it into executabe form. No
auxiliary storage -- tape or disk -- was used. The compiler would run
from cards (a bit more than one full box) or tape. There's a video of
it running at CHM on https://www.youtube.com/watch?v=uFQ3sajIdaM.
Fortran 2020 is rather different from FORTRAN I. There are still no
reserved words, but blanks are significant so you can't put them within
a variable, constant, keyword, or operator. But a blank is optional
within some keywords, such as ENDIF is allowed instead of END IF. It's
also a modern language. FORTRAN 77 was criticized for not providing
dynamic memory and structured data types. Those were included in
Fortran 90, along with modules,explicit interfaces, significant blanks,
free-form input.... Fortran 2003 added object-oriented programming,
based on the SIMULA model, C interoperability, .... Fortran 2008 added
a much simpler SPMD parallel programming model, called coarrays -- much
easier to use than PVM or MPI.
> But there are lots of ways to skin the proverbial cat. When I had
> toproduce an extended BASIC compiler for the 8085 using only a
> floppy-diskMDS 800 system, I adopted a technique I learned from an
> old IBM COMTRANcompiler guru. Lay out the semantics of your
> compiler; lexicalelements, their characteristics, etc. and then think
> of them as tokensfor a hypothetical machine that takes as input
> lexical elements andproduces some sort of code as output. Initially,
> my exposure to thistechnique was in a COBOL dialect translator--you
> took more or lessstandard COBOL as input and produced bastardized
> COBOL as output.
> You design the instruction set of your hypothetical machine, then
> eitherinterpret it or use those instructions to produce macro
> calls. ASM80 onISIS II had a relatively weak macro facility, so we
> wrote the macroprocessor in PL/M. Worked like a charm--in 4 months
> we had a workingcompiler. I still have the design paper that I wrote
> for it.
> For whatever an old man's story is worth...
> --Chuck
More information about the cctech
mailing list