Programming Experience

This page contains a couple of lists of my software development experience. I thought it might be interesting to document what it was like in the ancient times of computer programming.

Programming Languages

I didn't plan to work in so many different languages. It just sort of happened. I'm self taught in the all the languages except the first two. In the list below, I may have missed one or two. I'm not done either. Next on my list is Go. I just need to find a good reason to write a program in it.

COBOL
I learned COBOL (common business oriented language) in my first programming class in 1971. The language contains a lot of structure. You ended up with a lot of lines of code that didn't do very much. We had to create our programs on punched cards and could only run them about once every three hours on the university's only computer. The massive 4k of core memory took up about twenty feet of RETMA cabinets. My first run had almost 200 errors. It took days to get them all out. After college, I programmed with the language in several different jobs.
FORTRAN
The next semester, I took a class in this language. The programs were very short and we got to use a remote interactive terminals to enter them. I usually could do an assignment in an hour. I never did use this language afterwards. FORTRAN stands for formula translation and was primarily used in the scientific community. The language is still around. There is a FORTRAN 2015 version.
Basic
This was my third class. After the first two, it was a breeze. I didn't go to class a lot. I've used it on micro computers when it was that or assembler.
Intel 8080 Assembler
My first personal computer was an IMSAI 8080. It ran the CP/M operating system for which you had to code your own BIOS. You could only do in assembler. I wrote quite a bit of code in it while I used CP/M.
Databus
I learned this language for my first job as a programmer at Computab in Hawaii. It was used on Datapoint micro computers, which Computab deployed to customer sites for data entry.
RPG
In addition of working on the Datapoint computers, I also did general maintenance. Some of the programs were written RPG. RPG stands for report program generator. Written for punched card input, each position on the card or group of positions was meant something. There were several different types of control lines. You would place a template under the line to help you figure out what it meant. I never did become very proficient in it. Currently, RPG IV only runs on IBM Power I platforms.
JCL
JCL stands for job control language. It's not actually a programming language. It's used to conditionally execute programs and utilities and perform and overall task such as a daily accounting run on IBM mainframe operating systems. I wrote the JCL to run a large budget preparation package for the City and County of San Francisco. I had to do it twice when, at the end of the project, it was decided we had to run it on a different system.
Datacorder
The Datacorder was a small micro computer used for data entry. Output was written to a cassette tape. The language had no name that I can remember. You entered it on a forty character one line display. I managed to talk them into getting a monitor and a Basic language interpreter for it. Eventually, I moved onto a Datapoint. That was a vast improvement.
Intel 8086 Assembler
I started using this assembler at the end of CP/M days. There are quite a few more instructions added on and change from its 8080 predecessor.
Pascal
I used this language for a post-grad class in data structures. Unlike my earlier classes where they taught the language over a semester, I had a week to learn this one on my own before my first assignment was due.
General Automation
I worked on a General Automation system in their assembler language for a financial message switch. To give you how old this system was, the department we supported was called Central Telegraph. The designers of the thought 32k of memory was all that any one would need so they used the high order bit of the sixteen bit address for some other purpose. Memory was so limited that we stripped out the operating system and ran the switch standalone. Programming was done on punched cards. After the Datapoint, this was a major step back.
PDP 1170 Assembler
There was another switch supported by the department that ran on a PDP 1170. I learned this assembler in the hopes of moving to that project.
PL1
This was a language developed by IBM that never really caught on. It's somewhat similar to C. It has a lot of nice features not found in other functional languages. I just learned it because I was bored at work.
Lisp
This language is/was used in artificial intelligence. My exposure to it was just a flirtation.
TAL
TAL stands for Tandem Assembler Language. It was in fact a functional language similar to C. I used it as a systems programming and later when I worked for Tandem. One of the stranger projects I worked on was to code a controller on a Tandem that took input from IMS on a mainframe and, in turn, controlled a microfilm carousel.
Prolog
I only know I did something with this language because I still have the book on it.
Motorola Assembler
This was the real assembler language that ran on Tandem machines at the time I worked with them. I used it to write special procedures that TAL couldn't handle.
Ada
Ada was the language to learn when it was specified as the official language for U.S. Department of Defence. Other than learning it, I never did much with it. Not long after, the DoD changed their position and interest in the language plummeted. It's still around. The latest version was standardized in 2012.
Northern Telecom
I place this here in my chronological order as I remember very little about it. They sent me to a programming class for it. The system was used to do data entry.
C
I learned this language to do programming on a PC using Microsoft Foundation Classes (MFC). I also coded DOS baseed programs.
IBM BAL
BAL is IBM's basic assembly language. It's used on their mainframe computers. I learned it to code a credit card authorization system for Bank of America. I later used it at Visa on their financial message switch.
EXEC
This is an IBM interpretive procedural language. I initially used it on VM/CMS to code and ISPF bug tracking system for the team I was heading. When REXX became available, I dropped it like a hot rock.
REXX
Restructured Extended Executor (REXX) was developed in 1979. When it became available in our shop, I used it to rewrtied my bug tracking system and a second ISPF based system to manage time sheets.
C++
After using C for some time, I picked up C++. I was my first exposure to object oriented programming. I also used it to do Microsoft Windows programming as well as on Visa's credit/debit card systems.
Visual Basic
I wasn't thrilled to have to learn this language. I was pretty close of standard Basic so it was pretty easy. I used to interface to a Microsoft Access database and for special control on an Excel spreadsheet.
Java
We used this language to write a financial switch prototype. While I like some of its features over C++, I never did a lot more with it.
PHP
This my first language for server side web site programming. I wasn't crazy about it. You really didn't have much of a choice at the time. I still use it today.
Javascript
As my websites became more sohpisticated, I started using Javascript for client side programming. I main use it to do simple dialog boxes and tooltip pop ups for footnotes on my genealogy site.
Objective C
Apple supports this language for apps that run on iOS. It's a little to cryptic for my taste. It's recently been replaced by Swift.
Ruby
I use this language and the Rails framework to code websites. I also use it standalone for web services. It's a vast improvement over PHP in my opinion.
Dart
I'm not a fan of Javascript. Ruby on Rails has support for Coffeescript, which transpiles into Javascript. I didn't see it as much of an improvement so I started looking into Dart. While it's a multipurpose language, it was mainly created to replace Javascript. In late 2014, it broke into the top 20 programming languages. It was time to give it a try. I created a browser client for my jazz music database on a Rails sever. I used Angular as the framework and Polymer for the controls.
Groovy
I've coded several drivers in this language for my SmartThings hub. I've yet to read any sort of instructions on the language. I just cut, pasted, and modified existing code. The language is similar to Javascript.
Swift
After writing a client for the browser and finding it too slow, I decided to create a macOS client to replace it since I the only user. I wrote it in Swift, never being a fan of Objective C. It took over six months of part time work. I learned a lot about Swift and macOS API. I've yet to read a book or finish a tutorial on the language so I'm sure there's more to learn.
Python
I volunteered for some pro bono work and have rewritten two website using Django and python. My knowledge of pthyon is limited to creating views and models.