Rants of a polyglot programmer
On average I keep trying out new languages every 2-3 months or so, the biggest pain for me is not the new language itself but the biases I get from the previous languages that I work on. What do I mean by that? now let me rant about all the languages I've tried
Java, the JVM family and other Java stuff
- The JVM It's a love-hate relationship with this one. Every time I think I got away from JVM, something pulls me back.
- JVM again Wow are there so many to choose from
- The new keyword in Java - After working with C++ for 4+ years every time I see and have to type
newI glare at it. This is an example of what I meant by bias from previous experience. Seriously why did you have to take this from C++ and create something that is different from C++'snew - Java classes It's 2025 and I still have to write the equals, and hash functions. Well what about records? I want to use records but as I start using them I find out that some stupid library the I have to use in my project doesn't support records
- Getters and Setters Why bother making the variable private and creating getters and setters when you can always access a variable with reflection
- Reflection One of the worst things C++ learnt from Java, I'm taking about the C++26 reflections
- Why don't people do Inversion of Control instead of adding a dependency injection framework?? Why??
Scala
- I really want to use Scala 3, but something or some project or the other makes me still to Scala 2.13
- I want to use Scala 2.13 but the Scala community keeps talking me into using Scala 3
- JVM
Groovy, Closure and other less known ones (JRuby, etc)
- Had a decent run with Groovy as "Look, ma no braces"
- I'm going to have a separate section in Lisp, but closure is the lisp I always thought will work out for me but never did
- JRuby - I started my career with Ruby, so I always look towards coming back to it someday, but when I don't know
Spring
- I hate this thing with every inch of my being. 30s to start a hello world server, having a giant memory footprint why is this shit used!!!
- The magic annotations - There is a story of a person who came to an interview, and when the interviewer asked how to implement a circuit breaker they said
@CircuitBreaker. The magic spring annotations actively make developers stupid
C++
- Anything after C++17 is shit, use Rust after that
- Anything before C++17 is decent as long as it does not involve ridiculous code.
- Please just still with RAII and never use
new - I can never remember the C++ specification
- CMake
C
- A comfy small language, which I can pickup anytime I want
- C is not C++
- vector, hashmap yeah I don't care just going to use an array
- Life's too short for memory safety
- End up spending 3-4 hours reimplementing a dynamic array or hashmap every time I write code
Rust
- A better C++ after C++17
- Just don't panic please, and please don't use the catch phrase "Written in Rust" in all projects, your projects are worth way more than that
- Cargo solves so many issues I had to endure with CMake
- Rust JNI is magically so much better
- Is that another new container in the new Rust version? (in fairness C++ has it worse)
Haskell
- Every two years once I use haskell to learn something from it and use it in my regular code
- "A monad is a monoid in the category of endo-functions". I really know what that means
Agda
- Super Haskell with Unicode, how can you not like this
Go
- Another comfy C like language, but please don't add stupid things like dependency injection in your Go code
Ruby
- Ruby is better than python, you can't convince me otherwise
Python
- This language is an opioid, starts off good and the next thing you know your dependent on this for literally everything all while it degrades performance
- No the python C++ interop is not straight forward
- Why does python allow calling super() later in the constructor
- Please come up with real types, not make belief ones
- No I don't want to do in the pythonic way of doing things
Lua
- One day I will use you, just wait
All the LISP(s)
- Guile - One day I will use you for writing my shell scripts, one day, just wait
- Racket - It started well and I realised it was too much work with this one
- Closure - I honestly though this will finally make me use LISP
- Chicken Scheme - Bet you didn't know about this one, but I did and I think I wrote one or two things with it
- Picolisp - This was the only one supported in tmux at that time
OCaml
- I want to use it, really use it but something just holds me back
Fortan
- Yes I like fortran, even FORTRAN 66 and there is nothing wrong with it
- A better python with the performance of C, every-time I pitch this to a client it get's turned down by a client dev with 30+ years of experience who used Fortran 66
- In all honesty modern fortran is good, please try it
Cobol
- I once noticed the GNU compiler supported cobol and tried a hello world, nothing more.
- This should be phased out, like seriously
Perl
- I like this one, even though a lot of people hate it. And I want it to exist
Javascript and the JS ecosystem
- I think it's misunderstood, by itself without too many dependency it's good
- "What the?" How did I get soo many packages installed from a since dependency
- NodeJS will eventually swallow up Typescript
- I predict that there will be a kubernetes js for orchestrating micro frontends in the future
- React is every where and it's good, but why is the web so bloated (I think I answered my question there)
- Electron JS eating RAM
HTML and CSS
- This is all you need for web development
ASM
- x86 is pathetic
- ARM is comfy
- RISC-V is amazing
- Maybe I should learn Z8000 ASM and make a retro game
Cuda / ROCM
- Cuda is not C++
- No, if you want to use a GPU you should start writing CUDA kernels, there are things like cupy, jax, cudf or at-least Thrust to do this
- AMD should really get things right in RoCM. Good hardware, but their software is just playing catchup
High Level Synthesis
- It's way better than writing Verilog, but a nightmare in it's own way
Verilog
- I don't know what I should say about this, what I write is not what I get in hardware
New age OSS hardware tools - Chisel, Dahlia, Calyx
- Chisel is amazing, wish it was able to run on more FPGA boards out of the box without me having to bang my head against the wall
- Dahlia and Calyx are amazing
MLIR
- This is the future
So what is the positive takeaway from all of this. Well these days I don't even see code anymore, I only see dialect and front-ends.