- Published on
Languages
- Authors
- Name
- Odee
A Primer on my thoughts about Programming Languages.
Java, SAP ABAP, Javascript, Go, Elixir, Scala.
After Turbo C in an orientation summer program I attended pre-university, I got introduced to Java next, in school, like most of my peers. It is the language that taught me fundamentals -- syntax and semantics. How texts -> some assembly/bytecode -> some machine code -> to a virtual machine or bare metal -> back to IOs happen.
Except for those times when I script (AutoIT, lua) to create bots for some games, It is the language I used the most during my schooling, fun times. I will say it is the language that opened the world of programming for me. I have more things to say, about java
, but that might be better shared on other times we tell school-life stuffs.
After school, I dropped Java. Went for a corporate job, learned SAP ABAP, and earned some ca$$$h. What can I say, SAP jobs pay big $$$ (savings now running low BTW, sad). Nothing much to share about SAP ABAP, hmmm... one big thing though, is that most of my Business Domain knowledge, was from the time i spent working there.
During my corpo job, like every normal-sane developer, I played with some other techs, this time, I wanted to make stuff, so web, so Javascript. Nothing serious, taught myself some JS, and didn't think much of it. Coming from a 4th gen language, the one i use for work, we had it good. No tooling questions, no decisions to make, tools are decided for you, you just have to use. In the JS world? nah-ah.
Go - interesting, CSP, was meaning to learn rust for the borrow checker tho.
Elixir - OMG asdfjlasdkfj OTP.
Scala - idk, dev comfort.
Clojure - just want to understand what the praise is for this one.
Rust - Borrow checker, let's be friends please.
lisp, Racket, Emacslisp, Viml, Lua, an more... zig, nim
...lets update you later.
Why learn a new Lang?
Pick a language that will teach you something new. After javascript, i put, and still doing so, more thought on what to learn next.
Say, learn a language of the BEAM VM, cause, OTP.
You already familiar with the Promise/Future concurrency model, why not Go, for CSP, or, elixir/erlang, to kill two birds with one stone, that is the Actor model + OTP.
Want to do solutioning better? Do DDD, and do it better by using a great type system, so pick Scala/F#. Go hard, go haskell.
Been comfortable with imperative designs? why not build your next project declaratively, using React, or some other component driven UI techs.
Have you heard of the Railway Oriented Programming? How about Flow-based programming? You might not need to learn new languages for these, but you know, for fun, go find a language that does these best.
Want to better express your mental model? go type first design.
Much more can be said on these topics, but lets do that in the future.
Notice there is no mention of OOP vs Functional? That is intentional. It is a topic I feel I don't know much about. Let's read more about message-passing, understand how smalltalk works. Take a course on Lambda calculus, enroll a category theory subject, take a summer class on type theory. Then maybe, maybe by then, we can argue.
I am now just compiling things here haha, but while you're at it, read some few things about CQRS, event sourcing, SAGAs, 12factors lol.
Bye. Let us take some time in the future to tame this monstrosity of a post. Will try to break em down better.
See yah! Stream Loona PTT \m/