DEV Community

Cover image for 20 Intriguing, Unusual, and Goofy Programming Languages

20 Intriguing, Unusual, and Goofy Programming Languages

Andrew (he/him) on November 16, 2019

"Beware the Jabberwock, my son! The jaws that bite, the claws that catch! Beware the Jubjub bird, and shun The frumious Bandersnatch!" -- Lewis C...
Collapse
 
mmachenry profile image
Mike MacHenry

I'm afraid you've touched on a common misconception of Lisp. It's often said that Lisp only has one type, "the list". You've expended this to two types, lists and atoms. But this simply isn't true. Lisp also has functions as first class types, it has numbers, strings, etc. The fact that the syntax uses only a subset of these types does not mean that the language doesn't have them. It just means that only a subset of the types are needed in order to represent a program in the languages own data types.

Collapse
 
awwsmm profile image
Andrew (he/him)

Aren't functions, strings, and numbers just particular kinds of atoms?

Collapse
 
mmachenry profile image
Mike MacHenry • Edited

Well, sure they're atomic values. But atom isn't a type in Lisp. I didn't want to additionally correct you on your use of the word atom, because I felt it was needlessly pedantic at the time, but I see now it's the crux of the confusion. The proper term for would be symbols. Those are the things that have the single quote in front of them and can represent identifiers when used to express the syntax of Lisp itself. Atoms, which is a term you could use to classify anything that's not an aggregate container, would include functions, strings, symbols, etc.

But if I told you that Python only had three data types, dict, array, and atom, wouldn't you wonder why I've collapsed string, int, float, etc into one type?

Thread Thread
 
awwsmm profile image
Andrew (he/him)

Thanks for the clarification, Mike! I need to do some more research...

Thread Thread
 
mmachenry profile image
Mike MacHenry

No problem. To help your research, I might write up a post from a talk I have given a couple of times about this exact topic.

Collapse
 
rrampage profile image
Raunak Ramakrishnan

Have you tried emojicode?

Here's a hello world:

🏁 🍇
  😀 🔤Hello World!🔤❗️
🍉

Some trivia on APL and J:

  • It was first created as a notation by Ken Iverson to teach students programming. The first implementation was only done many years afterwards. It required a dedicated keyboard for the mathematical symbols.
  • This demo of APL from 1975 is still so impressive.
  • Iverson later created J with ASCII symbols. Arthur Whitney who later developed K and Q languages wrote a single page of terse C code which became the foundation of J language. Reading that code was mind-bending for me :) .
  • Iverson got a Turing Award for his work on APL and programming language notation. His essay Notation as a tool of thought is a great read.
Collapse
 
awwsmm profile image
Andrew (he/him)

"...there is nothing new under the sun." [ source ]

Emoji-based languages have existed since at least 2015, it looks like. But I'm glad that emojicode is gaining traction! I love me a good esolang.

APL developers actually had to get specific typewriter balls in the early days (before dot-based and laser printers) if they wanted to print out their source code to share it with other developers.

APL typeball

If you like terse C (or C++) code, you should check out this ray-tracing code that fits on the back of a business card.

I'll definitely check out that paper. Thanks a lot for sharing, Raunak!

Collapse
 
vlasales profile image
Vlastimil Pospichal

Lisp doesn't belong here. Lisp is a regular programming language.

Collapse
 
ntrupin profile image
Noah Trupin

From the third paragraph of the intro: “Most of these are considered “esoteric” though some of them are actually used by serious programmers on a regular basis. See if you can tell which are which.”

Collapse
 
awwsmm profile image
Andrew (he/him)

So are APL and Q#. I included them because I thought they were "interesting".

Collapse
 
ahferroin7 profile image
Austin S. Hemmelgarn

Somewhat surprised that this list does not include INTERCAL, one of the original esoteric languages, and the only implemented programming language where the compiler may refuse to compile your code based on how polite it is (PLEASE is a keyword in INTERCAL, it's a no-op in terms of actual code execution, but if it doesn't appear with the right frequency in the source code, the compiler will throw an error because the program is either 'not polite enough' or 'too polite').

Collapse
 
awwsmm profile image
Andrew (he/him)
Collapse
 
ahferroin7 profile image
Austin S. Hemmelgarn

Ah, sorry, somehow completely missed that!

Thread Thread
 
awwsmm profile image
Andrew (he/him)

No worries! It is Monday, after all

Collapse
 
blindfish3 profile image
Ben Calder

Funciton reminded me of pure data; but looks even more difficult to work with :D

Collapse
 
abrudz profile image
Adám Brudzewsky

The famous John Conway's Game of Life, written in Dyalog APL, is fully explained, step-by-step, here.

Collapse
 
adnanbabakan profile image
Adnan Babakan (he/him)

Funciton was awesome! XD
BTW I am a fan of esolangs too. Love them so much. XD