www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - At a crossroad

reply Sjoerd van Leent <svanleent gmail.com> writes:
Lately, I've been tuning in to the development of D again. But what I see is
rather disturbing.

There is a new continuation of the old D, in the newer D2. Personally, I think
this is good, as long as there will be a defined end to D2. What disturbs me
more, is that there appears to be no coherent development.

There are all nice ideas, but it appears that one project dies after the other.

I see a number of problems, which keep D from growing up.

There appears to be a lack of understanding about whom are going to use the
language. D is targeted at the niche of C and C++. Next to D, there are .NET
and Java. These are all competitors. Other popular languages, such as Python
and Ruby, though being non-system languages, have their share as well. As I
look at it, I come to some essential conclusions:

All of these environments have a stable language, and on top of that, ONE
single main library. With C++ this is STL/IOStream, with .NET and Java it's
their respective libraries. Similar for Python and Ruby. With D however, there
are at least 2 main libraries (Phobos and Tango), whereof Tango doesn't support
D2. It is unacceptable for the target audience to find this situation. Tools
can't interoperate, libraries can't interoperate, etc.

There are a lot of ideas for nice tools. But the essential base is missing. For
large projects there is the need for a decent IDE and the need for dynamic
linking. Although attempts are made, it all appears to stall. There is barely
any usable main-purpose library.

As D2 will be finished hopefully not to long from now, especially the
specification, I would really request to start thinking about how to continue.
D is a nice language, with great opportunity. But without management, even when
it is nice, it will fail.

I would like to ask everyone interested in getting D up and running for
main-stream purposes, to sit together and think about solutions.

Anyway, I hope I'm not putting too much poison into the newsgroup, but I really
needed to say this.
Jun 29 2009
next sibling parent reply Ary Borenszweig <ary esperanto.org.ar> writes:
Sjoerd van Leent escribió:
 Lately, I've been tuning in to the development of D again. But what I see is
rather disturbing.
 
 There is a new continuation of the old D, in the newer D2. Personally, I think
this is good, as long as there will be a defined end to D2. What disturbs me
more, is that there appears to be no coherent development.
 
 There are all nice ideas, but it appears that one project dies after the other.
 
 I see a number of problems, which keep D from growing up.
 
 There appears to be a lack of understanding about whom are going to use the
language. D is targeted at the niche of C and C++. Next to D, there are .NET
and Java. These are all competitors. Other popular languages, such as Python
and Ruby, though being non-system languages, have their share as well. As I
look at it, I come to some essential conclusions:
 
 All of these environments have a stable language, and on top of that, ONE
single main library. With C++ this is STL/IOStream, with .NET and Java it's
their respective libraries. Similar for Python and Ruby. With D however, there
are at least 2 main libraries (Phobos and Tango), whereof Tango doesn't support
D2. It is unacceptable for the target audience to find this situation. Tools
can't interoperate, libraries can't interoperate, etc.
 
 There are a lot of ideas for nice tools. But the essential base is missing.
For large projects there is the need for a decent IDE and the need for dynamic
linking. Although attempts are made, it all appears to stall. There is barely
any usable main-purpose library.
 
 As D2 will be finished hopefully not to long from now, especially the
specification, I would really request to start thinking about how to continue.
D is a nice language, with great opportunity. But without management, even when
it is nice, it will fail.
 
 I would like to ask everyone interested in getting D up and running for
main-stream purposes, to sit together and think about solutions.
 
 Anyway, I hope I'm not putting too much poison into the newsgroup, but I
really needed to say this.
Lately a lot of people are complaining about "D lacks this", "D lacks that". I can only speak for the IDE part of your post: I'm working on it, and I'm almost alone. So if you want to do something for D, get your hands dirty.
Jun 29 2009
next sibling parent reply Sjoerd van Leent <svanleent gmail.com> writes:
Hi Ary,

I think this is the issue. I'm not saying that D in itself is lacking anything.
I think it is important to put an end to changing D (D2).

What I'm concerned about is that many projects stall. Including a project I
started, which is now completely incompatible with D2.

What I want to say is that before we miss our chance, we need to get D2 going.

I'm rightfully concerned about two main libraries (Phobos and Tango). It's next
to being impractical, also very confusing. If I want to develop anything new, I
want to know what I should and shouldn't use. So that others are able to use
what I develop in a sensible way.

I know I'm repeating a discussion that many others already tried to discuss.
And I doubt that I'm on my own in this.

I'm not saying that I don't want to do anything. I do want to do. But I also
want it to be meaningful.

So, my first question would be: What is going to be the main-purpose library
for D2? Phobos or Tango. With that answered I'm willing to port things over and
help development. Without that, knowing that half of the users can't use half
of the tools/libraries, I don't see much purpose in doing this. Since it is not
realistic, and I can put effort in things that are more worthwhile.

Ary Borenszweig Wrote:

 Sjoerd van Leent escribió:
 Lately, I've been tuning in to the development of D again. But what I see is
rather disturbing.
 
 There is a new continuation of the old D, in the newer D2. Personally, I think
this is good, as long as there will be a defined end to D2. What disturbs me
more, is that there appears to be no coherent development.
 
 There are all nice ideas, but it appears that one project dies after the other.
 
 I see a number of problems, which keep D from growing up.
 
 There appears to be a lack of understanding about whom are going to use the
language. D is targeted at the niche of C and C++. Next to D, there are .NET
and Java. These are all competitors. Other popular languages, such as Python
and Ruby, though being non-system languages, have their share as well. As I
look at it, I come to some essential conclusions:
 
 All of these environments have a stable language, and on top of that, ONE
single main library. With C++ this is STL/IOStream, with .NET and Java it's
their respective libraries. Similar for Python and Ruby. With D however, there
are at least 2 main libraries (Phobos and Tango), whereof Tango doesn't support
D2. It is unacceptable for the target audience to find this situation. Tools
can't interoperate, libraries can't interoperate, etc.
 
 There are a lot of ideas for nice tools. But the essential base is missing.
For large projects there is the need for a decent IDE and the need for dynamic
linking. Although attempts are made, it all appears to stall. There is barely
any usable main-purpose library.
 
 As D2 will be finished hopefully not to long from now, especially the
specification, I would really request to start thinking about how to continue.
D is a nice language, with great opportunity. But without management, even when
it is nice, it will fail.
 
 I would like to ask everyone interested in getting D up and running for
main-stream purposes, to sit together and think about solutions.
 
 Anyway, I hope I'm not putting too much poison into the newsgroup, but I
really needed to say this.
Lately a lot of people are complaining about "D lacks this", "D lacks that". I can only speak for the IDE part of your post: I'm working on it, and I'm almost alone. So if you want to do something for D, get your hands dirty.
Jun 29 2009
next sibling parent reply Ary Borenszweig <ary esperanto.org.ar> writes:
Sjoerd van Leent escribió:
 Hi Ary,
 
 I think this is the issue. I'm not saying that D in itself is lacking
anything. I think it is important to put an end to changing D (D2).
 
 What I'm concerned about is that many projects stall. Including a project I
started, which is now completely incompatible with D2.
 
 What I want to say is that before we miss our chance, we need to get D2 going.
 
 I'm rightfully concerned about two main libraries (Phobos and Tango). It's
next to being impractical, also very confusing. If I want to develop anything
new, I want to know what I should and shouldn't use. So that others are able to
use what I develop in a sensible way.
 
 I know I'm repeating a discussion that many others already tried to discuss.
And I doubt that I'm on my own in this.
 
 I'm not saying that I don't want to do anything. I do want to do. But I also
want it to be meaningful.
 
 So, my first question would be: What is going to be the main-purpose library
for D2? Phobos or Tango. With that answered I'm willing to port things over and
help development. Without that, knowing that half of the users can't use half
of the tools/libraries, I don't see much purpose in doing this. Since it is not
realistic, and I can put effort in things that are more worthwhile.
I see. Yes, two main-purpose libraries are indeed a problem. I thought druntime was supposed to solve this, but if you are developing a library you'll end up using one of the two, and then another library developed in the other main-purpose library will not be compatible, unless you throw a lot of version conditions all over the place. A real mess. :-P Why can't Tango be a library instead of a standard library? (I'm just saying Tango here because phobos was the original standard library, it could be the other way around, but Tango seems also more of a higher-level API.)
Jun 29 2009
parent Lutger <lutger.blijdestijn gmail.com> writes:
Ary Borenszweig wrote:

...
 
 Yes, two main-purpose libraries are indeed a problem. I thought druntime
 was supposed to solve this, but if you are developing a library you'll
 end up using one of the two, and then another library developed in the
 other main-purpose library will not be compatible, unless you throw a
 lot of version conditions all over the place. A real mess. :-P
 
 Why can't Tango be a library instead of a standard library?
 
 (I'm just saying Tango here because phobos was the original standard
 library, it could be the other way around, but Tango seems also more of
 a higher-level API.)
People more involved with Tango should be better able to answer this, but I believe it's pretty simple to explain: Tango evolved out of Ares and Mango to offer an alternative to *both* the runtime and 'user-level' parts of Phobos. Back then, phobos was seen as not adequate for serious development, stale and hard to participate in. Obviously, a lot of people were motivated enough to develop in D as to embark on such a time-consuming project. Whether it could be called 'standard' or not is really not an interesting debate. The facts are: - it (claims to) solve various issues with phobos D1, including the runtime - is widely adopted and indeed the most successful D library ever - has an incompatible runtime with phobos D1 Now that D2 has druntime (essentially the Tango runtime) Tango can be made compatible again when it is eventually ported to D2. So druntime is still supposed to solve this issue, but only when Tango becomes D2. Another way of looking at it is that the Tango runtime part has already merged with phobos, thus solving some problems (at least the ones which the original Tango runtime was intended to solve). D is still in development because the authors have decided it was not nearly finished with D1. You can agree with that or not, fact is that D has taken that ambitious road. One of the consequences is the continued incompatibility between Phobos and Tango, but this is imho merely a reflection of the incompatibility between D1 and D2. Well that was a verbose way to say this topic is not so interesting anymore, at least until Tango is going D2. Now, who is going to write that linker? ;) (I can't, I'm not smart enough)
Jun 29 2009
prev sibling next sibling parent reply "Lars T. Kyllingstad" <public kyllingen.NOSPAMnet> writes:
Sjoerd van Leent wrote:
 Hi Ary,
 
 I think this is the issue. I'm not saying that D in itself is lacking
anything. I think it is important to put an end to changing D (D2).
Although this has not been officially anounced, Andrei mentioned a while back that D2 and Phobos2 will be finalised in a few months, about the time his D book is published.
 What I'm concerned about is that many projects stall. Including a project I
started, which is now completely incompatible with D2.
If one doesn't have the time to fix code that is broken because of changes in the spec or in Phobos, one shouldn't have started a D2 project in the first place. D2 is *unstable*, and is meant to be so. It changes quite a lot, but this is a good thing. You can't expect Walter & co. to add a new feature and immediately freeze it, since you never know how well it works until a lot of different people have had the chance to test it over a certain length of time. This also applies to the toolchain issue that has been mentioned several times of late. If you can't live without all the luxuries of a fully developed, stable toolchain, *don't use D2*. I completely agree with dsimcha that the language spec and the reference compiler has to be completed before anything else. Only then can people start serious work on the various parts of the toolchain, and *then* D2 is ready for mainstream work. Regarding stalled projects, I think there is indeed a problem, but it has nothing to do with D2 development. A lot of (most?) projects die when their developers loose interest in or time for maintaining them. This is only natural. Unfortunately, these abandoned projects are listed together with the few active ones on DSource, and often one actually has to check the "last modified" date in the SVN browser to figure out whether it is dead or not. DSource is, in my opinion, in desperate need of a good cleaning-up. It is, after all, the main D development portal, and as such it is a huge part of the first impression people get of D. Speaking from personal experience, I think this has a bigger negative impact on first impressions than the Phobos/Tango split.
 What I want to say is that before we miss our chance, we need to get D2 going.
 
 I'm rightfully concerned about two main libraries (Phobos and Tango). It's
next to being impractical, also very confusing. If I want to develop anything
new, I want to know what I should and shouldn't use. So that others are able to
use what I develop in a sensible way.
Personally, I think Andrei and the others have done (and are doing) a great job with Phobos2. This is, and should be, what is referred to as the "standard library". In my opinion, Tango for D2 should be constructed as a 100% compatible extension to Phobos. With the emergence of druntime, this should be easier than ever. -Lars
Jun 29 2009
next sibling parent Sjoerd van Leent <svanleent gmail.com> writes:
Lars T. Kyllingstad Wrote:

 Sjoerd van Leent wrote:
 Hi Ary,
 
 I think this is the issue. I'm not saying that D in itself is lacking
anything. I think it is important to put an end to changing D (D2).
Although this has not been officially anounced, Andrei mentioned a while back that D2 and Phobos2 will be finalised in a few months, about the time his D book is published.
 What I'm concerned about is that many projects stall. Including a project I
started, which is now completely incompatible with D2.
If one doesn't have the time to fix code that is broken because of changes in the spec or in Phobos, one shouldn't have started a D2 project in the first place. D2 is *unstable*, and is meant to be so. It changes quite a lot, but this is a good thing. You can't expect Walter & co. to add a new feature and immediately freeze it, since you never know how well it works until a lot of different people have had the chance to test it over a certain length of time. This also applies to the toolchain issue that has been mentioned several times of late. If you can't live without all the luxuries of a fully developed, stable toolchain, *don't use D2*. I completely agree with dsimcha that the language spec and the reference compiler has to be completed before anything else. Only then can people start serious work on the various parts of the toolchain, and *then* D2 is ready for mainstream work. Regarding stalled projects, I think there is indeed a problem, but it has nothing to do with D2 development. A lot of (most?) projects die when their developers loose interest in or time for maintaining them. This is only natural. Unfortunately, these abandoned projects are listed together with the few active ones on DSource, and often one actually has to check the "last modified" date in the SVN browser to figure out whether it is dead or not. DSource is, in my opinion, in desperate need of a good cleaning-up. It is, after all, the main D development portal, and as such it is a huge part of the first impression people get of D. Speaking from personal experience, I think this has a bigger negative impact on first impressions than the Phobos/Tango split.
I think you're right about this. Another problem is that projects who are/were active, don't get much support. I believe it scares people away. This is the main reason why my project stalled. It was originally a D1 project tailored towards Phobos, when D was still in it's infancy. But when Tango came around, I believed that my project became next to useless. There are some successors, and as thus I don't want to mess around creating something similar. But it appears that all those successors are tailored towards Tango, making my original approach valid again. In my case, it wasn't about fixing code, but about a wholly different standard library, which my software simply didn't use at all.
 
 What I want to say is that before we miss our chance, we need to get D2 going.
 
 I'm rightfully concerned about two main libraries (Phobos and Tango). It's
next to being impractical, also very confusing. If I want to develop anything
new, I want to know what I should and shouldn't use. So that others are able to
use what I develop in a sensible way.
Personally, I think Andrei and the others have done (and are doing) a great job with Phobos2. This is, and should be, what is referred to as the "standard library". In my opinion, Tango for D2 should be constructed as a 100% compatible extension to Phobos. With the emergence of druntime, this should be easier than ever.
If this is going to be the case, I would be more than happy. This gives me a proper starting point to start constructing software. With software, I mean, basic software.
 
 -Lars
I would urge that the projects which are dead or are seemingly dead, should be removed or at least hidden within DSource. If a forum is visited for the last time in 2007, I'm getting nervous. I'm not trying to get the community upset. I just try to give a realistic projection about how the experience is. Anyways, now I hope that I can just stick to phobos, I'll start development again. With the last question: What is currently the most important thing that should be developed?
Jun 29 2009
prev sibling parent reply Jarrett Billingsley <jarrett.billingsley gmail.com> writes:
On Mon, Jun 29, 2009 at 9:32 AM, Lars T.
Kyllingstad<public kyllingen.nospamnet> wrote:

 This also applies to the toolchain issue that has been mentioned several
 times of late. If you can't live without all the luxuries of a fully
 developed, stable toolchain, *don't use D2*.
Wait, are you suggesting that D1 *does* have a fully-developed, stable toolchain? Have you developed in D? Ever? ;)
Jun 29 2009
parent reply "Lars T. Kyllingstad" <public kyllingen.NOSPAMnet> writes:
Jarrett Billingsley wrote:
 On Mon, Jun 29, 2009 at 9:32 AM, Lars T.
 Kyllingstad<public kyllingen.nospamnet> wrote:
 
 This also applies to the toolchain issue that has been mentioned several
 times of late. If you can't live without all the luxuries of a fully
 developed, stable toolchain, *don't use D2*.
Wait, are you suggesting that D1 *does* have a fully-developed, stable toolchain? Have you developed in D? Ever? ;)
parent reply Jarrett Billingsley <jarrett.billingsley gmail.com> writes:
On Mon, Jun 29, 2009 at 2:29 PM, Lars T.
Kyllingstad<public kyllingen.nospamnet> wrote:

 For that reason I'm not going to shout very loudly in these discussions, but
 I get annoyed when I see people complaining about D2 being a moving target.
 After all, it comes with a big, red sticker that says "this is a moving
 target".
I have to heartily disagree. I can't tell you how many people have stumbled into the #d channel on IRC who are using D2, wondering why some feature X isn't working, or how to install Tango, or wondering why none of the libraries they've installed compile etc. etc. It's not really surprising. You go to http://www.digitalmars.com/d/ and you are almost immediately pushed into the D2 spec. All of the links on the left-hand side point to the D2 pages. *Nowhere* is it mentioned that I can see that it's alpha- or beta-quality software, or that it's still under development. All of the articles Walter, Andrei, and Bartosz on DDJ, blogs etc. are in reference to D2. The end result is that many newcomers don't know anything about the current situation. They don't know D1 even *exists*, or that D2 is under development, or that most of the D code out there probably won't compile with DMD2 because it's D1 code. It's all very under-explained.
Jun 29 2009
parent "Lars T. Kyllingstad" <public kyllingen.NOSPAMnet> writes:
Jarrett Billingsley wrote:
 On Mon, Jun 29, 2009 at 2:29 PM, Lars T.
 Kyllingstad<public kyllingen.nospamnet> wrote:
 
 For that reason I'm not going to shout very loudly in these discussions, but
 I get annoyed when I see people complaining about D2 being a moving target.
 After all, it comes with a big, red sticker that says "this is a moving
 target".
I have to heartily disagree. I can't tell you how many people have stumbled into the #d channel on IRC who are using D2, wondering why some feature X isn't working, or how to install Tango, or wondering why none of the libraries they've installed compile etc. etc. It's not really surprising. You go to http://www.digitalmars.com/d/ and you are almost immediately pushed into the D2 spec. All of the links on the left-hand side point to the D2 pages. *Nowhere* is it mentioned that I can see that it's alpha- or beta-quality software, or that it's still under development. All of the articles Walter, Andrei, and Bartosz on DDJ, blogs etc. are in reference to D2. The end result is that many newcomers don't know anything about the current situation. They don't know D1 even *exists*, or that D2 is under development, or that most of the D code out there probably won't compile with DMD2 because it's D1 code. It's all very under-explained.
Good point. Maybe said sticker isn't as visible as I thought. Located on the underside of the compiler, perhaps, together with the serial number and recommended voltage range. -Lars
Jun 29 2009
prev sibling parent Walter Bright <newshound1 digitalmars.com> writes:
Sjoerd van Leent wrote:
 So, my first question would be: What is going to be the main-purpose
 library for D2? Phobos or Tango.
Phobos is always going to be supported for D2. Tango doesn't currently exist for D2. Furthermore, Sean has put in the work to make it possible for both Phobos and Tango to coexist in D2, i.e. you don't have to commit to one or the other, you can use both simultaneously.
Jun 30 2009
prev sibling parent reply Steve Teale <steve.teale britseyeview.com> writes:
Ary Borenszweig Wrote:

 Lately a lot of people are complaining about "D lacks this", "D lacks that".
 
 I can only speak for the IDE part of your post: I'm working on it, and 
 I'm almost alone.
 
 So if you want to do something for D, get your hands dirty.
Ary, Lots of us are getting our hands dirty in the hopeful expectation of all the things described. I'm working on a web application server, and that includes database interfaces. I can't take on more. But when it comes to a mechanism for adding to Phobos, or even a mechanism to determine if anyone is actually interested, D is sadly lacking. The two library situation is just a joke. The comment about absence of management should be taken very seriously. If nothing is done about it, D will die. It may already be too late - these discussions have been going on as long as I can remember! Steve
Jun 29 2009
parent reply Ary Borenszweig <ary esperanto.org.ar> writes:
Steve Teale wrote:
 Ary Borenszweig Wrote:
 
 Lately a lot of people are complaining about "D lacks this", "D lacks that".

 I can only speak for the IDE part of your post: I'm working on it, and 
 I'm almost alone.

 So if you want to do something for D, get your hands dirty.
Ary, Lots of us are getting our hands dirty in the hopeful expectation of all the things described. I'm working on a web application server, and that includes database interfaces. I can't take on more. But when it comes to a mechanism for adding to Phobos, or even a mechanism to determine if anyone is actually interested, D is sadly lacking. The two library situation is just a joke. The comment about absence of management should be taken very seriously. If nothing is done about it, D will die. It may already be too late - these discussions have been going on as long as I can remember! Steve
Steve, Sorry, I thought many of the people that complain about D are just users of D and do nothing for it. I'm not saying that everyone should contribute, but if they don't contribute, then don't criticize. But I don't know who contributes and complains and who doesn't, so sorry. Back to the discussion: why Tango is considered a standard library? And again: can't it be changed to a normal library instead of a standard one? Why does it *need* to be a standard library?
Jun 29 2009
parent Jarrett Billingsley <jarrett.billingsley gmail.com> writes:
On Mon, Jun 29, 2009 at 1:29 PM, Ary Borenszweig<ary esperanto.org.ar> wrote:
 Back to the discussion: why Tango is considered a standard library? And
 again: can't it be changed to a normal library instead of a standard one?
 Why does it *need* to be a standard library?
Because one of Tango's purposes with D1 was to improve the GC, threading, and other core runtime issues. For a long time, that necessitated tricking the compiler into thinking that Tango was Phobos. Now DMD at least provides the option of choosing the runtime library through a switch, but it still means that Phobos is replaced. But with D2, since both Phobos (and in the future Tango) use the same underlying runtime library, Tango *will* be able to be "just" a library. Whether or not the user portions of Phobos and Tango will be in any way interoperable is yet to be seen.
Jun 29 2009
prev sibling next sibling parent digited <digited yandex.ru> writes:
We need to help finish Tango, LDC & Descent and pack them in a good toolchain.
I personally am very interested in Poseidon and will try to help with it's
improvement.
The community can do it.
Jun 29 2009
prev sibling next sibling parent reply superdude <superdude superdude.net> writes:
As someone who is reading this newsgroup instead of watching a soap 
opera, I will give you my useless reasons why I have given up on D, 
completely:

Lost focus:
D was intended as a system programming language, at some point the 
direction changed to a pure functional research toy. No longer 
intresting for me.

D2 Vapoware:
Using pure, side effect free, shared nothing, transitiv, functional 
programming D2 will automatically distribute your program on multiple 
cores and your programm will run - magically - number of cores times - 
faster.
If not, at least D2 will make it possible to write multithreaded 
programs, easily. Besides this it is still an ideal system programming 
language. You can use it to build the next operating system. *Show me 
the results, YESTERDAY!* Unfortunately it will not be compatible with 
D1, so prepare yourself to rewrite your programs.

Conservative Garbage Collection:
Some of my programs build structures requirering more than 1.5GByte of 
memory. Conservative Garbage Collections, simply does not work for 32bit 
programs. Try it for yourself.

Library Split:
"I'm not interested in Tango and in no way I'm going to support it! 
Phobos is the standard library. Period." - I was looking for such a 
sentence. Or "Ok, Tango is great. It will replace Phobos. Phobos will 
only stay for backwards combatibility."

I recognized I'm looking for something different:
I recognized what I actually want is not D. It is a python or ruby - 
with the speed of C. I'm aware it does not exist, yet. But actually it 
is a lot easier and more fun to use Python and write some performance 
critical stuff in C or C++ than to use D. All this template stuff... For 
what? Give me a high dynamic language, please.

than C++ or Java...

Zealots trolling in the news:
Sometimes very offending discussions in the forum. Some people show very 
litle tollerance to different opinions. No one steps in and says: "Stop 
it, now! It's enough! This is not a forum about XXXXX. It's about the D 
programming language!".

As long as superdan is licking his balls and fucking his mother. - 
Nothing will change. There will be at least two standard libraries. Who 
gives a fucking shit! There will never be a a high concurrent D2 - It's 
the halting problem, you sucker! - only transtitiv const. There will 
always be funny discussion to read in the forum, etc.

So long, a thanks for all the fish!
Jun 29 2009
next sibling parent reply dsimcha <dsimcha yahoo.com> writes:
== Quote from superdude (superdude superdude.net)'s article
 <Insert useless rants here>
Dude, stuff takes time. You can't fault a language for not having everything it advertises *yet* as long as steady, reasonably rapid progress is being made. D certainly has imperfections, but it's still light years ahead of C++ in ease of toolchain sucks right now, but I stick with D because *progress is clearly being made and I'm confident that it won't suck forever*. Yes, the standard library split sucks, but *druntime now exists, Tango is in the process of being ported to D2, and again, progress is being made*. Yes, there are holes in the const system, but *it's better than using a language that doesn't even try to solve these problems*. Yes, the threading model isn't fully fleshed out yet, but *it's clearly being worked on*. Yes, DMD is buggy, but *these bugs are slowly but surely getting fixed*. On the other hand, the progress toward C++0x has been glacial and it still doesn't include half the useful stuff D does. Java is completely stuck in inertia mode. templates *and isn't getting them*, which IMHO are the killer feature of D. Python and Ruby are constrained by their dynamic design such that they will likely always be slow and there is no room for improvement. The bottom line is that D tries to do some ambitious things that no other language has really tried. It also doesn't have the massive corporate backing that other, more conservative languages have. The idea that such a young language as D2 should be better than <insert favorite language here> *in every way, right NOW*, is simply ridiculous.
Jun 29 2009
parent reply bearophile <bearophileHUGS lycos.com> writes:
dsimcha:

 Python and Ruby
 are constrained by their dynamic design such that they will likely always be
slow
 and there is no room for improvement.
This is the opposite of the truth :-) Being Python slow, there can be ways to speed it up. Being D fast, there's little room from improvement. See unladen swallow project, for example: http://code.google.com/p/unladen-swallow/ Or Just Psyco: http://psyco.sourceforge.net/ Bye, bearophile
Jun 29 2009
parent reply dsimcha <dsimcha yahoo.com> writes:
== Quote from bearophile (bearophileHUGS lycos.com)'s article
 dsimcha:
 Python and Ruby
 are constrained by their dynamic design such that they will likely always be
slow
 and there is no room for improvement.
This is the opposite of the truth :-) Being Python slow, there can be ways to speed it up. Being D fast, there's
little room from improvement. See unladen swallow project, for example:
 http://code.google.com/p/unladen-swallow/
 Or Just Psyco:
 http://psyco.sourceforge.net/
 Bye,
 bearophile
Sorry, I misspoke slightly. I meant that these languages will never be in the same league as D, not that they will never be faster than they are now. Of course, they can be made *somewhat* faster, but all the fancy stuff they do at runtime is pretty limiting in terms of performance optimizations.
Jun 29 2009
parent reply Daniel Keep <daniel.keep.lists gmail.com> writes:
dsimcha wrote:
 == Quote from bearophile (bearophileHUGS lycos.com)'s article
 dsimcha:
 Python and Ruby
 are constrained by their dynamic design such that they will likely always be
slow
 and there is no room for improvement.
This is the opposite of the truth :-) Being Python slow, there can be ways to speed it up. Being D fast, there's
little room from improvement. See unladen swallow project, for example:
 http://code.google.com/p/unladen-swallow/
 Or Just Psyco:
 http://psyco.sourceforge.net/
 Bye,
 bearophile
Sorry, I misspoke slightly. I meant that these languages will never be in the same league as D, not that they will never be faster than they are now. Of course, they can be made *somewhat* faster, but all the fancy stuff they do at runtime is pretty limiting in terms of performance optimizations.
You might be surprised... http://lua-users.org/lists/lua-l/2009-06/msg00071.html For those who are allergic to reading: Language SciMark score (larger is better) =============== ================================ Lua 5.1.4 13.87 LuaJIT 1.1.x 89.80 LuaJIT 2 [1] 425.11 C [2] 604.44 LuaJIT 2 is getting perilously close to C. That's a language with no static typing (not even optional), no compile step; it doesn't even have classes to help the JIT. Here's the thing: tracing JITs can theoretically BEAT C. Why? Because a tracing JIT knows more about the system the program is running on than a compiler ever will. It knows which parts of the code are being hit the hardest. It can even inline whole inner loops across function and module boundaries. Saying dynamic languages will never be in the same league as D is just ASKING to be proven wrong. :D [1] Still under development; that result is from early this month. [2] Compiled with GCC 4.3.2 with -march=core2 -O3 -fomit-frame-pointer
Jun 29 2009
next sibling parent Jarrett Billingsley <jarrett.billingsley gmail.com> writes:
On Tue, Jun 30, 2009 at 12:17 AM, Daniel
Keep<daniel.keep.lists gmail.com> wrote:
 dsimcha wrote:
 =3D=3D Quote from bearophile (bearophileHUGS lycos.com)'s article
 dsimcha:
 Python and Ruby
 are constrained by their dynamic design such that they will likely alw=
ays be slow
 and there is no room for improvement.
This is the opposite of the truth :-) Being Python slow, there can be ways to speed it up. Being D fast, ther=
e's
 little room from improvement. See unladen swallow project, for example:
 http://code.google.com/p/unladen-swallow/
 Or Just Psyco:
 http://psyco.sourceforge.net/
 Bye,
 bearophile
Sorry, I misspoke slightly. =A0I meant that these languages will never b=
e in the
 same league as D, not that they will never be faster than they are now. =
=A0Of
 course, they can be made *somewhat* faster, but all the fancy stuff they=
do at
 runtime is pretty limiting in terms of performance optimizations.
You might be surprised... http://lua-users.org/lists/lua-l/2009-06/msg00071.html For those who are allergic to reading: Language =A0 =A0 =A0 =A0SciMark score (larger is better) =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
 Lua 5.1.4 =A0 =A0 =A0 =A013.87
 LuaJIT 1.1.x =A0 =A0 89.80
 LuaJIT 2 [1] =A0 =A0425.11
 C [2] =A0 =A0 =A0 =A0 =A0 604.44

 LuaJIT 2 is getting perilously close to C. =A0That's a language with no
 static typing (not even optional), no compile step; it doesn't even have
 classes to help the JIT.

 Here's the thing: tracing JITs can theoretically BEAT C. =A0Why? =A0Becau=
se
 a tracing JIT knows more about the system the program is running on than
 a compiler ever will. =A0It knows which parts of the code are being hit
 the hardest. =A0It can even inline whole inner loops across function and
 module boundaries.

 Saying dynamic languages will never be in the same league as D is just
 ASKING to be proven wrong. =A0:D



 [1] Still under development; that result is from early this month.

 [2] Compiled with GCC 4.3.2 with -march=3Dcore2 -O3 -fomit-frame-pointer
*jaw drop* Daaaamn.
Jun 29 2009
prev sibling next sibling parent reply Rainer Deyke <rainerd eldwood.com> writes:
Daniel Keep wrote:
 Here's the thing: tracing JITs can theoretically BEAT C.  Why?  Because
 a tracing JIT knows more about the system the program is running on than
 a compiler ever will.
Natively compiled C can use JIT techniques under the cover. If a JIT-compiled dynamic language beats C, it will be because the C compiler sucks, not because JIT-compiled dynamic languages are generally fast. -- Rainer Deyke - rainerd eldwood.com
Jun 29 2009
parent BCS <none anon.com> writes:
Hello Rainer,

 Natively compiled C can use JIT techniques under the cover. If a
 JIT-compiled dynamic language beats C, it will be because the C
 compiler sucks, not because JIT-compiled dynamic languages are
 generally fast.
 
Yeah, that whole class of solutions could also be applied to C. It sort of reminds me of the argument for ASM always being fastest because if all else fails, dissemble whatever is beating you and call it your next attempt.
Jun 29 2009
prev sibling parent Walter Bright <newshound1 digitalmars.com> writes:
Daniel Keep wrote:
 Here's the thing: tracing JITs can theoretically BEAT C.  Why?  Because
 a tracing JIT knows more about the system the program is running on than
 a compiler ever will.  It knows which parts of the code are being hit
 the hardest.  It can even inline whole inner loops across function and
 module boundaries.
I've heard that line of reasoning for the last 15 years. Meanwhile, a lot of brilliant people and enormous resources have been poured into trying to make it happen. It's got a very long way to go.
Jul 01 2009
prev sibling next sibling parent "Nick Sabalausky" <a a.a> writes:
"superdude" <superdude superdude.net> wrote in message 
news:h2arpr$asm$1 digitalmars.com...
 As someone who is reading this newsgroup instead of watching a soap opera, 
 I will give you my useless reasons why I have given up on D, completely:

 Lost focus:
 D was intended as a system programming language, at some point the 
 direction changed to a pure functional research toy. No longer intresting 
 for me.
D has always been about combining the low-level abilities of C with higher-level abilities C lacks. D already has the low-level stuff pretty well handled. Improving something on the higher-level does nothing to change that.
 D2 Vapoware:
 Using pure, side effect free, shared nothing, transitiv, functional 
 programming D2 will automatically distribute your program on multiple 
 cores and your programm will run - magically - number of cores times - 
 faster.
 If not, at least D2 will make it possible to write multithreaded programs, 
 easily. Besides this it is still an ideal system programming language. You 
 can use it to build the next operating system. *Show me the results, 
 YESTERDAY!* Unfortunately it will not be compatible with D1, so prepare 
 yourself to rewrite your programs.
You're severely overstating the reality of D1->D2 conversion.
 Library Split:
 "I'm not interested in Tango and in no way I'm going to support it! Phobos 
 is the standard library. Period." - I was looking for such a sentence. Or 
 "Ok, Tango is great. It will replace Phobos. Phobos will only stay for 
 backwards combatibility."
DRuntime should have been allowed into D1, so we don't have to deal with this in the interim before D2 matures. I'll grant that. But at the very least, they're both going to coexist just fine in D2. Sure, it may not be totally ideal, but it works a lot better than most people who have a knee-jerk reaction to "What? Two std libs?" usually think.
 I recognized I'm looking for something different:
 I recognized what I actually want is not D. It is a python or ruby - with 
 the speed of C. I'm aware it does not exist, yet. But actually it is a lot 
 easier and more fun to use Python and write some performance critical 
 stuff in C or C++ than to use D. All this template stuff... For what? Give 
 me a high dynamic language, please.
If you want a dynamic language, why have you ever been paying attention to D? What I want is a static language, but you're not going to see me going over to the Python boards and complaining to them "You're language isn't what I want it to be!".

Umm, how so? Specifics?
 And D is usually slower than C++ or Java...
That's debatable, and yea there are some specific things that are slower but they're being working on. "But D should spending more time working on X, and less time on Y!", Yea and if it did that, then people would start whining the opposite.
 Zealots trolling in the news:
 Sometimes very offending discussions in the forum.
It's a lot better than many forums I've been to.
 Some people show very litle tollerance to different opinions. No one steps 
 in and says: "Stop it, now! It's enough! This is not a forum about XXXXX. 
 It's about the D programming language!".
Discussion-topic police create far more contention and chaos than unhindered discussion does.
 As long as superdan is licking his balls and fucking his mother. -
Oh please, superdan is just a troll. I stopped reading his posts months ago. That in and of itself improves the signal/noise ratio considerably.
 Nothing will change. There will be at least two standard libraries. Who 
 gives a fucking shit! There will never be a a high concurrent D2 - It's 
 the halting problem, you sucker! - only transtitiv const. There will 
 always be funny discussion to read in the forum, etc.
Now you're starting to sound like superdan.
 So long, a thanks for all the fish!
Sorry we couldn't be the dynamic language you wanted us to be. Bye.
Jun 29 2009
prev sibling parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
superdude wrote:
 As someone who is reading this newsgroup instead of watching a soap 
 opera, I will give you my useless reasons why I have given up on D, 
 completely:
Since your reasons were useful to one person at least, they aren't useless. To be completely honest, however, they are all technically inaccurate. In that way, I'm afraid I can't say I am sorry the community is losing your membership. We need an increase in the quality of participation to this newsgroup.
 Lost focus:
 D was intended as a system programming language, at some point the 
 direction changed to a pure functional research toy. No longer 
 intresting for me.
D has been, is, and will be a systems programming language. The fact that it has the keyword "pure" doesn't make it a pure functional research toy. It has acquired functional capabilities for a variety of good reasons. But its system-level abilities have been also improved considerably, and the way they are all integrated is rather remarkable.
 D2 Vapoware:
 Using pure, side effect free, shared nothing, transitiv, functional 
 programming D2 will automatically distribute your program on multiple 
 cores and your programm will run - magically - number of cores times - 
 faster.
Such was not claimed. It is, however, well known that read-only sharing across threads is very safe and fast. It does deserve its place in any language that's serious about concurrency.
 If not, at least D2 will make it possible to write multithreaded 
 programs, easily. Besides this it is still an ideal system programming 
 language. You can use it to build the next operating system. *Show me 
 the results, YESTERDAY!* Unfortunately it will not be compatible with 
 D1, so prepare yourself to rewrite your programs.
How large is your D1 codebase, and how large a part of it is concurrent?
 Conservative Garbage Collection:
 Some of my programs build structures requirering more than 1.5GByte of 
 memory. Conservative Garbage Collections, simply does not work for 32bit 
 programs. Try it for yourself.
I have hit the same issues in my own code, and it is a hindrance. But it's not a showstopper. I did write programs that consume as much memory as the machine has. It takes extra care, but then writing such a program requires care in any language. This is the only reasonable technical point you are making.
 Library Split:
 "I'm not interested in Tango and in no way I'm going to support it! 
 Phobos is the standard library. Period." - I was looking for such a 
 sentence. Or "Ok, Tango is great. It will replace Phobos. Phobos will 
 only stay for backwards combatibility."
Neither sentence is the right one. The right sentence is "Phobos is the standard library and Tango will work with it as well as any other library." There's no "Tango vs. Phobos". You will be able to use either or both in your code, just like you can use C++'s standard library and Berkeley sockets or Qt strings.
 I recognized I'm looking for something different:
 I recognized what I actually want is not D. It is a python or ruby - 
 with the speed of C. I'm aware it does not exist, yet. But actually it 
 is a lot easier and more fun to use Python and write some performance 
 critical stuff in C or C++ than to use D. All this template stuff... For 
 what? Give me a high dynamic language, please.
At this point you are contradicting your earlier point that D is no longer interesting to you because it is not a systems programming language anymore. A highly dynamic language is not a systems programming language.

 than C++ or Java...
"Too less"? I'm starting to have an idea on who superdude is :o). I believe D's offering as a language is already vastly superior to others', but such advantages are hard to see when there's little infrastructure using them. We're working on that.
 Zealots trolling in the news:
 Sometimes very offending discussions in the forum. Some people show very 
 litle tollerance to different opinions. No one steps in and says: "Stop 
 it, now! It's enough! This is not a forum about XXXXX. It's about the D 
 programming language!".
 
 As long as superdan is licking his balls and fucking his mother. - 
 Nothing will change. There will be at least two standard libraries. Who 
 gives a fucking shit! There will never be a a high concurrent D2 - It's 
 the halting problem, you sucker! - only transtitiv const. There will 
 always be funny discussion to read in the forum, etc.
I think the tone of discussions has improved enormously since a couple of years ago. Back then flamewars were the norm, interrupted by short periods of relative peace. But one thing I'd really want is to improve the technical level of the posts; many posts are technically not up to snuff. I'm as annoyed by superdan's language as anyone else, but I have to say that most of the time he has his facts right, unlike, for example, your post. Andrei
Jun 29 2009
prev sibling next sibling parent Clay Smith <clayasaurus gmail.com> writes:
Sjoerd van Leent wrote:
 Lately, I've been tuning in to the development of D again. But what I see is
rather disturbing.
 
 There is a new continuation of the old D, in the newer D2. Personally, I think
this is good, as long as there will be a defined end to D2. What disturbs me
more, is that there appears to be no coherent development.
 
 There are all nice ideas, but it appears that one project dies after the other.
 
 I see a number of problems, which keep D from growing up.
 
 There appears to be a lack of understanding about whom are going to use the
language. D is targeted at the niche of C and C++. Next to D, there are .NET
and Java. These are all competitors. Other popular languages, such as Python
and Ruby, though being non-system languages, have their share as well. As I
look at it, I come to some essential conclusions:
 
 All of these environments have a stable language, and on top of that, ONE
single main library. With C++ this is STL/IOStream, with .NET and Java it's
their respective libraries. Similar for Python and Ruby. With D however, there
are at least 2 main libraries (Phobos and Tango), whereof Tango doesn't support
D2. It is unacceptable for the target audience to find this situation. Tools
can't interoperate, libraries can't interoperate, etc.
 
 There are a lot of ideas for nice tools. But the essential base is missing.
For large projects there is the need for a decent IDE and the need for dynamic
linking. Although attempts are made, it all appears to stall. There is barely
any usable main-purpose library.
 
 As D2 will be finished hopefully not to long from now, especially the
specification, I would really request to start thinking about how to continue.
D is a nice language, with great opportunity. But without management, even when
it is nice, it will fail.
 
 I would like to ask everyone interested in getting D up and running for
main-stream purposes, to sit together and think about solutions.
 
 Anyway, I hope I'm not putting too much poison into the newsgroup, but I
really needed to say this.
I think the major issue with D is the total lack of funding, and by this I mean - Not enough people out there are making money using the D language - No funding from any large open source groups Until more people learn how to get income programming in D and there are job posts asking for D experience, D is destined to be a hobby language only. - Clay
Jun 29 2009
prev sibling next sibling parent reply bearophile <bearophileHUGS lycos.com> writes:
Daniel Keep:
 Language        SciMark score (larger is better)
 ============================
 Lua 5.1.4        13.87
 LuaJIT 1.1.x     89.80
 LuaJIT 2 [1]    425.11
 C [2]           604.44
If you want to do comparisons I have translated SciMark to D, you find timings too inside the zip: http://www.fantascienza.net/leonardo/js/scimark2.zip To beat the JIT2 o LUA you need LDC, because DMD sometimes isn't enough :-) 'nuff said, bearophile
Jul 01 2009
parent Daniel Keep <daniel.keep.lists gmail.com> writes:
bearophile wrote:
 Daniel Keep:
 Language        SciMark score (larger is better)
 ============================
 Lua 5.1.4        13.87
 LuaJIT 1.1.x     89.80
 LuaJIT 2 [1]    425.11
 C [2]           604.44
If you want to do comparisons I have translated SciMark to D, you find timings too inside the zip: http://www.fantascienza.net/leonardo/js/scimark2.zip To beat the JIT2 o LUA you need LDC, because DMD sometimes isn't enough :-) 'nuff said, bearophile
You can't really do a meaningful comparison when you consider that SciMark scores are machine-dependant and that LuaJIT 2 hasn't been released as far as I'm aware.
Jul 01 2009
prev sibling parent reply Kagamin <spam here.lot> writes:
Sjoerd van Leent Wrote:

 All of these environments have a stable language, and on top of that, ONE
single main library. With C++ this is STL/IOStream, with .NET and Java it's
their respective libraries. Similar for Python and Ruby. With D however, there
are at least 2 main libraries (Phobos and Tango), whereof Tango doesn't support
D2. It is unacceptable for the target audience to find this situation. Tools
can't interoperate, libraries can't interoperate, etc.
You can think of Phobos as one single main library for D, Tango is 3rd-party. 3rd-party libraries exist for .net and java, because their standard libs are no silver bullet of course, and there are so many general-purpose libs for C++, that you have not enough fingers to count them, STL is still alive only due to evolves, Java doesn't for the very reason it will wreak the same troubles for backward compatibility D2 has now.
Jul 01 2009
parent reply Sjoerd van Leent <svanleent gmail.com> writes:
Kagamin Wrote:

 Sjoerd van Leent Wrote:
 
 All of these environments have a stable language, and on top of that, ONE
single main library. With C++ this is STL/IOStream, with .NET and Java it's
their respective libraries. Similar for Python and Ruby. With D however, there
are at least 2 main libraries (Phobos and Tango), whereof Tango doesn't support
D2. It is unacceptable for the target audience to find this situation. Tools
can't interoperate, libraries can't interoperate, etc.
You can think of Phobos as one single main library for D, Tango is 3rd-party. 3rd-party libraries exist for .net and java, because their standard libs are no silver bullet of course, and there are so many general-purpose libs for C++, that you have not enough fingers to count them, STL is still alive only due to evolves, Java doesn't for the very reason it will wreak the same troubles for backward compatibility D2 has now.
Yes, however, the runtime of C++ isn't dictated by STL, ATL, WTL, boost, and whatever else. So it is still possible to link the stuff together. Although naming conventions become a first class horror. However, Tango and Phobos (D1) are simply incompatible. It's rather impossible to link both of them together. What I want to say is that with the emergence of D2, and hopefully with the emergence of a singular runtime (druntime), this problem will be over with. If library A is based on Tango and library B on Phobos, currently, it will not be possible to let them work together. I would still like that we all focus on D2 development.
Jul 01 2009
next sibling parent reply "Nick Sabalausky" <a a.a> writes:
"Sjoerd van Leent" <svanleent gmail.com> wrote in message 
news:h2fs94$1q37$1 digitalmars.com...
 However, Tango and Phobos (D1) are simply incompatible. It's rather 
 impossible to link both of them together.

 If library A is based on Tango and library B on Phobos, currently, it will 
 not be possible to let them work together.
Yea, but isn't this less of a problem in practice (even in the interim before a stable D2) than it's often made out to be? Of coruse, I can see how, on paper, it could be a horrible situation. But IMO the current reality is that, and no offence to Walter, but Phobos1 just kind of sucks. And because of that, the vast majority of D1 libs I've seen (at least the still-active ones) are either Tango or dual-version (using conditional compilation).
Jul 01 2009
parent Sjoerd van Leent <svanleent gmail.com> writes:
Nick Sabalausky Wrote:

 "Sjoerd van Leent" <svanleent gmail.com> wrote in message 
 news:h2fs94$1q37$1 digitalmars.com...
 However, Tango and Phobos (D1) are simply incompatible. It's rather 
 impossible to link both of them together.

 If library A is based on Tango and library B on Phobos, currently, it will 
 not be possible to let them work together.
Yea, but isn't this less of a problem in practice (even in the interim before a stable D2) than it's often made out to be? Of coruse, I can see how, on paper, it could be a horrible situation. But IMO the current reality is that, and no offence to Walter, but Phobos1 just kind of sucks. And because of that, the vast majority of D1 libs I've seen (at least the still-active ones) are either Tango or dual-version (using conditional compilation).
I agree that Phobos1 is not what we're looking for. But it makes things confusing to new developers. With serious problems in the long end. I'm just giving a warning that we shouldn't have a similar situation with D2. I think druntime is a good start at getting this solved. As Phobos2 is a lot better anyway, it wouldn't have the problems that currently exist. Basically I've got two hopes: - No confusing library situation for D2 - D2 is final for a longer time, in such a way that software tooling gets a chance I still believe it would help development and bringing D2 to the public.
Jul 02 2009
prev sibling parent Kagamin <spam here.lot> writes:
Sjoerd van Leent Wrote:

 I would still like that we all focus on D2 development.
 
I think, currently focus was given to fixing bugs, most of which D1 and D2 share, so that D1 becomes of higher quality.
Jul 02 2009