First Seven Languages

First Seven Languages

The #FirstSevenLanguages hashtag appeared on Twitter the other day and I thought I'd share mine too. But the task was harder than I thought.

#1 BASIC

I first started coding a school when the family had a ZXSpectrum so Spectrum Basic was my first language. At the same time we had computing classes at school and BBC Basic also featured.

One holiday my parents sent me to a short geek camp over at St Bede's college in Northumberland, here we build self propelled rafts and programmed turtles in Logo.

#2 Z80 Assembler

I soon hit the limitations of BASIC so taught myself Z80 Assembly.

I was mostly

No alt text provided for this image

manipulating graphics and sound for games I was writing. To save on loading time, I mirrored the graphics and created masks using a flood-fill technique after the bitmaps were loaded.

I was using an excellent piece of software called Laser Genius by Ocean to assemble the code. The sequence was, load text editor, swap tapes, load program text, edit and save back to tape, swap tapes, load assembler, swap tapes, load text, assemble and save back to tape, swap tapes, load the debugger, swap tapes, load code, debug and test. Because of this arduous process I frequently debugged on paper as it was quicker. The Ocean debugger had an interesting feature which was the ability to write Forth to examine your code. So for that reason I learnt a little Forth but not really enough to include in my list.

My Dad got an Amstrad PCW for word processing so I dabbled with programming that in Mallard Basic and assembly (Z80) too.


#3 Pascal

I was accepted into Imperial College for an electrical engineering degree but first had a year in industry with Dowty first. Imperial told me that they did Pascal programming so in my year out I endeavoured to learn that too. Whilst teaching myself Pascal I learnt about Modula 2 and Ada but never actually did any serious coding with those.


#4 C

I arrived at Imperial with my new Pascal knowledge only to be told that they were now teaching C so I learnt that instead. Whilst at Imperial I got playing a multi-user game called "MUSH", the definition of the name is disputed but I know it as Multi User Shell. This allowed you to create objects with descriptions and behaviours. Those descriptions were function based so you could build say a mirror which might include properties of the character holding it, e.g.

>look mirror

A shiny disc in which you can see Andy.

There were also trigger based @ codes in the system which allowed interactive objects, e.g.

>Take Harp

The harp squeals "help! help!"

Although coding of a form, I did not include this as it's not really a formal language. I did get quite proficient and was even paid (in virtual money) to build a ride on dragon for a wizard. This functional based approach got me interested in Lisp but I never seriously pursued that. I did however build some external bots written in C that navigated that MUSH and interacted with the characters. These were based on a framework which I later discovered was built by Marvin Minsky. I specialised my two bots, one was a navigator and toured around the environment, the other was an Eliza bot and chatted with players from her Dr's office.

In the summer I returned to Dowty, this time an Aerospace division in Loudwater next to the M40. They challenged me with writing a spell checker for their VAX system, the EVE text editor was extensible with a language called TPU (text processing unit), I don't remember much other than having to decompress and index the dictionary on startup as accessing storage was particularly slow. As this was just a short project I did not include TPU in my list.

For my final year project at Imperial I did an investigation into battery charging and ended up writing an elaborate test harness in Borland C. Back then you had to write your own event loop to process the messages from controls on your form and then filter the responses to call the appropriate sub routines.


#5 SQL

After college I got a job with a small software company, you'd probably call it a startup now but back then they were just known as small companies. Their main customer was compiling a database of their staff and locations and the company was helping with software to manage and visualise that. After spending a day waiting for precompiled views to build in a Lotus Note application, I suggested porting them to Microsoft Access and hence got involved with rewriting the queries necessary. To centralise the data storage we moved to Microsoft SQL Server. Over the years I got more involved with writing reports and queries in TSQL and got used to thinking of sets of data rather than procedural methods.

The internet was evolving during that period and I got writing HTML pages for my own site and dabbled with javascript and java web apps.


#6 VBA

One of our main products was written in Visual Basic and again I'd played with that but not had to use it for work. This changed when VBA was added to the product as my team were responsible for writing custom add-ons.


#7 PHP

As mentioned above I've been writing web pages for my own sites for some time, to make life easier I used PHP to reduce the effort in maintaining these. So PHP has been bubbling under the surface for some time. In 2014 I decided to port one site from blogger to WordPress. Some of the functionality I wanted was not available so I used PHP to make what I needed. I also extended the importer so it would take in images. Combined with my earlier dabling this is enough for PHP to make my list.


Others

A few years back I did a big project using Knockout and JavaScript. I implemented a unit testing framework for that and re-factored a lot of the code. So Javascript nearly made #7 but it came after my PHP project.

Also my main go to language at the moment is C# but I've only been working with that for a few years so the others came first.

C has made a reappearance in my life with Arduino programming, that "loop" is very familiar from back when I was writing windows code.

Pascal made a re-occurance as one project we had at work was written in Delphi and I ended up having to debug and maintain it years after the original developers had left.

Python has cropped up a few times, I dabbled with it when writing an add-on for a 3D modelling application and last year it was used for my Enchanted Cottage project, and again I used it for the Dragon Detector project.

Java is not really a language that I've used but I read a great book on re-factoring by Martin Fowler in which all the examples were in Java. I had no problems reading that and I've applied a lot of techniques to C# and even the VBA that I still have to maintain.

Sean Kelly

Decision Focus651 followers

9y

No COBOL? you missed out

Like
Reply

To view or add a comment, sign in

More articles by Andy Clark

  • Jules May - Extreme Reliability

    Some of my colleagues attendee a session with Jules May at SDD the other week. I'd seen him speak on previous years and…

  • Hackathon - Summer 2023

    Just finished my real "proper" #hackathon project at Mountain Warehouse. I did a mini one a couple of years back…

    2 Comments
  • First Year at Mountain Warehouse

    Just over a year ago, I joined the development team at Mountain Warehouse. It was a bit of a strange start as I was one…

  • gRPC and Polly

    This week I attended a session with Mark Rendle at the NDC Manchester. We were looking at gRPC, my interest is to see…

  • When is a PDF not a PDF?

    Something I spotted earlier in the year when preparing my CV is that what you see is not always what you get. I spotted…

  • Tai Chi, Dragons, Snaps and Yak Shaving

    I started up with a Tai Chi class back in January and was just getting into the swing of things when the country went…

  • Under-performing team members?

    "What would you do about underperforming team members?" I was asked. "Sack their manager" was my first thought.

  • Thoughts on Primary keys for relational databases

    What kind of key fits no lock? A primary key. - Grant Fritchey Grant shared a comment on Twitter yesterday about…

  • Chaos and Distributed Systems

    Yesterday I was very privileged to attend a meetup of the London Chaos and Resilience Engineering Community hosted at…

    1 Comment
  • Tables are not queues

    Was looking at an issue where tasks that needed to be executed were being executed more than once. It was tracked to…

    1 Comment

Others also viewed

Explore content categories