D and the world

Robert Fraser fraserofthenight at gmail.com
Tue Apr 24 20:31:43 PDT 2007


Walter Bright Wrote:

> Don Clugston wrote:
> > I think Nemerle will suffer from this. IMHO, being able to define 'for' 
> > in the language itself, has no benefit in practice; the set of useful 
> > control constructs is very well known. If it's useful to everyone, it 
> > should be rigidly controlled by the language; otherwise you get 
> > confusion and incompatibility.
> > I suspect that in D, metaprogramming will be used almost exclusively for 
> > domain-specific languages.
> 
> I agree that too much flexibility in a language is a bad thing. Imagine 
> if you could redefine everything in D. Taken to the limit, that means 
> that every random sequence of characters could be a valid program! This 
> is just not useful.
> 
> C++ suffers from this problem somewhat with the preprocessor. The 
> problem is recognized, and C++ programs that do things like:
>     #define BEGIN {
>     #define END }
> are frowned upon.
> 
> Back in the 80's when people wrote a lot of assembler, MASM had a fairly 
> powerful preprocessor. Lots of people essentially invented their own 
> languages, that preprocessed down to assembler. Microsoft shipped one of 
> these as an include file with MASM.
> 
> Lots of people found it impenetrable. A friend of mine had a lot of 
> difficulty with it, and finally resolved the problems by assembling the 
> code with MASM, running OBJ2ASM on the result, and then using OBJ2ASM's 
> output as his new source code. *Then* he understood what was going on <g>.
> 
> A language needs to have common reference points, some reliable 
> touchstones that people can look at and say "I understand that". It's 
> why D, for example, has the debug statements. Sure, you can do the same 
> thing with version and other constructs. But if you've managed C++ code 
> for a while, everybody comes up with a different way of doing #ifdef 
> DEBUG, all different, but all functionally about the same. It just 
> causes problems when combining projects. So by wiring a debug statement 
> in to the compiler, one encourages a common way of doing the common task.
> 
> The same goes for unit tests.

So, no obfuscated D code contest?



More information about the Digitalmars-d mailing list