36
\$\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

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

\$\endgroup\$
2
  • 1
    \$\begingroup\$ By the way, the top few languages have been downvoted, so make sure you look at the upvotes. \$\endgroup\$
    – user
    Dec 1, 2020 at 17:41
  • 3
    \$\begingroup\$ @user the language is chosen by net vote score, not by number of upvotes. \$\endgroup\$
    – pxeger
    Sep 1, 2021 at 12:58

8 Answers 8

11
\$\begingroup\$

Nim

The Nim programming language is a ergonomic general purpose programming language.

Features good for golfing

  • Concise string handling
  • First class functions, called "procedural types"
  • User-defined iterators
  • Metaprogramming of all sorts, everything from text-substitution, to macros that operate on its AST (Introduction to metaprogramming in Nim)
  • Great C/C++/JS interop
  • Large stdlib
  • Usually quick compile/run time (good for challenges)

Features bad for golfing

  • Whitespace-oriented syntax, much like Python
  • Static typing
  • Long-ish keywords

Resources

Nim has a very active community (forum, subreddit). It can be run online at TIO and ATO.

A quick intro, covering only the most basic constructs:

For more extensive reading:

\$\endgroup\$
7
  • 1
    \$\begingroup\$ Nim looks like a really neat language. afaik there's multiple GC's to fit your purposes, right? \$\endgroup\$
    – user
    Sep 12, 2021 at 18:34
  • \$\begingroup\$ Yes, that is true. See nim-lang.github.io/Nim/gc. \$\endgroup\$
    – Qaziquza
    Sep 12, 2021 at 23:39
  • 3
    \$\begingroup\$ Downvotes: I would appreciate a reason. Thanks. \$\endgroup\$
    – Qaziquza
    Feb 19 at 22:06
  • 1
    \$\begingroup\$ @Tuxysta that link appears dead \$\endgroup\$
    – mousetail
    Sep 21 at 7:07
  • \$\begingroup\$ @mousetail Yes, it has become so. Here's what it was pointing to: nim-lang.github.io/Nim/mm.html \$\endgroup\$
    – Qaziquza
    Sep 21 at 18:50
  • 1
    \$\begingroup\$ This should be the new LOTM right? \$\endgroup\$
    – mousetail
    2 days ago
  • \$\begingroup\$ I believe so, yes. \$\endgroup\$
    – Qaziquza
    2 days ago
10
\$\begingroup\$

J

J is a high-level, general-purpose programming language that is particularly suited to the mathematical, statistical, and logical analysis of data. It is a powerful tool for developing algorithms and exploring problems that are not already well understood.

(copied from the J site because I'm lazy)

Resources

\$\endgroup\$
6
\$\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\$

Pip

Pip is an interpreted, imperative code-golf language created by @DLosc.

Unlike most golfing languages, but like many practical languages, Pip is an imperative language with infix operators. It also uses plain ASCII instead of a custom codepage. These features make it a great introduction to golflangs for users of imperative languages like Python, JavaScript, and Perl.

Resources

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

Elm

Elm is a purely functional programming language for the browser.

It's very similar to Haskell but is designed to be easy for Javascript programmers to pick up.

Why Elm?

Elm isn't very used on this site, but it has some potential. Elm shares a lot in common with Haskell but while Haskell has a reputation for being difficult or sometimes impossible to learn, Elm is very beginner friendly. It has useful error messages, simpler types, and no monads.

You can certainly learn Elm enough to get started in an afternoon. If you aren't already into Haskell it offers an easy way to experience a new way to program. With it as the language of the month you can learn with the help of others new to the language and those more experienced.

If you are into Haskell and FP, it has a number of important distinctions from Haskell that I think make it interesting. It has a rather different base library and a different approach to libraries all together. Elm is a lot more minimalist than Haskell forcing you to use a few tools well.

Haskell golfers, and people who are interested in golfing in Haskell should find Elm as an excellent opportunity.

Why not Elm?

One thing that I think is an obstacle to Elm's success on CGCC is that it really is a language for frontend applications. It's not really possible to write a script in Elm. You can write a simple web app, but not an executable script.

This means it can't be used on sites like TIO (although you can try it online). And in order to play around with elm you have to set up at the very least a basic page that prints the output in html.

However templates can make this easy.

Resources

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

UCBLogo1

Description

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

Reasons why

  • Because it is a educational programming language, it is very simple to pick up and use.
  • It has 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 interpeter.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 reason. If this won't work, we can use other dialects.

[2]: To fix part of the "no online interpeter" 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
    Jun 2 at 17:00
1
\$\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
  • 5
    \$\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
    Aug 18 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\$ Aug 18 at 12:48
0
\$\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 .