What monthly themes should we choose for #12in23?

The below is, more than I’d like to, a collection fo sentiments rather than thought-through suggestions.

I came up with most of it before @andrerfcsantos posted his suggestions; I feel his are way catchier than the ones here below, which seems an important quality.


  • Functional paradigm / programming / languages because the category seems nigh meaningless to me. I feel Haskell and Lisps are too different from each other. If we group them together, why not include Python as well? And Rust? And R and Julia of course…
  • weakly typed languages because they form a nonapple category.
  • dynamically typed languages because sadly this category has not yet grown up into a proper paradigm, and so (for now) remains somewhat of a nonapple category as well.
  • statically typed languages because it is boring / too broad. Java is statically typed. This category could be strengthened into Fancy Type Systems.
  • Young languages for lack of coherency and lack of purpose. (Test of Time is fine by me though: those languages have proven useful!)
  • By deployment platform because hard to explore on Exercism.

Thoughts & Suggestions

  • An advantage of narrow categories (i.e. containing few languages) is that they make communicating with others (‘community engagement’) easier: (relatively) more students who are on ‘the same page’ are available. In contrast, e.g. communicating about OOP can be more difficult if the one is learning C#, the other Python, and yet two others Lisp and Smalltalk.

  • Exotic Workflows like Lisp’s REPL-driven dev., SmallTalk’s/Pharo’s IDE, whatever Prolog does, perhaps Unison (I wouldn’t know), maybe Lean (not available on Exercism).

  • Domain Specific Languages: Elm, PureScript, Awk, maybe Emacs Lisp and VimScript, probably many others. Strictly speaking shell languages are DSL’s too but they deserve their own category.

  • Low-level Languages (well…). Maybe split up into subcategories in the C tradition (e.g. similar call mechanisms, compiles down to C, …) and outside the C tradition (e.g. Fortran, COBOL for all I know). I know next to nothing about under-the-hood approaches, but I’d like to.

  • Some category containing Julia: its interestingness is accessible very early on in the learning process.

  • Assemblies: Wasm, X86, …

  • Any Concurrency category should definitely include Haskell, as its concurrency story is among the best ones around.

  • Macros: the Lisps, especially Racket, but also Rust and Julia.

  • Shell languages! Sadly, Exercism does not yet feature a PowerShell track.

  • Glue languages. I’m thinking Python (and Ruby?), shell languages, JavaScript (sometimes), R (if I’m feeling generous), and Go (I guess, being unfamiliar with it).

  • Exploring of languages’ interestingnesses through Exercism looks challenging to me. Are there ambitions here?


I think that the easiest idea to implement is probably the intended use case, or the average use case, of a language. Surely Perl can be used for scientific computing and C for web development, but they were never intended to be used like that.

The problem with a paradigm-oriented approach is that it’ll be difficult to have 12 clear-cut categories, and there will be guaranteed resistance on any categorization chosen (especially for multi-paradigm ones). Are C, Rust and Golang primarily Systems languages? Should C be considered a Procedural language, and C++ Object Oriented? Do we consider TCL and Perl “scripting” languages? My initial group suggestion would be the following (a subset of languages in parentheses for reference):

  • Low Level (Assembly)
  • Structured (COBOL, ABAP)
  • Procedural (C)
  • Object Oriented (C++)
  • Functional (Haskell)
  • Pattern-matching/Data Driven (AWK, Red)
  • Symbolic (Lisp)
  • Logic (Prolog)
  • Prototype-based (Javascript)
  • Lightweight (Wren, Lua, TCL)

I’m having trouble determining the last two, there isn’t an appropriate Concurrent/Parallel or Actor-based language, Multi-paradigm would be cheating as it would include a lot of already covered languages. “Generic” (Java) doesn’t really cut it. I’d have loved for this to work as a way to show the evolution of languages, but that’s more like a cyclic graph rather than a tree moving forward.

Erik’s categorization works around this issue, and focuses more on “branding” if I may say so.

A voting feature sounds like a great idea, regardless of the categories chosen :slight_smile:

1 Like

Theme: children, grandchildren, and great-grandchildren of Algol-60.


I think this is a much more helpful categorization, I think a lot of us look to learn new languages to get new perspectives so perhaps breaking down that category using some form of tags with the concepts that @meatball and @ErikSchierboom suggested would be handy?

Hi everyone! Thanks for your thoughts.

Erik and I have spent a couple of hours trying to get something that incorporates all the languages on the site. We’ve experimented with both functional grouping categories and more interesting ideas (thanks Andre for some great ideas of that type!).

This is where we’ve got to: 12in23 - Google Sheets

The languages in blue are the ones that we’re going to highlight in our intro videos for each month (generally because we know they have solid syllabuses on Exercism and think they’ll have wide interest). Lots of languages fit into multiple categories, but every language on Exercism is in one of the categories here, so we don’t mind if every category doesn’t contain every language.

I’d love ideas on what the names could be for each category. We tried to do month names e.g. “Analytical April” but failed after that one :joy: Please let me know your thoughts on those!

1 Like

Mechanical March, Simple September, Nibbly November?

What is Odds & Ends about?

PureScript is a dialect of Haskell, and as far as I know ReasonML is a member of the ML family, so these two should maybe be grouped with Haskell and StandardML. (Although, ceteris paribus, I would recommend Haskell over PureScript for learning resources reasons.) Then again, PureScript also competes with Elm, so…

1 Like

Odds & Ends is all the languages that we didn’t feel naturally fell into the other categories.

Memory Management March
Mind Shift May
Summer of Sexps
Jurassic July

Slim & Super-powered September

December Diversions


Love those suggestions @BethanyG !

1 Like

@MatthijsBlom @BethanyG Thanks :) I’ve updated the spreadsheet.

I’m missing March, August or October (I liked the March ideas but I feel like there’s something out there that’s a better fit!)

Any more ideas?

On-screen October?

Object[…] August fails on both the spelling and syllable length fronts.

Just this once a dead tree dictionary would have come in handy. I don’t think I have one :flushed:

but it wins on the alliteration. “Objectify August”

Oh, swap August and October: “August Apps” and “October OOP”

If we could get March to showcase development tools and environments: The IDE’s of March :scream:


@glennj This still has me laughing out loud…love it

8th is a “short way of doing things” language. Or is it “old” because it’s a FORTH dialect?

Maybe 8th should be in the “Languages that do something different” category instead? I don’t think we have any stack-based languages.

3 posts were split to a new topic: Concatenative Languages

I really like the themes that came out of this!

1 Like

Thanks for your support and ideas!

Everyone, if you’ve not seen the final results yet, watch this: The Official #12in23 Calendar! - YouTube

1 Like

The concrete has gone off, but just for completeness, here’s HOPL’s taxonomy Taxonomy and genealogy of programming languages