Miara prędkości rozwoju

10

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 #?

DistantEcho
źródło
Zobacz programmers.stackexchange.com/questions/10032 (ale zauważ, że nie twierdzę, że jest to duplikat).
Frank Shearar
To jest naprawdę interesujące, dziękuję! Niektóre linki są dokładnie tym, czego szukałem.
DistantEcho
Obejrzyj ten wątek: stackoverflow.com/questions/1894453/...
ChristopheD

Odpowiedzi:

6

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.

JohnFx
źródło
2

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.

DanSingerman
źródło
Właściwie bardziej interesuje mnie różnica między dwoma dużymi pędzlami. Na przykład, skąd wiemy, czy Python będzie miał lepszą prędkość rozwoju niż Lua - czy odwrotnie?
DistantEcho
1
@Niphra, nie wiesz. W takim porównaniu jest o wiele za dużo nieprzewidywalnych, aby można je było uznać za prawidłową miarę.
Adam Crossland
dobra odpowiedź, ale tylko jeśli zignorujesz umiejętności malarza
Steven A. Lowe
1

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.

Dominique McDonnell
źródło
Byłoby interesujące, gdyby były jakieś badania, które by to powtórzyły, porównując języki wysokiego poziomu, takie jak node.js i python.
SomeGuyOnAComputer
1

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.

Paul Nathan
źródło
0

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.

Kasterma
źródło
Doświadczenie jest rzeczywiście problemem, więc pracowałbym z początkującym, a nawet lepiej, z kimś znającym się na zupełnie innym języku programowania. Jeśli chodzi o rozmiar projektu, wydaje mi się, że wystarczy bardzo mały projekt, aby uzyskać wyniki, nawet jeśli nie są idealne.
DistantEcho
Czasami jednak historia się udaje, że „wygrana” języka zdarza się tylko po pewnym rozmiarze / złożoności. W przypadku problemów mniejszych / prostszych niesamowitość tego języka nie jest oczywista. Tak jest powiedziane.
Frank Shearar
Spodziewałbym się, że pewne „zwycięstwo” przekroczyło pewną złożoność i poziom doświadczenia programisty. Pomiar z nowicjuszami w większości mija się z celem. Naprawdę dobre posługiwanie się językiem wymaga specyficznego doświadczenia.
kasterma