Zeitbedarf für Projekte je nach gewählter Programmiersprache gesucht...



  • Hallo zusammen,

    derzeit bin ich in einem wissenschaftlichen Projekt involviert, welches ich seit fast drei Jahren alleine beackere und nun wahrscheinlich noch für ein weiteres Jahr fortführen möchte. Die Umsetzung sollte von Anfang an durch C/C++ erfolgen. Damit ich das Projekt um ein weiteres Jahr verlängern kann, soll ich einen Bericht über den Stand der Dinge und aufgetretene Probleme + Lösungen zusammenstellen.

    Die Programmierung mit C/C++ kann mit unter sehr aufwendig sein und sucht wahrscheinlich im Vergleich zu anderen Programmiersprachen seines gleichen, deswegen suche ich ein Diagramm, welches den Zeitbedarf eines Projektes nach Programmiersprache darstellt - Kennt ihr Quellen ? Links ? Ich weiß nicht mal welches Schlüsselwort ich bei der Suche mit Google verwenden sollte...

    Help 💡

    Winn



  • Da jede Sprache für unterschiedliche dinge unterschiedlich geeignet ist, wirst Du kein solches Diagramm finden.



  • guckst du: http://page.mi.fu-berlin.de/~prechelt/Biblio/jccpprt_computer2000.pdf
    unter 'work time and productivity'



  • Hi,

    der Zeitverbrauch ist von viel zu vielen äußeren Faktoren abhängig, um das allgemein beantworten zu können.

    Mal zwei Beispiele:
    + "in der Physik" (Institut) ist FORTRAN die Sprache mit den geringsten Entwicklungszeiten, weil dort eine unheimlich ausgefeilte Bibliothek vorliegt, auf die man zurückgreifen kann.
    + in unserer Firma:

    • (Altprodukt; noch bei 70% der Kunden im Einsatz) ist COBOL das Optimum (bzgl. Entwicklungszeit), weil damit das meiste Programmier- und System-KnowHow sowie eine sehr ausgefeilte Entwicklungs-, Architektur- und Produktionsumgebung sowie schon viiiele Anwendungsprogramme (die man nur erweitern/anpassen muss) existieren.
    • (Programmierung unserer Kryptokarten) ist es C, weil da "Bitfummelei" am einfachsten ist, eine gute C-API existiert, kein (humaner) User daran muß und mit Speicher- und Zeitverbrauch seeeehr zurückhaltend umgegangen werden muß.
    • (technische Infrastruktur): Hier nehmen wir C++, weil sie "Bitfummelei" und gleichzeitig OO-Programmierung (Wartbarkeit bei Großprojekten) ermöglicht (auch reines Server-System ohne Benutzer).
    • (Neuprodukt) ist Java das "Beste", weil man mit J2EE und GUI schon viel "geschenkt" bekommt.

    ....

    Das geht beliebig weiter. Bestenfalls kann man Kriterien zur Bewertung aufstellen.

    Selbst die obige Studie arbeitet mit "...80 implementations of the same set of requirements...".
    Wenn Deine Requirements/Anforderungen und Voraussetzungen variieren, kann das sofort ganz anders aussehen.

    Das ist ein bischen wie die Frage nach dem besten Auto: Ferrari ? Touareg ? Sprinter ? Smart ? Leo2 ? ....

    Gruß,

    Simon2.



  • @Winn: mir erscheint Deine Vorgehensweise - vorsichtig gesagt - verschleiernd. Wenn Du Probleme bei der Umsetzung hattest, dann nenne sie beim Namen, aber Dein Ansatz, Probleme in der Umsetzung auf die Programmiersprache zu schieben erscheint mir sehr fragwürdig. Letztlich bist Du an allen Verzögerungen beteiligt, bei mir kommt Deine Frage so an, daß Du nach Gründen für Deine Freisprechung suchst, aber nicht wirklich für die Ursachen einstehst.



  • Winn schrieb:

    ...
    Die Programmierung mit C/C++ kann mit unter sehr aufwendig sein und sucht wahrscheinlich im Vergleich zu anderen Programmiersprachen seines gleichen, ...

    Sorry, aber das ist in der Allgemeinheit Quatsch .... allerdings finde ich Marc++us' Erklärung durchaus naheliegend und das legt nahe, dass Dir nicht wirklich an einer Antwort gelegen ist.

    Und letztlich kann ich bei der o.g. Studie das Fazit voll bestätigen:

    "...Interpersonal variability, that is the capability and behavior differences between programmers using the same language, tends to account for more differences between programs than a change of the programming language...."

    Ob Du das hören möchtest, musst Du selbst wissen....ich persönlich stehe allerdings auf die Wahrheit.

    Gruß,

    Simon2.



  • Marcus hat hier sehr gut etwas enttarnt. Mein erster Gedanke bei Winn-Post war jedoch, das die Sprache an sich nicht schuld ist, wenn etwas länger dauert. Ich habe als beruflicher Java-Programmierer schon sehr oft über schlecht gewählte Tools , Technologien und Libraries gemeckert, die zu einer Verzögerung in der Projektarbeit geführt haben. Teilweise waren die Vorgaben der Entscheidungsträger falsch, teilweise lagen die Fehler bei mir oder meinen direkten Kollegen.

    Wenn du in C++ z.B. keine vernünftigen Libraries wählst oder IDE-Tools hast (Visual Assist X), kann dich das tatsächlich in der Arbeit behindern. Aber das liegt dann am Menschen (du oder deine Kollegen), weil du könntest es ändern. Ich bin z.B. mit Visual Assist viel produktiver in der C++-Entwicklung. Da werden so manche altertümlichen C++-Gegebenheiten ausgemerzt, die es in Java von Haus aus nicht gibt. Aber auch Java ist nur durch mächtige IDEs so produktiv. Nimm mal nur Notepad und programmier mal damit ein umfangreiches Java-Programm. Da ist jeder C++-Entwickler mit Visual Assist bedeutend schneller mit dem Projekt am Ziel.

    Das ist nur das Thema Libraries und Tools. Was ist mit deinen eigenen geistigen Ergüssen? Nämlich Code und Design! Die werden auch nicht immer fehlerfrei gewesen sein und dich somit in deiner Zeitplanung zurück geworfen haben. Ich habe schon so manche Laufzeit-Fehler und Design-Fehler in meinen Java-Projekten ausmerzen müssen. Das kostet einfach Zeit. Bin ich aber meistens selber schuld dran, obwohl es Java und nicht C++ ist. Wenn ich Fehler mache, hilft mir Java nicht viel weiter, als wenn ich Fehler in C++ mache.

    Fazit: die Sprache hat einen Minimalen Anteil an der Entwicklungszeit eines Projektes. (wenn wir mal von OO-Sprachen ausgehen... wir wollen mal nicht Assember mit Python vergleichen)



  • Warum fragst Du nach C/C++? Warum nicht nach Java/Smalltalk oder Perl/Simula oder eine andere Kombination aus 2 Programmiersprachen 😉

    Tntnet



  • Artchi schrieb:

    Fazit: die Sprache hat einen Minimalen Anteil an der Entwicklungszeit eines Projektes. (wenn wir mal von OO-Sprachen ausgehen... wir wollen mal nicht Assember mit Python vergleichen)

    Na ja, soooo wuerd ich das nicht sehen. Ich denk z. B. durchaus dass es einen (nicht geringen!) Unterschied macht, welche Sprache man waehlt. Wobei der wichtigste Faktor dabei logisch die eigene Erfahrung mit der Sprache ist: muesste ich heute ein Projekt in C# programmieren, dann waer ich damit wesentlich langsamer als mit Java, einfach weil ich mit der Standardlibrary und den Tools nicht so vertraut bin. Noch schlimmer, wenn ich das Paradigma wechseln muesste und dann ploetzlich prozedural oder gar funktional oder logisch programmieren muesste anstatt OO.



  • Ja, natürlich. Aber das zählt wieder (ich gesagt habe) zu den menschlichen Bedingungen. Falsch gewählte Library, oder? Du benutzt unter C# z.B. Windowsforms anstatt Swing. C# selbst hast du in einem Projekt, das 2 Jahre geht, ruck zuck gelernt. Wir reden ja hier nicht über Mini-Projekte, wo jemand mit einer Stoppuhr steht und nach 5 Minuten fragt, wer welches Ergebnis bzw. Erzeugnis hat? Ich gehe von realen Projekten aus, wo ich schon mal ein Jahr und mehr dran sitze.



  • Dass auf ne Sprache zu schieben ist Quatsch. Ok es sei denn, dass diese Sprache für die jeweilige Domäne einfach nicht geeignet ist, und dann liegt das aber an der Person die trotzdem diese Sprache gewählt hat, obwohl es doch bessere Sprachen für diese Domäne gibt (als Beispiel meinetwegen z.B. regelbasiertes Lernen in der KI... da wird wohl Prolog oder Lisp besser sein als z.B. C++). Und wenn man sein Werkzeug (hier die Prog.Sprache) nicht beherrscht, dann ist man immer langsam, egal was man einsetzt...
    Und ich finde Artchi hat da einen wichtigen Punkt genannt. Ich finde die IDE macht auch schon sehr viel aus. Eclipse in Java ist z.B. einfach nur geil und damit ist man wirklich richtig produktiv. Mit Visual Assist X hat man auch schon einen Eclipse-ähnlichen Komfort (auch wenn es noch nicht dran reicht) und siehe da, plötzlich bin ich mit C++ auf einmal auch viel produktiver.
    Ok mag ja auch Leute geben die mit vi oder Emacs viel besser klar kommen. Muss halt jeder für sich selbst entscheiden...



  • Marc++us schrieb:

    @Winn: mir erscheint Deine Vorgehensweise - vorsichtig gesagt - verschleiernd. Wenn Du Probleme bei der Umsetzung hattest, dann nenne sie beim Namen, aber Dein Ansatz, Probleme in der Umsetzung auf die Programmiersprache zu schieben erscheint mir sehr fragwürdig. Letztlich bist Du an allen Verzögerungen beteiligt, bei mir kommt Deine Frage so an, daß Du nach Gründen für Deine Freisprechung suchst, aber nicht wirklich für die Ursachen einstehst.

    Das mag so ankommen... Tatsache ist, daß ich meine Milestones für die zwei Jahre erreicht habe, nichts in den Sand gesetzt habe und etwas geschafft habe was zum Zeitpunkt des Projektstarts eigentlich ein Rohrkrepierer war - und ich viele Schwierigkeiten damit hatte C++ zu verwenden. Für die Fortführung möchte ich weiter C++ verwenden... Aber bei meinen Gutachtern (die ich nicht kenne), kann ich nicht davon ausgehen.

    Libaries gibt es zu meinem Projekt nicht, thematisch geht es um mehrdimensionale Tensorprodukte mit Multi-Resolution Eigenschaften (Stichwort, Wavelets in 3D), welche dazu benötigt werden örtliche Finite-Differenzen Operatoren aus einem numerischen Berechnungsverfahren zu transformieren, ebenso mit Multi-Resolution Eigenschaften auszustatten und durch anschließende Vernachlässigung von spezifischen Werten den Aufwand an Additionen und Multiplikationen in einem iterativen Berechnungsverfahren zu reduzieren und das ohne dabei einen Kompromiss in der Genauigkeit der Ergebnisse zu haben.

    Also verabschiedet Euch mal davon, daß ich hier etwas in den Sand gesetzt habe, ich soll einen Bericht schreiben über meine Fortschritte und aufgetauchten Schwierigkeiten, dazu zähle ich die Entwicklung mit C/C++ ein. Fertig !

    Gruß Winn



  • ten schrieb:

    guckst du: http://page.mi.fu-berlin.de/~prechelt/Biblio/jccpprt_computer2000.pdf
    unter 'work time and productivity'

    Weltklasse ! Ich hatte gehofft, daß es irgendwo ein Paper dazu gibt.... Besten Dank !



  • Also verabschiedet Euch mal davon, daß ich hier etwas in den Sand gesetzt habe, ich soll einen Bericht schreiben über meine Fortschritte und aufgetauchten Schwierigkeiten, dazu zähle ich die Entwicklung mit C/C++ ein. Fertig !

    Eine wirklich Sinnvolle aussage kann man hier IMHO nur treffen wenn man das gleiche (zumindest vergleichbare) in einer anderen Sprache implementiert hat.

    Libs wird es auch zu Deinem Projekt geben. Die Lib muss ja nicht alle Aufgaben abdecken, oft sind es viele kleinigkeiten die abgedeckt werden.

    Prüfe aber zumindest vorher, ob die "schnellen Sprachen" überhaupt für Deine Anforderung geeignet sind und nicht mehraufwand bedeuten würden um Probleme zu umgehen.



  • Du mußt nicht gleich eingeschnappt sein. Du hast uns selber das Kanonenfutter geliefert:

    Die Programmierung mit C/C++ kann mit unter sehr aufwendig sein und sucht wahrscheinlich im Vergleich zu anderen Programmiersprachen seines gleichen,

    Das hörte sich so an, als ob du eher negative Erfahung gemacht hast.

    Ich habe erst kürzlich einen Bau-Informatiker kennengelernt, die komischerweise komplexe Berechnungen von finiten Elementen, Strömungsanalyse, Windfestigkeit (alles was mit dem Bau von Gebäuden usw. zu tun hat, kenne mich da nicht aus) durchführen. Die Software wird komischerweise in C++ programmiert und auf Clustern losgelassen. Hätte eher gedacht, das die Fortran oder sowas benutzen. Nichs da, der Chef will C++ haben. Und die haben alles an C++ Tools was sie brauchen um komfortabel zu entwickeln: Visual Assist, Incredibuild (!), Qt usw. Ich kann heute abend mal die URL für die Videos der fertigen Berechnungen (sind ja Animationen) posten.

    Also, selbst ich als C++Fan habe mich gewundert, das die das benutzen. Aber sie haben damit anscheinend erfolgreiche Ergebnisse.



  • Winn schrieb:

    Also verabschiedet Euch mal davon, daß ich hier etwas in den Sand gesetzt habe, ich soll einen Bericht schreiben über meine Fortschritte und aufgetauchten Schwierigkeiten, dazu zähle ich die Entwicklung mit C/C++ ein. Fertig !

    Mich überzeugt das nicht. Wäre ich in der Prüfungskommission, hättest Du mit Deiner Argumentation einen schweren Stand.

    Ich sehe Nebelkerzen - Du schreibst es ja, daß Du bei der Entwicklung in C/C++ Schwierigkeiten hattest, aber dann sehe ich Deinen Ansatz nicht: Du suchst ja zur Zeit nach einer Quelle, die objektiv "beweißt", daß Entwicklung in C++ schwieriger ist als in XY, und daß dies einer der Gründe für die Verzögerung ist. Und daß Du keine andere Plattform wählen konntest, wegen der Vorgaben.

    Das klingt für mich nicht nach einer wirklich aufrichtigen Bestandsaufnahme, tut mir leid. Vor allem ist die Verteidigungsstrategie durchsichtig, da Du ja implizit unterstellst, daß mehrdimensionale Tensorprodukte mit Multi-Resolution Eigenschaften (Stichwort, Wavelets in 3D), welche dazu benötigt werden örtliche Finite-Differenzen Operatoren aus einem numerischen Berechnungsverfahren zu transformieren, ebenso mit Multi-Resolution Eigenschaften auszustatten und durch anschließende Vernachlässigung von spezifischen Werten den Aufwand an Additionen und Multiplikationen in einem iterativen Berechnungsverfahren zu reduzieren und das ohne dabei einen Kompromiss in der Genauigkeit der Ergebnisse zu haben. in der Sprache XY schneller und leichter zu implementieren gewesen wären - was ich stark bezweifle, da ich nämlich weiß was Multiresolution-Eigenschaften von 3D-Wavelets sind. Und daher eben auch den Bezug zur Sprache und zur Zeit einfach nicht sehe. Ich sehe z.B. eher Probleme bei der Implementierung und der richtigen Berechnung, eventuell ein fehlendes Testvektorkonzept, u.ä.



  • Marc++us schrieb:

    Mich überzeugt das nicht. Wäre ich in der Prüfungskommission, hättest Du mit Deiner Argumentation einen schweren Stand.

    Gut, gg... dann kann ich mich ja mit Dir als potentiellen Gutachter diskutieren... okay, schwieriger was ist sagte ist ein nebulösen Wort. Ich meine damit "zeitaufwendiger". Möchte es aber damit fortführen, weil es mir mehr "Freiheiten" gibt. Es ist de facto eigentlich die einzige Sprache mit der ich einen Erfolg in diesem Projekt sehe, aber Zeit ist Geld... ich möchte die Herren überzeugen, daß sie ihr Geld gut angelegt haben und weiterhin anlegen sollen. Ich wollte oder möchte deren Vertrauen durch eine Veröffentlichung zu diesem Thema stützen...

    Marc++us schrieb:

    ... , da ich nämlich weiß was Multiresolution-Eigenschaften von 3D-Wavelets sind.

    Das weiß ich, weil ich damals (vor drei Jahren) von Dir die Libs (Deiner Diplomarbeit ??) bekam, gg.



  • Winn schrieb:

    ich möchte die Herren überzeugen, daß sie ihr Geld gut angelegt haben und weiterhin anlegen sollen. Ich wollte oder möchte deren Vertrauen durch eine Veröffentlichung zu diesem Thema stützen...

    Ganz ehrlich, mein Vertrauen als Geldgeber wäre da eher erschüttert.

    Stell' Dir doch folgende Situation vor:

    Du gibst jemandem Geld.
    Er wird nicht fertig.
    Er kommt zu Dir und sagt Dir, das einzige Tool, mit dem Erfolg zu erzielen sei, würde die längste und aufwendigste Entwicklungszeit nach sich ziehen.

    Hinterlässt dies bei Dir das Gefühl, Du hast Dein Geld gut angelegt? Oder hast Du nicht vielleicht das Gefühl, daß sich hier jemand an einem MI4 versucht - Mission Impossible 4?

    Deswegen würde ich das ganze lieber in die Ecke Lernkurve schieben... Neuland betreten mit dieser Entwicklung, eigene Erfahrung gesammelt, aber nun schnellerer Erfolg da Erfahrung, etc. Aber das Tool in die Debatte "Zeit" einzuführen erscheint mir sehr gefährlich, da Du damit an den Grundfesten rüttelst - es drängt sich der Eindruck auf, der falsche Mann mit dem falschen Tool arbeitet an diesem Thema. Vor allem, weil Du ja tooltechnisch keine Lösung außer "Augen zu und durch" anbieten kannst.

    Und aus diesem Grund empfehle ich Dir, noch mal wirklich in Dich zu gehen und die Fehlergründe zu erforschen - und das wird Dich zur unangenehmen Erkenntnis bringen, daß Du an vielen Dingen schuld bist. Das ist nicht weiter schlimm, das geht uns allen so. Aber analysiere diese Gründe, und stelle fest, ob sie heute noch zutreffen (Stichpunkt Erfahrung) oder ob Du sie beseitigen kannst (Stichpunkt verbesserte Vorgehensweise). Aber erzähle mir nichts davon, daß halt nun mal bei dieser Sprache die Entwicklungszeit generell ein bißchen höher liege. Stell' Dir vor, einer der Gutachter beherrscht C++... der zerlegt Dich ja nach dem Motto "vielleicht liegt FÜR SIE die Latte auch einfach zu hoch".

    Winn schrieb:

    Marc++us schrieb:

    ... , da ich nämlich weiß was Multiresolution-Eigenschaften von 3D-Wavelets sind.

    Das weiß ich, weil ich damals (vor drei Jahren) von Dir die Libs bekam, gg.

    Oh.



  • Marc++us schrieb:

    Und aus diesem Grund empfehle ich Dir, noch mal wirklich in Dich zu gehen und die Fehlergründe zu erforschen - und das wird Dich zur unangenehmen Erkenntnis bringen, daß Du an vielen Dingen schuld bist.

    Ich bekomme den Eindruck nicht los, daß Du immer noch denkst, ich hätte meine Milestones nicht erreicht - ich habe sie erreicht. Ich wäre persönlich nur gerne weiter mit dem Projekt...

    Marc++us schrieb:

    Das ist nicht weiter schlimm, das geht uns allen so. Aber analysiere diese Gründe, und stelle fest, ob sie heute noch zutreffen (Stichpunkt Erfahrung) oder ob Du sie beseitigen kannst (Stichpunkt verbesserte Vorgehensweise). Aber erzähle mir nichts davon, daß halt nun mal bei dieser Sprache die Entwicklungszeit generell ein bißchen höher liege.

    Nun ich hatte mal die Situation, daß ich einen Fehler zum biegen und brechen nicht fand, bestimmt einen Monat gesucht hatte... Teilprojekt hatte schon drei Monate beansprucht. Innerhalb einer Woche setzte ich das Projekt in Matlab um - ohne Fehler. Böser Vergleich vielleicht 🙄

    Marc++us schrieb:

    Stell' Dir vor, einer der Gutachter beherrscht C++... der zerlegt Dich ja nach dem Motto "vielleicht liegt FÜR SIE die Latte auch einfach zu hoch".

    Nun, gg... in der Tat - das würde wahrscheinlich nach hinten losgehen... Vielleicht sollte ich das lassen und meine Angriffsfläche damit minimieren.



  • Winn schrieb:

    Ich bekomme den Eindruck nicht los, daß Du immer noch denkst, ich hätte meine Milestones nicht erreicht - ich habe sie erreicht. Ich wäre persönlich nur gerne weiter mit dem Projekt...

    Dann verstehe ich nicht, warum Du krampfhaft nach Aussagen über hohe Entwicklungszeiten suchst. Deine Geldgeber haben den Zeitplan doch sicher mit Dir zusammen durchgesehen? Wenn der damals okay war, dann ist doch gegen eine Umsetzung nach Plan nichts einzuwenden.

    Dass Du persönlich gerne noch 3 Schritte weiter wärst ist dafür eigentlich recht egal.


Anmelden zum Antworten