Learning A New Programming Language per Year in the Age of AI

People don’t really learn new programming languages every year anymore thanks to AI, so why do I stick with this activity? Call me old fashioned, but I still like to dive into a new programming language every year, no matter what, and thus here comes yet another update in my lifelong obsession to learn more and more programming languages.

The current list is the following; those languages that appear in the Conway Game of Life project appear in bold.

  • 1992: QBasic
  • 1993: Turbo Pascal
  • 1994: ANSI C
  • 1995: Delphi
  • 1996: JavaScript. Others: HTML
  • 1997: Java
  • 1998: VBScript. Others: CSS
  • 1999: Transact-SQL
  • 2000: C#. Others: Prolog
  • 2001: C++
  • 2002: PHP. Others: C#
  • 2003: Objective-C
  • 2004: Visual Basic.NET
  • 2005: Ruby
  • 2006: LINQ. Others: C# 2.0, C++
  • 2007: Erlang
  • 2008: Python
  • 2009: Go
  • 2010: Common Lisp
  • 2011: Haskell
  • 2012: Lua
  • 2013: C++ 11
  • 2014: Scala
  • 2015: Swift. Others: C++ 14
  • 2016: Kotlin. Others: Swift 3, Java 1.7
  • 2017: TypeScript. Others: 68K Assembler, PHP 7, awk
  • 2018: F#. Others: C# 7, Elisp
  • 2019: Go. Others: Scheme, Ballerina
  • 2020: Smalltalk. Others: COBOL, Rexx
  • 2021: Rust. Others: R
  • 2022: Dart. Others: Elixir, Crystal, Perl, D
  • 2023: Zig. Others: Minimal BASIC, Fortran
  • 2024: Bash, Vala, APL
  • 2025: C23, C++23
  • 2026: Hare
Yes; the list above is 35 lines long. I can’t really believe it.

Hare

So yes, this year I dived into Hare, another one of those programming languages that aim to become the “next C”, allowing developers to write fast lower-level code, without… well, writing C. (Insert shrug emoji here.)

Here go some notes I took while diving into the subject, hopefully they’ll be useful to you too.

This language has been around since 2022, so there’s already quite a few “first impressions” out there, that I recommend you read, too:

Finally, if you would like to see some example code written in Hare, I found the following:

In my own experiment, I literally gave Cursor the whole Conway project and asked it to translate it to Hare; and lo and behold, it succeeded, with just 3 iterations.

export fn main() void = {
	let w = world_new(30);

	const p1 = blinker(coord { x = 0, y = 1 });
	const p2 = beacon(coord { x = 10, y = 10 });
	const p3 = glider(coord { x = 4, y = 5 });
	const p4 = block(coord { x = 1, y = 10 });
	const p5 = block(coord { x = 18, y = 3 });
	const p6 = tub(coord { x = 6, y = 1 });

	seed(&w, p1[..]);
	seed(&w, p2[..]);
	seed(&w, p3[..]);
	seed(&w, p4[..]);
	seed(&w, p5[..]);
	seed(&w, p6[..]);

	let generation = 0;
	for (true) {
		generation += 1;
		world_print(w, generation);
		time::sleep(500 * time::MILLISECOND);
		w = world_evolve(w);
	};
};
Interestingly, of all the “C successor” languages (a select group where Rust and Zig appear as pioneers) Hare is the one that requires the least amount of code to reproduce this application, more or less the same as Java, Dart, or D, while Zig and Rust require slightly longer codebases (25% longer for Zig, 40% longer for Rust) for the same results.

All in all, I found Hare interesting; it is worth exploring it more in the future, although you might infer from the lack of enthusiasm in my writing that there wasn’t really anything special that caught my attention. It’s a commendable and interesting work for sure, but that’s all. (And, yes, I do sometimes expect a bit too much from programming languages, most probably.)