Chociaż nie do końca to samo, właśnie dlatego HTML zmienił się w katastrofę. Przeglądarki tolerowały złe znaczniki i następna rzecz, o której wiesz, że przeglądarka A nie mogła renderować w taki sam sposób, jak przeglądarka B (tak, są inne powody, ale była to jedna z niewielu, szczególnie około 10 lat temu, zanim niektóre zasady dotyczące luźności stały się konwencją ).
Jak podaje Eric Lippert, wiele z tych rzeczy najlepiej obsługiwać IDE, a nie kompilator. To pozwala zobaczyć, co automatyczne bity próbują dla ciebie zepsuć.
Myślę, że obecnie dominującą strategią jest ciągłe doskonalenie języka zamiast rozluźniania kompilatora: jeśli naprawdę jest to coś, co kompilator może automatycznie zrozumieć, to wprowadź wokół niego dobrze zdefiniowaną konstrukcję językową.
Bezpośrednim przykładem, który przychodzi mi na myśl, są właściwości automatyczne w języku C # (nie jest to jedyny język, który ma coś podobnego): Biorąc pod uwagę, że większość programów pobierających / ustawiających w dowolnej aplikacji to tak naprawdę opakowania wokół pola, po prostu pozwól programistom wskazać ich i niech kompilator wstrzykuje resztę.
Co skłoniło mnie do myślenia: większość języków w stylu C już to robi. W przypadku rzeczy, które można ustalić automatycznie, po prostu popraw składnię:
if (true == x)
{
dothis();
}
else
{
dothat();
}
Można zredukować do:
if (true == x)
dothis();
else
dothat();
Ostatecznie myślę, że sprowadza się to do tego: trend polega na tym, że nie czynisz kompilatora „inteligentniejszym” ani „luźniejszym”. To jest język, który jest mądrzejszy lub luźniejszy.
Poza tym zbyt duża „pomoc” może być niebezpieczna, na przykład klasyczny błąd „jeśli”:
if (true == x)
if (true == y)
dothis();
else
dothat();