Widziałem wiele testów mierzących szybkość wykonywania języków programowania, ale nigdy nie znalazłem testów mierzących szybkość programowania.
Słyszałem, że prędkość programowania jest zwiększona podczas pracy z dynamicznymi językami, ale czy jest na to dowód? Nie twierdzę, że dynamiczne języki nie są wydajne, ale chciałbym zobaczyć wyniki badań naukowych, jeśli coś takiego istnieje.
Jeszcze lepsze byłyby informacje na temat serwisu technicznego. Czy niektóre języki są łatwiejsze do debugowania niż inne?
EDYCJA: Najbardziej interesują mnie różnice między dwoma językami, które są bliskie składni. Na przykład programowanie w C zwykle będzie wolniejsze niż programowanie w Javie; ale czy programowanie w Javie jest szybsze niż programowanie w C #?
źródło
Odpowiedzi:
Oczywiście język programowania robi różnicę. Myślę jednak, że różnica polega bardziej na tym, jak dobrze programista jest zaznajomiony z każdym językiem, niż na jakimkolwiek jego konkretnym aspekcie, szczególnie biorąc pod uwagę ograniczenia języków o podobnej składni.
źródło
Dla mnie jest to rodzaj analogii do tego, który rodzaj pędzla pozwala malować szybciej.
Jeśli weźmiesz pod uwagę to, co malujesz, to im większy pędzel, tym szybciej namalujesz.
Jeśli widzisz dobry kod jako formę sztuki, oznacza to, że jest mniejszy niż rozmiar pędzla, a bardziej to, co dokładnie robisz za pomocą pędzli.
Przepraszamy, to trochę brak odpowiedzi na pytanie.
źródło
Nie jestem pewien, czy to jest istotne, ale jest interesujące
W The Mythical Man Month Fred Brooks wspomina o badaniach porównujących języki asemblera i wyższego poziomu. Odkryli, że programiści produkowali taką samą liczbę instrukcji rocznie w obu, ale instrukcje dla języka wysokiego poziomu były równe instrukcjom wielu języków asemblera. Tak więc, przechodząc na język wysokiego poziomu, programiści osiągnęli wzrost niezależnie od średniej wielokrotności instrukcji asemblacji do instrukcji językowych dotyczących produktywności.
To samo powinno być prawdą dla C vs Java / C #, nie znam prawdziwej różnicy między C # i Javą. Ale za każdym razem, gdy zwiększasz poziom abstrakcji, zwiększasz produktywność. Myślę jednak, że zmniejszy to kontrolę nad tym, co faktycznie robi maszyna. Musisz ufać, że język robi to, co chcesz. Na przykład w oprogramowaniu o wysokiej wydajności zbieranie śmieci jest niedopuszczalne, z wyjątkiem sytuacji, gdy masz pełną kontrolę nad czasem jego uruchomienia i czasem jego działania.
źródło
Co to jest produktywność? Co to jest nawet produkt ? Matematycznie nikt nie wie.
KLoC?
Złożoność cykliczna?
Punkty funkcyjne?
Uważam, że musiałbyś spojrzeć na poziom biznesowy i przeprowadzić porównania percentyli z innymi programistami wykonującymi podobną pracę, a następnie zmierzyć funkcje dostarczone na programistę. Są to bardzo wyrafinowane i subtelne punkty, aby móc statystycznie zmierzyć i zachować znaczenie.
źródło
Wyobraź sobie, jak to zostanie przetestowane: musisz mieć projekt w prawdziwym świecie, opracowywany niezależnie, wielokrotnie w tym samym języku (aby usunąć zmienność doświadczenia i wiedzy programisty) oraz w różnych językach (aby uzyskać dane do porównania języków). Wydaje mi się, że eksperyment szybko rośnie do niemożliwego do opanowania rozmiaru.
Chciałbym usłyszeć o sposobach „zmniejszenia” eksperymentu lub o próbach przeprowadzenia eksperymentu zgodnie z tym, co powiedziano.
źródło