4 ms·
> It's a language designed by committee, and it looks like it. This means nothing. When a design succeeds, we say it was designed by the community; when it fai
by eudox 12y ago
> It's a language designed by committee, and it looks like it.
This means nothing. When a design succeeds, we say it was designed by the community; when it fails, by committee. You can produce examples for any language: In Common Lisp the committee that designed it and the community of previous Lisp users that backed it. For Python, the community of users and Guidos' mailing list pals. There is nothing inherently superior or inferior about design by community or committee, respectively.
- rtpg 12y agoI think a good reference for what people mean by "designed by committee" is to look at the reference spec for a language. I remember picking up the Common Lisp reference book in my college library. It was one of the thickest books in the entire CS section. Obviously much thicker than any books on Scheme, but even on the same level as "The C++ Programming Language". And the latter spends a lot more time explaining things than the Lisp book did. CL is a huge and complex language, and I'm still not sure why there are 80 different ways to loop. It's a confusing language, with not nearly as much orthogonality as it could have.
- justinpombrio 12y agoHaskell was designed by committee, and it's exactly the opposite of the stereotype: it's a small language with orthogonal features and a clean syntax. The few "features" the language has, like list comprehensions and do notation, are defined by simple translations into the rest of the language. http://www.haskell.org/onlinereport/ http://www.haskell.org/onlinereport/
- rwallace 12y agoAnd conversely, Ada was designed by one man, and if you weren't aware of that historical fact and just looked at the language spec, you'd swear it was the classic example of committee design. Fred Brooks' dictum that design should be done by a single mind, or at most two, is a guideline not a rule.
- topkekz 12y ago>Ada was designed by one man http://cs.fit.edu/~ryan/ada/ada-hist.html http://cs.fit.edu/~ryan/ada/ada-hist.html "The Ada design team was led by Jean D. Ichbiah and has included Berned Krieg-Bruechner, Brain A. Wichmann, Henry F. Ledgard, Jean-Cluade Heliard, Jean-Loup Gailly, Jean-Ryanmond Abrial, John G. P. Barnes, Mike Woodger, Olivier Roubine, Paul N. Hilfinger, and Robert Firth."
- rwallace 12y agoRight, but wasn't it structured as 'Ichbiah assisted by the others' rather than 'Ichbiah leading a committee by consensus'? In particular, iirc, there were some points at which the others almost unanimously disagreed with Ichbiah on some design decision and he overruled them and went ahead anyway.
- bunderbunder 12y agoAlternatively, look at R6RS[1]. 90 pages, including the index. That language is also designed by committee, and looks like it, too. An effective committee, that is. [1]: http://www.r6rs.org/final/r6rs.pdf http://www.r6rs.org/final/r6rs.pdf
- BruceM 12y agoDylan was originally designed by committee back in the days when it was designed by people @ Apple, Harlequin and CMU. And many of the people involved with that were also involved with the Common Lisp standardization (like David Moon, Scott Fahlman, etc). Common Lisp is a pretty interesting example, but due to the politics of the various companies involved, the vast amounts of code in each of the various Lisps, and so on, I don't think it is a fair reflection on "designed by committee". It is just what that committee was able to design given the constraints imposed upon them. In many ways, Dylan was a stripped down and much more minimal Common Lisp, but with aspects of Scheme as well. But Dylan was designed from a green field, while Common Lisp was designed with a number of existing Lisps in mind that each had a stake.
- lispm 12y agoCommon Lisp had different goals from Dylan. Common Lisp was designed as a powerful Lisp dialect, incorporating ideas from 20+ years back plus some new stuff. It was designed to be 'backwarts' compatible with Maclisp and its dialects. Dylan was designed as a new language (compatible with nothing) for application development and delivery for small machines.
- calibraxis 12y ago> I'm still not sure why there are 80 different ways to loop Please ignore if you're asking rhetorically. But there are reasons why it was put together in kind of a wild political dash. See: (https://groups.google.com/d/msg/comp.lang.lisp/Llmnxk2SYUk/yjrZU05FN6AJ https://groups.google.com/d/msg/comp.lang.lisp/Llmnxk2SYUk/y...) and (http://www.dreamsongs.com/Files/HOPL2-Uncut.pdf http://www.dreamsongs.com/Files/HOPL2-Uncut.pdf) An evolving, used platform which was (suddenly?) pressured to freeze.
- rtpg 12y agoI am vaguely aware of how CL came to be, but was unaware of this report. I'll give it a read, thanks.
- lispm 12y agoScheme had a very shallow standard. It's written in a dense style and lacked basic stuff like error handling or an object system. > I'm still not sure why there are 80 different ways to loop There are many ways to loop, because users found those useful. Lisp by tradition is not telling the developers what they have to use. It's the opposite: it gives the developers various degrees of freedom to shape the language (from macros, read macros, ... to the MOP). You could have easily removed something like DOLIST from the standard. But why? Software before and after the standard will still use it. How about MAP ? Remove it! But wait, people have used it already and will still use it... Lisp languages are ball-of-mud languages where users can add their own control structures. If you look at Scheme, they have added all this and more with SRFIs. Now you get a language, whose implementations support a minimal language and each will implement some subset or superset of SRFIs...
- JackFr 12y ago> When a design succeeds, we say it was designed by the community; when it fails, by committee. Extremely well said.