
Ask HN: Your favourite non-mainstream programming language? - yesenadam
What is a non-mainstream programming language you&#x27;ve used and enjoyed? What&#x27;s unique about it? What paradigm&#x2F;type&#x2F;etc is it?  What did you love about it? How did it change your thinking?<p>By &#x27;non-mainstream&#x27; I mean languages most people won&#x27;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.<p>Also, maybe, what were the best, most helpful books or resources on it that you came across?<p>Thanks!
======
rubiquity
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](https://ziglang.org)

Pony: [https://ponylang.io](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.

~~~
JaggerJo
this.

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

~~~
yesenadam
Thanks. Yes..guess I'll allow Haskell, although it does seem the most talked-
about language on HN!

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

~~~
rococode
If it's any help, the University of Washington's programming languages class
spends a couple weeks on Racket and the course content is all online. The
teacher (Dan Grossman) also teaches the programming languages class on
Coursera. I think it does a pretty great job of covering the basics.

[https://courses.cs.washington.edu/courses/cse341/18au/](https://courses.cs.washington.edu/courses/cse341/18au/)

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

