I started my university studies in 1978. I remember going to my first freshman programming course. My study field was Industrial Engineering, and just like any other Engineering student, I had to take a course in Fortran.
The instructor was actually from the Nuclear Engineering Department. He had a peculiar voice and for many people in the class, it was very difficult to follow the class, especially if you were not really sure what -if anything - this new skill meant for you.
But for me, since I was always a kind of mathematician when I was in high school, this new way of logically structuring your thoughts so that you could make a computer follow a determined path based on user input was very in teresting. It immediately appealed to me, maybe because it was a way to create something which you could totally control (I found about uncontrollable software much later...)
It must have been a week before I noticed that there were only about 5 people left in the class. We were basically the only ones left who could follow what was going on and could actually go through some examples.
I entered the Computer Center Friday evening of the first week, and my 45-year in Software Development started.
Fortran was an interesting language, but the programming environment was far from ideal. We had a Univac 1106 mainframe at the University, and we had to use punch cards, such as this one:
The punch card had 80 columns and these had specific meanings in specific languages. Fortran also had this. For example, if you punched the hole in column 6, this meant that the card had a continuation of the statement in the previous card. Columns 1-5 were used for "labels". Putting a "C" in column 1 meant that this was a "comment" card put for documentation and thus would not be processed by the compiler. Needless to say, everything was in Capital Letters.
Initially we had punchcard machines which punched a hole directly when you pressed a key. Then we had better machines which had a 80-character memory, so you could type the whole card and do corrections if you made a mistake, and the machine punched the holes when you finished. However, it was still difficult to use, since there was no screen to show what you had typed, so you had to guess.
One other problem with using the computer center was that you submitted your cards comprising the program (carefully wrapped with an elastic band so that the system operator would not accidentally drop them and screw up the order of the cards, which would be a disaster), and you got your output between 5 minutes to more than 2 hours later, depending on the load of the mainframe. When the center was crowded, this usually meant you could maybe get two runs per day if you were lucky. You tended to write your program on a paper and manually go through it several times before you submitted it, to reduce the risk of waiting 2 hours to find out that you had made a simple mistake and the program did not run.
Fortran was one of the languages which conformed to the Programming technique called Structured Programming. It was developed in the 60's and 70's and became very popular, especially with the ascent of a lot of CASE tools supporting it. The idea was to break a program into structured pieces (usually called "subroutines") in order to reduce complexity. It also allowed one to define "data structures".
Fortran also had a control flow construct called the "GOTO" statement which allowed control to be passed to a line within the code with a given line number. Dijkstra wrote a famous article named "The GOTO Statement Considered Harmful" published in the Communications of the ACM which discussed the dangers of using too many GOTO statements in the code, since it would turn the code into unmanageable spagetti.
Because Fortran had structures for arrays, vectors and other multi-dimensional mathematical constructs, it was pretty useful for engineering programs. The fact that there were many optimisation or numerical analysis packages developed in Fortran also helped the popularity of the language.
When I wanted to develop a kind of database for my books (remember, this was before relational databases or Excel spreadsheets!) I had to use Cobol, since Fortran was really weak in reporting. Its arcane, fixed syntax was strange, but those fixed cards could be shared from one program to another, thus it was quite easy once you had the basics.
One development around 1981 was that we had "floppy disc readers" installed. These used 8 inch discs (which were really "floppy" when you waved them). Suddenly it was possible to write the whole program using a visual editor (albeit quite primitive) and write it on a floppy disc, and send it to the mainframe yourself rather than asking an operator to do it. You still had to wait for the output to see the results but this was an enormous improvement.
At the same timeframe the Univac was replaced with a CDC Cyber mainframe. Moreover, we had terminals! I was introduced for the first time to interactive use of computers, albeit with a simple textual terminal.
I soon discovered The Adventure Game. This was a textual adventure game that went like "You are in a maze of twisty little passages, all alike..." and asked you to give textual commands that allowed you to move in a complex geography and interact with objects. Of course there were dwarves appearing out of nowhere and hurling knives at you, and you could easily die by falling into a chasm if you took the wrong turn, but the concept of playing games on a computer was just so novel.... I would later on discover that most of the elements of the game were taken from Tolkien's Hobbit and Lord of the Rings.
At night the mainframe was used to support commercial companies by running their jobs when there were no or very little student work. Since I had befriended all the operators, I would sometimes stay late and run my jobs along with the commercial programs, and would enjoy getting the output in a minute rather than the normal 2-3 hour timeframe. During those long programming years, I was part of an optimisation project for the municipal bus company where we would run huge Linear Programming models to optimise the bus allocation to different routes in the city and would run a post-processor to present the results in a humanly readable fashion.
I don't quite remember how many programs I wrote with Fortran, but by the year 1982, I was an expert programmer.
( to be continued…)