39
\$\begingroup\$

We've decided to revive the Language of the Month event. We've also decided to start a new post for nominations. (You can see the old nominations post here.) So let's get to nominating!

Procedure

A language can be nominated for Language of the Month by posting an answer to this thread. We all vote on the languages we'd like to see featured. At the beginning of each month, the nomination with the highest net vote total is chosen as the Language of the Month. (This nomination process was modeled after Lit.SE's reading challenges.)

The person who nominated the language will post a new question on meta, declaring that language to be Language of the Month, with an answer to collect all related golf submissions, tips, and challenges during the month. (See the previous posts, linked below, for a good format to follow.)

  • If the person who nominated the language is not able to make the post by the 3rd of the month, anyone else can make the post.
  • If there is a tie in the voting, the tied language that was nominated earlier will be Language of the Month.

The chosen language will have a chatroom created for it, if it doesn't already have one. During the month, everyone who wants to participate will:

  • Learn the basics of the language (if they don't know it already)
  • Answer challenges in it (new ones or old ones, doesn't matter)
  • Try to outgolf each other's answers
  • Discuss all of the above in the language's chatroom

Past Languages of the Month will be added to a list at the bottom of this post. Their nomination posts should be deleted (preferably by the person who made the post) to reduce clutter.

What sort of languages should I nominate?

We hope to see a wide variety! But not every language is a good choice for Language of the Month. Some things to consider before nominating, and when voting on nominations:

  • It should be somewhat general-purpose and possible to program in. Bubblegum isn't a good choice, because it's only capable of solving a small subset of challenges. Neither is Malbolge a good choice, because it's prohibitively hard to create a working program in it at all.
  • It should not be one of our most commonly used languages on PPCG. The point of this event is to bring attention to lesser-known languages. We don't need to bring more attention to Python or JavaScript. Suggested rule of thumb: if there are fewer than 10 PPCG users who regularly golf in this language, it's a good nomination.*
  • It should have a freely available implementation. This can be TIO, some other online source, or a downloadable interpreter/compiler.
  • It should be fairly stable. Most languages change over time, even well-established ones, so this is a subjective criterion. But if a language is likely to experience significant modifications in the next month, don't nominate it yet.
  • It can be either esoteric or practical. Of course we like our esolangs around here, but it's also cool to study lesser-known "real" languages.

* Better rules of thumb are welcome. Here are a couple SEDE queries for estimating how commonly a language is used: a strict version (useful for languages with short names that could show up as false positives within other languages' names or URLs) and and a loose version (useful for languages whose headers frequently mention a flavor or version number with the name).

What should I include in a nomination post?

At a minimum, your nomination must include:

  • The language's name.
  • A link to a free implementation (or more than one, if available).
  • A short description of the language, for those unfamiliar with it.
  • Why you think this would make a good Language of the Month.

Ideally, your nomination should also include:

  • Some links to documentation and other good resources for learning the language.
  • A link to the language's question, if it has one.

You can also include ideas for one or more language-specific challenges that will provide an interesting experience beyond answering regular challenges in this language. These can be , , , ... you name it. Good language-specific challenges will focus on some aspect of the language that makes it unique, such as an ability or a weakness that most other languages don't have.

Feel free to re-nominate a language that was nominated last time but never won. You can copy over the old nomination post if you like. Languages that have previously been Language of the Month are not eligible.


List of past and current Languages of the Month

2018

2020

2021

2022

2023

Don't forget to keep nominating and voting on languages for next month!

\$\endgroup\$
4
  • 2
    \$\begingroup\$ By the way, the top few languages have been downvoted, so make sure you look at the upvotes. \$\endgroup\$
    – user
    Commented Dec 1, 2020 at 17:41
  • 4
    \$\begingroup\$ @user the language is chosen by net vote score, not by number of upvotes. \$\endgroup\$
    – pxeger
    Commented Sep 1, 2021 at 12:58
  • 3
    \$\begingroup\$ I’m voting to close this question because the event has ended \$\endgroup\$ Commented May 10, 2023 at 16:37
  • \$\begingroup\$ Where’s the current event? \$\endgroup\$ Commented Jul 12, 2023 at 13:19

9 Answers 9

5
\$\begingroup\$

Arn

Arn is a rather new J-like language I designed back in mid-August (2020). It's designed to beat out its inspiration and also be competitive against other, older golfing languages.

Reasons

  • it does well at what’s it meant to, consistently beating J and APL. I’ve also seen it do better than languages such as Vyxal.
  • The tutorial has been finished, making it easy to start.
  • Done with a major rewrite. TLDR new features, adding new ones easier
  • Has entered a semi stable state. I have a feeling a few larger changes are due in the future, but for now I’ll probably just be adding a few new symbols every once in a while.
  • There are very few (if any, other than me) people who use this language (as far as I'm aware) so this will help spread the language around.

Caveats

  • Does not currently have a chatroom, as I don't believe there are enough people to warrant one.
  • The online version is out of date and has some bugs.
  • I believe there’s a bug in the lexer that shows when using symbols that take multiple expressions on the same side, which I’m looking into.

Resources

\$\endgroup\$
5
\$\begingroup\$

Nibbles

Nibbles is a language designed to be very good at golf by having half byte instructions rather than hundreds of built-ins. Because each instruction is half a byte and expressible as a regular keyboard symbol, it should feel like golfing in a regular language, except you get to divide by two at the end when you compile it to the binary form!

Aside from that it is a purely functional and statically typed language like Haskell and Husk. It uses prefix notation and DeBruijn indicies which are a simple and efficient (entory-wise) way to encode syntax trees. It also makes heavy use of type overloading and pointless op combo detection to throw in more than 16 operations (there are 86 ops).

Reasons

  • It beat Jelly 44 to 23 as of December on challenges that were solved in both languages and has a tentative 3rd highest elo here.
  • 5x less ops to learn or search through than most new golf languages.
    • You feel like you are actually solving problems rather than just finding the op tailored to a specific genre of golf problem.
  • It is fairly easy to write programs in, even complicated ones (some of my favorite solutions were to problems like game of ModTen where it beat the next best solution by 10 bytes).
  • It isn't widely used (I only know of 3 real users!).
  • It's what I would have made instead of Golfscript if I had ever known Golfscript would actually take off - I probably put 50x as much work into it as I did Golfscript.

Caveats

Not sure why I feel the need to critique it while promoting it, but my personal opinion - 1 year after creating it - is that I sacrificed simplicity too much in an attempt to be the most concise. It lacks vectorization on most ops because that prevents overloading type by rank. But there are sometimes when vectorization is ridiculously useful (like the top level operation of a program) - and so it has special cases to fit that in for some of those cases via implicit map/etc. There are a few other things like implicit ops/vars that fit this bill too.

Resources

Tutorial, source, instructions, etc are all at golfscript.com/nibbles.

Chatroom

\$\endgroup\$
2
  • 1
    \$\begingroup\$ Keep in mind that the LOTM event has been discontinued indefinitely as of January of this year (2023), due to a number of reasons (lack of interest/activity seems to be the most prominent reason), so the chances that your nomination becomes LOTM are slim at the moment. Though if LOTM is ever revived again (LOTM take 3 :P ), you could certainly try this nomination for that. \$\endgroup\$
    – Aiden Chow
    Commented May 13, 2023 at 8:55
  • \$\begingroup\$ Thanks, didn't realize when I wrote this but hopefully it starts up again! \$\endgroup\$ Commented May 15, 2023 at 0:31
3
\$\begingroup\$

Trianguish

Trianguish is my newest language, a cellular automaton sort of thing which uses a triangular grid of "ops" (short for "operators"). It features self-modification, a default max int size of 216, and an interpreter which, in my opinion, is the coolest thing I've ever created (taking over forty hours and 2k SLOC so far).

Reasons

  • Triangish is a fairly capable and unique 2d language, and not so unnecessarily tarpitty that most questions couldn't be answered in it with some clever thinking
  • There is a lot of room for golfing even simple programs. More precise timing, clever self-modification, and an undestanding of the quirks of Trianguish's binary serialization can all shave off plenty of bytes
  • Trianguish has a graphical editor with many features that lower the initial hurdle for writing and debugging programs
\$\endgroup\$
2
  • 7
    \$\begingroup\$ I feel like new languages are not really great for LotM. I feel like you should maybe start with LYaL and get up a small userbase at least. \$\endgroup\$
    – Wheat Wizard Mod
    Commented Aug 18, 2022 at 10:45
  • 1
    \$\begingroup\$ @WheatWizard I guess that makes sense. It feels like a bit too complex of a language to tackle in 24 hours, but I guess a month is too far in the opppsite extreme. \$\endgroup\$
    – rydwolf
    Commented Aug 18, 2022 at 12:48
3
\$\begingroup\$

Pure data

Pure data is a graphical audio synthesis program. You can use it to code-golf.

Some reasons to want to golf in pd:

  • While it is graphical the files are in readable ASCII which means you can easily tweak the source using an editor and changes to the program have predictable effects on the score.
  • Golfing in pd has a lot of the weirdness of an esolang, but by learning it you actually learn a fun and useful programming language.
  • You get to include cool pictures of your program in your explanation section.

I should also mention that if pure data were the LotM it would be an excellent opportunity to create some audio processing challenges. The normal wheelhouse of languages aren't natively well equipped for that sort of thing so these challenges seem to be pretty uncommon.

Since I would be remissed to nominate a graphical programming language with no pictures here's a picture of a pd program from this answer.

enter image description here

Resources

\$\endgroup\$
3
\$\begingroup\$

><> (Fish)

Description

><>, pronounced "Fish" is a 2d stack-based language created by Harpyon in 2009 that aims to strike the balance between being minimalistic and practical.

Reasons For

  • Very easy to learn since it has just a handful of builtins
  • The unique challenge of wrapping your code around itself to try and create a compact box is very fun and also unique
  • The stack based nature means you need to think about problems very differently, so it gives a unique experience.
  • The self-modification possibility also adds a lot of interesting golfing tricks
  • Well specified, plenty of interpreters available.

Cons

  • May be a bit too popular already? There are 15 people on this site with 10+ answers in this language. Still I think a lot more people are available to be "converted"
  • Because of the esoteric nature even easy problems are quite hard in this language. Most questions on this site that are simple enough for a beginner to answer are already answered.

Resources

\$\endgroup\$
3
\$\begingroup\$

UCBLogo1

Description

UCBLogo is a general-purpose, educational programming language, a dialect of Logo which derived from Lisp. It utilizes Turtle Graphics.

Reasons why

  • Because it is an educational programming language, it is very simple to pick up and use.
  • It has great potential for creating graphics in relatively few bytes compared to other languages.
  • UCBLogo can handle lists, files, input/output (I/O), and recursion pretty well, unlike other dialects.
  • The language is very stable.
  • Very few people (if anybody) are using UCBLogo or Logo in general.

Reasons why not

  • It doesn't have an online interpreter.2
  • Due to its simple nature, trying to out-golf somebody is hard.

Interpreter

  • DLosc pointed out that the releases contain binaries for Linux, Mac, and Windows, for those who don't want to build from source.

  • If you want to build from source, here.

Resource


Notes:

[1]: UCBLogo is just one dialect of Logo, and I picked it for various reasons. If this won't work, we can use other dialects.

[2]: To fix part of the "no online interpreter" problem, I suggest that we add UCBLogo to TIO, but exclude all drawing commands (fd, lt, rt, bk, penup, pendown, fill, etc.)

\$\endgroup\$
1
  • \$\begingroup\$ Looks like the releases contain binaries for Linux, Mac, and Windows, for those who don't want to build from source. \$\endgroup\$
    – DLosc
    Commented Jun 2, 2022 at 17:00
1
\$\begingroup\$

GS2

GS2 is a golfing language inspired by J and machine code. It was probably the first golfing language that uses a 256 byte instruction space.

GS2 is a very competitive language, despite being created in 2013. Furthermore, some of the ideas first introduced in GS2 (Number shorthands, rest-of-program map) influenced several stack based golfing languages that came later.

Resources

\$\endgroup\$
0
\$\begingroup\$

C++

Description

Quote from Wikipedia:

C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significantly over time, and modern C++ now has object-oriented, generic, and functional features in addition to facilities for low-level memory manipulation.

Reasons why

  • It inherited most of its' feature from C, so it is easy to be picked up by golfers from C.
  • It has a lot of libraries, that can be used to golf code.
  • It is a general programming language used across the world (not a golfing lang or an esolang), so golfing it is expected to be fun and competitive.
  • The language is very stable.
  • A lot of people are using C, but very few use C++ regulaly.

Reasons why not

  • C++ can be seen as "C with libraries" and since C has a lot of golfers, C++ could be non-fitting due to: "It should not be one of our most commonly used languages".

Interpreter

Resource

\$\endgroup\$
-4
\$\begingroup\$

MarioLANG

MarioLANG is a two-dimensionalesoteric programming languagemade byUser:Wh1teWolf, based on Super Mario. The source code's layout is similar to a Super Mario world, however the programs written in MarioLANG look like a completely normal application when compiled. It is evenTuring-complete! This language was inspired byRubE On Conveyor Belts.

Pro

  • It looks funny. LOL.

  • It is easy to learn as an 2D language.

  • Not much people use it, much less in code-golfing.

  • There are plenty of resources.

Cons

  • Does not currently have a chatroom, and I don't believe there are enough people to warrant one.

There is no official interpreter for MarioLANG and neither is a detailed specification on the exact behavior of items and instructions.

Resources

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .