A summary of D's design principles

Steven Schveighoffer schveiguy at yahoo.com
Wed Sep 29 04:56:28 PDT 2010


On Wed, 29 Sep 2010 07:22:08 -0400, retard <re at tard.com.invalid> wrote:

> Wed, 29 Sep 2010 07:00:33 -0400, Steven Schveighoffer wrote:
>
>> On Tue, 28 Sep 2010 17:38:43 -0400, retard <re at tard.com.invalid> wrote:
>>
>>> Tue, 28 Sep 2010 16:20:27 -0400, Steven Schveighoffer wrote:
>>> Does C#
>>> have access to inline assembler? Agreed, it doesn't provide many new
>>> high level features compared to D, but it doesn't have all the
>>> interfaces with raw metal. That makes it higher level language in my
>>> book. It's less dependent on the hardware platform.
>>
>> You mean, C# doesn't provide access to the lower level constructs?  IMO
>> D is at the same level even if it does provide inline assembler.  The
>> simple fact is, you don't *have* to use low level features of D, you can
>> stick to the C#-level constructs.  Hell, you can even write full useful
>> programs in D without ever touching a pointer or inline assembler.
>
> Being a higher level language isn't some positive optimum. I guess part
> of the reason you disagree is that you take everything personally if
> someone is critical towards D.

Not at all, I happen to like C# pretty well too.  But having programmed in  
both, I feel both are at the same level -- I can accomplish (with proper  
library support) the same things in both with about the same amount of  
effort (probably less effort with D, but this statement is probably the  
brainwashing talking).  I've used C# to create a vastly complex system  
which managed the initialization and testing of about 400 concurrent PCs  
for production, and it worked pretty darn well.  So I'm not talking out of  
my ass here.

I'm also not asserting that high-level is better than low-level.  People  
can do ridiculous things with assembly that can beat the pants off of a  
high-level language.  But I just would expect C# and D to be considered  
the same in terms of level.

> My personal opinion is that D is in many
> cases a *better* language than C# and one of the reasons is that it's a
> lower level language. You can find one definition here:
>
> http://en.wikipedia.org/wiki/High-level_programming_language

 From that article:

"The terms high-level and low-level are inherently relative. Some decades  
ago, the C language, and similar languages, were most often considered  
"high-level", as it supported concepts such as expression evaluation,  
parameterised recursive functions, and data types and structures, while  
assembly language was considered "low-level". Many programmers today might  
refer to C as low-level, as it lacks a large runtime-system (no garbage  
collection etc.), basically supports only scalar operations, and provides  
direct memory addressing. It therefore readily blends with assembly  
language and the machine level of CPUs and microcontrollers."

D does not lack a large runtime system and garbage collection.  It has  
pretty good high-level constructs, and pretty low level constructs as well.

One thing not really discussed in that wikipedia article is what if a  
language has *both* the lowest level constructs and the highest level  
constructs, how is it defined?

I guess you have to define the highs or lows as overriding the other, and  
I feel the high-level constructs are more what define the language than  
the low level, since the high level constructs are what the average  
developer uses.  You may interpret it differently, so I can respect that.

If SafeD is ever properly implemented, I'm guessing it would be considered  
a high-level language, even by you.

>> You know, people who like D come to this newsgroup for suggestions,
>> answers, and discussion... about D!
>>
>> So you are surprised when people here post positive things about D?  You
>> know, you are right.  We're all brainwashed, and I think you just saved
>> us.
>
> The logic often goes:
>
> if (post.sender == "retard" && post.criticizes("D"))  
> poster.sender.isWrong
> = true;

You missed some booleans there: post.contains("rant about brainwashing")  
&& post.contains("comments about how the OP is an idiot")

Those fields are naturally not going to elicit a positive response.  Look  
at bearophile, every other word out of his keyboard is about Python, yet  
nobody gets pissed off and defensive when he compares D unfavorably to  
Python.

> No matter what I say, I'm always wrong. Even quotes from encyclopedias or
> research papers are more wrong when I share them.

I don't think it's your knowledge or lack thereof, it's your delivery.   
Your verbiage tends to put people on the defensive.

-Steve


More information about the Digitalmars-d mailing list