A gentle critque..

Don Clugston dac at nospam.com.au
Tue May 16 05:20:18 PDT 2006


Paulo Herrera wrote:
> Bill Baxter wrote:
>> In article <e4brql$1ihs$1 at digitaldaemon.com>, BCS says...
>>> In article <e4baj5$aut$1 at digitaldaemon.com>, Walter Bright says...
>>>> BCS wrote:
>>>>> What do ya think new D users would think about a converter that 
>>>>> does 100% correct convention of a sub set (+10%) of C (and maybe 
>>>>> cpp) code? Say just global function prototypes, structs typdefs (c 
>>>>> style) and anything else that would be easy to get right. Some of 
>>>>> the stuff (in C, the most common stuff) translates directly, and 
>>>>> shouldn't be that bad to translate.
>>>> There is always something in each header that is not translatable :-(
>>> But with any luck you wont need that part most of the time. What I'm 
>>> suggesting
>>> is a tool that does a best effort translation generating a header for 
>>> parts that
>>> can always be done (file scope function, simple structs, global 
>>> variables of
>>> common types, etc.) in other words, the bulk of most C headers.
>>
>> Note that that's already how SWIG works pretty much.  It doesn't have 
>> a full C++
>> parser, but it can parse and generate wrappers for a lot of simple C++ 
>> code just
>> by including the header.  It's not going to work for wrapping 
>> wxWidgets or
>> something like that, but it is useful to have.
>>
>> There has also been talk in the SWIG mailing lists about generating C 
>> wrappers
>> from C++ code.  Don't think anyone is actively working on it, but 
>> there is
>> interest in such a thing out there.  That could be useful for D 
>> purposes too.
>> With a little work it could lead to the ability to use any 
>> SWIG-wrapped C or C++
>> code from D.  It's a thought for an alternative to trying to write a 
>> C++ to D
>> translator type thing.
>>
>> Finally about whether it's worth it to be able to call C++ code, I'd 
>> like to
>> point to the example of Fortran.  It was superceded by better 
>> languages with
>> better syntax many many years ago, but people still use it.  I hear a 
>> lot of
>> people saying "we're better off without all that old junky C++ code 
>> anyway".
>> But the fact of the matter is that nobody in the real world has the 
>> time or
>> budget to go back and rewrite all their old code (that already works 
>> and has
>> been debugged) just because it would be easier to read in a new 
>> language.  Most
>> numerical work is still based on lots of legacy fortran code, even if 
>> the front
>> end code is now written in C or C++ or Python or what have you.   It 
>> just makes
>> no sense to rewrite gobs and gobs of stuff that works.
>>
>> Gotta go so there's no time to finish my point, but there are some 
>> interesting
>> parallels in this debate with the migration away from Fortran, I think. 
>> Bill Baxter
> Hi everybody,
> This is my first post to this mailing list.
> 
> About the Fortran example
> -------------------------
> I think the Fortran example is a bad one. Which better languages were 
> available long time ago? C or C++? Do you think C or C++ have a clean 
> syntax? I don't think so, that's why I've been exploring D.
> There are a lot of C (e.g. GSL, PETSc) and C++ (e.g. ITL, Blitz++) 
> numerical libraries, so I don't think that is the main reason people 
> still use Fortran.
> 
> I'm a scientist that have to write numerical codes. 

Welcome! There are quite a few of us here already.

I've been searching
> for a better language (combination of languages) than Fortran for some 
> time. I've used Fortran+F2PY+Python, C++, Python+SWIG+C++, and Java to 
> write code. None of those alternatives to replace Fortran were 
> completely satisfactory. One of the reasons is that Fortran is very good 
> at doing number crunching. It's very fast, it includes array operations, 
> and it is easy to learn.

And Fortran takes numerics seriously. Unlike almost all of the more 
recent languages. D is the only recent general-purpose language I know 
of that takes numerics seriously (that's what initially attracted me to it).

> However, Fortran95 (as standard) lacks other tools, such as: conditional 
> compilation, unit testing, true OO programming, command line arguments 
> (that was only fixed in the new 2003 standard), etc. To me those are the 
> most interesting D's features. In fact, I think D features make it a 
> terrific alternative to Fortran. however, there are a couple of things 
> that would make it even better: array operations (it's in Walter's 
> plans) and OpenMP support.
> 
> About using different languages
> -------------------------------
> I understand that some times is useful to be able to program using a 
> combination of languages. However, those cases should be the exception 
> if you want to take advantage of a better language features. Mixing 
> languages always adds problems and, in my opinion, makes difficult to 
> have a clear design. As example, you can check how difficult has been 
> creating a good SWIG interface for C++ or the problems of the maintainer 
> of F2PY (Fortran to python interface generator) to support new compilers.
> 
> I think D already has a very easy way (probably the easiest with the 
> exception of C++) to communicate with C if needed. Why to spend more 
> valuable time improving that?
> 
> About native libraries
> ----------------------
> I think the way to go is to create QUALITY native D libraries. I think 
> we usually overestimate the cost of porting/developing native libraries.

I agree. When porting a library
(a) there isn't any algorithm development (not much 'thinking' time 
required);
(b) it's very easy to test (you can run test cases against the original 
version);
(c) the D version is frequently greatly superior to the original.

D is a fantastic language for writing libraries in. IMHO, if we had even 
a small number of libraries with solid unit test coverage, everything 
else would start to look obsolete very quickly.

> As example, this weekend I played to create a native XML SAX parser. In 
> a couple of hours I had a useful version. I'm not sure if it was 
> easier/shorter to link to a C library (that was my first idea).
> 
> I think D main problem is the lack of good quality (documented) native 
> libraries. More than 80% of project at www.dsource.org are unmaintained 
> and/or don't have documentation. Therefore, collaborating in or using 
> those projects is impossible. In my opinion libraries and good quality 
> documentation are the main reasons of the success of Python and Java.

And .NET too.

> 
> About writing a native XML library
> ----------------------------------
> If someone is interested in creating native SAX and DOM XML libraries 
> please drop me an email. By the way, XML is another effective way to 
> communicate (actually, exchange data) between different languages.
> 
> I apologize if part of this email is off topic in this thread.
 > Paulo.

Right on topic, I would say.
-Don.



More information about the Digitalmars-d mailing list