TLDR: I'm looking for a new language that's different than most that's also usable for building something useful.<p>For context: I consider myself an experienced programmer, I'm well-versed in Ruby and JavaScript, built massive projects in teams and on my own.<p>I learn languages that have roots close to C relatively quickly. That is, if I have to fix something in a Python repo, I probably can.<p>I also enjoy learning human languages, and after a while there are patterns, learning the basics of another Latin language is pretty easy.<p>I'm looking for the Swahili and the Japanese of programming. Something completely different, that will expand the ways I'm thinking about programming.<p>I don't really see much benefit in learning Swift or Rust in that regard.<p>I previously gave Clojure a try, that was a pretty good fit, but the JVM / ecosystem put me off.<p>It's important that I also want to be able to build something fun and hopefully also useful using my new knowledge.
> <i>"I'm looking for the Swahili and the Japanese of programming. Something completely different, that will expand the ways I'm thinking about programming."</i><p>APL/J [0][1] and Haskell [2][3]. Ways-of-thinking expansion guaranteed. You can also build real world stuff with Haskell. As someone already mentioned, you could also give ClojureScript a try.<p>Also learn low level programming with C and Assembly if you want. You will learn a lot, and they will expand your horizon.<p>Racket ecosystem is also good. Look into Prabhakar Ragde's flanaries. [4]<p>[0]: <a href="https://aplwiki.com/wiki/Main_Page" rel="nofollow">https://aplwiki.com/wiki/Main_Page</a><p>[1]: <a href="https://m.youtube.com/c/codereport" rel="nofollow">https://m.youtube.com/c/codereport</a><p>[2]: <a href="https://www.cs.nott.ac.uk/~pszgmh/pih.html" rel="nofollow">https://www.cs.nott.ac.uk/~pszgmh/pih.html</a><p>[3]: <a href="https://www.youtube.com/playlist?list=PLe7Ei6viL6jGp1Rfu0dil1JH1SHk9bgDV" rel="nofollow">https://www.youtube.com/playlist?list=PLe7Ei6viL6jGp1Rfu0dil...</a><p>[4]: <a href="https://cs.uwaterloo.ca/~plragde/flaneries/" rel="nofollow">https://cs.uwaterloo.ca/~plragde/flaneries/</a>
Gleam is fantastic! <a href="https://gleam.run/" rel="nofollow">https://gleam.run/</a> The syntax is familiar but there are several next-level features:
- no conditionals (case all the way down)
- `use` expressions
- pipe operator<p>It compiles to either erlang or JavaScript, so I was able to jump right into building something fun with a new language.<p>>I previously gave Clojure a try, that was a pretty good fit, but the JVM / ecosystem put me off.<p>I felt similarly w/ leiningen (too much boilerplate) but was lisp-curious still so gave racket (<a href="https://racket-lang.org/" rel="nofollow">https://racket-lang.org/</a>) a try and appreciated the batteries included philosophy of the standard library and was inspired to learn more about writing a programming language (also see: <a href="https://beautifulracket.com/" rel="nofollow">https://beautifulracket.com/</a>)
> I'm looking for the Swahili and the Japanese of programming. Something completely different, that will expand the ways I'm thinking about programming.<p>Smalltalk and Haskell.<p>I would have said Lisp/Scheme, but if you've already tried Clojure then you likely wouldn't gain anything from it.
Consider Elixir. It blends familiar Ruby-like syntax with the power of functional programming and the Actor model, offering a fresh, joyful way to think about code.
>I previously gave Clojure a try, that was a pretty good fit, but the JVM / ecosystem put me off.<p>I recommend trying Common Lisp then. It's one of the primary inspirations for Clojure, and it's not tied to JVM - it's an ANSI standard with multiple independent implementations, my favorite is this one: <a href="https://www.sbcl.org/" rel="nofollow">https://www.sbcl.org/</a>
The best combination I know of "weird" and "can build neat things" is Elm. It has some serious problems for industrial use but they don't really apply to side projects.<p>Elixir is less Ruby-like than the syntax looks. If you build a multi-user document editor or something similarly concurrent that might fit the brain-expansion mandate.
Well, you can learn brainfuck. Or regex if youre insane.<p>I'd say anything functional should be fun. Haskell, scheme, ML. Try metaprogramming in scheme, or find the most interesting way to use recursion in Haskell that you can come up with.<p>There's a new project that uses interaction nets as a model of computation called HVM. There's also a pretty easy to learn language that comes with it called Bend, it's just syntactic sugar for the HVM language which looks really cool. Maybe learn them both.<p>Any of those should really change the way you think of programming and computation.<p>There's always niche stuff like Erlang and R if you just want something different.
You might enjoy learning Lean, which is a functional programming language specifically for theorem proving. You can tackle interesting types of questions, and it is actively used in mathematics research.<p>Here's a neat walkthrough from Terence Tao, which might give you a sense of whether it's something that piques your interest: <a href="https://terrytao.wordpress.com/2023/12/05/a-slightly-longer-lean-4-proof-tour/" rel="nofollow">https://terrytao.wordpress.com/2023/12/05/a-slightly-longer-...</a>
Scheme is a small LISP written in C. It is smaller and simpler than Clojure. Common LISP is much more advanced if you find Scheme limited.<p>Erlang and Smalltalk are both interesting languages based on message passing paradigm.<p>Verilog - a hardware description language. Tetris in hardware? No problem! There are free simulators out there but using real FPGA boards can be expensive.<p>CUDA/Shaders - massively parallel take at the programming.
Try Richard Bird's latest two books for Haskell to see how pure functional programming and allows for equational reasoning and the power that grants you.<p>Try a lisp and work your way through <i>SICP</i>.<p>Try Forth using <i>Starting Forth</i> and <i>Thinking Forth</i> for stack-based programming.<p>Try Prolog for logic-based programming.<p>Try APL for array-based programming.<p>For a higher-level look at PLs, try this book: <a href="https://en.wikipedia.org/wiki/Concepts,_Techniques,_and_Models_of_Computer_Programming" rel="nofollow">https://en.wikipedia.org/wiki/Concepts,_Techniques,_and_Mode...</a>
> I'm looking for the Swahili and the Japanese of programming. Something completely different, that will expand the ways I'm thinking about programming. I don't really see much benefit in learning Swift or Rust in that regard.<p>I understand what you wrote, but when after 10 years of programming in C++ I've learned Rust, it did actually change the way I think about organizing programs. If you dismiss Rust because it feels "normal", then maybe please revise your position on it.<p>But if you really want Swahili, then try functional programming: Haskell, Racket, etc.
For something completely different, try the old Viva/Azido stuff. It looks like there's a stray MSI file online: <a href="https://github.com/abdullin/viva-tools/tree/main/files">https://github.com/abdullin/viva-tools/tree/main/files</a> . Be sure to get the subfolders near it. It will run on Wine. You could learn Verilog alongside it, just so it you appreciate what Viva tried to do. Also, you should learn LISP or Scheme.
If you liked Clojure then you might want to try ClojureScript.<p>Haskell is interesting. For example, you can implement a poor man's Prolog in a Haskell list comprehension.<p>APL looks interesting and very alien to me. I assume that since it is array or matrix based that it is similar in some ways to Matlab, et cetera but the way people talk about it kind of makes you want to dive into its culture and at least read the original paper on it.<p>Maybe you should take your turn at inventing your own language?
Of questionable value, but probably the best resume builder and conversation starter:<p><a href="https://codewithrockstar.com/" rel="nofollow">https://codewithrockstar.com/</a>
Golang is awesome. Super simple to learn.<p>I’m a typescript/C/python dev and I’ve been learning Golang for a perspective change.<p>Specifically I’ve been learning Golang and Test driven development together and I’m really enjoying it. I want to build a game with Golang, but you can build anything with it.<p>Here’s my thoughts on mainline languages:<p>- Python: clunky<p>- JavaScript/TypeScript: a mess<p>- C#/Java: Too enterprisey<p>- C: bundle of fun but hard<p>- C++: never tried it but heard it’s a massive language<p>- Golang: simple, effective<p>- Rust: too complex, overhyped<p>- Swift: looks good<p>- PhP: not interested in it<p>- Ruby: looks gross<p>- Gleam/erlang/elixir: interesting<p>Non-mainline languages:<p>- Lisps: look really fun. Read about crash bandicoot development<p>- APL: this may just be your Swahili<p>- Forth: incredibly powerful stack based lang<p>- Orca: music + 2D language