D development process [was: Stroustrup's talk on C++0x]

Leandro Lucarella llucax at gmail.com
Thu Aug 30 06:19:00 PDT 2007


Walter Bright, el 30 de agosto a las 00:07 me escribiste:
> >>dead language.
> >I mean changes in languages which break compatibility with previous code. AFAIK, successful 
> >languages always had some periods (usually 2-3 years, sometimes more) when there were no additions 
> >to language and new major version didn't break existing code (for example: Java, C#, Ruby, Python, 
> >even C++ sometimes).
> 
> C++ has been around for 20+ years now. I'll grant that for maybe 2 of those years (10%) it was 
> stable. C++ has the rather dubious distinction of it being very hard to get two different compilers 
> to compile non-trivial code without some sort of code customization needed. As evidence of that, 
> just browse the STL and Boost sources. While the C++ standard has been stable for a couple years 
> (C++98, C++03), it being nearly impossible to implement has meant the implementations have been 
> unstable.
> 
> For example, name lookup rules vary significantly *today* even among the major compilers. I 
> regularly get bug reports that DMC++ does it wrong, even though it actually does it according to 
> the Standard, and it's other compilers that get it wrong.
> 
> On the other hand, when C++ has been stable, it rapidly lost ground relative to other languages. 
> The recent about face in rationale and flurry of core language additions to C++0x is evidence of 
> that.
> 
> I haven't programmed long term in the other languages, so don't have a good basis for commenting on 
> their stability.

Forget about C++ for a second. Try with Python. It is an stable, or at
least *predictable* language. It's evolution is well structured, so you
know you will have no suprises, and you know the language will evolve.

Python is *really* community driven (besides the BDFL[1] ;). It has a
formal proposal system to make changes to the language: PEPs[2]. When a
PEP is aproved, it's included in the next version and can be used
*optionally* (if it could break backward compatibility). For example, you
can use now the "future" behavoir of division:
>>> 10/3
3
>>> from __future__ import division
>>> 10/3
3.3333333333333335

In the next python version, the new feature is included without need to
import __future__, and the old behavior is deprecated (for example, with
libraries, when something changes, in the first version you can ask for
the new feature, in the second the new feature is the default but you can
fallback to the old behavior, and in the third version teh old behavior is
completely removed).

[1] http://en.wikipedia.org/wiki/BDFL
[2] http://www.python.org/dev/peps/

> I have been programming in C++ since 1987. It's pretty normal to take a C++ project from the past 
> and have to dink around with it to get it to compile with a modern compiler. The odds of taking a 
> few thousand lines of C++ pulled off the web that's set up to compile with C++ Brand X are about 0% 
> for getting it to compile with C++ Brand Y without changes.

You are talking about 20 years. D evolves in a daily basis and the worst
is that this evolution is without any formal procedure. Forking D 2.0 was
a huge improvement in this matter, but I think there's is more work to be
done so D can success as a long term language (or at least to be trusted).

Another good step forward this could be to maintain phobos (or whatever
the standard library would be :P) as an open source project. You can
create a repository (please use git! :) so people can track its
development and send patches easier. Same for the D frontend. It's almost
impossible for someone who is used to colaborate in open source projects
to do it with D. And that's a shame...

-- 
Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/
 .------------------------------------------------------------------------,
  \  GPG: 5F5A8D05 // F8CD F9A7 BF00 5431 4145  104C 949E BFB6 5F5A 8D05 /
   '--------------------------------------------------------------------'
Pa' ella cociné, pa' ella lavé, pa' ella soñe
Paella completa, $2,50
Pero, la luz mala me tira, y yo? yo soy ligero pa'l trote
La luz buena, está en el monte, allá voy, al horizonte



More information about the Digitalmars-d mailing list