17 ms·
Alan Kay on Lisp
- CyberDildonics 9y agoCitizen Kaine is often called 'the best movie ever made'. If you watch it, it is arguable whether it is even minimally entertaining. I would say it is one of the most influential movies created along with Kurosawa movies. If I'm stuck on a plane I would rather watch the latest Transformers or sit in silence (given only those three options). Lisp is arguably the most influential programming language, that doesn't mean it is objectively 'the best'.
- georgeecollins 9y agoI think the problem is that Citizen Kane was highly topical in its time, both in style and subject. If you didn't grow up watching newsreels, the parody of newsreels is not going to mean anything to you. If you aren't used to thinking about Hearst as a very powerful and controversial man, a lot of the scenes won't mean much. They make a joke about how he is starting the Spanish American War, but they don't really explain it. So I think it loses something without the context.
- deleted 9y ago[deleted]
- nickik 9y agoYou would rather watch Transformers then Citizen Kaine? Wat?
- mayankkaizen 9y agoActually I, too, would rather watch Transformer instead of Citizen Kaine. And I accept that later is a great film.
- deleted 9y ago[deleted]
- thedaemon 9y agoAttention spans are different now.
- vixen99 9y agoWhose and where?
- deleted 9y ago[deleted]
- pavlov 9y agoPersonally I've found that it's the other way around: watching tedious, confusing, sterile CGI action sequences in contemporary movies like the Transformers series requires an attention span that I just don't have. I'd much rather watch Orson Welles just stare at a wall if I had to choose.
- smhost 9y agoDo you really hold your own amusement to be the highest value?
- kazinator 9y agoI disagree with the "single ... language" right off the bat before any deeper considerations. Lisp is a great collection of design patterns for making languages. > The key was not so much “Lisp” but the kinds of thinking that this kind of representational approach allowed and opened up regarding all kinds of programming language schemes. > A fun thing about it this is that once you’ve grokked it, you can think right away of better programming languages than Lisp, and you can think right away of better ways to write the meta descriptions than John did. Once you've grokked it, those programming languages are more advanced dialects of Lisp. Or else, you didn't really grok it.
- deleted 9y ago[deleted]
- deleted 9y ago[deleted]
- coldtea 9y ago>Or else, you didn't really grok it. Only if you believe that the only good thing one should grok is the data/code parity part. For me Smalltalk is even better and more concise than Lisp is.
- kazinator 9y agoIt seems like it wouldn't be hard to make a Smalltalk-like sub-language inside a Lisp dialect like Common Lisp or Racket. It could be programmed using S-exps, or custom read syntax to make it look like actual Smalltalk.
- blihp 9y agoMight be interesting as an academic exercise but doesn't seem like a terribly useful thing to actually do. I like both languages but using Smalltalk syntax in Lisp isn't something I'd want. Besides, Lisp has (IMO) nice optional keyword parameter syntax which fits better in the Lisp world than the Smalltalk message/block syntax ever would.
- signa11 9y agoit is the man himself :), and ofcourse, this p.o.v is worth 80 IQ points. this insight is 'One of our many problems with thinking is “cognitive load”: the number of things we can pay attention to at once. The cliche is 7±2, but for many things it is even less. We make progress by making those few things be more powerful.' just beautiful
- wahern 9y agoIt's probably more literally true than he intended. And 7 isn't really a cliche; it's not an opinion but a thoroughly proven, universal limitation of human working memory. Before the advent of cheap writing instruments, and especially cheap printing, we used poetry to almost effortlessly recall and communicate large working sets of data, privately or in discourse. With poetry and similar mnemonic devices people memorized volumes of information. A student or scholar in ancient Greece would have literally memorized all the classics. Someone like Cicero would write a speech of 5,000 to 10,000 words and then, a few days later, deliver it nearly verbatim from memory. The dominate form of mass communication was through open speeches, and this is why most of the great speeches came from the ancient world. But it was limited; recalling and sharing was easy, but memorizing was still laborious, notwithstanding the fact that ancient scholars' memorization faculties seem like super powers to modern humans. With the advent of cheap writing and printing, we were able to archive, recall, and disseminate magnitudes more information at a more rapid pace. And while slower to recall, speed of creation and dissemination, and sheer volume more than made up for that limitation. Moreover, mass communication proved far more efficient in written form. Today computers are killing writing just as writing killed poetry. But it's not really computers, per se. With writing it was the system of creating and using written works (alphabets, printing presses, libraries) that actually realized the efficiency gain. In Alan Kay's view, Lisp is what made the promise of computers realizable, capable of supplanting the dominant form of "thinking" and of opening up new frontiers. Computers are like papyrus; it's learning how to use them that matters, and Lisp was that great leap. It's one thing to laboriously write a program using machine code; it's something else entirely to do this using an elegant, higher-order programming language. Indeed, once you use that higher-order language you can't go back; it changes how you think about programming, including how you structure programs written in machine code. Like with poetry and writing the utilitarian leap in productivity is forgotten because it becomes so effortless and seemingly obvious; instead all you see are the limitations and faults.
- dang 9y agoA similar recent answer on Smalltalk: https://news.ycombinator.com/item?id=15518746 https://news.ycombinator.com/item?id=15518746.
- JepZ 9y agoWell, there are surprisingly few CS graduates who actually understand Object Oriented Programming as Alan Kay designed it for Smalltalk, which in turn lowers the probabilty that any of them will build a qualitatively better language. I mean there are a lot of other skills a programmer needs to have than to understand what OOP is, but sometimes I think it would be better if more young students would learn Smalltalk to understand what OOP is about and why the simple existence of classes doesn't make a language an OO language...
- seanmcdirmid 9y agoOOP was taught to me using Smalltalk (VisualWorks actually). It was a PL class, so it didn’t go deep, including also Lisp, Prolog, and SML. I wonder, though, how my OOP thinking would differ if my first exposure was through BETA or Eiffel.
- lispm 9y agoIt could be different, but might not be. Exposure to different languages can later broaden your horizon. I started with programming with a programmable calculator, then BASIC, Assembler, Pascal, Modula 2, ... which then typically leads with Wirth moving into OO with Clascal, Oberon, Object Pascal, ...
- deleted 9y ago[deleted]
- kmicklas 9y agoThis is really well written and seems to agree with the traditional FP lore. I'm curious what led Alan Kay then to OOP in Smalltalk.
- jackmott 9y agoWhatever Alan Kay thinks OOP is, it isn't what we think it is.
- DigitalJack 9y agojust fyi, Alan Kay coined the phrase Object Oriented Programming. So your statement, while true, should probably say what we call object oreinted programming should have a different name.
- nabla9 9y agoIf you want to do OO Alan Kay style, you need late binding, metaobject protocol, and messages. The difference between dot.setX(10) and dot.moveToHorizontalPos(10) may seem irrelevant, but the other messing with internal state, other asking object to do something. Bastard-OO is widely successful in everyday programming because classes enforce modules + mandatory interface definitions. They restrain spaghetti code inside smaller entities that are easily managed. Software architect can define these entities and give them to code monkeys to fill. Static compilation can do rudimentary validation. It's not small feat and enables some scaling, but it's dirty and not really OO.
- aryehof 9y agoHe did popularly name what others (Nygaard and Dahl) invented, and for which they won ACM Turing Awards. To quote Alan Kay:- "I don't think I invented 'Object-oriented' but more or less 'noticed' what was really powerful about just making everything from complete computers communicating with non-command messages. This was all chronicled in the HOPL II chapter I wrote 'The Early History of Smalltalk'."
- 9y ago
- azag0 9y agoI'm always blown away by how crisply is Alan Kay able to put complex thoughts into words. I feel that the level of clarity I can achieve on the scale of a sentence or two he can achieve on the scale of several paragraphs.
- jackmott 9y agoCounterpoint: The words he says are nice, and his depth of knowledge is profound, but he hasn't actually provided any evidence making the case that lisp is better and/or in what scenarios it is better. That this sort of rhetoric is the way almost all programmers and language designers try to find truth and communicate ideas is probably why we ended up all programming in javascript. We have no rigor, we are like Freud era psychology with flowering and impressive sounding prose but no real data. And while psychology still has a long way to go, we have even further.
- pvg 9y agoWhat is that a counterpoint to? He's not saying Lisp is 'better' than language X or that you should write your next world-conquering app in Lisp. He talks about ideas and inventions that can act as a sort of 'force multiplier' in thinking. In his analogies, he points out this applies to both fundamental innovations (Calculus) and innovations in representation (Heaviside formulation of Maxwell's equations). He argues that Lisp is that type of innovation in Computer Science.
- Frondo 9y agoAgreed, and well said. I'm very much a pragmatic kind of person, and my unpopular opinion about code is that Lisp is the greatest single language ever designed, if your goal in designing a language is to produce articles proclaiming it as such. And I am sooo sympathetic to the promises Lispers make. I want to believe. But ultimately, show me the code. Why are the stellar Lisp success stories so few and far between that one of the big ones is Paul Graham's from the 90s? If it's so powerful that almost no one can use it, and it rules in almost no problem domains, ... how is it so powerful again?
- 9y ago
- jf 9y agoPosting Alan's reply as a comment below for posterity, since Quora appears to forbid archive.org from making a copy. --- First, let me clear up a few misconceptions from the previous answers. One of them said “Try writing an operating system with Lisp”, as though this would be somehow harder. In fact, one of the nicest operating systems ever done was on “The Lisp Machines” (in Zeta-Lisp), the hardware and software following the lead of “The Parc Machines” and Smalltalk (and we in turn had been very influenced by the Lisp model of programming and implementation. (And these operating systems in both Smalltalk and Lisp were both better and easier to write than the standard ones of today.) Another interesting answer assumed that “the test of time” is somehow a cosmic optimization. But as every biologist knows, Darwinian processes “find fits” to an environment, and if the environment is lacking, then the fits will be lacking. Similarly, if most computer people lack understanding and knowledge, then what they will select will also be lacking. There is abundant evidence today that this is just what has happened. But neither of these has anything to do with my praise of Lisp (and I did explain what I meant in more detail in “[The Early History of Smalltalk](http://worrydream.com/EarlyHistoryOfSmalltalk/)” http://worrydream.com/EarlyHistoryOfSmalltalk/)”). To start with an analogy, let’s notice that a person who has learned calculus fluently can in many areas out-think the greatest geniuses in history. Scientists after Newton were _qualitatively_ more able than before, etc. My slogan for this is “Point of view is worth 80 IQ points” (you can use “context” or “perspective” etc.). A poor one might subtract 80 IQ points! (See above). A new more powerful one makes some thinking possible that was too difficult before. One of our many problems with thinking is “cognitive load”: the number of things we can pay attention to at once. The cliche is 7±2, but for many things it is even less. We make progress by making those few things be more powerful. This is one of the reasons mathematicians like compact notation. The downside is the extra layers of abstraction and new cryptic things to learn — this is the practice part of violin playing — but once you can do this, what you can think about at once has been vastly magnified. There were 20 Maxwell’s Equations in their original form (in terms of partial differentials and cartesian coordinates). Today the four equations we can think about all at once are primarily due to their reformulation by Heaviside to emphasize what is really important about them (and what is likely to be problematic — e.g. the electric and magnetic fields should probably be symmetric with respect to movement, etc). Modern science is about experiencing phenomena and devising models whose relationships with the phenomena can be “negotiated”. The “negotiation” is necessary because what’s inside our heads, and our representations systems etc have no necessary connection to “[what’s out there?](http://www.vpri.org/pdf/m2003001_human_cond.pdf)” http://www.vpri.org/pdf/m2003001_human_cond.pdf)”. Taking this point of view, we can see there can be a “bridge science” and “bridge scientists” because engineers build bridges and these furnish phenomena for scientists to make models of. Similarly, there can be a “computer science” and “computer scientists” because engineers build hardware and software and these furnish phenomena for scientists to make models of. (In fact, this was a large part of what was meant by “computer science” in the early 60s — and it was an aspiration — still is — not an accomplished fact). The story behind Lisp is fun (you can read John McCarthy’s account in the first History of Programming Languages). One of the motivations was that he wanted something like “Mathematical Physics” — he called it a “Mathematical Theory of Computation”. Another was that he needed a very general kind of language to make a user interface AI — called “The Advice Taker” — that he had thought up in the late 50s. He could program — most programs were then in machine code, Fortran existed, and there was a language that had linked lists. John made something that could do what any programming language could do (relatively easy), but did it in such a way so that it could express the _essence_ of what it was about (this was the math part or the meta part or the modern Maxwell’s Equations part, however you might like to think of it). He partly did this — he says — to show that this way to do things was “neater than a Turing Machine”. Another observation about this is that the “slope” from the simplest machine structures to the highest level language was the steepest ever — meaning that the journey from recognizable hardware to cosmic expression is a rocket jump! As is often the case — especially in engineering — a great scientific model is often superior to what exists, and can lead to much better artifacts. This was certainly true here. Steve Russell (later famous for being the main inventor and programmer of “SpaceWar”) looked at what John had done, and said: “That’s a program. If I coded it up we’d have a running version”. As John remarked: “He did, and we did”! The result was “unlimited programming in an eyeful” (the bottom half of page 13 in the Lisp 1.5 manual). The key was not so much “Lisp” but the kinds of thinking that this kind of representational approach allowed and opened up regarding all kinds of programming language schemes. A fun thing about it this is that once you’ve grokked it, you can think right away of better programming languages than Lisp, and you can think right away of better ways to write the meta descriptions than John did. This is the “POV = 80 IQ points” part. But this is like saying that once you’ve seen Newton, it becomes possible to do electrodynamics and relativity. The biggest feat in science was Newton’s! This is why “Lisp is the greatest!”
- dpeck 9y agothat this has an unbalanced paren has me laughing a lot more than it probably should
- ohazi 9y agoThere seem to be two big camps that preach a "learn this weird new programming paradigm because it'll help you see things from a new perspective and will make you a better engineer" message: the lispy languages, and the ML-like languages. Both of these languages categories give you functional programming as well as metaprogramming, which is great. Having tried both, I've found that the ML-derived languages tend to have a stronger type system that's more rigorously enforced at compile time. I personally find this much more valuable in practice than some of the dynamic magic that you can do with lisp. There are some notable exceptions, of course, but part of this is just inherent to the design of lisp, and I think it's easy to end up with a type safety system that feels more like it's bolted on than part of the language.
- davexunit 9y agoThere are also plenty of Lisp programmers that think that it's a real tool to solve real problems, not just an educational oddity. There are a bunch of Lisps out there, and plenty of them are by no means toys. My laptop's initial RAM disk and init system are Scheme programs.
- krapp 9y agoAnd it's not a Lisp per se, but WebAssembly's text format uses s-expressions[0]. It's likely that the "oddity" of Lisps will seem less odd as adoption increases if they stick with that. [0]https://developer.mozilla.org/en-US/docs/WebAssembly/Understanding_the_text_format https://developer.mozilla.org/en-US/docs/WebAssembly/Underst...
- tomjakubowski 9y agogcc’s IR, “GIMPLE”, is also commonly printed in s-expression form.
- Mikeb85 9y agoAs is LLVM's. I think JVM's might be too, but not 100% sure. Haskell is also pretty much just a lisp with a whole lot of sugar added on.
- JepZ 9y agoActually, I am missing the simplicity of Lisp and Smalltalk in todays languages. From what I remember, they both have a fairly simple but universal syntax, which can be written for Lisp as ([operator] [argument1] [argument2] [argumentN]) and for Smalltalk as [object] [message] So far I haven't seen anything like that for languages with the C-like syntax. Don't get me wrong. For example I love Go, but sometimes I miss the beauty of Lisp and Smalltalk.
- hota_mazi 9y agoIsn't Objective C exactly that, a C family language with a Smalltalk inspired syntax?
- lobster_johnson 9y agoObjC is a completely backwards-compatible superset of C that bolts a Smalltalk-like syntax on top. The first implementation was a preprocessor that emitted C, as far as I remember, until first-class compiler support arrived (GCC and Clang have native support).
- agumonkey 9y agosmalltalk cutest feature is the named parameter syntax trick (I don't like tricks but let's make an exception). make-range from: 10 to: 20 calss (make-range.from:to 10 20) or something similar. Free nanodsls smalltalk simplicity lies in that the metamodel is actually human reasoning friendly, even while dynamic, you have a clear picture of what's gonna happen in case of errors etc. It didn't please visual age users, which called smalltalk messagenotunderstoodlang but I believe it was due to the wrong viewpoint.
- hota_mazi 9y ago> smalltalk cutest feature is the named parameter syntax trick (I don't like tricks but let's make an exception). And yet, Smalltalk got it wrong by making all the parameter names mandatory, which leads to sources that are much more verbose than they need to be. The correct approach to this is to make parameter names optional, so they're only used when disambiguation is necessary to clarify the intent of the code.
- billphipps 9y agoI haven't read the article, but it's a bit weirder then other languages
- ahmedalsudani 9y ago“I am the Alan Kay in question” Hah. Not everyone can be that cool.
- timonoko 9y agoOperating system written in lisp: https://github.com/timonoko/Nokolisp_On_Nokia_phone https://github.com/timonoko/Nokolisp_On_Nokia_phone
- eternalban 9y agoIt's funny, he can't even balance his parens in the first para.
- etruong42 9y agoI like how Alan Kay still ends up using nested parentheses when discussing Lisp: > (These operating systems in both Smalltalk and Lisp were both better (claim) and easier to write (simpler to demonstrate) than the standard ones of today.)