Anecdotal Fortran... :-)

There are some interesting statements in the Tech Tips from 1987:

There are three types of line in a Fortran program. Comment lines (like REMs in BASIC) start with a C or a *. Debug lines start with D. They are used during testing and you can tell the compiler to ignore them, for a finished program, or compile them, for a test run. Thus you can keep test routines in your program text, and choose whether or not to include them just before you compile.

It’s a shame that even such rudimentary testing/debugging facilities have been removed from the language. Built-in testing in Julia is such a nice feature.

IBM pitched the language at mathematicians and engineers. Nowadays Fortran is outdated, but it is used in so many standard routines that advanced engineering courses usually include Fortran programming.

So Fortran is outdated for at least 35 years.

1 Like

AFAIK it has never been part of the standard.

This is an example of conditional compilation, and it has been part of many fortran compilers, but it was never part of the standard. Conditional compilation has many uses in addition to debugging. This feature should have naturally evolved into a full-featured macro processor that was part of the official fortran standard, but that did not happen. Instead, most fortran compilers use the C language preprocessor, quirks and all. It is only a de facto standard.

Most probably, it will still work. But beware of the power supply, those are not to be trusted after all those years. This is why the external power supply of those old machines is often called “the brick of death”. Make sure its output is what it is supposed to be before plugging it in, and do so regularly before use. Even better, get a new one - but as far I remember the Dragon had a uncommon joystick-like plug, which means you might have to use your soldering iron skills a bit.

Of course BASIC was the king, it played the role of the operating system - and that was the default back then. You actually write MIRA FORTRAN programs using the BASIC editor, and that’s what almost all versions of Pascal did as well.

At least your Dragon had a decent version of BASIC. My Commodore 64 had the worst BASIC dialect I’ve ever seen. The machine was great, its BASIC was an abomination. Sinclair BASIC was way better in comparison, and BBC BASIC was the undeniable king. BBC BASIC is actually still being developed today, more than 40 years later. And it is still impressive.
C64 had excellent (for its time) graphics and sound capabilities, but of course its BASIC supported none of those. You literally had to POKE everything. You wanted to change the color of the foreground or background? POKE something at a specific address. Wanted to define a sprite? Lots of POKES, and even binary arithmetic was needed for that. This is why I learned Assembly early, and for that I guess I should thank C64’s BASIC for being so awful. If I had to POKE everything, at least I should do it much faster, so Assembly it is. :laughing:

This is how I ran a program trying to find an example proving Fermat’s Last Theorem was wrong. What an ambitious young fool I was… The C64 was running the program for 2 days while I could not see what was going on, since the video output was off. Of course at some point I interrupted it, and I don’t need to say what I found. :rofl:

1 Like

Thanks for advice @pap, I don’t want my dragon :dragon_face: to go up in flames… Sure the coating of the wire turns in the power supply could have aged badly…
I never had a C64 but remember it was a dream machine, with so many good games. Too bad to learn its BASIC was bad… But the advantage of these machines is that they were so simple that a teenager could globally understand how they work and could learn assembler easily. Finally assembler was just a little more basic than BASIC :grinning: Well, GOTO or JMP is the same thing! And as far as I remember, there was no segmentation fault and protected mode, you could PEEK and POKE everywhere… (except POKE in ROM :laughing:) We were free to hack! (And even burn uselessly the CPU for two days)

Of the command line interface, rather.

Mary Lee Berners-Lee (née Woods; 12 March 1924 – 29 November 2017)

After a period devoted to bringing up children, she became a schoolteacher of mathematics, and then a programmer using BASIC, Fortran and other languages before retiring in 1987.
She died on 29 November 2017, aged 93.

1 Like

Interesting!!

From the same Wikipedia article, there’s a section on her work using machine code on Ferranti computers:

Errors with the programs were one problem, but errors caused by the computer were another. The computer frequently misread the binary digits it was given. The engineers thought the mathematicians could compensate for this by programming arithmetic checks, and the mathematicians would too readily assume that a wrong program result was due to a computer error when it was due to a program error. This caused inevitable friction between the mathematicians and the engineers. At the centre of this was a program that Woods had written for inverting a matrix to solve 40 simultaneous equations, which was a large number for the time. The long rows of data required by this calculation took the computer too long to process without an error.

Dealing with those errors sounds miserable (and impressive!). Too bad she left Ferranti in 1955, right when FORTRAN was appearing, which probably would have made her work at Ferranti easier, I assume.

1 Like

The only picture I have found where they are together:

Three of the Berners-Lee family’s four children went on to become computer scientists. Mary Lee herself went back to work in the field.
She learned to program in the FORTRAN language and wrote manuals. She ended her career at the age of 62 years and a few months, the midpoint between the retirement age for women and men. She did so because she thought "half was a fair age. " [DeepL translation]

Regarding “half” being a fair age: 62-1/2 years is 0.5 (in base 8) of a century, and I am not sure how one would voice 0.5 in base-8, but she seems to have had the right idea.

1 Like

Dreams is a kind of programming game for the PlayStation 4:

Players can create and play user-generated content in the forms of games, audiovisual experiences and game assets, which can be shared or remixed to be used in other players’ creations.

The game credits include the following entries:

Based on original fortran 77 code from FFTPACKv4 from NETLIB: Paul Swarztrauber (Authored by – of NCAR – in 1985)

FFTPACK license: Copyright © 2014 the University Corporation for Atmospheric Research [UCAR], Home | Computational and Information Systems Lab, All rights reserved, Developed by NCAR’s Computational and Information Systems Library, UCAR, www.cisl.ucar.edu

1 Like

In 1984, a core team of about fifteen domain and IT experts from the Indian Railways and CMC started work on finalising specificiations, and building the pilot system. The software was written in Fortran, used a flat-file data structure to enhance speed, and was implemented on a DEC VAX-11/750 system. It was one of the earliest instances where a system for online transaction processing was developed on a VAX cluster.

The use of Fortran in the first Passenger Reservation System (PRS) is also mentioned on Wikipedia:

  • Passenger Reservation System (PRS): A nationwide online passenger reservation and ticketing system, developed and maintained by CRIS, was developed in C and Fortran on a Digital OpenVMS operating system using RTR (Reliable Transaction Router) as middleware. Also known as CONCERT (Country-wide Network of Computerized Enhanced Reservation and Ticketing), it interconnects the four regional computing systems (in New Delhi, Mumbai, Kolkata and Chennai) into a national PRS grid. It allows a passenger anywhere to book train tickets from any station to any station. PRS handles reservations, changes, cancellations and refunds, reserving over 1.6 million seats and berths daily. Complex rules, validations and fare-computation techniques are interwoven in the application. This system is currently under modernisation.[6]

It is also described in the article:

Srivastava, S. C., Mathur, S. S., & Teo, T. S. (2007). Modernization of passenger reservation system: Indian Railways’ dilemma. Journal of Information Technology , 22 (4), 432-439.

I haven’t been able to dig up any material about the modernisation of the system. Perhaps it’s already been rewritten?

A few more snippets of information can be found in the FAQ of the Indian Railway Fan Club: [IRFCA] Indian Railways FAQ - Railway Operations - III (use the browser to search for “Fortran”).

1 Like

An example of the wreath can be seen in the Twitter feed of Ken Shirriff:

https://twitter.com/kenshirriff/status/1739384834164965539

1 Like

Microsoft released the FORTRAN-80 compiler for the TRS-80 Model I in December 1978. The FORTRAN-80 compiler, which had already been available for CP/M since July 1977, cost $350.00 and required 32K of memory, an Expansion Interface, and a floppy drive. (These were pretty steep hardware requirements at the time.)

Radio Shack introduced their version, sometimes called TRS-80 FORTRAN, in 1979. Here is the announcement in the November 1979 issue of the TRS-80 Microcomputer News:
Now available for TRS-80 Model I (32K with Disk) is a complete FORTRAN package which conforms to the American National Standard FORTRAN language described in ANSI document X3.9-1966, with a number of language extensions and restrictions. The FORTRAN package includes FORTRAN-80, EDIT-80, LINK-80, and LIBRARY – everything you need to create, compile, and execute FORTRAN programs on your TRS-80.

2 Likes

RIP Niklaus Wirth. Below is an excerpt from his 2002 essay Pascal and its Successors. I think the problems he mentioned have been fixed in Modern Fortran.

Pascal was born in 1969 out of an act of liberation [0]. In more than one sense. Confronted with the duty to teach programming, I had been faced with the dire options of Fortran and Algol. The former did not appeal to my taste as a scientist, the latter not to those of the practical engineer. I liberated myself from this jail by designing Pascal, convinced that an elegant style and an effective implementation were not mutually exclusive. I felt strongly – and still do – that a language used in teaching must display some style, elegance, consistency, while at the same time also reflecting the needs (but not necessarily bad habits) of practice. I wanted to design a language for both my classroom and my “software factory”.

The second alluded liberation was from the design constraint imposed by committee work. In 1966, Algol W [1] had been a compromise bowing to many divergent opinions and requests from both an Algol committee and an Algol community. Surely, many of them were inspiring and beneficial, but others were incompatible and hindering. Some members had high ambitions of creating a language with novel features whose consequences were to be the subject of further research, whereas I had been brought up as an engineer feeling uneasy with proposals whose realization was still the subject of speculation. I wanted to have at least a concrete idea of how a construct was to be represented on available computers, and these, let me add, were rather ill-suited for any feature not already present in Fortran.

The general idea dominating the design of Pascal was to provide a language appealing to systematic thinking, mirroring conventional mathematical notation, satisfying the needs of practical programming, and encouraging a structured approach. The rules governing the language should be intuitive and simple, and freely combinable. For example, if x+y stands for an expression, x+y should be usable as a sub expression, in assignments, as procedure parameter, or as index. For example, if a widely established convention interprets x-y-z to mean (x-y)-z, we should not redefine this to denote x-(y-z). Or if x=y is used for centuries to denote equality of x and y, we should refrain from the arrogance of replacing it by x==y. Clearly, Pascal was to build up on the notational grounds established by mathematics and Algol. Pascal and its successors were therefore called Algol-like.

Today, it is hard to imagine the circumstances prevailing in the 1960s. We must recall that the computing community was strictly split into two professional camps. The scientists and engineers used Fortran for their programming large-scale, word-oriented, binary computers, wheres the business community used Cobol for their smaller, character-oriented, decimal machines. System programmers were labouring within computer companies using proprietary machine-code assemblers. There were attempts to unite the two worlds, such as the highly innovative Burroughs B-5000 computer, or IBM’s programming language PL/I. Both were ill-fated and devoured considerable budgets. Pascal was another such attempt, although less ambitious and without budget or industrial support. It applied the idea of recursively defined structures not only to executable statements, but also to data types. As elements, it adopted arrays (vectors, matrices) from Fortran and Algol, as well as records and files from Cobol. It allowed them to be freely combined and nested.

The other fact about the 1960s that is difficult to imagine today is the scarcity of computing resources. Computers with more than 8K of memory words and less than 10us for the execution of an instruction were called super-computers. No wonder it was mandatory for the compiler of a new language to generate at least equally dense and efficient code as its Fortran competitor. Every instruction counted, and, for example, generating sophisticated subroutine calls catering to hardly ever used recursion was considered an academic pastime. Index checking at run-time was judged to be a superfluous luxury. In this context, it was hard if not hopeless to compete against highly optimized Fortran compilers.

3 Likes

Thanks @Beliavsky for this sad news. I loved Pascal, 30 years ago. RIP M. Wirth.

1 Like

On Twitter, I found a picture of the punch card deck from the Xenakis piece:

A transcript can be found here: GitHub - ThemosTsikas/XenakisFreeStochasticMusicFortran: working versions of a Xenakis FORTRAN program (Xenakis 1971 Formalized Music p 149) (by @Themos)

3 Likes

Erthos Albino de Souza was a brazilian poet and graphical artist using Fortran and PL1.

Some of his works can be found here: http://www.codigorevista.org/nave/index.html#/&indice2=extracodigo_0029&indice=extracodigo_0001
(click on the left- and right-buttons to turn the pages)

I love the fact these are printed on Petrobras paper:

4 Likes

Edward Zajec was a computer art pioneer born in 1938 in Trieste. He worked with FORTRAN IV on IBM machines using ComPlot (Houston Instruments) and CalComp plotters. I found out about him from an interesting blog post about mechanical plotters.

Here are a few more links about Zajec:

Edward Zajec in: tendencije 4, exhib. cat. Galerija suvremene umjetnosti, Zagreb 1970

The basic reason which made me turn to the computer was the need for a new medium. Coming from the field of painting and traditional graphics, I initially approached the problem from a purely aesthetic point of view and tried to developed the concepts which I had hitherto worked with. My concepts were based upon the assumption that art can be the universal aspect of reality, and I was therefore most interested in the works and ideas of Piet Mondrian and Kazimir Malevich…
My compositions consist in various arrangements of a given number of units in a square format, which is limited in size by the plotter on which the work is executed. […]
With the use of the Random Number Generator subroutine (RAM), the computer arranges the units randomly itself.


From the Cube:


From the series of works RAM (the name of the random number generator subroutine):


From the 1971 exhibition COMP3:


Prostor Variation 20 (prostor means “space” in slovenian):

image

3 Likes

Thanks a lot @ivanpribec for this great find. In the first listed link, there are also works in color that I really like.

I will also read the article on the history of plotters, they were the 3D printers of those times… Just 2D “3D printers”!