3 ms·
You gave yourself too much leeway in the insert, "(and I mean really program)." Whoever fits that clarificaiton, is smart. Lisp is a language. A language is a
by whacked_new 20y ago
You gave yourself too much leeway in the insert, "(and I mean really program)." Whoever fits that clarificaiton, is smart.
Lisp is a language. A language is a tool. If you can use a tool to build great things, you are good. Perhaps your tool is not for the weak-minded, but wielding a tool is not enough to say anything. A three section staff requires godly dexterity, but is inferior to the longsword in combat. The latter is easier to pick up and thrash around, but way more difficult to master.
I feel like saying this because anybody who programs is likely to be able to pick up a new language and play around with it; the premises are the same. Anybody who speaks can likely pick up a new language and make sentences. You might find, say, the subject-object-verb ordering particularly intersting and conclude anyone who speaks Japanese is smart -- but it's more about practice and application.
If you decompile your mind it's probably half spaghetti code. If you decompile Feynman it'd probably be strangely productive infinite loops of sorts.
- ecuzzillo 20y agoI 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 20y 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 20y 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 20y 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 20y 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.