DEV Community

Jesse
Jesse

Posted on

Most Esoteric Language You've Used

Title pretty much sums it up.

I work using a kind of unusual proprietary language (in the sense that it has a niche audience), and am wondering what the strangest language y'all have used is. 😄

Discussion (38)

Collapse
jonrandy profile image
Jon Randy • Edited

I dabbled in Rockstar for fun - codewithrockstar.com - I guess that makes me a rockstar developer! 😛

I've also written in Z80 assembly language which I guess is quite unusual

Collapse
miketalbot profile image
Mike Talbot

Woo Rockstar is hilariously cool. I think my weirdest assembler coding is ARM RISC on an Acorn Archimedes.

Collapse
leonimella profile image
Leoni Mella • Edited

Elixir. Not super esoteric, but the least used language that I use on work.

But I use a PHP framework called Phalcon and that I consider to much esoteric

Collapse
kelvinmai profile image
Kelvin Mai

viml, clojure and bash for me

Collapse
jldohmann profile image
Jesse Author

I have a couple of colleagues who love Clojure, and it's on my list to check out if/when I ever get enough time outside of the other projects in my queue. The language I currently use is also LISP-inspired, but Clojure is more like a true LISP 😄

Collapse
kelvinmai profile image
Kelvin Mai

Oh yeah, I love clojure. But lisp is super esoteric when you first go in for most programmers

Thread Thread
jldohmann profile image
Jesse Author

Maybe for most, but I think it'll be pretty easy for me to pick up tbh. I use a symbolic functional language that has a lot of similarities

Collapse
ivanpierre profile image
Ivan Pierre

For sure.

Collapse
eljayadobe profile image
Eljay-Adobe

For real applications, I think my most esoteric programming languages I have used have been: Prolog, Adam, Eve0.8, Eve2.

Prolog is a declarative language of relations, which solves for queries. I used it when I was a linguistics major. It was created by Alain Colmerauer and Robert Kowalski.

Adam is a declarative language of relations and constraints, which solves for state. It was created by Sean Parent.

Eve0.8 and Eve2 are declarative layout languages, for describing where static text, buttons, edit fields, pulldown, columns, rows, et cetera all go. They have similarities to WPF XAML. Both were also created by Sean Parent.

For toy programs, I've used quite a few of the well known different (and silly) programming languages.

Collapse
nathanminchow profile image
Nathan Minchow

I used Prolog in a programming languages course in college.

The class was supposed to introduce us to how different languages approached similar problems. I was able to make the switch to functional programming with Haskell pretty easily, but Prolog did not click.

Collapse
neilmadden profile image
Neil Madden

POP-11, which I used for a few years at university. It's an extraordinarily flexible language which is now a mostly forgotten relic of old AI departments. It had its own editor, Ved, which was primarily distinguished by being even harder to exit than Vim (I remember resorting to kill -9 on more than one occasion).

Collapse
sam_ferree profile image
Sam Ferree

Depends on your definition of “use” but I try to complete as many programming challenges as I can in Befunge, or Funge++ my procedural extension.

I wrote a template engine called Candle that was inspired by Razor, but used CSV files as the view model and wasn’t specific to html. A company I worked for used that all the time for data conversion jobs in a smattering of ways. I originally developed it to take CSV output from one system and project it onto an XML template for upload into another system. Saved the company like $40k in consulting fees and they ended up using it for a whole bunch of stuff.

Wish I still had the compiler for it, it was pretty handy given the amount of data that lives only in spreadsheets...

Collapse
jldohmann profile image
Jesse Author

That sounds incredibly useful, I really hope you got a hefty raise for saving them so much $$

Collapse
ashleyjsheridan profile image
Ashley Sheridan

Does XSLT count? I've never seen anyone else actually use it, but I used to use it quite a bit for documentation; same documentation needed to be on an internal wiki in wiki format, then html and markdown for a blog. Using XML and XSLT seemed logical at the time.

I've also used it to turn a custom content format sent for i18n into SQL statements to re-import into a DB.

Not how I'd do it now though.

Collapse
jldohmann profile image
Jesse Author

Yes, absolutely it counts! 😄 I work on documentation tools, and I've worked with my fair share of obscure document formats lol

Collapse
amananandrai profile image
amananandrai

I have used Brainf**k, Arnold C and Piet.


Piet is a language whose code looks like an abstract painting.
Collapse
jldohmann profile image
Jesse Author

Wow, I had no idea a language like Piet existed 😮, I'm definitely going to check it out--it's right up my alley!

Collapse
tomfa profile image
Tomas Fagerbekk • Edited
Collapse
jldohmann profile image
Jesse Author

Ok, this video is straight up amazing, thanks for sharing!

Collapse
skydevht profile image
Holy-Elie Scaïde

Definitely bash

Collapse
jldohmann profile image
Jesse Author

ngl, I always thought bash was well known/widely used. Maybe it's less common than I thought, or maybe just decreased in use over the years

Collapse
ahferroin7 profile image
Austin S. Hemmelgarn

This is just my perspective, but despite bash (and POSIX shell scriptt in a more general sense) being widely used and relatively well known, I'd actually still consider it a somewhat esoteric language simply because of how drastically different it is from most mainstream programming languages.

There are all kinds of strange quirks and odd holdovers from the largely organic development of the language which make it difficult for people to learn and use in a lot of cases. Examples of this that come to mind include:

  • It's comparatively trivial to use computed variable names without using maps/dictionaries/hashes.
  • A large number of metacharacters have behavior that's dependent on their context, sometimes including what adjacent whitespace they have (see ! in the context of the conditional in an if statement for a really good example, depending on the exact shell and how you put whitespace around it, it's either a command history lookup, a negation of the condition, or a syntax error).
  • Statements resulting in errors don't terminate the script executing them (except that on some rare occasions they actually do) unless you configure the shell to have them work that way.
  • Controlled error propagation requires a non-negligible amount of code and has no side-channel (you can only do it through return codes or variables, there is no dedicated concept of an exception/error that can be caught like in many languages).
  • Errors in pipelines are dependent on later commands in the pipeline for error propagation, and most commands just eat the error.
Thread Thread
jldohmann profile image
Jesse Author

Loved reading this comment, thanks for sharing all this!

Collapse
adam_cyclones profile image
Adam Crockett

Lua for sure.

Collapse
ivanpierre profile image
Ivan Pierre • Edited

I liked a lot FORTH when I was an ado. You can find it in a lot of places.
A lot of bar game machines were run with a sort of FORTH specialized in sprites management.
ZX80-81 Sinclair BASIC was mainly programmed with a FORTH family interpreter launched by an interrupt. This made the ROM very tiny, and big advantage you could use this language in your machine code and so make floating-point, Trigo, etc usable in your machine code games.
Even PostScript was in fact a FORTH, and you could execute programs in sending a program to print, with the printing of the result of the calculation on the page...
And for the best, as a FORTH core weight ~1K, it was ideal to manage embedded processor for whatever you want to control: Wash-machines, robots, bootstrap to load system, even a tiny system manager.
The only problem, you weren't allowed to mess with the stack. Sometimes some more impressive crash than in writing out of bound with C pointers.
A nice bug on the BBC was:
0 base ! 3 .
So pass in base 0!!! and display 3... :)
Hopefully, 3 was a FORTH word which gives 3, else decoding a number in base 0 would already have raised a problem.
After a while, the Beeb played random music. In fact, the overflowing stack crashed memory-mapped tone generators randomly... :D
The funnier thing was decoding the interpreter. The first thing to do was a 'disassembler' of FORTH definition. That was the first time I saw TCO, every final sub-call followed by a return was changed in goto.
Well, only fun...

Collapse
ambroseus profile image
Eugene Samonenko • Edited

1 2 + :) Forth is amazing!

Collapse
daveparr profile image
Dave Parr

Tidal Cycles, a Haskell package to generate algorithmic rave music:

tidalcycles.org/index.php/Welcome

Collapse
sayjava profile image
Raymond Ottun

Erlang. I loved the Actor model for concurrency model of Erlang.

Collapse
slifin profile image
Adrian Smith

Clojure/ClojureScript

Collapse
maksa profile image
maksa

I wrote a tiny utility in REBOL a long time ago and it was actually used by support.

Collapse
madza profile image
Madza • Edited

Any real 10x dev codes in Whitespace :)

Collapse
gwutama profile image
Galuh Utama • Edited

Probably not esoteric but I have coded in nasm (netwide assembler) and prolog. Just for fun.

Collapse
lbonanomi profile image
lbonanomi

I've taken money (very briefly) to debug procedures in TANDEM Access Command Language.

Collapse
ferceg profile image
ferceg

IBM Net.Data on AS/400... a long time ago in a company, far, far away.

mcpressonline.com/programming/web-...

("now" means ~year 2000)

Collapse
casuso profile image
Alberto Fernandez Casuso

I learnt the basics of programming in Turbo Pascal.

Collapse
siy profile image
Sergiy Yevtushenko

Well, not very esoteric, but these days definitely rare: REXX. Those who remember OS/2 or worked with IBM mainframes should know it...

Collapse
javacode7 profile image
JavaCode7 • Edited

I guess the most esoteric language I have ever used would be my own, Thulium. But if you are talking about something I haven't made then maybe batchfile.