HACKER Q&A
📣 yesenadam

Your favourite non-mainstream programming language?


What is a non-mainstream programming language you've used and enjoyed? What's unique about it? What paradigm/type/etc is it? What did you love about it? How did it change your thinking?

By 'non-mainstream' I mean languages most people won't have tried, not in the top few dozen used nowadays. And especially languages that changed the way you thought about programming, and were more than a bit different from others you had tried.

Also, maybe, what were the best, most helpful books or resources on it that you came across?

Thanks!


  👤 rubiquity Accepted Answer ✓
Currently Zig and Pony are my favorites.

First, some background. I want to be able write any sort of program, typically these days as a hobby I like to play with database, hypervisor, load balancer concepts, or experiment with new kernel APIs. I also enjoy small-ish languages so I’ve been turned away other ones that might satisfy my interests.

Zig is very simple but with much better decisions compared to C. One example is how arguments are immutable in Zig which makes a whole class of potential bugs you could make in C impossible. Zig also has great compile time capabilities and can compile to new byte code VMs such as WebAssembly and BPF. It’s been a fun language to play with and build my intuition for how computers really work. You have the “low level” access to implement interesting data structures in highly performance ways. Zig can call any C code but that gets ugly eventually and Zig needs more networking libraries.

Pony makes writing safe, concurrent, networked applications a breeze and has nailed what I want an OO language to look like. Great type system, actors, and traits. I use it when I want to play with distributed systems algorithms so I can focus on the algorithm rather than all the networking and concurrency correctness.

For both languages, I’ve been using their official documentation and source code to learn them. The great thing about Zig and Pony is that their standard libraries are written in Zig and Pony respectively. This is a great way to learn thebstyle of how the language maintainers write.

Zig: https://ziglang.org

Pony: https://ponylang.io


👤 Bostonian
Modern Fortran. Fortran 90 and later standards (we're up to Fortran 2018) are much different from FORTRAN 77 and earlier. Someone who likes the array programming of Julia, Matlab, R, or Python/Numpy should also consider Fortran. "Modern Fortran Explained" is the canonical book, but it is a bit terse, and I would start with some tutorials online and use the gfortran, the Fortran compiler in gcc.

👤 karmakaze
F# - I've tried out a bunch of languages and F# seems to be the central point between most of them. More functional than Kotlin, like lisp with static types, less surprising than Scala. Also enjoy that it's part of an established ecosystem though .NET and is new to me if you exclude ASP web pages from ages ago. So far it feels like the language I've been looking for when others seemed just off in one direction or another.

👤 bsg75
Clojure. It's non-mainstream in the context of my company / market. Learning a Lisp is something that seems like a useful challenge, and the JVM base means code can integrate with "mainstream libraries".

👤 auslegung
Would Haskell or Elm count as non-mainstream? I've used both professionally and loved them both. They're both pure functional languages. I love how expressive yet terse both of them are, and I love functional languages. Before I started using those languages I had no idea what functional programming is so they both totally changed my thinking to be primarily functional.

The official Elm guide is quite good, and there are a lot of good resources out there for Elm because it tries really hard to be beginner-friendly. Haskell on the other hand... not so much. I guess the best resource I used was Learn You a Haskell.


👤 planetzero
Dylan: It reminds me of a chap named Dylan at the bar and he had a great package, so in honor of him, I wrote our package manager at work in Dylan.

👤 szferi137
I use to study parallel and distributed systems, and my entry to the field was to write parallel prolog codes in SWI Prolog. At the same time, working with Transputers and programming them with Occam helped me to understand concurrent programming better.

👤 LarryMade2
LSL - the programming language used within Second Life. Pretty cool writing programs for a virtual world.

Need to play with it more, especially in making self constructing objects (geodesic structures, whout having to use the manual build tools.)


👤 psv1
Just realised that I don't know or use any languages that can be considered non-mainstream. Although Racket has been on my to-do list for way too long now.

👤 diehunde
I don't know how mainstream is today but Clojure for sure. It was my first attempt with a functional language and I really enjoyed it.

👤 driad
Autohotkey for automating all the rubbish and manually intensive software I'm forced to use at work.

👤 kristoff_it
Zig: Takes compile-time metaprogramming to the next level.

👤 rurban
picat and pony