View mode: basic / threaded / horizontal-split · Log in · Help
August 20, 2007
Re: Stroustrup's talk on C++0x
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
Re: Stroustrup's talk on C++0x
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
Re: Stroustrup's talk on C++0x
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
Re: Stroustrup's talk on C++0x
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
Re: Stroustrup's talk on C++0x
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
Re: Stroustrup's talk on C++0x
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
Re: Stroustrup's talk on C++0x
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
Re: Stroustrup's talk on C++0x
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
Re: Stroustrup's talk on C++0x
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
Re: Stroustrup's talk on C++0x
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