Sam’s record of languages

Over the course of time, starting at 8, I’ve used a lot of programming languages. For fun, and some bragging rights, I like to keep track of the languages I’ve used. Not all languages are learned formally (book + test), and not all are mastered (used it frequently for more than 2 years). Here I will keep a list of all the languages, in chronological order. In addition to listing the lang, I will also list why I started using it, and how skilled I am at it (currently).

Skill levels are broken down in a 1-5 scale:

  1. Tool/roadblock. I used (not exactly learned) this language because I needed it as part of a tool, or to get past some roadblock. I do not know the ins and outs of it, but know it enough to build something simple, with lots of help from google.
  2. Small task. Much like #1, but with the addition of reading tutorials, or synergy from similar languages that I already know.
  3. I know this language. Usually this is after picking it up for #1 or #2, but then going back and re-learning the lang from the ground up to make sure that I know about all the current lang features.
  4. I really know this language. I conform to common formatting standards, such as braces, casing, naming, etc. And I know how to write optimal code that looks clean. I follow the rules and practices.
  5. I’ve “mastered” this language. I know the rules well enough that I know when they should be broken (rare, but it happens). I understand enough about the language that I know why certain design choices were made. I may have even segfaulted the compiler at some point in time.

The languages:

  • JustBasic [2]. I learned this when I was 8, it was a great place to start as it allowed me to actually build a UI, which I loved. (Material: Programming for the Absolute Beginner)
  • Perl [3]. Also learned this at 8. It was a great introduction to modularity, and hey, hash maps! This also taught me why code needs to be readable. (Material: the camel book, of course!)
  • Visual Basic [3]. I think I started to pick it up at 9-10, to build macros in excel or something like that. It was the only way i knew to make UI on my new mac. Eventually I got a book about it from a relative and learned it correctly. (Material: 21 days to learn VB, or something like that)
  • Applescript [4]. I started this at 10. I used the dialog system heavily with the hopes that I would eventually be able to make a proper UI with it, eventually. (Material: AppleScript for the Absolute Beginner)
  • HTML 5 + CSS [3]. I don’t think these are turing complete, but I did spend a lot of time reading that old reference manual at like 12. I didn’t always have a computer on hand, in my downtime I learned this stuff. (Material: something like HTML5 reference manual + a lot of W3C stuff later on)
  • Objective C [3]. I learned this at 13, without any internet access or tutorials, those were the days of pain. Years later I found out that it’s one of the most hated languages. Go figure. (When I was 15 I finally got the lime book: Learn Objective C on the Mac)

@14 y/o, I got internet access. The world became a different place.

  • C [2]. At 14 I needed to learn a bit of C so that I could optimize my Obj-c blob tester. It was like obj-c, but simpler.
  • Javascript [3]. I learned this at 14, my world became different. Built a lot of stuff with this one, I eventually ended up building my own IDE using Objective-C so I could write and view it in realtime. (Material: W3CSchools)
  • Python [3]. Python is cool, Python is fun! I learned this at 14, to write extensions for Blender. It’s like perl… but better! (Material: python manual, W3CSchools)
  • PHP [2]. Look ma, I have a website! I learned this at 14 too. I wanted to customize my Drupal web site and this was the way to do it. (Material: W3CSchools)
  • SQL [2]. If I was going to learn js, php, and html, I had to know SQL too right? (Material: W3CSchools)
  • Regex [4]. When I finished my HTML book I needed something else to pass the time. Hey look: a regex book on the shelf. I learned this from 13-15, as I read the book about 3 times. (Material: The owl book, that’s also about regex)
  • Swift [5]. At 15 some friend that I met over a game asked me if I was picking up Swift yet. I decided to give it a try and I never looked back. (Material: Apple documentation, playgrounds, eventually HackingWithSwift.com)
  • C# [5]. At 15, the same friend that budged me about Swift, told me about this amazing thing called Unity. I had already been hassling with Apple’s proprietary swift/obj-c game engines and Unity sounded very promising. (Material: Unity tutorials, Swift synergy, C# Weekend Crash Course book, Microsoft documentation, eventually learned from example via senior devs in a discord server)
  • NWScript (simplified c++) [5]. This is a scripting language that’s part of an old game, I learned this one at 16 to develop content for the game and in the process I learned a lot about the benefits of OOP (by having a non-oop lang on my hands :P). (Material: Unofficial docs, others’ code, trial-and-error)
  • Shell [3]. I started taking shell seriously at 18, right after I learned git. (Material: many different shell&bash books that were sitting around, lots of googling, lots of other scripts that i read)
  • HLSL [2]. HLSL is fun, I started learning this at 20 to make some custom shaders, and learned it more later for some GPU texture baking. (Material: Unity manual, forums, reading other shaders, eventually ChatGPT help)
  • Kotlin [3]. I learned this at 21, at work so that I could help our Android developer meet deadlines. It was basically swift but with better enums and no async/await at that time. (Material: Google’s android tutorial, A swift <-> kotlin cheat-sheet, Lots of swift synergy)
  • Go [1]. At 22, I needed a script to do something of equivalent complexity to a hello-world app. (Material: Google, more google, and I think I looked over the docs real quick)
  • ARM Assembly [1]. I am actively learning this one. I got my book when I was 21 and my M1 mac to use it on a little while later. (Material: Programming with 64-bit ARM assembly language)
  • C++ [1]. I am actively learning this one (22). I already know my way around Unreal Engine, but I want to learn all the quirks of the language so I can take advantage of it outside of a UE context – I want to contribute to this. (Material: Coding with Mosh yt course, google, Unreal Engine, C# and Obj-C synergy)