Kontrollü deneylerden sadece üçü pratik öneme sahip olacak kadar büyük bir etki göstermektedir. C, C ++, Java, Perl, Python, Rexx ve Tcl'yi karşılaştıran Prechelt çalışması; Java ve Dart'ı karşılaştıran Endrikat çalışması; ve Cooley'nin VHDL ve Verilog ile olan deneyi. Ne yazık ki, hepsinde gerçekten güçlü bir sonuç çıkarmayı zorlaştıran konular var.
Prechelt çalışmasında, nüfuslar dinamik ve yazılı diller arasında farklıydı ve görevlerin koşulları da farklıydı. Lispers'ı, kendi çözümlerini bulmaya davet ederek, Darius Bacon gibi insanların rastgele öğrencilerle karşılaştırılmasını içeren bir örnekleme çalışması yapıldı. İzlemenin takibi, kelimenin tam anlamıyla Peter Norvig ile kod arasında rastgele üniversite öğrencilerinin kodlarının karşılaştırılmasını içerir.
Endrikat çalışmasında, özellikle statik yazmanın bir fark yaratacağını düşündükleri bir görev seçtiler ve konularını herkesin statik olarak yazılmış dili kullanarak ders aldığı bir popülasyondan çektiler. Öğrencilerin dinamik olarak yazılmış bir dilde deneyime sahip olup olmadıkları hakkında yorum yapmazlar, ancak dinamik olarak yazılmış bir dilde en çok veya daha az deneyime sahip olduğunu varsaymak güvenli görünmektedir.
Cooley'nin deneyi, insanları öğrenci olmayan bir popülasyondan çeken birkaç kişiden biriydi. Ancak, diğer tüm deneylerde olduğu gibi, görev önemsiz bir oyuncak görevidir. VHDL (statik dil) katılımcılarının hiçbirinin bu görevi zamanında tamamlayamamış olması çok üzücü gözükse de, bir okul projesinin dışında 1,5 saat içinde bir donanım tasarımını bitirmek çok nadirdir. Büyük bir görevin daha küçük görevlere bölünebileceğini iddia edebilirsiniz, ancak makul bir karşı koyma VHDL kullanarak birçok görevde itfa edilebilecek sabit maliyetlerin olduğunu söyler.
Deneylerin geri kalanı ile ilgili olarak, onlardan elimde olan ana paket, çalışmalarda açıklanan belirli koşullar altında, eğer varsa, herhangi bir etkinin küçük olmasıdır.
Örnek olay incelemelerine geçildiğinde, iki hata bulma olay incelemesi ilginç okumalar yapar, ancak türler için veya aleyhte dava açmazlar. Birincisi, Python programlarının Haskell'e kopyalanmasının, hat kapsamı yönelimli ünite testlerinde bulunamayan sıfır olmayan, bilinmeyen şiddette bir hata sayısı bulacağını göstermektedir. Erlang gazetelerinin çifti, statik analiz kullanarak, bazıları ciddi olan herhangi bir test sırasında bulması zor olan bazı hataları bulabileceğinizi gösteriyor.
Bir kullanıcı olarak, ayrı statik analiz araçlarını çalıştırmadan önce derleyicim bana bir hata verdiğinde uygun buluyorum, ancak yukarıda listelenen kontrollü çalışmaların etki boyutundan daha küçük, hatta küçük.
0install örnek olay incelemesini (çeşitli dilleri Python'la karşılaştıran ve sonunda Ocaml'a yerleşti) karşılaştığım en ilginç şeylerden biri olarak buldum, ancak bu, herkesin farklı şekilde yorumlayabileceği, bakarken görebileceğiniz türden öznel bir şey. .
Bu benim sahip olduğum izlenimime uyuyor (dünyanın küçük köşesinde ACL2, Isabelle / HOL ve PVS en çok kullanılan ispatlar ve insanların endüstride problem çözerken daha fazla otomasyon tercih etmeleri mantıklı geliyor), ama bu ayrıca öznel.
Ve sonra mevcut projelerden veri madenciliği yapan çalışmalar var. Ne yazık ki nedensellik belirlemek için bir şey yapan kimseyi bulamadım (örneğin uygun bir enstrümantal değişken bulmak), bu yüzden sadece korelasyonları ölçtüler. Korelasyonların bazıları beklenmedik ama nedenini belirlemek için yeterli bilgi yok.
Daha fazla keşfedilmeden potansiyel olarak ilginç veriler sunan tek veri madenciliği çalışması, Smallshire'un Python hatalarını incelemesidir, ancak çalışmasının gerçekte ne anlama geldiğini anlamak için metodoloji hakkında yeterli bilgi yoktur ve araştırmaya neden aradığını ima ettiği açık değildir. verileri sunmadan diğer diller için veriler3.
Çalışmalardan kayda değer bazı eksiklikler, deneyimli programcıları kullanan kapsamlı çalışmalardır, tek başına büyük “iyi” veya “kötü” programcı popülasyonuna sahip olan çalışmaları, önemli bir projeye yaklaşan herhangi bir şeye bakmayı (üç aylık bir projeye yaklaşırken) küçük kabul edilir, ancak kontrollü bir çalışmada kullanılan herhangi bir projeden daha büyük büyüklük dereceleridir), “modern” statik olarak yazılmış dilleri kullanarak, kademeli / isteğe bağlı yazmayı kullanarak, modern ana IDE'leri (VS ve Eclipse gibi) kullanarak, modern radikal IDE'leri kullanarak (LightTable gibi), eski okul editörlerini kullanarak (Emacs ve vim gibi), önemsiz olmayan bir kod tabanında bakım yapmak, gerçekçi bir ortama benzer herhangi bir şeyle bakım yapmak, zaten aşina olduğunuz bir kod tabanında bakım yapmak, vb.
Bu çalışmalarla ilgili internette yorum yaparsanız, çoğu bir bakış açısını ya da diğerini haklı çıkarmak için etrafta geçirilir. Dinamik ve statik ile ilgili Prechelt çalışması, Lisp'in takipleri ile birlikte, dinamik dil savunucularının çok yıllık favorileridir ve github madenciliği çalışması, son zamanlarda fonksiyonel programcılar arasında popüler olmuştur.