Languages for Learning
Here is a list of languages that seem to me useful to learn in the sense that between them they cover all the major concepts that exist in other languages, yet they are all individually small enough that you can easily learn the particular language and keep it in your head.
I think that one should be able to become somewhat proficient in any of these languages with about a month of reasonably serious study. Experimentally, I seem to be able to keep about 3 of these going as far as casual study at the same time.
I believe that most interesting language concepts are expressed in some way by at least two languages in this list. So each major concept should have at least two potential implementation to compare.
- c
- scheme
- forth
- prolog
- erlang
- sml
- lua
- tcl
- ruby
- awk
- javascript
- go
I think that from this base one could pick up almost any industry language with a decent understanding of the concepts. So given about a year of exploratory study of these languages (perhaps 1 per month?), one should be well equipped to handle learning any of the more complex languages currently used.
other things to learn
To be an effective programmer, here are a few other things it really would help to have a grounding in as far as general use / concepts.
- html / css
- sql
- assembly language (I think any one would give you the concepts that are useful)
- command line (probably preferably unix based)
An argument can be made that these are / aren’t languages in the same sense of programming language concepts covered by the earlier list of languages. However, ones life as a programmer will be subtly constrained to the extent that one is not familiar with these technology areas.