Many languages come with a built-in religion. That religion drives the design of those languages towards particular goals or particular ways of achieving goals. D doesn't have a religion. D is an atheistic language. It's aware, that many goals have nothing in common and that they gave their own specific ways of achieving them. D allows you to do get whatever you want however you want. It doesn't force you in a certain direction or limit you with what you can do with it. You might think, that C++ (the second least religious language IMO) has the same philosophy, but it's not true. Here are some examples: 1. C++ thinks, that every user-defined type is a class with polymorphic behavior. 2. C++ assumes, that every feature should be half-implemented: 2.1. Templates in C++ look more, like a demo version of the real thing. That's one of the reasons why many people resist from using C++ templates. 2.2. Polymorphism is built in a way, that discourages it's usage. You can't guarantee a proper destruction of a polymorphic type and you can't manipulate polymorphic types without pointer shenanigans. 3. C++ is sure, that the code must be fast, but it need not be working: 3.1. Default behavior is the one most prone to errors: 3.1.1. Variable are initialized with garbage by default. 3.1.2. Array of polymorphic objects doesn't call their constructors. 3.1.3. Copying polymorphic objects results in a cut-in-half corpses, instead of objects. 3.1.4. Most of the stuff the programmer works with is implementation-defined (in layman's terms, may or may not work at will). 4. C++ is designed for people who take pleasure of reading encrypted Klingon, instead of a pretty and readable text.
D works in the way, in which "the easy way is the right way". The right way in C++ is using shared pointers, the right way in D is using... well.. objects. That's the most obvious example. Indeed, C++ is a good tool in the hands of a highly skilled professional. But that's not a good thing. That's retarded. The things C++ allows you to do are not worth all the time and effort, spent on studying all the bugs and holes in the C++ standard. Other languages are just religious and that's it. Python is religious about dynamicity (Nothing is known at compile time. Compile-time doesn't exist), Java is religious about complexity (it's a straitjacket, not a language), Perl is write-only language, religious about text manipulation (perl thinks, that nothing ever exists besides text), C is religious about stone-age tools (Design patterns, high-level constructs are blasphemy for C). That's why one should consider D. On Tue, Oct 25, 2011 at 7:19 AM, Walter Bright <[email protected]> wrote: > On 10/24/2011 6:52 PM, Brad Roberts wrote: >> >> On Mon, 24 Oct 2011, Walter Bright wrote: >> >>> On 10/24/2011 5:42 PM, dsimcha wrote: >>>> >>>> I got the impression that D is not being used partly because of the >>>> obvious >>>> reasons (lack of libraries, legacy code in other languages) but also >>>> partly >>>> because most people, even if they've heard of it, don't know what its >>>> most >>>> important features/benefits are. I think that we need to develop a >>>> short, >>>> memorable "elevator speech" version of its selling points, even if we >>>> ignore >>>> some substantial areas in doing so. The one I used was basically >>>> "compile-time >>>> metaprogramming on steroids, static if, CTFE, string mixins, see >>>> std.algorithm, >>>> std.range and std.parallelism for examples". >>> >>> You're right, I've been recently wrestling with the elevator pitch thing >>> for >>> D. I know we need one. Bartosz has suggested "Systems programming safe >>> and >>> easy." >> >> That's not a pitch, that's a slogan or a catch phrase. It might be enough >> to get the listener to invite the pitch. > > Right, but you need a headline that's 140 characters or less (tweet size). > For example, the ipad was "1000 songs in your pocket". The iphone was > "reinvention of the phone". > >> A pitch needs to be longer and more informative. You've got 20-30 seconds >> to convince the person to look deeper. It's enough to list a couple >> important points. Top three reasons it's worth looking at closer.. >> something along those lines. > > The 3 keys come next. It has to be more than two, and less than 4. I've been > toying with: > > 1. control > 2. multi-paradigm > 3. robustness > > (Yes, I've been reading a book on this!) >
