4 ms·
Not very convincing. Those who try to fix C/C++ with a "nicer" declaration syntax always fail unless they just copy C/C++. So what's so special about C-style d
by mojuba 19y ago
Not very convincing.
Those who try to fix C/C++ with a "nicer" declaration syntax always fail unless they just copy C/C++. So what's so special about C-style declarations?
int a[10];
vs.
int[] a;
The first is more natural, since you are going to apply the index operator [] to a later on, many times. This is purely psychological. This shows that our understanding of "regularity" and "relevance" of a formal syntax may be against our instincts.
- Goladus 19y agoThe problem with the first one is that what you are declaring is effectively a const pointer named 'a' to 10 consecutive memory locations allocated for the size of int. The second is a declaration of a variable-length array named a. So, for example, you can't do this: int a[10]; int b[10]; a=b; You get a type error, or an lvalue error, because you can't assign anything to a constant.
- mojuba 19y agoGood point, but still, you can apply operator [] to a and b in some non-C dynamic language, which means the "int a[]" style is probably more relevant psychologically.
- Goladus 19y agoI agree that int a[10] feels more natural, though if the brackets are empty my only preference is that the language pick one or the other. Don't make "int[] a;" and "int a[];" equally valid syntax, but totally different semantics. My main point is that this is a relatively cosmetic issue relative to the ability to use 'foreach' syntax instead of iterator objects and while loops.
- mojuba 19y agoC++0x addresses those things -- foreach etc. There's clearly a market for some sort of a fixed C++ but not the Java/C# way. D tries to fill the niche, but it doesn't give a feeling of elegance or otherwise of something really new and unseen before.
- geek42 19y agoThe article only mentions a few of D's features. There are a lot more improvements. The templating system for instance is quite innovative. http://www.digitalmars.com/d/templates-revisited.html http://www.digitalmars.com/d/templates-revisited.html Variadic Templestes: http://www.digitalmars.com/d/variadic-function-templates.html http://www.digitalmars.com/d/variadic-function-templates.htm... But there are other things as well like the lazy evaluation, and built in contract and unit test support. Ave a look at the articles on this page http://www.digitalmars.com/d/ http://www.digitalmars.com/d/ And the specifications http://www.digitalmars.com/d/lex.html http://www.digitalmars.com/d/lex.html
- mojuba 19y agoTemplates in D look like just a syntactically polished variation of C++ templates. Of course there are some new features there, but I don't see anything that can't be done with a compiler that is capable of evaluating some functions at compile-time. C++ can't do that, but my point is, why bother creating such a complicated template system for something that can be done the easy way? Variadic templates: can be done with variant arrays and again, with smart compile-time evaluation if necessary.