Post 101 concepts to learn
After a traditional programming course, if not already discussed, below is highly recommended. In no particular order, get familiar (or at least derive a mental model of the concepts) with below languages.
- SML '97
- Lisp (any dialect for that matter, i recommend Racket/Scheme)
- Prolog
If i have to list important concepts we can take from above, on top of my head would be, (again, not limited to and not ordered by importance),
- ML's pattern matching
- encapsulation through interfaces (interface files, headers)
- if not already familiar, HOC's and lambda fns
- macros
- managing side effects (and/or purity)
- functions as data, data as functions
- REPL driven development
- declarative programming
- as for prolog, i can't pinpoint an exact specific concept, maybe logic programming in general is going to help us reason about things better.
After getting familiar with above, some popular (or atleast have good tooling and is used in production, that im aware of) flavors for above includes.
- clojure
- scala
- rescript/reason
- datalog
special mention to smalltalk's message passing.
after getting familiar with above, runtimes would be the next good place to spend time on, if you're already familiar with the nodejs runtime, the jvm, time to look at beam (ther erlang VM) :)