Şimdiye kadar yapılan tüm büyük cevaplara ek olarak:
Bir "gözlemci önyargınız" var. Böcekleri gözlemlemiyorsunuz ve bu nedenle hiç olmadığını varsayıyorsunuz.
Senin gibi düşünürdüm. Sonra derleyicileri profesyonelce yazmaya başladım ve size söyleyeyim, içeride çok fazla böcek var!
Hataları görmüyorsunuz, çünkü insanlar yazdığınız kodun geri kalanının% 99.999'u gibi bir kod yazıyorsunuz. Muhtemelen tamamen normal, anlaşılır ve net bir şekilde doğru kod yazıyorsunuz, bu da yöntemleri çağırıyor ve döngüleri çalıştırıyor ve normal veya işle ilgili problemleri çözen normal bir geliştirici olduğunuz için fantezi veya tuhaf bir şey yapmıyor.
Herhangi bir derleyici hatası görmüyorsunuz, çünkü derleyici hataları, basit normal kod senaryolarının analizi kolay değildir; Hatalar, yazmadığınız tuhaf kodların analizinde.
Öte yandan, karşıt gözlemci önyargısına sahibim. Her gün bütün gün çılgın kod görüyorum ve bu yüzden bana derleyiciler hatalarla dolu gözüküyor.
Herhangi bir dilin dil spesifikasyonuna uyduysanız ve bu dil için herhangi bir derleyici uygulaması yaptıysanız ve gerçekten derleyicinin tam olarak uygulayıp uygulamamayı, karanlık köşe vakalarına yoğunlaşarak karar vereceğinizi belirlemek için çok çaba sarf ettiyseniz derleyici sık sık hata veriyor. Size bir örnek vereyim, işte tam anlamıyla beş dakika önce bulduğum bir C # derleyicisi hatası.
static void N(ref int x){}
...
N(ref 123);
Derleyici üç hata veriyor.
- Bir ref veya out argümanı atanabilir bir değişken olmalıdır.
- N (ref int x) için en iyi eşleşmenin geçersiz argümanları var.
- 1. argüman üzerinde "ref" eksik.
Açıkçası, ilk hata mesajı doğrudur ve üçüncüsü bir hatadır. Hata üretme algoritması, ilk argümanın neden geçersiz olduğunu anlamaya çalışıyor, ona bakıyor, sabit olduğunu görüyor ve "ref" olarak işaretlenip işaretlenmediğini kontrol etmek için kaynak koduna geri dönmüyor; bunun yerine, bir sabiti ref olarak işaretlemek için yeterince aptalca olamayacağını ve ref'nin eksik olması gerektiğine karar verdiğini varsayar.
Doğru üçüncü hata mesajının ne olduğu belli değil, ama bu değil. Aslında, ikinci hata mesajının da doğru olup olmadığı açık değildir . Aşırı yüklenme çözünürlüğü arızalanmalı mı, yoksa "ref 123" doğru tipte bir argüman olarak değerlendirilmeli midir? Şimdi biraz düşünmem ve doğru davranışın ne olduğunu belirleyebilmemiz için triyaj ekibiyle konuşmam gerekecek.
Bu hatayı hiç görmediniz, çünkü muhtemelen 123'ü ref ile geçmeye çalışmak kadar aptalca bir şey yapmazsınız. Ve yaptıysanız, muhtemelen ilk hata mesajının saçma sapan olduğunu farketmezsiniz, çünkü ilki doğru ve sorunu teşhis etmek için yeterlidir. Ama böyle şeyler yapmaya çalışıyorum çünkü derleyiciyi kırmaya çalışıyorum . Eğer deneseydin, böcekleri de görürsün.