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
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.
- Home page.
- Created by Drew DeVault
- Source code
- Based on the QBE backend which I didn’t know about.
- Standard library docs
This language has been around since 2022, so there’s already quite a few “first impressions” out there, that I recommend you read, too:
- Quite a long (1 hour 40 minutes!) recording of a streaming session with an introduction to the language (published in 2024).
- First impressions by Dhole
- More impressions
- And some very early impressions (2021) by Kiëd Llaentenn.
Finally, if you would like to see some example code written in Hare, I found the following:
- There’s a “Hare by Example” website.
- An operating system built with it, because why not.
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);
};
};
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.)