FAQ: Programming languages that I worked with

Sometimes people ask me what programming languages I know / started with / have worked with in past, so this is a small post about that that I could link later.

2005: BASIC

I have worked with several BASIC variants over years,

  • Just Basic happened to be the first programming language that I ever worked with. Curiously, it had an update shortly after I stumbled upon it (in 2005) and had no updates ever since.
  • Used VB.NET for various small tools before moving to C# and Haxe.
  • Used VBScript for occasional automation scripts in Microsoft Office products.

2005: GameMaker Language

GML is either the second or third (either it or C-Script) programming language that I have ever worked with (started in 2005 with GM6.1) and the one that I still often work with to this day.

Over time I had noticed that there was a noticeable lack of written tutorials on advanced topics for GameMaker, so that gradually became the primary subject of this blog.

2005: C-Script and Lite-C

I on and off worked with 3d GameStudio's proprietary scripting languages from 2005 to 2009, moving to Lite-C when it was introduced. A few of my older games are made with these (ex).

Looking back, the two were delightful for their time - both were fairly akin to C (not C++ - no classes) but did abstract away raw memory management, and included a coroutine-style wait instruction.

Alas, tool's development gradually slowed down over the years, so I moved on to different tools.

~2007: Pascal

For undetermined reasons, schools and universities in Ukraine preferred to use Pascal over anything else as an introductory language in programming courses.

I was expecting this to entirely be wasted, but around 2008 I have discovered MidletPascal, which would compile a subset of Object Pascal to Java ME bytecode for execution on smartphones of the time. So I poked around with that for a bit before moving to actual Java.

~2007: JASS and vJASS

I on and off played Warcraft III from 2007 to 2010 or so, also messing around with custom maps.

JASS was a pretty limited scripting language - both in terms of performance (you were only allowed a number of instructions per game tick) and syntax. vJASS slightly helped with the later, but the whole thing still felt a bit clunky at best.

Still, being able to make something and then test it online, without worrying about netcode, was pretty nice at the time.

Little did I know that the real convenience was in live-reloading scripts while playing online, and that I would even do such a system myself (for Nuclear Throne Together, and, later, GMLive.gml).

~2008: PHP

I know just enough PHP to edit my custom theme and various WordPress plugins.

I generally avoid having server-side logic unless there's a database involved, and even then it is usually not written in PHP.

2009: Java

My experiences with Java are slightly segmented,

  • In 2009-2011 I did various small games/experiments in J2ME and plugins for MidletPascal.
  • In 2012-2013 I poked around with client-side Minecraft mods, mostly taking interest in automation and interfacing with external tools (ex1, ex2).
  • In 2013-2014 I did bits of contract work on server-side Minecraft plugins for Bukkit and Spigot.

2009: ActionScript

Worked with AS3 between 2009 and 2011, mostly with either "raw" Flash API, FlashPunk (or my customized version of it), or MinimalComps.

Did a number of jam games and a bit of contract work, but nothing truly noteworthy.

Managed to largely avoid AS2, except for the one time, where I discovered that the phone that I was using at the time would only support Flash Lite 4 for interactive screensavers/wallpapers.

At one point I attempted writing a GameMaker->FlashPunk converter that would create AS3 classes for all game resources, wire them up, and attempt to convert the code to slightly reduce the amount of rewriting involved. Auto-generated asset initializers looked unusually.

2009: JavaScript

I started with JS around 2009 but the real "take off" was in 2011, when I went from doing small experiments with [at the time, still young] HTML5 to porting a few games from GameMaker to JS+HTML5 to co-authoring a HTML5 development tool.

I continue to use JavaScript for all sorts of web-based tools and plugins, though more complex code usually gets written in languages compiling to JS (such as Haxe) these days.

2010: Assembly

I know a bit of Z80 and 8051 assembly.

Not much came out of this aside of this 8051 demake of Impasse.

2010: C++

Sometime around 2010 I finally had a good reason to learn any actual C++.

I've been primarily using C++ for writing plugins and library wrappers for other tools (mostly GameMaker).

While I had originally used C++ for various tools, I've found that generally performance is not a big enough concern to justify using C++ over C# or Haxe (the later of which can compile to close-enough C++ code anyway).

2011: AutoIt

My records indicate that I've been using AutoIt since at least 2011, but might have been earlier.

Despite the slightly oddish syntax, always nice for automating small tasks.

I occasionally write blog posts on things that don't seem to be easy to find answers for yet.

2011: C#

My experience with C# can be split into three categories:

  • Writing C# code for Unity3d
  • Indirectly writing C# .NET tools via Haxe
  • Writing C# + WinForms + WinAPI code (and writing blog posts once in a while)
    (as using some bits of WinForms/WinAPI from Haxe is a bit more awkward)

2012: Lua

I used Lua irregularly,

  • In 2012 I poked around with love2d, ultimately deciding that it's nice but I don't like writing engines over frameworks (or trying to assemble an engine from cheeky-named libraries)
    There are still some old posts on this blog.
  • In 2013 I poked around with CraftStudio to no remarkable result.
  • In 2015 I poked around with pico-8, making random small experiments.
    Then I wrote a Haxe->PICO-8 Lua compiler because I could.

Also, I still admire the JS-styled Killa syntax variant.

2012: Haxe

I discovered Haxe somewhere in second half of 2012 and have been actively using the language ever since.

The premise of the language is the most wonderful - you can target a large number of languages and platforms without actually having to write code in the target language, only minding how the code works. This also allows to reuse code without porting it between languages.

Since then, a growing number of my projects had been done in Haxe - from small tools and extensions to web-based compiler, a full-sized code editor, and even a custom compiler for making it easier to write code for GameMaker projects in Haxe.

The rest

In other words, languages that I had only briefly worked with

Probably missing some here, kind of hard to look for what you've worked with on 1-2 projects?

~2015: Objective-C

My experience with Objective-C consists of having written several native extensions for OSX/iOS, and I managed to avoid the language entirely for a while. While the argument labels and general verbosity could be considered as middle-ground between "classic" code editing and projectional editors, mixing Obj-C and C++ always seems awkward at best.

~2016: TypeScript

I'm generally aware of TypeScript's syntax due to trying things out with SuperPowers at one point.

However, as between able to easly mix the language with JavaScript code (TS) and having high-end macros and widely reusable code (Haxe) I would usually prefer the second, so I've not used it for any large projects as of 2019.

???: Python

I know enough Python to tweak existing scripts or write minimal code interfacing with libraries, but I'm yet to have a situation where I'd want to write something in Python instead, say, Haxe.


Last updated in January 2019

Related posts:

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.