Unofficial wish list status.(Jul 2008)

Fawzi Mohamed fmohamed at mac.com
Tue Jul 22 04:46:44 PDT 2008


On 2008-07-22 08:06:12 +0200, Sean Kelly <sean at invisibleduck.org> said:

> Walter Bright wrote:
>> Sean Kelly wrote:
>>> I think part of the problem is that I simply don't agree with the mixed
>>> functional / imperative approach that appears to be the overarching
>>> direction of D.
>> 
>> No other language has tried such an approach before, and so we have yet 
>> to know unequivocably if it is right or not. But I'm very optimistic 
>> about it.
> 
> I'm hopeful, just not optimistic :-)

There are other attempts at multi-paradigm programming languages, it is 
true that these are not system programming languages.
	Mozart/Oz http://www.mozart-oz.org/
is an interesting attempt, and the book by Van Roy and Haridi that uses 
it (Concepts, Techniques, and Models of Computer Programming)
	http://www.amazon.com/Concepts-Techniques-Models-Computer-Programming/dp/0262220695
is 

a very interesting read.

>>> And while I do quite a bit of concurrent programming,
>>> it's not in a way that will reap any benefit from this design.  In fact, the
>>> language features added to support it are more of an annoyance than
>>> they are an aid.  This may very well mean that D is simply not the
>>> language for me in the long term.  However, with C and C++ as the
>>> only real alternatives for systems programming, there aren't many
>>> other options available.

I tried to work in a mixed language approach (python/C) and my 
productivity went down, I even missed fortran!
I think that when you have a fixed interface or a clear problem then it 
might be ok, but if you are developing in place where it is not so 
obvious where to cut things, and you switch implementation, and the 
"reference" implementation in the high level language is so unbearably 
slow that you cannot really use it even as test in the complex case, it 
becomes messy, and you loose a lot of time.
I have only slightly brushed erlang, I didn't make any large scale 
projects with it, but I suspect the issues are similar.

So I like very much the idea of a multi-paradigm language, if done 
well, and I like the idea of having a functional kernel in the language.
Functional languages have to work harder to bring back some of the 
expression power, and the result is that they work very well when 
combining simpler building blocks, and are a real boon at high level, 
but I do not belive in "automatic" parallelization through it.
Parallelization comes from the use of parallel constructs, and there are

>> There are several different paradigms for concurrent programming. D 
>> won't be forcing one paradigm on anyone, it's sort of like oop vs free 
>> functions. They both work, and you can mix & match them as desired.
> 
> See my other post regarding managing projects in C++.

Yes having multiple paradigms can be a mess especially if the 
programming language is not clean and does not try to be as compact as 
possible and also know when to give up a little performance this is non 
obvious, but, I think, possible (I did large projects in C++, and I 
think the problem was not mutiparadigm per se, but how it is presented 
also due to legacy issues, and the unwillingness to make some clear 
choices).
Also many of the things one might want can be very well implemented in 
libraries, and should be done like that.
I have enough discipline to choose the right approach, I definitely 
want a language that support this, and it is one of the reasons I came 
to D, I think that with some work, it might support all that I want, 
which is templates, multithreading, so that I can set up my generic 
work distributing schemes, MPI if available, and Erlang actor model 
(which I think will become more and more important, and should be used 
when possible).

Fawzi




More information about the Digitalmars-d mailing list