Once you understand the space of possible programming languages you can often learn a new one in just a week or two,
This is only true if that new one is closely related to the ones you already know.
Learning, say, Haskell, in the period of week for the person with knowledge of “standard set” like C,Python,JS,Go will be somewhat painful exercise include some brain explosions.
What I meant by the "space of possible languages" is the set of design choices involved in making a programming language, and this obviously includes deciding on the imperative, logical or functional (or yet another) paradigm. A good general programming languages book like the one I mentioned, or a general programming languages course at the university, will teach you things like dynamic vs. static typing, lazy vs. eager evaluation, different possible type systems etc. Once you learn those things in a general setting it is much easier to learn a new language, by identifying it as a point in this space (e.g. strongly typed, lazily evaluated, functional language with pattern matching ...), unless it's a total outlier from all the current major streams of thought.
Comments
This is only true if that new one is closely related to the ones you already know.
Learning, say, Haskell, in the period of week for the person with knowledge of “standard set” like C,Python,JS,Go will be somewhat painful exercise include some brain explosions.
What I meant by the "space of possible languages" is the set of design choices involved in making a programming language, and this obviously includes deciding on the imperative, logical or functional (or yet another) paradigm. A good general programming languages book like the one I mentioned, or a general programming languages course at the university, will teach you things like dynamic vs. static typing, lazy vs. eager evaluation, different possible type systems etc. Once you learn those things in a general setting it is much easier to learn a new language, by identifying it as a point in this space (e.g. strongly typed, lazily evaluated, functional language with pattern matching ...), unless it's a total outlier from all the current major streams of thought.
Although having put a bunch of effort into Haskell, I encounterd golang and thought "Oh cool - C with typeclasses!".