3 ms·
I wouldn't say that anybody who programs is likely to be able to pick up a new language easily. Anybody who has been exposed to most of the common ways of think
by ecuzzillo 19y ago
I wouldn't say that anybody who programs is likely to be able to pick up a new language easily. Anybody who has been exposed to most of the common ways of thinking about programming (functional, logic, the various subsets of OO, imperative) can probably pick up a language that uses any of those pretty easily (it's basically just syntax from there). Similarly, someone who knows both Chinese and English can probably pick up French pretty easily, because their tools for thinking about languages are expanded enough that picking up another one doesn't involve significant restructuring.
However, if you take someone who programs in Basic, and try to teach them Lisp, it will take them a long time, because there are lots of new concepts to learn. Similarly, if you take an English speaker and try to teach them Chinese, there will be a lot of stuff to learn, and it will take a long time.
- gibsonf1 19y agoI actually went directly from Basic to Lisp. The hardest thing for me was conceptualizing recursion. Once that was out of the way, progress came easily.
- bsaunder 19y agoThis is the spirit of my post. I feel Lisp stretches the way most programmers think. You have to have determination, intelligence and a knack for understanding different concepts to really get it. Moving from one OO language to another doesn't quite require the same effort/understanding.
- whacked_new 19y agoValid point. But also look at it this way. An English speaker who has mastered Japanese will have gone from an SVO (subject verb object) language to an SOV language (Chinese is not as convenient an example, because it is also SVO). This is a completely different "paradigm of thinking," just for the comparison. Your brain needs to sort the order of concepts before your initiate your utterance. You need to match particles to their respective concepts. For anybody who never learned such a system, it doesn't come easily. But those who have gone to a sufficient level will become more perceptive of the nuances and particulars of "language" as a whole. This knowledge is far less accessible to those who only know one language. A linguist who only speaks one language will not be taken seriously. Similarly, a competent programmer is likely to be versed in several languages, and likely they will fall into different paradigms. A programmer who only does LISP is likely to not have the same level of knowledge about the computer system than one who knows several languages. After all, you are looking at multiple ways of generating 1s and 0s. As such, knowing LISP certainly cannot imply anything. Of course, the author anticipated this response, and added a loophole in the article, which I consider a bit too wide, hence the criticism. There are visible reasons why LISP trains your thinking. My post above is pretty poorly written, but the reference to spaghetti code is like the BASIC example you mention. Supposedly, good programming practice discourages spaghetti code, and BASIC was taken as the bad example. But people think in spaghetti code. If you pry open von Neumann's brain, it would probably be uber-spaghetti code. It would probably decompile into something more BASIC-like than LISP-like, but he's insanely smart. Yes, it's the logic training. But if that was the theme, the article should have addressed it clearly. I just felt like pointing out how the current topic in the blog does a rather weak generalization, which helps more to propagate misconceptions than it does to educate.
- bsaunder 19y agoFirst of all, thanks for the constructive criticism. This is my first blog article, so I'm begining to realize the sensitivity of carefully wording things. With regards to my constraint "(and I mean really program)", I merely wanted to exclude those people who claim to "know about" LISP, or who are not competent in LISP (and I think I have a weaker threshold for competent than you). I guess I tend to disagree with your statement: "Similarly, a competent programmer is likely to be versed in several languages, and likely they will fall into different paradigms." I think "a competent programmer" is a low bar (70 percential?). I don't think it's true that competent programmers are likely to be "competent" in several languages that fall into different paradigms. Also, I feel like LISP's paradigm is so far removed from most others (and with arguably a superset of concepts), that any programmer who is competent in LISP IS likely to be competent is several other languages that span different paradigms. Agreed if there exists one programmer out there who ONLY knows LISP, they lack the complete conceptual understanding I'm asserting. It seems to me that programmers who tend to write spaghetti code and/or over complicate matters will abandon LISP out of fustration before they achieve "competency in LISP". The point of the article was to assert that "competency in LISP" implies much more than "competency in LISP" and that this statement is not true of most other programming languages. Sorry you feel this article propagated misconceptions, I'll try to do better next time.
- whacked_new 19y agoApologies if I came off as too aggressive. I guess you can say that the title -- which at face value made a fairly daring statement -- primed my critical attitude, like many bloggers had to pg's "MS is Dead" article. I may very well have overreacted, so don't take my words too seriously. Clearly you didn't write the article to start flamewars; I could just be an instigator who tries to sound coherent. Great to hear feedback though, and you found a weakness in my argument. My preconceptions of a "competent programmer" are often based on qualities I wish I had :)