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



  • 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.



  • Jester schrieb:

    Dann verstehe ich nicht, warum Du krampfhaft nach Aussagen über hohe Entwicklungszeiten suchst.

    Weil ich es gerne wasserdicht hätte... was ich nur während dieser Diskussion erkenne, ist, daß dahinter eine Schwachstelle vermutet wird und ohne das ich so etwas beabsichtige ich mir damit mein Boot selbst schiffsuntüchtig schieße... also werde ich es wohl sein lassen 😉

    Jester schrieb:

    Deine Geldgeber haben den Zeitplan doch sicher mit Dir zusammen durchgesehen?

    Nein, daß ist nicht passiert - der Plan wurde ohne mich abgesprochen und mir bei Beginn als Arbeitsplan vorgelegt. 🙄



  • @Winn:

    Ich wollte oder möchte deren Vertrauen durch eine Veröffentlichung zu diesem Thema stützen...

    Du willst dich (und deine Arbeit, wozu die Wahl von C++ als Werkzeug gehört) also gut verkaufen. Gut verkaufen tut man IMHO sich auf jeden Fall nicht damit indem man ungefragt eine "Entschuldigung" für etwas bringt was vielleicht garnicht in Frage gestellt würde.

    Genausowenig würde ich es als "sich gut verkaufen" bezeichnen wenn man erstmal nen Haufen Nachteile von C++ aufzählt um damit quasi zu begründen warum man solange gebraucht hat -- dann wäre sofort die Frage da "warum hat der Dolm dann überhaupt C++ verwendet". Auch wenn du die Frage dann beantworten kannst, besser sie kommt garnicht erst auf.

    Wenn du also gute Gründe hast warum C++ deiner Meinung nach das richtige Werkzeug ist, dann verkaufe diese Gründe -- aber nicht so dass es nach einer Rechtfertigung klingt. Oder du gehst von selbst garnicht darauf ein, und wartest ob du gefragt wirst. Für den Fall dass das passiert kannst du ja was vorbereiten.

    Genauso die Fortschritte die du erzielt hast. Du sagst du liegst in der Zeit - was willst du also noch mehr? Programmier-Projekte sind so wie Hausbauen - jeder sagt er braucht 2 Monate für irgendwas, und in wirklichkeit werden es dann 3 oder 4. Wenn du in 2 Jahren die Arbeit gemacht hast für die 2 Jahre veranschlagt waren kannst du IMHO darauf schon stolz sein. Wenn deine Geldgeber Erfahrung in dem Bereich (Software Projekte) haben sollten sie das selbst wissen, und nicht auf die Idee kommen zu fragen warum du nicht mehr geschafft hast als die Milestones die ausgemacht waren.

    Nur meine 2 Cent... 🙂



  • Winn schrieb:

    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 !

    Ich würde das Paper da nicht überbewerten. Alleine dadurch, dass es aus dem Jahr 2000 ist, sind die darin getroffenen Aussagen heute praktisch nicht mehr zutreffend. C# tritt in dem Paper zum Beispiel noch gar nicht auf, bei Java wurde Version 1.2 verwendet, wo jetzt Java 6 aktuell ist. Da hat sich einiges getan, was Bibliotheken, Werkzeuge usw. betrifft. Und wie hier ja schon gesagt wurde, haben die Werkzeuge und Bibliotheken einen enormen Einfluss auf die Produktivität. Ich habe zudem den Eindruck, dass sich zwischen dem Jahr 2000 und jetzt einiges an der Art und Weise geändert hat, wie man C++ programmiert. Auch das wird einen enormen Einfluss haben.

    Abgesehen davon ist so ein Paper sehr speziell. Die Aussagekraft geht nicht weit über das dort geschriebene Programm hinaus. Wenn ein etwas anderes Programm gewählt worden wäre, hätte vielleicht bei irgendeiner Sprache eine besonders gute Bibliothek das Ergebnis völlig verändert. Ich würde es eigentlich sogar als unseriös bezeichnen, soetwas als "wissenschaftliches" Paper zu veröffentlichen. Die einzig wirklich interessante Information, die IMHO darin enthalten ist, betrifft die Unterschiede zwischen Programmierern. Dort wird gesagt, dass die viel größer sind als die Unterschiede zwischen den Programmiersprachen.



  • Artchi schrieb:

    Wenn ich Fehler mache, hilft mir Java nicht viel weiter, als wenn ich Fehler in C++ mache.

    Echt nicht? Hat man in C++ auch ausführliche Stacktraces?
    Hab lange nix mehr in C gemacht und kann mich nur noch ein
    mehr oder weniger riesige Coredumps erinnern.

    tfa



  • tfa schrieb:

    Hat man in C++ auch ausführliche Stacktraces?

    hat man, kommt auf den debugger an.
    man kann den quelltext durchsteppen, sich variablen ansehen, ändern usw...



  • tfa schrieb:

    Artchi schrieb:

    Wenn ich Fehler mache, hilft mir Java nicht viel weiter, als wenn ich Fehler in C++ mache.

    Echt nicht? Hat man in C++ auch ausführliche Stacktraces?
    (...)

    Kommt auf die Plattform drauf an, und ob man irgendwelche speziellen Libs verwendet die das u.U. können.
    Normalerweise hat man aber bei einem Release Build, also z.B. wenn der Fehler beim Kunden passiert, mit C++ weniger als mit Java.


Anmelden zum Antworten