Ein Maß für die Entwicklungsgeschwindigkeit

10

Ich habe viele Tests gesehen, die die Ausführungsgeschwindigkeit von Programmiersprachen messen, aber ich habe nie Tests gefunden, die die Entwicklungsgeschwindigkeit messen.

Ich habe gehört, dass die Entwicklungsgeschwindigkeit bei der Arbeit mit dynamischen Sprachen erhöht wird, aber gibt es dafür einen Beweis? Ich versuche nicht zu sagen, dass dynamische Sprachen nicht effizient sind, aber ich würde gerne die Ergebnisse einer wissenschaftlichen Studie sehen, wenn es so etwas gibt.

Noch besser wären Informationen zur Wartungseinrichtung. Sind einige Sprachen einfacher zu debuggen als andere?

EDIT: Ich interessiere mich hauptsächlich für die Unterschiede zwischen zwei Sprachen, die in der Syntax nahe beieinander liegen. Ich denke zum Beispiel, dass die Programmierung in C normalerweise langsamer ist als die Programmierung in Java. Aber ist das Programmieren in Java schneller als das Programmieren in C #?

DistantEcho
quelle
Siehe programmers.stackexchange.com/questions/10032 (aber beachten Sie, dass ich nicht behaupte, dass dies ein Duplikat ist).
Frank Shearar
Das ist wirklich interessant, danke! Einige der Links sind genau das, wonach ich gesucht habe.
DistantEcho
Schauen Sie sich diesen Thread an: stackoverflow.com/questions/1894453/…
ChristopheD

Antworten:

6

Absolut die Programmiersprache macht einen Unterschied. Ich denke jedoch, dass der Unterschied weitaus mehr darin besteht, wie vertraut der Programmierer mit jeder Sprache ist, als mit einem bestimmten Aspekt der Sprache, insbesondere angesichts Ihrer Einschränkung von Sprachen mit ähnlicher Syntax.

JohnFx
quelle
2

Für mich ist dies eine Art Analogie zu der Art von Pinsel, mit der Sie schneller malen können.

Wenn Sie überlegen, was Sie als Ware malen, malen Sie umso schneller, je größer der Pinsel ist.

Wenn Sie guten Code als Kunstform sehen, entspricht er weniger der Größe des Pinsels als vielmehr dem, was Sie genau mit Ihren Pinseln tun.

Entschuldigung, dies ist eine Art Nichtantwort auf die eigentliche Frage.

DanSingerman
quelle
Eigentlich interessiert mich der Unterschied zwischen zwei großen Pinseln mehr. Woher wissen wir zum Beispiel, ob Python eine bessere Entwicklungsgeschwindigkeit als Lua hat - oder umgekehrt?
DistantEcho
1
@Niphra, du weißt es nicht. Es gibt viel zu viele Unwägbarkeiten in einem solchen Vergleich, als dass sie eine gültige Metrik dafür wären.
Adam Crossland
gute Antwort, aber nur, wenn Sie die Fähigkeiten des Malers ignorieren
Steven A. Lowe
1

Ich bin nicht sicher, ob dies relevant ist, aber es ist interessant

In The Mythical Man Month erwähnt Fred Brooks Studien zum Vergleich von Assembler- und höheren Sprachen. Sie stellten fest, dass Programmierer in beiden Fällen die gleiche Anzahl von Anweisungen pro Jahr produzierten, die Anweisungen für eine Hochsprache jedoch mehreren Anweisungen in Assemblersprache entsprachen. Durch die Umstellung auf die Hochsprache erzielten die Programmierer eine Steigerung der Produktivität unabhängig vom durchschnittlichen Vielfachen des Assemblierungsunterrichts gegenüber dem Sprachunterricht.

Das gleiche sollte für C vs Java / C # gelten, ich kenne den wirklichen Unterschied zwischen C # und Java nicht. Aber jedes Mal, wenn Sie den Abstraktionsgrad erhöhen, erhöhen Sie die Produktivität. Ich denke jedoch auch, dass dies die Kontrolle darüber, was die Maschine tatsächlich tut, verringern wird. Sie müssen darauf vertrauen, dass die Sprache tut, was Sie wollen. In Hochleistungssoftware ist die Speicherbereinigung beispielsweise nicht akzeptabel, es sei denn, Sie haben die vollständige Kontrolle darüber, wann und wie lange sie ausgeführt wird.

Dominique McDonnell
quelle
Es wäre interessant, wenn es heute Studien gäbe, die dies beim Vergleich von Hochsprachen wie node.js und python erneut tun würden.
SomeGuyOnAComputer
1

Was ist Produktivität? Was ist überhaupt ein Produkt ? Mathematisch gesehen weiß es niemand.

KLoC?

Zyklomatische Komplexität?

Funktionspunkte?

Ich glaube, Sie müssten sich die Geschäftsebene ansehen und Perzentilvergleiche mit anderen Programmierern durchführen, die ähnliche Arbeiten ausführen, und dann die pro Programmierer bereitgestellten Funktionen messen. Dies sind sehr ausgefeilte und subtile Punkte, um die Bedeutung statistisch messen und beibehalten zu können.

Paul Nathan
quelle
0

Stellen Sie sich vor, wie dies getestet werden würde: Sie müssen ein reales Projekt unabhängig voneinander entwickeln lassen, sowohl wiederholt mit derselben Sprache (um die Variabilität der Programmiererfahrung und -kenntnisse zu beseitigen) als auch mit verschiedenen Sprachen (um einige Daten zum Vergleichen der Sprachen zu erhalten). Mir scheint, dass das Experiment schnell zu einer unüberschaubaren Größe wächst.

Ich würde gerne hören, wie das Experiment "verkleinert" werden kann oder wie versucht wird, das Experiment tatsächlich wie angegeben durchzuführen.

Kasterma
quelle
Erfahrung ist in der Tat ein Problem, daher würde ich mit einem Anfänger oder noch besser mit jemandem arbeiten, der sich in einer völlig anderen Programmiersprache auskennt. Was die Projektgröße betrifft, würde ein sehr kleines Projekt ausreichen, um Ergebnisse zu erzielen, auch wenn sie nicht perfekt sind.
DistantEcho
Manchmal, so heißt es in der Geschichte, geschieht der "Gewinn" einer Sprache erst ab einer bestimmten Größe / Komplexität. Bei kleineren / einfacheren Problemen ist die Erstaunlichkeit dieser Sprache nicht offensichtlich. So heißt es.
Frank Shearar
Ich würde erwarten, dass ein bestimmter "Gewinn" nur über eine bestimmte Komplexität und Erfahrung des Programmierers hinausgeht. Das Messen mit Anfängern verfehlt meistens den Punkt. Um eine Sprache wirklich gut zu benutzen, sind sprachspezifische Erfahrungen erforderlich.
Kasterma