# Nominations for Language of the Month, Take 2

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.

## 2022

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

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

# Knight

Knight is a new programming language created back in April 2021 by sampersand.

### Interpreters

There is a list of interpreters on the official GitHub page. It has been ported to many languages, even itself.

Here is an interpreter on TIO, a patch to a previous commit to c/golf which updates and fixes some conformance issues. (Note that it memory leaks like crazy and segfaults on malformed inputs).

However, the "preferred" interpreter is c/ast, which is the fastest, most up-to-date interpreter and has actual error checking.

### Description

Knight is a Polish notation language (meaning x + y is + x y, and everything has fixed arity) which is relatively simple. It has some useful string manipulation tools, eval, shell commands, and type coercion.

### Reasoning

• It is a new language which deserves some attention.
• It is simple and very easy to pick up.
• It is surprisingly golfable despite not being a dedicated golfing language.
• Knight has some qualities/quirks that make it very unique to golf.
• Polish notation
• Tokens are separated by their character class. So, for example, WX is WX, while Wx is W x. This makes ordering very important.
• Only the first statement is executed, everything must be chained (typically using ;).

I have posted some solutions here already.

### Resources:

• Food for thought: maybe we have a golfing challenge where people golf knight? Jun 9, 2021 at 20:09
• Usually they don't do that here, what some people like to do is create a bounty for the first programs in that language Jun 9, 2021 at 22:59

# 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)

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

It has a very active community. (Forum, subreddit).

## Resources

A quick intro, covering only the most basic constructs:

• Nim looks like a really neat language. afaik there's multiple GC's to fit your purposes, right?
– user
Sep 12, 2021 at 18:34
• Yes, that is true. See nim-lang.github.io/Nim/gc. Sep 12, 2021 at 23:39
• Downvotes: I would appreciate a reason. Thanks. Feb 19 at 22:06

# 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)

# 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.

# Prolog

Prolog is a logical and declarative programming language. It's quite interesting.

From TutorialsPoint:

Prolog or PROgramming in LOGics is a logical and declarative programming language. It is one major example of the fourth generation language that supports the declarative programming paradigm. This is particularly suitable for programs that involve symbolic or non-numeric computation. This is the main reason to use Prolog as the programming language in Artificial Intelligence, where symbol manipulation and inference manipulation are the fundamental tasks.

In Prolog, we need not mention the way how one problem can be solved, we just need to mention what the problem is, so that Prolog automatically solves it. However, in Prolog we are supposed to give clues as the solution method.

I aleady nominated this for LYAL and it got many upvotes, and I think it would make a good LotM as well, so nominating it here now.

# 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.

# 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.

## 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.)

• Looks like the releases contain binaries for Linux, Mac, and Windows, for those who don't want to build from source. Jun 2 at 17:00

# 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.