Slashdot Mirror


How Heraclitus would Design a Programming Language

CowboyRobot writes "Developer of Smalltalk Alan Kay has an interview on ACM Queue where he describes the history of computing and his approach to designing languages. Kay has an impressive resume (PARC, ARPAnet, Atari, Apple, Alan Turing Award winner) and has an endless supply of memorable quotes: 'Perl is another example of filling a tiny, short-term need, and then being a real problem in the longer term,' 'Once you have something that grows faster than education grows, you're always going to get a pop culture,' 'most undergraduate degrees in computer science these days are basically Java vocational training,' 'All creativity is an extended form of a joke,' and 'nobody really knows how to design a good language.'"

14 of 577 comments (clear)

  1. No decent langauges... by MosesJones · · Score: 5, Insightful


    I'd disagree that there aren't people who can design decent languages. The problem is that they can't market them, and that developers continue to go back to the brain-dead syntax of C as if looking like C was an aspiration for a language.

    Languages like Ada, Eiffel etc (which yes I have used commercially) are brilliant from a language perspective, especially for large projects. The trouble is developers would prefer to write something in 5 characters than 30 characters in a mistaken belief that they are being more productive and that typing is the longest task they undertake.

    When you get into more "esoteric" areas like goal driven programming or agents then the languages become better, because the people using them are more aware of the purpose of the language and aren't constrained by a belief that it has to look like C.

    C# and Java are great example of languages that took on that syntax and many of the constructs as its easier to get a language accepted when it looks like C than when a developer has to learn a new syntax that will in the long run be better.

    The problem isn't language designers its us developers, we don't want to spend a week learning a new syntax for a loop, we want to use what we used before. In other words we are luddites.

    Smalltalk was okay, but I prefered Eiffel, Java and C# are both by comparison rubbish, but they have better GUI libraries and marketing departments.

    --
    An Eye for an Eye will make the whole world blind - Gandhi
    1. Re:No decent langauges... by zerocool^ · · Score: 3, Insightful

      C# and Java are great example of languages that took on that syntax and many of the constructs as its easier to get a language accepted when it looks like C than when a developer has to learn a new syntax that will in the long run be better.

      I've always felt that learning new syntax is relatively easy. By that, I mean, once you "learn how to program", as in figure out how to be in that zen position where you understand the flow of information and lines of code start leaking out of your fingers, applying a new syntax isn't too hard. It may take you a few days or weeks, and you may need to keep google / quick reference guide handy, but mostly, learning the first one correctly propels you into a scenario where you can learn other languages quickly.

      ~Wx

      --
      sig?
    2. Re:No decent langauges... by Cthefuture · · Score: 3, Insightful

      The C language itself my not be perfect but the syntax really is one of the best. That's why it's used so often and it has nothing to do with the language itself.

      Your examples don't make any sense because Ada and Eiffel have a very C-like syntax. As does Pascal, Visual Basic, and a ton of other languages.

      C is just a very concise version of the same syntax. This is why it's better than the others. It has power without extra fluff. It's a perfect starting point for making a more powerful language.

      Smalltalk does not use a C-like syntax though and that is one reason why no one uses Smalltalk. Its syntax sucks.

      The perfect language would have an extended C-like (or C++-like) syntax. The extensions to the syntax would make functional programming easier. They would allow things like heavy use of recursion without performance loss. Being able to choose between mutable and nonmutable variables would be good too (especially if the language made this very efficient).

      --
      The ratio of people to cake is too big
  2. astounding hubris by jeif1k · · Score: 5, Insightful

    I would suggest targetting Parrot [slashdot.org] which makes implementing compilers 1000 times easier than ever before,

    In light of more than half a century of dynamic language history, that's just astounding hubris. By comparison with systems like Lisp and Dylan, for example, the Parrot system is still enormously complex, limited, and cumbersome from the programmer's point of view. And compared to Smalltalk, Perl/Parrot isn't even in the same league when it comes to programming environments, browsers, and other tools (in fact, very little really is).

    Kay's example of Perl as a language that reinvents the wheel poorly is as appropriate today with Parrot as it was for earlier versions of Perl. The fact that Perl is useful in practice (I use it all the time) because it has lots of libraries and ports doesn't change the fact that its foundations are poorly thought out.

  3. Perl by The+Famous+Brett+Wat · · Score: 4, Insightful
    I like languages mostly for the way they challenge my established thinking on programming. Smalltalk wasn't that much of a challenge to me, because I learned it fairly late in the overall scheme of things, and had already learned some of its concepts from other, more recent languages. Eiffel taught me the joys of assertions and programming by contract, as well as the joys and limitations of the OO inheritance model. Haskell was fascinating for its lazy evaluation, and the possibility of infinite lists.

    But Perl! Ah, Perl! Such a bundle of contradictions! It violated every rule I held dear about language theory, and was a better language for it. Perl doesn't try to be a theoretically perfect language for any particular theory of linguistic perfection. It has principles, but it is not a slave to those principles. It has a degree of consistency, but never a foolish consistency.

    No language on Earth has made me rethink my concepts of "what makes a good language" more than Perl.

    --
    proof, n. A demonstration that a conclusion is implied by certain premises and axioms.
    1. Re:Perl by Viol8 · · Score: 3, Insightful

      "I'm so sick of all this anti-Perl talk. I write powerful applications in Perl and they are definetly not 'write only'."

      Your perl apps may be amazingly legible and easy to understand , but most I've seen are written by paid up members of the The Shorter The Better club. Usually resulting in a rats nest of complex regular expressions and obscure syntax making it impossible to get a clear understanding of whats going on without intensive study of the code. Other languages can allow obtuse code but only Perl makes it so easy it becomes 2nd nature.

    2. Re:Perl by geoffspear · · Score: 3, Insightful
      Umm, I think the article went WAY over your head.

      Yes, businesses use perl for business-critical applications. Why do you think that proves anything about the theory of designing languages? Businesses used Windows 3.1, too. Does that prove that it's the perfect operating system, so no one should have bothered to develop any new ones?

      Businesses need to use some tool that exists now. Alan Kay, who is hardly ignorant about the subject, doesn't think there isany existing language that doesn't have some sort of problems, so saying that perl has problems isn't "anti-Perl" talk. He has the same sort of concerns about Smalltalk, which he invented himself. Getting upset about some quote about where your favorite language went wrong is just moronic. All languages have gone wrong, and that's the problem he's talking about.

      --
      Don't blame me; I'm never given mod points.
  4. Lisp by Anonymous Coward · · Score: 4, Insightful

    I kindof get the impression Kay hasn't looked at modern lisp as much as historic lisp - for starters, lisp has had structured data for, well, decades (no, lisp doesn't just do symbols and lists, okay?), and while us lispers applying lessons from compsci type theory piecemeal to practical lisp drives the static-typing bigots/purists into insane flamewars, the existence-proof of the applicability of such lessons that availability of type-inferencing lisp compilers such as CMUCL and SBCL shows that Kay's comments about lisp and types are again, while not exactly wrong, are mostly applicable to the lisp of yore (and with, lisp, we're really talking _yore_, compared to almost any still-used language around today except FORTRAN), not ANSI Common Lisp.

    So I don't particularly like his pigoenholing of lisp - he says there were three working extensible languages, and smalltalk was one of them, kindof not mentioning however, that lisp _wrote the book_ on extensible languages. Every good lisp program extends the vocabulary of the lisp language into the problem domain (a characteristic shared with good Forth).

    I confidently predict something vaguely recognisable as "Lisp" will outlast pretty much every other computer language on the planet. You see, new dynamic languages have a choice when they get to a certain point (a choice e.g. python is now facing) - do they add the remaining features of lisp and thereby "risk" being classed as a reinvented dialect of lisp, or refuse those features, maintain their independent identity, but forever cripple their language compared to lisp?

  5. The Java vocational training quote rings true by betelgeuse68 · · Score: 5, Insightful

    But I think that's as much as a function of the fact that a developer today is standing on the shoulders of giants more than ever.

    To quote Isaac Newton, "If I have been able to see farther, it is only because I have stood on the shoulders of giants."

    Frankly, we've hit a point where there's a lot less "science" in Computer Science, or rather, the need for such training in many programming jobs.

    There's nothing wrong with a well rounded education but for some people they don't have the time or inclination to take on full engineering curriculums (as I did).

    While I don't mind have gotten a rounded education in light of where tech careers have gone, it's too bad I didn't follow my father... construction. Given his real estate holdings, I doubt I will reach his station in life (economically) if I stay on a pure tech track... highly unlikely.

    So if CS degrees are nowadays more about vocational training, so what. A tech degree of any kind, no matter how full of yourself you are, is not going to take you where it once might. That's reality. For all the noise we hear about a focus on math & science, it seems to me to be rendered somewhat moot since some Big Wig Biz guy is going to offshore such work anyway. So I ask, what's the point?

    Don't get me wrong, a good foundation in math is good, we just don't all need to become math majors...

    If you manage to learn and apply algebra, you can at least solve some practical math problems. But considering some of the stories of people who can't deal with fractions, well, obviously we're failing somewhere in the math department.

    Anyway, just rambling now...

    -M

  6. Re: sed'ing by Black+Parrot · · Score: 4, Insightful


    > ADA is good for secure stuff

    Actually, Ada [sic] is for big, complicated software systems that you want to be able to maintain.

    Of course, maintainability is a key component of security, and Ada does offer built-in resistance to buffer overflows, but I don't think security is the primary reason for choosing Ada [sic].

    > C++ is good for GUI

    That claim isn't so much wrong as... baffling.

    --
    Sheesh, evil *and* a jerk. -- Jade
  7. Lots of good quotes. by MattRog · · Score: 4, Insightful

    One could actually argue--as I sometimes do--that the success of commercial personal computing and operating systems has actually led to a considerable retrogression in many, many respects. ...
    So I think the lack of a real computer science today, and the lack of real software engineering today, is partly due to this pop culture.
    I'd call it "Fad-driven Development" more so than pop culture. But the lack of computer science/engineering causes fad-driven development and vice-versa. It's a feedback loop.
    ...the adoption of programming languages has...been somewhat accidental, and the emphasis has ...been on how easy it is to implement the programming language rather than on its actual merits and features. ... it started spreading Basic around just because it was there, not because it had any intrinsic merits whatsoever.
    HTML, XML are prime examples of this - and also fad-driven development. Verbose, tag-based, require parsing every time, etc. -- not a very good language in any respect. Yet, people can read it. No technical intrinsic merits push XML over some other format, yet here we are.
    All of these ideas could be part of both software engineering and computer science, but I fear--as far as I can tell--that most undergraduate degrees in computer science these days are basically Java vocational training.
    This relates back to the failure of CS and fad-driven development.
    --

    Thanks,
    --
    Matt
  8. Egotism in its purest form... by Leadhyena · · Score: 3, Insightful
    Maybe I didn't RTFA as thoroughly as most, but this guy comes off as exremely self-centered. First off, every language has its purpose, and just because some of these languages aren't as well designed as the author's languages (like the comments "Java could have been great, just look at Squeak"), that's not a good enough excuse to bash them.

    The reason Perl is so popular is because it is SOOO easy to throw something together in no time at all that can access databases, websites, and so forth, without all of the messy class coding of the other languages. Would I want to write something huge in perl? Heck no. Because Perl is made for scripting and not for large projects. Same thing for PHP and and all of those languages he likens to Egyptian pyramids made from brute force.

    Also, I don't know about him, but I know that at Purdue the CS degree requires the authoring of a compiler, some study of programming language theory, some classes about Database Theory (I can't remember the last time a vocational class taught tuple calculus and normalization), as well as some high level algorithm knowledge. I would consider at least that degree program a step above just some Java vocational classes, and his comment only highlights how egotistical he really is.

    Just because he's really smart doesn't give him the excuse to be a real jackass.

  9. Re:Misleading headline by geoffspear · · Score: 3, Insightful
    Actually, I'm fairly certain that Mr. Kay is more concerned with how we should design programming languages. If you ask him which language [idealized figure] would design, he'll almost certainly tell you that it's not one that's been designed yet, and he'd probably be willing to accept that he's probably not going to be the one to design it.

    I'm pretty sure that if you suggested to him that designing a language by following Perl's example was a good idea, he'd laugh at you, though.

    --
    Don't blame me; I'm never given mod points.
  10. Re:Hey, I like Perl! by CableModemSniper · · Score: 3, Insightful

    There's nothing you can do with sed and awk that you can't do in just plain sh. Having 656K for the shell and 311Kb for awk and 41Kb for sed when writing a small tool is ridiculous.

    --
    Why not fork?