January 29, 2015
On 2015-01-28 20:07, Jonathan Marler wrote:

> You seem to be defining a keyword in terms of an identifier that
> is recognized by the compiler to have a special  meaning.

By that definition basically all declarations in the object module is a keyword :)

-- 
/Jacob Carlborg
January 29, 2015
On Wednesday, 28 January 2015 at 15:25:05 UTC, Dicebot wrote:
> On Wednesday, 28 January 2015 at 15:18:44 UTC, Kagamin wrote:
>>> Same goes for possible introduction of new attributes - if syntax for those and UDA is identical, it can break code same as introducing new keywords.
>>
>> Same for any symbol. Do you have a solution?
>
> Long time ago I have proposed to actually define built-it attributes as UDA's in public druntime module. That way any possible conflict can be resolved relatively easy with dfix using module system disambugation (or just hard-code druntime symbols to be legal to shadow by user ones, though that sounds too much of a magic and surprise)

I suppose, when UDA conflicts with builtin attribute, that UDA can be still disambiguated through module system.
January 29, 2015
On 28/01/2015 22:44, "Ola Fosheim =?UTF-8?B?R3LDuHN0YWQi?= <ola.fosheim.grostad+dlang@gmail.com>" wrote:
> Could it be that new languages define grammars that are more robust than
> the one used by C? Like Go?

We're not going to significantly change the structural syntax of D, so it doesn't seem that your argument is particularly relevant here.
January 29, 2015
On Thursday, 29 January 2015 at 13:58:52 UTC, Jacob Carlborg wrote:
> A good language design that doesn't require the ; statement terminator would recognize "void func()" as a valid statement and implicit add ;. Scan the line, if a valid language construct has been seen at the end of the line, insert a ;, if not continue to the next line. That works in many languages.

Tells me what this function returns in javascript :
function foo()
{
  return
  {
    foo: "bar",
  }
}

Yes, you guessed right, it returns undefined. Ho you didn't ? What a surprise !
January 29, 2015
On Thursday, 29 January 2015 at 14:00:16 UTC, Jacob Carlborg
wrote:
> On 2015-01-29 01:19, Walter Bright wrote:
>
>> One of the other mistakes they make is the great idea of implicit
>> declaration of variables, and then ruefully have to deprecate/remove it
>> a year or two later. (How could those experienced designers have missed
>> this obviously great feature?!?)
>
> Ruby has implicit declaration of variables. Ruby it has been around longer than D and are used by far, far more developers.

And it is so bad when the codebase grows that people are willing
to switch to Node.js (!)
January 29, 2015
On Thursday, 29 January 2015 at 17:17:44 UTC, deadalnix wrote:
> On Thursday, 29 January 2015 at 14:00:16 UTC, Jacob Carlborg
> wrote:
>> On 2015-01-29 01:19, Walter Bright wrote:
>>
>>> One of the other mistakes they make is the great idea of implicit
>>> declaration of variables, and then ruefully have to deprecate/remove it
>>> a year or two later. (How could those experienced designers have missed
>>> this obviously great feature?!?)
>>
>> Ruby has implicit declaration of variables. Ruby it has been around longer than D and are used by far, far more developers.
>
> And it is so bad when the codebase grows that people are willing
> to switch to Node.js (!)


That is so yesterday, they are now either on Go or Clojure.
January 29, 2015
On 2015-01-29 18:17, deadalnix wrote:

> And it is so bad when the codebase grows that people are willing
> to switch to Node.js (!)

And still people are using it successfully.

-- 
/Jacob Carlborg
January 29, 2015
On 2015-01-29 16:29, Kagamin wrote:

> I suppose, when UDA conflicts with builtin attribute, that UDA can be
> still disambiguated through module system.

We can always add another @ sign in front of new attributes ;)

-- 
/Jacob Carlborg
January 29, 2015
On Thu, 29 Jan 2015 17:17:44 +0000, deadalnix wrote:

> On Thursday, 29 January 2015 at 14:00:16 UTC, Jacob Carlborg wrote:
>> On 2015-01-29 01:19, Walter Bright wrote:
>>
>>> One of the other mistakes they make is the great idea of implicit declaration of variables, and then ruefully have to deprecate/remove it a year or two later. (How could those experienced designers have missed this obviously great feature?!?)
>>
>> Ruby has implicit declaration of variables. Ruby it has been around longer than D and are used by far, far more developers.
> 
> And it is so bad when the codebase grows that people are willing to
> switch to Node.js (!)

'cause they think that javascript is kind of magic that will turn their shitcode to great code. what they didn't realise is that shitcode lives in their heads, not in languages.

January 29, 2015
On Thu, 29 Jan 2015 14:58:51 +0100, Jacob Carlborg wrote:

> On 2015-01-28 23:27, Walter Bright wrote:
> 
>> For example, people often realize that the ; statement terminator is redundant, so they propose removing it. In trying it, however, it soon becomes clear that error message clarity, recovery, and the correct identification of the location of the error degrades substantially.
>>
>> So consider:
>>
>>      void func()
>>      safe T = 7;
>>
>> With your proposal, an error isn't discovered until the '=' is found.
> 
> A good language design that doesn't require the ; statement terminator would recognize "void func()" as a valid statement and implicit add ;. Scan the line, if a valid language construct has been seen at the end of the line, insert a ;, if not continue to the next line. That works in many languages.

this never worked good. see deadalnix. or:

  foo.bar
    .zed

is `.zed` a chained call or free call? oh, well, build symbol table to find that? and what if we have free function `zed` and a method `zed`?

there can be alot of such samples. implicit `;` never worked right in grammars that allows arbitrary newlines. such grammars requires explicit "end-of-sentence" signs to be parsable without ambiguities on almost each code line.