21
\$\begingroup\$

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 nominate languages that either you'd like to learn more about, or that you'd think others would like to learn about, and
  • 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.

Past languages:


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

\$\endgroup\$
2
  • 2
    \$\begingroup\$ 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 \$\endgroup\$
    – Jo King Mod
    Commented Aug 13, 2021 at 1:12
  • 3
    \$\begingroup\$ @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 \$\endgroup\$ Commented Aug 13, 2021 at 1:16

14 Answers 14

6
\$\begingroup\$

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.

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

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.

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

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.

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

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

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

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!;
\$\endgroup\$
3
\$\begingroup\$

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

Cognate is gradually-typed and functional.

Resources

\$\endgroup\$
2
\$\begingroup\$

Jelly

\$\endgroup\$
1
  • 6
    \$\begingroup\$ 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 \$\endgroup\$ Commented Aug 12, 2021 at 19:20
2
\$\begingroup\$

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.

\$\endgroup\$
2
\$\begingroup\$

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.

\$\endgroup\$
2
\$\begingroup\$

Knight

A pretty simple prefix lang that's fairly easy to learn. For more stuff, see the LoTM post or the github repo.

\$\endgroup\$
1
\$\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\$
0
\$\begingroup\$

Egison

Egison is a functional programming language featuring its expressive pattern-matching facility.

Its pattern matching gives me a feeling of Mathematica. It can even matches against an infinite list. Here is an example of finding twin primes:

def twinPrimes :=
  matchAll primes as list integer with
  | _ ++ $p :: #(p + 2) :: _ -> (p, p + 2)

take 8 twinPrimes
-- [(3, 5), (5, 7), (11, 13), (17, 19), (29, 31), (41, 43), (59, 61), (71, 73)]

If you has cabal, you can install Egison with cabal install egison, and install its interactive tutorial with cabal install egison-tutorial.

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

Retina

A regex-based lang. Sometimes competitive with the golfiest langs-- what Retina does well, it does really well.

Plus, solving problems with regex and string-rewriting is always fun!

Made by CGCC's very own Martin Ender, creator of Hexagony.

\$\endgroup\$
-1
\$\begingroup\$

Malbolge

This is the hardest programming language. Still learnable, but hard to program in. I can teach the basics.

Resources:

\$\endgroup\$

You must log in to answer this question.

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