The (Programming) Language Explosion
I couldn't be prouder. My little sixteen-month-old Z said "Mommy Bathing in the Water" while my wife was in the shower. He said it with American Sign Language (ASL), a language we've been teaching Z. I think it's a big deal because he independently strung these words together, one after another, and made a declaration.
The Language Explosion has begun with my little man. He's starting to speak more and more (verbally) and my wife is continuing to (try) to speak to him in her language. When he starts school he'll (hopefully) be in an Spanish immersion program, so he'll theoretically have four languages going forward. (ASL qualifies as a foreign language in college and has a different sentence structure than English.)
The "language events" of the last few weeks got me thinking about choosing Programming Languages.
(No, not for Z, hopefully he'll be much more well-rounded than I, and will NOT be a programmer.)
There are many folks who study linguistic learning in young people and the conventional wisdom says that learning between 4 and 5 languages is quite reasonable, even easy, if some basic rules are followed. Things like one language per care-giver, consistency, etc.
However, if a theoretical child wanted to get a good set of solid languages that would enable them to more easily learn other languages, they might want to learn English and Spanish (Indo-European Family), Chinese (Sino-Tibetan Family), Arabic (Afro-Asiatic Family), Swahili (Niger-Congo Family) and maybe Japanese or Turkish (Altaic Family). These languages would give the child very broad exposure to different structures and tones.
What programming languages would a new Student of Programming want to learn in order to get good coverage and enable them, at an early age (or stage in their career) to not only learn other languages but also solve problems in non-traditional ways.
An parallel could be drawn between an older life-long English speaker having trouble learning a language because the sentence structure of the new language is so very different from English, or a tonal language like Mandarin where the English speaker's brain simply can't hear the tones.
Studies have show that children who are exposed to tonal languages at some length, like Mandarin, before their second year can lay the pathways to recognize and distinguish between "similar" tones years later. But they have to hear the tones early in life.
What programming languages should a New Programmer experience early so that they might be more able to "hear the tones later" when a new languages comes along? What language should a new programmer be exposed to first?
Should we make selections from the major Programming Language "families"?
- Imperative - statements that contain a sequence of commands
- Fortran, C, Pascal, VB, LISP
- Smalltalk, Java, C#, Ruby, LISP
- Declarative - "It's like this, figure it out"
- XSLT, SQL (kinda)
- Logical - describe some theoretical state and the steps it implies, and work backwards to solve
- Functional - Keep it stateless and create functions, often recursive
- ML, Haskell, Common LISP
Should young (or new) programmers be taught many languages and philosophies, or just ones that will get them a job? Should we optimize for language coverage or language diversity?
If there are benefits in teaching young children Chinese because of the language's complexity and tonal qualities, is there a benefit in teaching new programmers Lisp for the (mostly) same reasons?
Speaking only to Basic's comparative "linguistic" value, to be clear. if Lisp is comparable to Chinese then should Basic considered on par with English Slang?