Idea #1 on integrating RC with GC

Ola Fosheim Grøstad" <ola.fosheim.grostad+dlang at gmail.com> Ola Fosheim Grøstad" <ola.fosheim.grostad+dlang at gmail.com>
Fri Feb 14 16:35:26 PST 2014


On Tuesday, 11 February 2014 at 17:55:36 UTC, Andrei Alexandrescu 
wrote:
>> better C++. It kinda sticks. Because people really want that.
>
> I don't think so, at all. Anyone working on D must drop the 
> moniker "D is a better C++" like a bad habit, no two ways about 
> that. Most of it does it sets C++ as the benchmark. People who 
> already like C++ would be like "you wish" and people who hate 
> C++ would be like "better crap is not what I need anyway".

(I don't really agree, because whenever I use C++ I feel like 
implementing my own language or recently: take another look at D.)

But for people looking for a system level programming language, 
C++ is a baseline. So you will invariably be measured against it.

If you think in terms of "lost opportunities", I believe D looses 
out by not providing a compiler switch that turns off the GC and 
issues errors whenever GC-dependent constructs are being used. 
Not elegant, but simple and makes it easy to start doing real 
time programming because you then have achieved near parity with 
C++ baseline requirements.

If you have limited resources you need to switch to thinking 
about baselines, key requirements and where you loose your 
audience.

D looses opportunities for growth by not having a stable release 
that is perceived as current.  You could (in theory) make a base 
line release, by focusing on the compiler and the runtime, 
pushing features that are not essential for forward compatibility 
into the next release and only release the aspect of phobos you 
are happy with.

A known current, stable and supported release makes it possible 
to plan for others wanting to use D for production and would open 
up for branches for their own projects, like real-time features.

I believe that by delaying a stable release in order to make it 
feature complete, you loose out, because you move out of the 
planning window (let's say 6-12 months) for those assessing 
possible technologies.

> We want to make D a great language all around, with 
> system-level access and also convenience features.

If you go too hard in the Application Language direction the 
System Level will be less visible. And there is more of a future 
for a system level compiled language with limited tool support.

> It's there in <h2> at the top of our homepage: "Modern 
> convenience. Modeling power. Native efficiency."

Slogans doesn't tell me much, I think we talk past each other 
here.

> By the way, this whole "plop a vision page" thing doesn't seem 
> to be quite popular:

I think Rust's homepage and documentation is clear.

By "vision" I mean that future which the tool will bring with it 
as it appears to the reader. That which brings excitement and 
engagement: "I want that future".

Basically the long term goals. Those that you might not achieve 
in generation 1, 2, 3… but which you are approaching.

What I found exciting about W.B.'s original D1 was those aspects 
where D also would bring along semantics that make it possible to 
optimize better than C/C++, such as whole program optimization. 
It does not have to be in this generation of compilers to be 
communicated as language goals.

Immutability, pure, templates etc are useful, but not exciting. 
And not unique for D.

Anyway, I wish you the best of luck. I look forward to your next 
stable release and hope to be able to adapt the stable runtime to 
real time uses and make it available as patches for those 
interested. A long running development branch is outside my time 
window (e.g. I might have moved on to other things by the time it 
can be expected to reach maturity).

Cheers,
Ola.


More information about the Digitalmars-d mailing list