August 20, 2007
eao197 Wrote:

> Yes! But C++ is doing that without breaking existing codebase. So significant amount of C++ programmers needn't look to D -- they will have new advanced features without dropping their old tools, IDE and libraries.
> 
> I'm affraid that would play against D :(
> 
> Current C++ is far behind D, but D is not stable, not mature, not equiped by tools/libraries as C++. So it will took several years to make D competitive with C++ in that area. But if in 2010 (it is only 2.5 year ahead) C++ will have things like lambdas and autos (and tons of libraries and army of programmers), what will be D 'killer feature' to attract C++ programmers? And not only C++, at this time D would compete with new versions of C#, Java, Scala, Nemerle (probably) and with some of functional languages (like Haskell and OCaml).

You seem to forget that D is evolving, too. C++ might get a lot of the cool D features (albiet with ugly syntax), but by that time, D might have superpowers incomprehensible to the C++ mind.

August 20, 2007
On Mon, 20 Aug 2007 23:26:33 +0400, Robert Fraser <fraserofthenight@gmail.com> wrote:

> eao197 Wrote:
>
>> Yes! But C++ is doing that without breaking existing codebase. So
>> significant amount of C++ programmers needn't look to D -- they will have
>> new advanced features without dropping their old tools, IDE and libraries.
>>
>> I'm affraid that would play against D :(
>>
>> Current C++ is far behind D, but D is not stable, not mature, not equiped
>> by tools/libraries as C++. So it will took several years to make D
>> competitive with C++ in that area. But if in 2010 (it is only 2.5 year
>> ahead) C++ will have things like lambdas and autos (and tons of libraries
>> and army of programmers), what will be D 'killer feature' to attract
>> C++ programmers? And not only C++, at this time D would compete with new
>> versions of C#, Java, Scala, Nemerle (probably) and with some of
>> functional languages (like Haskell and OCaml).
>
> You seem to forget that D is evolving, too. C++ might get a lot of the cool D features (albiet with ugly syntax), but by that time, D might have superpowers incomprehensible to the C++ mind.

I didn't. From my point of view, permanent envolvement is a main D's problem. I can't start use D on my work regulary because D and Tango is not stable enough. I can't start teach students D because D 1.0 is obsolete and D 2.0 is not finished yet.

To outperform C++ in 2009-2010 D must have full strength now and must be stable during some years to proof that strength in some killer applications.

-- 
Regards,
Yauheni Akhotnikau
August 20, 2007
eao197 wrote:
> On Mon, 20 Aug 2007 23:26:33 +0400, Robert Fraser <fraserofthenight@gmail.com> wrote:
> 
>> eao197 Wrote:
>>> ...
> 
> I didn't. From my point of view, permanent envolvement is a main D's problem. I can't start use D on my work regulary because D and Tango is not stable enough. I can't start teach students D because D 1.0 is obsolete and D 2.0 is not finished yet.
> 
> To outperform C++ in 2009-2010 D must have full strength now and must be stable during some years to proof that strength in some killer applications.
> 
To me it seems that D's main current problem is lack of dependable libraries.
A secondary problem is lack of run-time flexibility (ala Python, etc.), but that may be intractable in a language that intends to be fast.

Well... the libraries problem is intractable, also.  Just, perhaps, less so.

OTOH, it is crucial that new releases not break working libraries.  If they do it will not only prevent the accumulation over time of working libraries, but will also discourage people from working on them.
August 23, 2007
eao197 wrote:
> On Mon, 20 Aug 2007 23:26:33 +0400, Robert Fraser 
>> You seem to forget that D is evolving, too. C++ might get a lot of the cool D features (albiet with ugly syntax), but by that time, D might have superpowers incomprehensible to the C++ mind.
> 
> I didn't. From my point of view, permanent envolvement is a main D's problem. I can't start use D on my work regulary because D and Tango is not stable enough. I can't start teach students D because D 1.0 is obsolete and D 2.0 is not finished yet.

I don't understand this. You could as well say that C++98 is obsolete and C++0x is not finished yet.


> To outperform C++ in 2009-2010 D must have full strength now and must be stable during some years to proof that strength in some killer applications.

C++0x's new features are essentially all present in D 1.0.

August 23, 2007
Walter Bright wrote:
> eao197 wrote:
>> On Mon, 20 Aug 2007 23:26:33 +0400, Robert Fraser
>>> You seem to forget that D is evolving, too. C++ might get a lot of the cool D features (albiet with ugly syntax), but by that time, D might have superpowers incomprehensible to the C++ mind.
>>
>> I didn't. From my point of view, permanent envolvement is a main D's problem. I can't start use D on my work regulary because D and Tango is not stable enough. I can't start teach students D because D 1.0 is obsolete and D 2.0 is not finished yet.
> 
> I don't understand this. You could as well say that C++98 is obsolete and C++0x is not finished yet.
> 
> 
>> To outperform C++ in 2009-2010 D must have full strength now and must be stable during some years to proof that strength in some killer applications.
> 
> C++0x's new features are essentially all present in D 1.0.

..but C++98's features that were missing from D are still missing (both good and bad ones).

--bb
August 23, 2007
Bill Baxter wrote:
> Walter Bright wrote:
>> C++0x's new features are essentially all present in D 1.0.
> 
> ..but C++98's features that were missing from D are still missing (both good and bad ones).

Like what? Virtual base classes? Argument dependent lookup? #include files? C++ can keep them <g>.
August 23, 2007
Walter Bright wrote:
> eao197 wrote:
>> On Mon, 20 Aug 2007 23:26:33 +0400, Robert Fraser
>>> You seem to forget that D is evolving, too. C++ might get a lot of the cool D features (albiet with ugly syntax), but by that time, D might have superpowers incomprehensible to the C++ mind.
>>
>> I didn't. From my point of view, permanent envolvement is a main D's problem. I can't start use D on my work regulary because D and Tango is not stable enough. I can't start teach students D because D 1.0 is obsolete and D 2.0 is not finished yet.
> 
> I don't understand this. You could as well say that C++98 is obsolete and C++0x is not finished yet.
> 
> 
>> To outperform C++ in 2009-2010 D must have full strength now and must be stable during some years to proof that strength in some killer applications.
> 
> C++0x's new features are essentially all present in D 1.0.
> 

All except Concepts.

I know there was a small discussion of Concepts here after someone posted a Doug Gregor video on Concepts, but other than that they haven't really got much attention. I know that a lot of the problems they solve in simplifying template error messages can be done alternatively in D with static-if, is() and now __traits, in conjunction with the 'static unittest' idiom, but even then, I think C++0x Concepts give a nicer syntax for expressing exactly what you want, and they also allow overloading on Concepts (which AFAIK there is no way to emulate in D).

Two characteristic examples (the first one is in would-be D with Concepts):

// if D had Concepts
void sort(T :: RandomAccessIteratorConcept)(T t) {...}

// currently
void sort(T)(T t) {
    static assert(IsRandomAccessIterator!(T), T.stringof ~ " isn't a random access iterator");
    ...
}
alias sort!(MinimalRandomAccessIterator) _sort__UnitTest;

It isn't syntactically clean, so people won't be encouraged to support this idiom, and it doesn't allow the Concepts features of overloading or concept maps (I think concept maps can be emulated, but they currently break IFTI).

I'm interested in knowing your thoughts/plans for this.

  -- Reiner
August 23, 2007
Reiner Pope wrote:
> Walter Bright wrote:
>> eao197 wrote:
>>> On Mon, 20 Aug 2007 23:26:33 +0400, Robert Fraser
>>>> You seem to forget that D is evolving, too. C++ might get a lot of the cool D features (albiet with ugly syntax), but by that time, D might have superpowers incomprehensible to the C++ mind.
>>>
>>> I didn't. From my point of view, permanent envolvement is a main D's problem. I can't start use D on my work regulary because D and Tango is not stable enough. I can't start teach students D because D 1.0 is obsolete and D 2.0 is not finished yet.
>>
>> I don't understand this. You could as well say that C++98 is obsolete and C++0x is not finished yet.
>>
>>
>>> To outperform C++ in 2009-2010 D must have full strength now and must be stable during some years to proof that strength in some killer applications.
>>
>> C++0x's new features are essentially all present in D 1.0.
>>
> 
> All except Concepts.
> 
> I know there was a small discussion of Concepts here after someone posted a Doug Gregor video on Concepts, but other than that they haven't really got much attention. I know that a lot of the problems they solve in simplifying template error messages can be done alternatively in D with static-if, is() and now __traits, in conjunction with the 'static unittest' idiom, but even then, I think C++0x Concepts give a nicer syntax for expressing exactly what you want, and they also allow overloading on Concepts (which AFAIK there is no way to emulate in D).
> 
> Two characteristic examples (the first one is in would-be D with Concepts):
> 
> // if D had Concepts
> void sort(T :: RandomAccessIteratorConcept)(T t) {...}
> 
> // currently
> void sort(T)(T t) {
>     static assert(IsRandomAccessIterator!(T), T.stringof ~ " isn't a random access iterator");
>     ...
> }
> alias sort!(MinimalRandomAccessIterator) _sort__UnitTest;
> 
> It isn't syntactically clean, so people won't be encouraged to support this idiom, and it doesn't allow the Concepts features of overloading or concept maps (I think concept maps can be emulated, but they currently break IFTI).
> 
> I'm interested in knowing your thoughts/plans for this.
> 
>   -- Reiner

I see Walter has now said elsewhere in this thread that 'concepts aren't a whole lot more than interface specialization, which is already supported in D.' True; what I'm really wondering, though, is

 1. Will specialisation be "fixed" to work with IFTI?
 2. Will there be a way to support user-defined specialisations, for instance once which don't depend on the inheritance hierarchy?

  -- Reiner
August 23, 2007
Walter Bright wrote:
> Bill Baxter wrote:
>> Walter Bright wrote:
>>> C++0x's new features are essentially all present in D 1.0.
>>
>> ..but C++98's features that were missing from D are still missing (both good and bad ones).
> 
> Like what? Virtual base classes? Argument dependent lookup? #include files? C++ can keep them <g>.

The things that have me banging my head most often are
1) the few things preventing an implementation of smart pointers [destructors, copy constructors and opDot].  There are some cases where you just want to refcount objects.  This is the one hole in D that I haven't heard any reasonable workaround for.  I don't necessarily _want_ copy constructors in general but they seem to be necessary for implementing automatic reference counting.
2) lack of a way to return a reference.
3) From what I can tell "const ref" doesn't work for parameters in D 2.0. Oh, and
4) real struct constructors.  Just a syntactic annoyance, but still an annoyance.

--bb
August 23, 2007
On Thu, 23 Aug 2007 10:14:39 +0400, Walter Bright <newshound1@digitalmars.com> wrote:

> eao197 wrote:
>> On Mon, 20 Aug 2007 23:26:33 +0400, Robert Fraser
>>> You seem to forget that D is evolving, too. C++ might get a lot of the cool D features (albiet with ugly syntax), but by that time, D might have superpowers incomprehensible to the C++ mind.
>>  I didn't. From my point of view, permanent envolvement is a main D's problem. I can't start use D on my work regulary because D and Tango is not stable enough. I can't start teach students D because D 1.0 is obsolete and D 2.0 is not finished yet.
>
> I don't understand this. You could as well say that C++98 is obsolete and C++0x is not finished yet.

AFAIK, C++0x doesn't break compatibility with C++98. So if I teach students C++98 now they could use C++0x. Moreover they could use in C++0x all their C++98 code.

Now I see D 2.0 as very different language from D 1.0.

>> To outperform C++ in 2009-2010 D must have full strength now and must be stable during some years to proof that strength in some killer applications.
>
> C++0x's new features are essentially all present in D 1.0.

Yes, but C++ doesn't require programmers to change their language, tools and libraries. Such change require a lot of time and efforts. Such effors could be applied to the current projects instead of switching to D. But, if D could afford something else, something that completely missing from C++0x (like non-null reference/pointers, some kind of functional programming (pattern-matching) and so on) than such switching would be much more attractive.

I know that you work very hard on D, but D 1.0 took almost 7 years. D 2.0 started in 2007, so final D 2.0 could be in 2014?

-- 
Regards,
Yauheni Akhotnikau
« First   ‹ Prev
1 2 3 4
Top | Discussion index | About this forum | D home