Meskipun bukan hal yang sama, inilah sebabnya HTML berubah menjadi bencana. Peramban mentolerir markup yang buruk dan hal berikutnya yang Anda tahu, peramban A tidak dapat merender dengan cara yang sama seperti Peramban B (ya ada alasan lain, tetapi ini adalah salah satu dari sedikit yang teratas, terutama sekitar 10 tahun yang lalu sebelum beberapa aturan kelonggaran menjadi konvensi) ).
Seperti Eric Lippert menyimpulkan, banyak dari hal-hal ini paling baik ditangani oleh IDE, bukan kompiler. Agar Anda dapat melihat apa yang bit otomatis coba lakukan untuk Anda.
Strategi yang saya pikir paling dominan sekarang adalah perbaikan bahasa terus-menerus alih-alih melonggarkan kompiler: Jika itu benar-benar sesuatu yang dapat dikompilasi oleh kompiler secara otomatis, maka perkenalkan konstruksi bahasa yang didefinisikan dengan baik di sekitarnya.
Contoh langsung yang muncul dalam pikiran adalah properti-otomatis dalam C # (bukan satu-satunya bahasa yang memiliki sesuatu yang serupa): Mengingat bahwa sebagian besar pengambil / setter dalam aplikasi apa pun benar-benar hanya pembungkus di sekitar bidang, cukup izinkan pengembang untuk menunjukkan mereka maksud dan biarkan kompiler menyuntikkan sisanya.
Yang kemudian membuat saya berpikir: Kebanyakan bahasa gaya C sudah melakukan ini sampai batas tertentu. Untuk hal-hal yang dapat dipecahkan secara otomatis, cukup perbaiki sintaksnya:
if (true == x)
{
dothis();
}
else
{
dothat();
}
Dapat direduksi menjadi:
if (true == x)
dothis();
else
dothat();
Pada akhirnya, saya pikir turun ke ini: Trennya adalah Anda tidak membuat kompiler "lebih pintar" atau "lebih longgar". Ini adalah bahasa yang dibuat lebih pintar atau lebih longgar.
Selain itu, terlalu banyak "bantuan" bisa berbahaya, seperti bug klasik "jika":
if (true == x)
if (true == y)
dothis();
else
dothat();