[ ArgumentList ] vs. @( ArgumentList )

foobar foo at bar.com
Wed Nov 7 08:00:08 PST 2012


On Wednesday, 7 November 2012 at 08:36:49 UTC, Jacob Carlborg 
wrote:
> On 2012-11-06 22:53, Walter Bright wrote:
>
>> C++11 has had problems adding new keywords, as about every 
>> identifier
>> somewhere has been used by someone's C++ source code, and they 
>> don't
>> want to break existing code. So C++11 winds up with awful 
>> things like
>> "decltype".
>
> Just create a new attribute, call it "builtin" or something 
> similar, which takes attributes as arguments, i.e.
>
> @builtin(shared) int a;
> @builtin(property) int b;
>
> I'm not suggesting that we should change the existing @shared 
> and @property, I just used them as an example.

I honestly don't get why we keep reinventing the concept of 
namespaces.
I agree with Jonathan regarding the identifier look-up rules in D.
"std.algorithm.find" really should be *the default* unless the 
user specifically aliases that to "find" whereas now we have the 
exact opposite. But even without this we still should use D's 
already existing namespace solution - *the module system*. We 
should take a lesson from other platforms such as Java and .NET 
where everything is neatly organized. Let's stop this global 
identifiers nightmare!

On that note, here's some things we *should not do*:
- put unrelated random stuff in object.d
- add more redundant ways to define namespaces such as 
__identifier, builtin(identifier), @attribute(identifier), 
@identifier, etc, etc..
- add more @keywords because they conflict with global 
identifiers.
- have _huge_ single modules in Phobos that contain everything 
and ythe kitchen sink. I still hate with passion the 
"std.algorithm" "module". It's like opening a shop called "A 
Shop" or naming a newspaper "Newspaper".

Proper organization is not inherently evil and we should not 
complicate the language design to compensate our current 
sloppiness.


More information about the Digitalmars-d mailing list