I have been in the computer/software business since 1982.
The first languages I learnt were at University: Fortran and IBM 360 Assembler. The first programs I wrote were solutions to the “8 queens” problem in assembler and Fortran. Next semester I learnt Pascal. In fact I was in the first class to learn Pascal in South Africa. Our lecturer was Judy Bishop. Those days we learnt Computer Hardware in detail. I am very grateful for that since I use that knowledge to this day!
In 1982 I had to do what was called “National Service”, basically compulsory conscription in the South African Army. I really didn’t want anything to do with anything military, so I pushed to get into computer systems. After five months I pulled it off and started working on programming a direction finding system. I remember the CSIR (Council for Scientific and Industrial Research) and another private company were contracted to do this direction finding system to track enemy radio transmission locations. To my credit the Army took my system over the other two! I solved the problem by using a radical non linear parameterization of the earth. This made it compute an initial estimate that was very good in short time, and then went on to the full algorithm.
After this success I got the idea that I would fit in well in the computer field.
Those days we worked on a bootlegged DEC Computer clone called the Omega M40. It boasted a total of 2 megabyte ram! The disk drive held a whole 20 megabyte, in disk packs the size of large serving plates but 6 inches high!
One morning I got in early and decided to play with this beast. (It was the size of a double door fridge). I went to the console and pressed the IPL (initial program load) button after setting the switches to the start address. I saw the lights flash and I had booted my first computer from scratch! But I felt this looming presence coming down the hallway into the computer room, Oh damn the Captain was working! It took me half an hour of pleading to save my position and not get sent away to fight on the border. (he had been in since 6AM and lost one hours work).
We used a language called RTL2 (Real Time Language 2). It was a Pascal like language but very low level.
After the army I was meant to go back to University as a lecturer. But I couldn’t stand the hands off approach of academic life after learning to get my hands dirty in the army, and joined the company ISIS Advanced Systems after a nice referral from one of their employees who worked with me in the army.
In my first actual job in 1985 we did real time programming on Digital Equipment Corporation VAX computers.
I liked these machines , they had 32 bit address space, so no fiddling with selectors or active page registers.
However compared to today they were highly primitive. My Apple watch has more memory than those VAX machines, and who knows maybe more processing power!
Anyway we programmed in RTL2.
My job was to design faster versions of the built in operating system functions for synchronising processes and inter process communication.
We had separate VAX machines connected via shared memory. That is memory that is accessible to both computers.
I wrote code to synchronise the clocks using the shared memory once. It was amazing. When I ran the program, because the two computers were also connected on a LAN and the LAN also synchronised the system times, it caused a system crash. It couldn’t handle the times synchronising so quickly!
I also had to write a program to close all programs in the system for shutdown. I ran it first time and it came back with an access not allowed error, so I asked the system admin to grant me access to test my program. When I ran it again, people started saying that their terminal sessions were suddenly ending. I realised that I failed to check that the processes where in the correct group!, and then mercifully the next bug showed up. The process terminated itself by mistake, saving the other users from losing their sessions. I did testing after hours after that!
I learnt a lot about process synchronisation those days. We didn’t have threads then only processes!
Its interesting how things have changed. In those days Real Time Programming was a separate discipline, nowadays with the improved hardware speed its hardly ever mentioned anymore. I think all we have to do these days in programming if it is real time is to ensure we don’t have garbage collection threads suddenly consuming cpu cycles when we need performance!
Actually the UI of any decent smartphone is using real time programming fundamentals! (In my humble opinion!)
I enjoyed the Real Time World those days, we were considered “System Programmers” not just ordinary programmers.
Anyway the contract ended and new more interesting things were becoming available GUI’s and graphics, and Windows had just become 32 bit!…..