# Language nominations for the "Learn You a Lang for Great Good" chat event

We've decided we'd like to give the "Learn You a Lang for Great Good" chat event $$\{}^*\$$ a go. As a brief overview:

Every second Wednesday, discussion in The Nineteenth Byte is primarily about a specific programming language. This includes CMCs that are relevant to the language in some way, discussion and questions about that language, and anything else that directly relates to the language in some way

Ideally, this also includes having a couple of users around who are familiar with the language to help others learn and provide some basic information. Exactly what role these users have (hands-on teaching, just watching and answering questions, etc.) is up to them.

An event was added the TNB schedule that runs every second Wednesday, starting from the 1st of September 2021, and lasting for 24 hours, from 00:00UTC to 23:59UTC.

This thread is for nominating languages. Unlike Language of the Month, this event isn't primarily intended to showcase languages. Instead:

• Please vote on languages you'd like to learn

This in an effort to avoid the most popular languages on the site "dominating" this event, and to give space to languages that have been overlooked or underused. That said, ultimately, please vote how you feel is most appropriate.

Please also include some justification for why you believe the language would be a good language for people to learn, and why they'd be interested in learning it.

Each time the event occurs, the people in chat when the event begins will pick one of the nominees here to Learn for Great Good. The highest-voted language is not always selected; for example, it may be deferred till a later date if someone familiar with the language is not available that week.

$$\{}^*\$$: Name chosen in this poll

• I think instead of having a voting system like BMG, it might be good to just randomly select from all positively suggested languages. Maybe have a weighting based on how upvotes it has
– Jo King Mod
Aug 13, 2021 at 1:12
• @JoKing I somewhat deliberately didn't include anything like "The highest voted answer will be used in the event", so that when the event happens we have more freedom to decide which language we'd like, and that decision can be part of the event. This would also allow people who want to be "teachers" to say "Oh, I won't be free for that one, could we do it next time instead?" I think upvoting answers you like is a good way to show preference, and we can include that when we decide, but that the final decision should be made at the time, rather than in advance Aug 13, 2021 at 1:16

# Quipu

Quipu was Learned for Great Good during the event on 1 September 2021

An esoteric language inspired by the knotted strings used by the Inca for bookkeeping. The program consists of one or more "threads," each of which is composed of "knots." Each thread is laid out vertically, so programs look like this:

1& 1& 1&
[] ++ []
/\    1%
\n    --
/\    3&
==
0&
??


I don't know this language, but it looks fascinating and I want to learn it.

• Easily my favourite of all the picks. Looks very interesting, unexplored and the original developer also has some other very interesting projects. Aug 13, 2021 at 8:25

# ><>

><> was learned for great good during the event on September 14, 2021

A quite interesting esoteric 2D language, and it's quite fun to fiddle with.

# Piet

Piet was learned for great good during the event on March 30th, 2022

Piet is an esoteric language in which programs are images. For example, here's a Hello World program:

This unusual format means Piet is a bit awkward to score for code golf, and it hasn't been used much on this site. Such rules considerations shouldn't be an issue for learning it in chat, though. I love the idea of a colorful programming language, and I'd like to learn more about it.

## Lost

Lost was learned for great good on December 8th, 2021

Lost is a 2-D programming language where the start position and direction of the ip are entirely random.

Lost wouldn't make a very good LOTM, since it is really hard to use and can only solve particular challenges. However it's perfect for this event.

Lost is an "easy to learn, hard to master" sort of language. It only has a few commands and the way it behaves is easy to follow. However the twist of lost makes writing even basic programs a challenge and gives the language a lot of depth. There are techniques and strategies to learn, and pitfalls to avoid.

Plus it's just fun to play around with such a unique language.

Cascade was Learned for Great Good during the event on 28 September 2021

Cascade is a 2D language based on branching trees that is intuitive to understand but hard (and therefore fun??) to golf. If you've ever seen an ASCII art diagram like:

    ^
/ \
^   c
/ \
a   b


Then you're already halfway to knowing the syntax

Underload was learned for great good during the event on October 27 2021

One of the classic tarpits. It's programs are in bijection with those in Unlambda, another classic tarpit, see here for details.

Underload is a stack-based esoteric programming language that works along similar lines to Muriel. It was created by User:ais523 in 2006. Although not technically speaking a functional language, its evaluation operator ^ (which is the only form of flow control) makes programming in it functional in practice.
~~ Esolangs.org

# RSNBATWPL

RSNBATWPL was learned for great good during the event on May 25, 2022

A.k.a., rSN, raisin-batwaffle, or Radvylf Should Not Be Allowed To Write Programming Languages.

Rsnbatwpl is a "practical" language with a lot of oddities. The parsing has a lot of quirks which make golfing interesting, and also mean it would be easier to learn with LYAL's format than with everyone on their own.

# Jellyfish

Jellyfish was Learned for Great Good during the event on August 3rd, 2022

Jellyfish is what you get when you combine the tacitness of Jelly with the 2D layout of ><>. Each operator takes inputs from below and to the right, and sends outputs up and to the left. Here's a program that takes two inputs (i), multiplies them (*), and prints the result (P):

P*i
i


One of the fun things about this syntax is that it's fairly easy to reuse values. For example, here's a program that squares its input:

P*{
{i


{ with one input is the identity function. Both instances of { get their input from i, and then * gets its inputs from the {s; thus, the same input gets multiplied by itself.

• This is... incredibly similar to makina May 1 at 13:26
• Hm, interesting! May 1 at 19:29

# Zsh

zsh was learnt for great good on December 22nd, 2021

Zsh is a Bourne shell derivative which apparently specialises in having far too many ways to do some things, of which the shortest is always inconvenient, and no obvious way to do a lot of other things. Thanks to its liberal forgiveness of errors, it is very abusable, which is a great feature for code golf and makes competing in it particularly fun.

• An awesome and practical interactive shell and scripting language, not just useful for golfing
• Often among the most concise of the practical languages used on CGCC, with an ELO of about 1050
• It's also very good at restricted source, especially for a non-esoteric language
• Documentation is occasionally hard to find, so I will be teaching you :)

# Scala

Scala was learned for great good during the event on February 2nd, 2022

Scala was previously the language of the month for January 2021 (see that post for more detailed information on Scala). It blends OOP and FP into a concise, expressive package. While it has some advanced features that couldn't be learned in an hour, the basics are probably easy to grasp, especially those involving code golf, which is what we're most interested in here :). It's got an extensive standard library and lots of syntactic sugar, which are great for golf.

I (user) can help people out during the event, and anyone else who has some familiarity with Scala is encouraged to do so too.

# BQN

BQN was Learned for Great Good during the event on 13 October 2021

As a practical language, it might be best to only work with some of it for time reeasons.

• I enjoyed learning a bit of BQN for great good. Would you consider nominating it for Language of the Month? Oct 28, 2021 at 19:32
• @DLosc I think this is a good idea, though I'm not sure I'm up to coordinating it. Oct 29, 2021 at 13:54

# ///

/// was Learned for Great Good during the event on November 10th, 2021

A minimalist language based on string substitution. The only command is repeated string substitution with /pattern/replacement/. And yet... it's been proven Turing complete!

# Stack Cats

Stack Cats was learned for great good on January 5th, 2022.

All programs in Stack Cats are horizontally symmetric and each command either undoes itself or has another command that undoes it, which is pretty cool, although it makes nontrivial programs hard to write (although <(edoc)*(code)> can be used, I think (corrected by Aiden4)).

• The construct is <(edoc)*(code)>, or some similar abuse of (). Aug 13, 2021 at 0:06
• @Aiden4 Fixed, thanks.
– user
Aug 13, 2021 at 0:14

Haskell was learned for great good during the event on March 16th, 2022

An event with this name just isn't complete without the language that started it all.

Haskell is a computer programming language. In particular, it is a polymorphically statically typed, lazy, purely functional language, quite different from most other programming languages. The language is named for Haskell Brooks Curry, whose work in mathematical logic serves as a foundation for functional languages. Haskell is based on the lambda calculus, hence the lambda we use as a logo.

# BitCycle

BitCycle was learned for great good during the event on May 11, 2022

A 2D, queue-based language where programs manipulate streams of bits flowing around the playfield. Think ><> meets Bitwise Cyclic Tag. Since it's so low-level, it makes all but the simplest challenges tricky to solve, which I think fits well with the CMC format of this event. And boy is it satisfying to watch the bits flow through your code once you get it working!

So far, Jo King and I are the only ones who've posted answers in BitCycle. (Jo King is much better at it than I am.) I'd love to introduce it to more people.

• Not anymore :) And I agree, it is very satisfying. Aug 13, 2021 at 22:31

# Coconut

I just ran across a code-golf answer in Coconut. It's a language based on Python, but with a bunch of functional-programming features added. Some examples from the website:

# Shorter lambda syntax
x -> x ** 2
# Partial application
pow\$(?, 2)
# Pipeline operator
"hello, world!" |> print
# Function composition
(f..g..h)(x, y, z)


# tinylisp

tinylisp was learned for great good during the event on April 13th, 2022

A minimalistic Lisp dialect. It has only 16 builtins, which makes it easy to pick up for a one-day chat event. But because Lisp is powerful, this small set of builtins can be combined to solve a wide variety of tasks. tinylisp is particularly good at functional programming and list manipulation.

# Pip

Pip was learned for great good during the event on June 8, 2022

Pip is a golfing language that's designed to feel familiar to anyone who's used to Python, Perl, or JavaScript. Programs consist of statements and expressions with variables and infix operators. Add in good regex support plus a sprinkling of functional and array programming features, and you've got a language that is quick to learn and fun to use. Unlike most golflangs, it uses plain ASCII, so it's that much easier to get into. Now that a recent version is again available online, I'd love to teach the basics.

• Wasn't this learned already? Jun 18 at 12:40
• Yep, just forgot to edit. Thanks. Jun 19 at 3:43

# Flobnar

Flobnar was Learned for Great Good during the event on July 6th, 2022

Flobnar is the lesser known sibling of the Befunge family of languages, described by the creator as "[getting] Befunge-93 drunk to see what would happen". It is a semi-functional 2D language that is many respects similar, but not quite the same as Befunge. It is more akin to my own language Cascade (previously featured on LYAL), in that many operators will split the execution and evaluate their respective branches separately.

A Rust interpreter is available on TIO.

# F#

Its syntax is pretty lightweight, like Haskell's (although it looks like it's less concise). Looks like it'd be an interesting language to golf in, but there aren't a lot of F# answers here.

# dc desktop calculator

dc was learnt for great good on February 16th, 2022.

Dc is built out of simple concepts such as a stack and 26 registers, but is very capable. It's turing complete and it has been used many times on the main CGCC site, but it's not something that many users will know how to use, so it will be a new thing to learn. It's can be used online and on all unix-based systems, so availability is not a problem.

tips for golfing in dc

esolangs.org wiki page

GNU dc manual

Try It Online!

another site

# makina

makina is a two-dimensional cell-based esolang composed of automatons which move around a grid and can spawn more automatons to retrieve information and parameters.

Hello World:

P
>t:Hello, World!;


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

# Cognate

Cognate is a stack-based programming language designed to be readable as English.

Uniquely among stack-based languages, it evaluates right-to-left. This means you can write code more naturally like English:

Print "Hello, World!"


Cognate allows you to write arbitrary words in between commands, as long as they start with a lowercase letter. This allows you to insert filler words to make your code even closer to readable English:

Print the string "Hello, World!" to the screen


# Labyrinth

An esolang based on the path-following mechanic. You can put a linear program path in any contiguous shape, and branching and loops are visually straightforward.

A typical Labyrinth program looks somewhat like this:

)"   10/{:@!
.,;: _ { _ ;
})"}) 10-9!@


(taken from here)

Writing a working program is not too hard. But golfing a finished program is a totally different field, as you want a layout that minimizes the amount of whitespaces. Sometimes you even get a piece of art.

Also, it is possible to introduce randomness in Labyrinth despite not having a built-in for that. Figuring it out would be an interesting topic.

# Forte

Forte is a weird and wonderful language with BASIC-like syntax and an execution model based on redefining integers. It has no conditional or looping constructs; to get conditional or looping behavior, you have to redefine the line numbers your program uses.

I'm no expert on Forte, but I can teach the basics. It's also got a good Esolangs article, and it's on TIO. I think it would be really fun for LYAL.

# Lean Mean Bean Machine

Lean Mean Bean Machine, or LMBM is a 2D language inspired by Plinko machines. It's a small language with a reasonable amount of symbols (or "pegs"), enough that trivial tasks are still trivial, but not so much that non-trivial tasks aren't interesting.

It's also available on TIO!, however that version is slightly outdated in that | has slightly different behavior, the o peg is broken, and the , and . pegs don't exist.

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

# Trianguish

Made by CGCC's very own Radvylf, active CGCC member and TNB room owner.

Here's what he has to say:

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

# Jelly

• One concern I have about Jelly (and APL) is that there are already rooms dedicated to learning the languages. That's not to say they're a bad idea, but just something to consider Aug 12, 2021 at 19:20