A summary of D's design principles

retard re at tard.com.invalid
Sat Sep 18 08:41:09 PDT 2010


Sat, 18 Sep 2010 03:44:30 -0700, Walter Bright wrote:

> Russel Winder wrote:
>> On Fri, 2010-09-17 at 14:33 -0700, Walter Bright wrote:
>>> retard wrote:
>>>> FWIW, if you're picking up one of the most used languages out there,
>>>> their list won't differ that much:
>>> Exactly. Much of that can be summed up as D being intended for
>>> professional production use, rather than:
>>>
>>> 1. a teaching tool (Pascal)
>> 
>> Java, Python, C++, Alice are the languages of teaching these days.
>> Pascal died a death when Borland did.
> 
> Pascal was specifically designed by Wirth as a teaching language (he
> says so in his Report, I can quote it for you if you like!). Java,
> Python and C++ were not. I know nothing about Alice. Pascal predates
> Borland's Turbo Pascal by more than 10 years, and ironically it is TP
> that brought it back from the dead.

Yes, Pascal WAS a teaching language. However, probably there are no 
colleges using it these days. Teachers have adopted more recent languages 
during the last 20 years and it makes no sense to compare anything to 
Pascal anymore.

TP and Delphi both brought Pascal back to mainstream. Later an open 
source compiler, FPC, appeared. However, these didn't manage to bring 
Pascal back. It's dead. The mainstream won't start using it anymore.

>>> 2. a research project (Haskell)
>> 
>> Haskell stopped being a research project many years ago, Haskell
>> development now happens in companies (including Microsoft) as much as
>> in universities and is about creating good examples of software
>> engineering.  Research languages are things like X10, Chapel, OCaml, C
>> ++.
> 
> It still was designed as a research project. It even says so in the
> Haskell 98 report:
> 
> "The committee intended that Haskell would serve as a basis for future
> research in language design, and hoped that extensions or variants of
> the language would appear, incorporating experimental features." --
> Haskell98

Something has happened. There are few enterprises using Haskell and the 
GHC compiler is rather stable after years of development effort. There 
are also truckloads of bindings to various libraries and many libraries 
written in Haskell.

I guess it's terribly hard to get rid of the 'ivory tower' stigma. What 
do you think is missing? They have:

 * a good compiler (more mature than dmd)
 * large set of libraries (more than d, seriously more than d2)
 * an active community (larger and more talented than d programmers)
 * research papers (does anyone have any idea if a single academic 
conference paper has ever been written about d?)
 * website (better than digitalmars.com)
 * a well defined language

>>> 4. designed to promote a related product (Flash)
>> 
>> What's the related product?
> 
> I believe it was to sell their (Macromedia) multimedia development
> environment. But if you don't like that, there's Javascript which was
> developed to push Netscape Navigator ahead of Explorer, and Microsoft
> responded with Vbscript to push Explorer.

Netscape Navigator is dead. Vbscript is dead. Nowadays the Web 2.0 world 
is using IE 8, Firefox 3.6, Chrome 6, and many other standard compliant 
browsers. The platforms of choice today are Flash 10, Silverlight, Java 
6, and Javascript. Everything else is obsolete.

>> 
>>> 6. designed for non-programmers (Basic)
>> 
>> As was Cobol, Fortran, spreadsheets (Visicalc, etc.).  There are
>> probably more spreadhseet programs out there than any other language:
>> counting all C, C++, D, and Java programs probably don't even get
>> close.
> 
> Basic is famous in that its charter specifically was for
> non-programmers. Cobol was designed for managers to be able to
> understand the code, not to write it (a slightly different aim).

Both Basic and Cobol are dead outside some legacy projects. It's not 
useful to discuss those.

>>> 7. one paradigm to rule them all (Smalltalk)
>> 
>> Assembly language,  C.
> 
> Assembler doesn't have a paradigm, in any case not one that it was
> designed around. C wasn't designed around a single paradigm, either, it
> was intended as a general purpose language, and was specifically not
> designed for any particular area of application (so says K&R). C was
> designed to map efficiently to the PDP-11 instruction set.

The inventors of C just didn't realize it's a single paradigm language. 
It's a procedural imperative language, nothing more.


More information about the Digitalmars-d mailing list