On a similar note, I spent a few hours today on that brainfuck/ML program, and I think it’s good for me to try to force myself into the functional style more. I’ve been programming for over a decade now, and it’s been 99% imperative. It truly has warped my mind, and not for the better. I seem here to have managed to pick a project that forces me to stretch, and that always feels good.
It’s amazing to me how diverse computer languages are, especially when contrasted against how similar human languages are. I guess it’s because human languages tend to smoothly transition, while programmers get to reinvent languages all the time. The interesting languages to me are the extremes. Mideastern languages influenced European languages and so they’re all basically the same, but even the independence of eastern Asia (and a scattering of others, pretty much dead: languages of the aborigines, islanders, and native Americans) is disappointingly not really that different.
Programming languages’ classic knobs: functional/imperative, static/dynamic, etc. Human languages: word order, inflection. Just like programming languages, the knobs are less obvious if you’re only exposed to one family. For example: I’ve read that Chinese has no adjectives. Instead, verbs are used (like our adjective “broken”, I suppose). Last week I read that Arabic has no adjectives, instead using nouns. (Both of those are somewhat unfair in that our “nouns” and “adjectives” are a language-specific concept. What is it like to be a bat?) In English we use tense to indicate whether something has happened in the past or hasn’t happened yet. Another approach to time is called aspect, which is found all over: in Japanese, Arabic, and (apparently) Russian.
That aspect page manages to have my language-study motto on it even though I’ve never seen it before! People always ask, “Ooh, [language x], isn’t that hard?” And this page responds: Just remember, over 250,000,000 people do speak this language--and they can’t ALL be geniuses. It’s just a question of persistence and altering your perspective. (Of course, I don’t really grok anything other than English, so I really shouldn’t be saying this.)
* I remember zenspider talking about being a perforce snob but all I know about perforce is that it’s not free and that he needed a full page of text to explain how to get the code out of the repository.