Since 1966 I have written software in a progression of languages: Fortran, DAP, Basic, MASM, Psion OPL, C, Windows SDK and Java. I've also de-compiled and documented programs written in PL/I & CHILL. I have also written extensively in HTML. Having followed the development of programming for over 40 years, switching to a new language is quick and easy with next to no learning curve. It's been a shameful waste that agency flibbertigibbets could never understand this.
After a short excursion into programming the Redifon 10/20 analogue computer, I was initiated into digital computer programming at college in 1964. The college had just bought its first digital computer, an IBM 1620. All the students in my maths class were encouraged to learn how to program it. After writing a few practice routines in FORTRAN IId, my first major program was an 'exact fraction matching' program to perform a numerical analysis task needed for my main physics project.
My first job as a programmer was writing real-time software for flight simulators. The machine used by the manufacturer for all their flight simulators at the time was the Honeywell DDP124, a 24-bit word (15-bit address) machine. It was programmed in an assembly language called DAP with which I spent a solid formative 2½ years.
The next programming languages I became involved with were PL/I and CHILL. The latter stands for Communications High Level Language and is used mainly for telephone switching applications. My tasks with these was not to program in them but to de-compile programs written in these languages back upwards to high-level documentation which the original naughty program designers had failed to produce before coding. This was a great exercise in organising and presenting information.
After a little dabble with COBOL for speculative projects which never went ahead, my next major project was with a machine right at the other end of the size scale. This was a Sharp PC2600 programmable calculator - a serial machine with its own special programming language on which I implemented a small bespoke business system.
On 27 March 1980 I bought an Apple II (actually an ITT2020, its European clone) and became - for the next 4 years - totally immersed in AppleSoft - an early form of interpreter BASIC - in which I wrote a contacts management package complete with map graphics. Its performance was later dramatically improved by the use of a third-party compiler. I used the package myself to great effect, but the Apple II version was never sold. I also developed a word processing package in AppleSoft for in-house use which was oriented specifically towards technical authoring work.
In 1984 I switched focus totally onto the IBM PC. I started off by piping all my application software from the Apple II through a tenuous RS232 connection, then editing the AppleSoft Basic into workable IBM PC Interpreter Basic.
In December 1986 I bought a Microsoft QuickBasic 1.0 compiler and upgraded to Version 2.0 on 1 January 1987 since when, over the next 5 years I logged over 5,000 hours of programming on several major projects, most of which were written as event-driven programs using the finite-state machine model which some would say was one forerunner of object-oriented programming. My greatest work in QuickBASIC was the complete rewriting of my contact management and communication package EBS Marketeer which compiled to 2½MB of executable code. The second was my technical authoring aid Author's Delight. A summary of my experience with QuickBASIC 2.0:
Jan 1986 - Apr 1991 for Eastern Business Systems (my own business): rewrote, developed, marketed and supported a contact management database package for PCs & networks installed and operational at 20 UK sites with 150 users.
Apr - July 1988 for Jaguar Communications plc.: Designed and developed a graphics based sales order analyser and presentation attachment for an existing accounting package.
May - Sep 1988 for News Technology Ltd: Developed a software suite for the IBM PC and the Psion Organiser to enable a news wholesaler to gather newsagents' shelf stock information by overnight dial-up for compacting and uploading to an HP3000. The PC suite also provided management information displays. [Psion software was in OP/L]
Sep - Nov 1988 & Jan - June 1989 for Jaguar Communications plc.: Designed and developed a PC-based Equipment Register program for for keeping records of equipment both in-house and on customer sites throughout its life-cycle.
Oct 1989 - Dec 1990 for Jaguar Communications plc.: Designed and developed an experimental prototype PC X25 network management package for monitoring and presenting real-time graphical information on data switch integrity and trunk traffic loading for a local authority library network.
Feb - Oct 1993 for Eastern Business Systems (my own business): Used QuickBASIC 2.0 to prototype receiver tuning functions and navigation computer course intercept control functions for navigation software being developed in 'C'.
Nov 1993 - Mar 1994 for Eastern Business Systems (my own business): Used QuickBASIC 2.0 to prototype the mathematical sigmoid functions for use in neural networks being developed in 'C'.
I still use Quick Basic for prototyping and proving small functions later to be implemented as part of a 'C' or Java suite. These include: a Mandelbrot set generator and three chaos graph generators 1, 2 and 3.
In my early days with the IBM PC, I had been often frustrated by the slowness of many of the I/O functions found in high-level languages. To solve these problems, I used Microsoft: MASM 80x86 Assembler to write narrower but faster screen and COM I/O functions to call from BASIC and C programs.
At the beginning of 1990, 25 years after I first started programming, I decided to transfer my main focus to 'C'. On February 25 I began an intense study of Kernighan & Ritchie. On 19 March I ordered my first C-compiler - Microsoft C 5.1. With this I produced a small library of useful routines and made C-versions of some of my 'legacy' software. On 18 September 1991 I upgraded to C 6.0 with the Microsoft Programmer's Workbench. With this I prototyped quite a plethora of specialist C-applications ready for packaging commercially later when opportunity permitted. Below are some of the many samples of my 'C' programming:
By late 1991, the pressure was well and truly on to move to Microsoft Windows. On 6 November I bought my copy of Microsoft Windows 3.0 together with Windows 3.0 Software Developer's Kit. I then embarked on an intense study of the SDK in which I followed the course supplied to build all the generic applications and used the Write and Pbrush utilities to make very effective study notes.
The event-driven architecture of Windows applications was reminiscent of the techniques I had used previously in flight simulation and telecoms switching. I then prototyped two small specialised Windows applications. One of these was a small exerciser environment for an air navigation function. Unfortunately, there was a problem maintaining timing integrity in time-sensitive applications running concurrently with other Windows applications.
I upgraded to Windows 3.1 on 06 April 1992. Unfortunately, at the time, I did not have a machine on which the 3.1 SDK would run. Also, on 22 September I upgraded my C-compiler to C/C++ 7.0 but encountered the same problem. Pressure of work from other directions subsequently forced me to put the development of serious Windows applications on indefinite hold.
With the advent of the Internet, I decided in the early autumn of 1996 that I should learn the hypertext mark-up language HTML. To this end, on 19 Sept 1996 I bought "HTML The Definitive Guide by Musciano & Kennedy" which I thought was a very well written and presented book. I studied it little by little on the train each day, later allocating actual desk time to it. I finished it on 4 February 1997. Although people who use HTML are referred to as programmers, I felt HTML to be more related to my skills as a technical author than as a programmer.
Looking back on my programming career so far, I have been frustrated by the constant changes in the pre-eminence of different programming languages and operating systems. I feel that for application programmers it is like trying to build on shifting sand. Changes for the sake of technical advancement are fine, but it seems that all too many changes are due to commercially motivated fashion. It is for this reason that I transferred my allegiance again. This time to Java. The promise of a language which ran on a soft machine which would be implemented on every level of hardware from hand-held to supercomputer was most appealing.
On 5 February 1997 I attended an IBM seminar on OS/2 Warp 4. IBM later mailed each attendee a complementary copy of Warp 4 which had the Java run-time engine built in, and came with Sun Microsystems' Java development environment. I had previously bought a book called "The Java Programming Language" by Arnold & Gosling, so being now suitably equipped, on 12 February I began an intensive study of the book, producing detailed study notes. The fact that Java was so much like 'C' helped speed the learning process. I later bought and studied another book: "JAVA - The Complete Reference" by Naughton & Schildt. Some of the Java applets I have written to date are runnable on my Web site.
I now see - or at least hope for - a stable platform and format for application program building. This has two parts. On the client or presentation side, I see the browser as the environment † and Java as the language. On the server side, I still see C as the main language for functional applications glued together into workable systems by Perl scripts. However, Java may replace C here also eventually. Let us hope that a stable foundation has emerged at last so that programmers can get some applications built upon solid rock.
† A traumatic illustration that an application programmer is never safe from foundations of shifting sand occurred in early 2017. All major web browsers ceased to support embedded Java applications. This forced upon me a frantic rewrite of 31 Java applets to run as stand-alone Java Web Start applications. Each had now to run outside the context of the web page wherein it belonged. A truly retrograde step if ever there was one.
I have been also:
A heavy user of Netscape Navigator, Microsoft Internet Explorer, Sun Microsystems HotJava Firefox and GNOME Epiphany web browsers for testing HTML and applets
An experienced Internet surfer (familiar with the major search engines)
A keen disciple of Linux and FreeBSD - including the GNOME, KDE and XFCE desktops
Knowledgeable of TCP/IP and communication protocols in general
Knowledgeable of Ethernet and other network architectures