Anche se non è esattamente la stessa cosa, questo è il motivo per cui l'HTML è diventato il disastro. I browser hanno tollerato un brutto markup e la prossima cosa che sapevi, il browser A non poteva renderlo allo stesso modo del browser B (sì, ci sono altri motivi, ma questo era uno dei primi, esp circa 10 anni fa prima che alcune delle regole sciolte diventassero delle convenzioni ).
Come sostiene Eric Lippert, molte di queste cose sono gestite al meglio dall'IDE, non dal compilatore. Vediamo cosa stanno cercando di rovinarti i bit automatici.
La strategia che penso sia predominante ora è il raffinamento del linguaggio continuo invece di allentare il compilatore: se è veramente qualcosa che il compilatore può capire automaticamente, quindi introdurre un linguaggio ben definito attorno ad esso.
L'esempio immediato che mi viene in mente è l'auto-proprietà in C # (non l'unico linguaggio che ha qualcosa di simile): Dato che la maggior parte dei getter / setter in qualsiasi app sono in realtà solo wrapper attorno a un campo, basta consentire allo sviluppatore per indicare il loro intento e lasciare che il compilatore inietti il resto.
Quindi mi viene da pensare: la maggior parte dei linguaggi in stile C già fa questo in una certa misura. Per cose che possono essere capite automaticamente, basta rifinire la sintassi:
if (true == x)
{
dothis();
}
else
{
dothat();
}
Può essere ridotto a:
if (true == x)
dothis();
else
dothat();
Alla fine, penso che si tratti di questo: la tendenza è che non si rende il compilatore "più intelligente" o "più lento". È la lingua che viene resa più intelligente o più flessibile.
Inoltre, troppo "aiuto" può essere pericoloso, come il classico bug "se":
if (true == x)
if (true == y)
dothis();
else
dothat();