Zwolennicy funkcjonalnych języków programowania twierdzą, że programowanie funkcjonalne ułatwia rozumowanie kodu. Zwolennicy języków typowanych statycznie twierdzą, że ich kompilatory wychwytują wystarczającą liczbę błędów, aby zrekompensować dodatkową złożoność systemów typów. Ale wszystko, co czytam na te tematy, opiera się na racjonalnych argumentach, a nie na danych empirycznych.
Czy są jakieś badania empiryczne dotyczące wpływu różnych kategorii języków programowania na wskaźniki defektów lub inne wskaźniki jakości?
(Odpowiedzi na to pytanie wydają się wskazywać, że nie ma takich badań, przynajmniej nie dla debaty dynamicznej vs. statycznej)
Odpowiedzi:
Istnieją pewne badania w środowisku akademickim na ten temat. Oto kilka przykładów, o których wiem, ale wnioski należy traktować ostrożnie:
Eksperyment na temat układów typu statycznego i dynamicznego: wątpliwości co do pozytywnego wpływu układów typu statycznego na czas opracowywania, Stefan Hanenberg. W Proc OOPSLA, 2010. Łącze ACM
Empiryczne badanie pisania statycznego u Ruby, M. Daly, V. Sazawal, J. Foster. W Proc PLATEAU, 2010. PDF
Kontrolowany eksperyment oceniający zalety procedury sprawdzania argumentów, Lutz Prechelt i Walter F. Tichy. IEEE TSE, 1998. Link IEEE
Jestem pewien, że są inne dokumenty. Ogólnie rzecz biorąc, z oczywistych powodów obszar ten jest niezwykle kontrowersyjny - naprawdę trudno jest dokonać obiektywnej oceny !!
źródło
Jednym ze znanych badań jest Lutz Prechelt. Empiryczne porównanie siedmiu języków programowania. Komputer IEEE [33 (10): 23–29], październik 2000 r
Prechelt omawia niezawodność programu, a także analizuje czas wykonania i zużycie pamięci.
źródło
Chociaż nie jest to związane z jakością kodu jako takiego, w tym badaniu analizuje się, w jaki sposób nowicjusze uczą się, używając różnych języków. W szczególności porównują, jak radzą sobie nowicjusze, ucząc się języka Perl vs. Kworum, języka nauczania, który autorzy chcieliby porównać. W tym artykule naprawdę fajne jest to, że faktycznie wymyślili język kontrolny, w którym składnia jest generowana losowo, jako rodzaj języka „placebo”. Takie podejście może być naprawdę interesujące, jeśli zastosuje się je do języków i jakości kodu i pomoże kontrolować niektóre z tych trudnych, zakłócających czynników podczas porównywania języków.
źródło