iterators again

Bruno Medeiros brunodomedeiros+spam at com.gmail
Wed May 30 04:59:19 PDT 2007


David B. Held wrote:
> Jarrett Billingsley wrote:
>> [...]
>> Sounds like a good place for a D development blog.
> 
> A blog is an interesting idea, but Walter doesn't strike me as the 
> blogging type.
> 
>> [...]
>> What's a bit weird is that sometimes some feature will just come out 
>> of nowhere, with no announcement, no pre-discussion, no communication 
>> whatsoever besides a bullet on the "what's new with DMD 1.xxx" page.  
>> And they're not always trivial features either -- import() and mixin() 
>> expressions, struct literals, scope() statements, and nested classes 
>> were all "well OK, never saw that one coming" features.
> 
> Walter is trying to evolve the language as quickly as possible, and even 
> when he sets priorities, he later changes them for various reasons. 
> There has been discussion of a roadmap to help smooth things out, but 
> you should harrass Brad Roberts about that.  Which would you prefer: 
> vaporware announcements or surprise announcements?  I'll always take 
> overdeliver to overpromise every day of the week and twice on Sundays.
> 
>> [...]
>> Walter also seems to be influenced by certain people more than others, 
>> which is more than a little disturbing. 
> 
> Is it more disturbing than the President being more influenced by his 
> cabinet than his countrymen (say, yourself...assuming you aren't part of 
> the Bush cabinet, of course)?  Is it more disturbing than Bjarne 
> designing C++ with his local colleagues at AT&T?  More disturbing than 
> James Gosling designing Java with a few friends at Sun?  More disturbing 
> than Larry Wall single-handedly deciding what goes in Perl 6?
> 
> Pick a successful language, and I will show you a language that was not 
> designed by democracy.  Unlike your government, you can pick your 
> language, and I presume people have picked D so far because they thought 
> it was designed well (or at least better than the alternatives for a 
> sufficient range of cases).  If you can find a D-size language designed 
> by a community to show that that is a Better Way, I'm sure we would all 
> be both surprised and delighted to hear about it.  Until then, the proof 
> of the pudding is in the eating, and everyone who has tasted the 
> language design pudding has decided that a small group of individuals, 
> however flawed they may be, produces a better product than a whole 
> community.
> 
> At some point in a language's evolution, the weight of the community 
> increases and becomes the dominant force.  COBOL, FORTRAN, Lisp, C and 
> C++ are all too mature to be run by a maverick designer any more.  Even 
> Java is moving towards a more heavily community-weighted input, and it's 
> still a relatively young language.  However, D is barely out of the 
> starting gate (and by some measures, has not even left the gate yet) and 
> already you want to saddle it with bureaucracy?  Maturity leads to 
> fossilization.  When everyone has an equal say, conflicting interests 
> stifle progress.
> 
> All of the languages I mentioned could be seriously upgraded...if not 
> for the fact that they all have millions of users whose code would get 
> broken if you made more than minor changes.  Look at Java...despite 
> being less than 10 years old, they couldn't even add first-class 
> generics due to backwards compatibility.  C# is only a few years 
> younger, but was able to do things the right way because its VM hadn't 
> totally fossilized yet.
> 
> Walter knows and recognizes that everyone wants D to succeed.  And trust 
> me, he reads the NGs as much as anyone, and takes the community quite 
> seriously.  But at the end of the day, Walter only has one brain to 
> design D with, and fully analyzing every input available to him would 
> seriously overcommit the computing resources of that brain, however 
> oversize it may already be.  I think he takes a very meritocratic 
> approach while conceding the pragmatism of geography; and if you stack 
> up his design approach against any other major language designer's, I 
> think you'll see that few other designers are nearly as democratic at 
> this stage in a language's development.
> 
> I personally wouldn't want a language designed by a committee of equals, 
> because I've seen software produced that way, and it almost universally 
> sucks.  If you don't trust the people who are designing a system, well, 
> there's not much you can do about that but complain.  But if they've 
> produced a decent product so far, perhaps they have earned some trust 
> and should be given the benefit of the doubt.  If you can argue 
> convincingly that the "cabal that meets behind closed doors" isn't doing 
> a good job, I'm sure your argument would be given serious consideration. 
>  But merely complaining about a process without any demonstration that 
> it's a bad process is arguing on principles that are not well-established.
> 
> Let me give you an example from real life.  Consider The Simpsons.  When 
> The Simpsons was written by Matt Groening and one or two other writers, 
> the show was considered brilliant.  When Groening left to do other 
> things and the show was handed over to a team of writers, the show was 
> considered mediocre and continued merely on the weight of its momentum 
> and the brand that Groening had established.  Now imagine if Groening 
> had opened up The Simpsons writing to his fanbase, which would be the 
> democratic thing to do.  How good would you think the episodes would be 
> then?  Out of all the fans, there may be one or two really brilliant 
> writers who could actually have improved the show.  But with "one man, 
> one vote", their voices would have been lost in the cacophony of severe 
> sub-mediocrity.
> 
> That's not to say that folks on the NGs are all mediocre or less.  I 
> think the fact that they are willing to try out a new language puts them 
> in a different class than your average coder.  But I will say that most 
> of them are not committed programming language designers, and if you 
> left them to design a language, they might create one or two really nice 
> features, and then move on to other things.  That doesn't give you the 
> kind of experience needed to understand how much a feature will cost to 
> implement and how much value it provides relative to other ways of doing 
> things.  Perhaps Walter is missing out on those one or two brilliant 
> writers lurking out there.  But I don't think he is.
> 
> The people who push the language to its limits demonstrate the need for 
> various features in quite palpable ways.  Those are the best arguments 
> for change, and it doesn't take a committee to see that.  Do you want to 
> know why Andrei has so much influence in D's design?  Because he uses D 
> on a supercomputing cluster.  He showed that one of his programs was 
> unnecessarily slow because of the design of the allocator and suggested 
> an alternative that was known from C++.  When Walter implemented it, he 
> found that it did indeed give enormous performance benefits.  Andrei 
> argued for struct literals because it would seriously improve the 
> readability of his code.
> 
> Andrei isn't just some "blessed expert".  He earns his clout through his 
> code.  Is it fair that he has access to a cluster that most of us will 
> never see?  No.  But do you want the design of D to be hamstrung by 
> "fairness"?  I think Walter's approach to language design is fairly 
> inspired because it is not so much about individual people as it is 
> programs.  Walter cares about which programs are easiest to write and 
> fastest to run, and it is these programs that guide his decisions. 
> People turn out to be the representatives of the programs, even when the 
> programs aren't actually written (because people have to write them 
> after all), but it isn't so much the people themselves who influence the 
> design so much as the resulting programs.
> 
> It's something like a genetic algorithm for language design.  The most 
> compelling programs are assigned higher fitness and given more "survival 
> tools" (features) for the next round of culling/evaluation.  Since 
> Walter cannot directly inspect the space of all D programs in any 
> meaningful way, he needs people to help him visualize the important 
> parts of the space.  If he could do that without relying on people, I'm 
> fairly certain that there would be nobody advising him.  Anybody can be 
> that person that says: "Hey, look here!  This is a very interesting 
> portion of the program space!"  But some people are naturally better at 
> doing that than others, and that is why it appears that some people have 
> more influence.  In reality, it is that some *programs* have more 
> influence.
> 
> Perhaps Andrei seems like a Dick Cheney or Karl Rove, pulling Walter's 
> strings like a political puppet.  But you quickly become disabused of 
> that notion when you see Walter say to Andrei point-blank: "No, you are 
> wrong!"  Even Andrei has to concede at the end of the day that Walter 
> will decide for himself what is best for the language.  But if it 
> appears that he has more influence, it is only because he has worked 
> much, much harder for it than most.  Like I said, it's very 
> meritocratic.  And like I said, while the people who meet with Walter 
> face-to-face are constrained by geography, the people who have influence 
> on the language's design are not.
> 
> I don't think Walter needs any defense of his approach to language 
> design, but I hope that gives you a little insight from the perspective 
> of someone who has seen both sides.
> 
> Dave

Nice post, I agree. However I also think that some language issues 
cannot be trivially shown to Walter to be inadequate or suboptimal (like 
the Andrei allocator example). In fact probably *most* language design 
issues are like that (the allocator example wasn't even a design issue, 
but rather an implementation one, right?), because their effects, in 
terms of code productivity or cleanliness, despite being considerable, 
are also subtle and amortized accross large amounts of code and 
development time. This is especially true of small, but important, 
details, and it makes it very hard, if not impossible, to show hard 
examples of why something should be changed. Instead, arguing is the 
only option left, but which often is inneffective against Walter, 
especially to those outside the D "Inner Circle". :7

-- 
Bruno Medeiros - MSc in CS/E student
http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#D



More information about the Digitalmars-d mailing list