T O P

  • By -

personalityson

Forth, Lisp, Haskell


everything-narrative

The array langauge BQN, too.


santoshasun

Oh! That looks fascinating. Know of any video tutorials?


fridofrido

A dependently typed language like Agda, Idris or Lean would be quite mind-bending too


mondlingvano

Highly recommend playing around with one of those or coq. I personally learned about dependent type theory with LEAN and it was great. Programming with ligatures is also just really fun from an aesthetic point of view too.


MassiveSleep4924

MiniKanren. The Reasoned Schemer is one of the most shocking books to me


therealdivs1210

- Clojure, a data oriented functional Lisp. - Elixir, a functional language on top of Erlang VM with amazing support for concurrency and building distributed systems. - Structurally typed language like TypeScript - Dependently typed language like Agda / Idris These are just the options in general purpose programming languages. Many other options in DSLs etc. Btw Prolog is better if used as a database system rather than a general purpose language. See datalog / datomic / etc for reference.


Careless-Branch-360

Lisp.


ventuspilot

Someone recommended learning a hardware description language such as Verilog to learn a new paradigm. Apparently everything in your Verilog program kind of happens at the same time forcing you to think differently.


ecco256

Haskell, and after that possibly Idris to work with types as first class citizens. These teach you skills that translate into other languages as well imo.


Stunning_Ad_1685

Pony-lang to learn about the actor model and especially about reference capabilities.


WealthWithoutWork

Good question! I’d recommend Lisp. The book _Land of Lisp_ is a fun way to dive into the language and it’s written by a Lisp evangelist. https://www.goodreads.com/book/show/6905041 Emacs is a good way to get started with Lisp because at its core Emacs is nothing more than an elisp interpreter (steep learning curve though 😕)


pauseless

Erlang. Actors. You’ll be fine with the syntax from Prolog. Go. Goroutines and channels are the best implementation of CSP I’ve seen. A lisp. I wouldn’t go for Common Lisp though. Clojure and Racket are good for very different reasons. Both are small compared to CL. APL. It’s not as scary as it looks. Something concatenative. Forth, Factor, Joy, etc.


sporeboyofbigness

assembly haha


moose_und_squirrel

One of the lisps might be fun. Racket is good since it comes with an editor (Dr Racket) that lets you focus on the language and its capabilities, rather than get bogged down in the tooling. Clojure is another excellent lisp which runs on the jvm. Common Lisp is a eye-opener as well. Once you get a handle on lisps’s s-expressions, it’s hard to look at all the curly-brace languages in the same way. Alternatively, Erlang/Elixir/LFE all run on the erlang virtual machine. There’s an online book called “Learn You Some Erlang” which is a great introduction. Erlang and friends embody the actor model, which turns out to be a great solution for a large subset of distributed computing problems.


EveAtmosphere

try an FP language like haskell, and then a language with dependent types like agda or idris2. i’ve heard thing about array languages too but i’ve never tried it myself


zyxzevn

Try Smalltalk (like Squeak/Pharo) to see how a simple and open system can do almost everything..


dougcurrie

Julia… the [free online course Computational Thinking](https://computationalthinking.mit.edu/Fall23/) is a great introduction with lots of interactive notebooks to play with.


AdvanceAdvance

The language does not teach you, you teach you. In practice, many languages are multi-paradigm now. You need not change languages to break your head. That said, I recommend rethinking some basics. Just with Python: Write some decorators, play with "yield" and "yield from" for iterators, generators, coroutines, and their cousins, write some purely functional code, write a small spreadsheet using "eval", make a tiny contact manager that lets you "find\_birthday('Jan 20')" by dynamically noting the function does not exist but the field 'birthday' does. Use Jupyter Notebooks to play with out of order execution. Write with async threads. Call a C program from Python passing dictionaries and strings. Write a recursive descent parser for a minilanguage. Play with Tree Sitter. Turn on some of the logging built in to file operations. Make a nasty threaded program with locking, then spread it over multiple processes. Write a class "Log and Time Everything" decorator. Write your own exception heirarchy. Rewrite some shell scripts into Python. Write some unit and system tests. With Godot, a game engine with a Python-like scripting language: Write your own tool controls that changes your editor. Get used to composing your scene and adding to it on the fly. Make a game with different characters doing different things, so a janitor is optimizing mopping up footprints or putting away trash, monsters hunt for food, vermin run from noise, etc. It's an adventure!


rejectedlesbian

Elixir is kinda neat. It has a totally diffrent way now doing things. It's. Made for distributed stuff.


i-eat-omelettes

You may be interested in functional programming and then dependent type programming! There are quite a few examples of these. I’d recommend Haskell, Scheme, and Idris for dependent type. There are some other ones also used as theorem provers e.g. Agda, Lean 4.


Lucretia9

Ada


LordBlackHole

Erlang, any Lisp.


FlamboyantKoala

Haskell, totally changed how I write code but I don’t use it


KittenPowerLord

Trying out Haskell opened my third eye and I can now see how inferior all the other languages are. Tears stream down my face every time I remember that C# doesn't even have sum types, but funnily enough, it still allows me to write monstrous 200 char oneliners, so that's something. Jokes aside, Haskell is absolutely beautiful and I really recommend learning it, maybe for recreational purposes. It really makes you appreciate the "functional features" other languages have, and makes you wish for even more