Haben die alten Widgets ausgesorgt?



  • NiceJava schrieb:

    Großprojekte sind doch eher Nischen. Das ist wie beim Handwerk, die ganzen kleinen bis mittleren Klitschen machen den Löwenanteil aus. Android hat z.B einen Marktanteil von 85% in Deutschland und was meiste in was die meisten Apps programmiert sind? Das ist eine große Industrie mittlerweile geworden. Das Entwickler-Tagesgeschäft besteht doch zum großen Teil aus Programmen die wirklich niemand so im Internet runterladen kann, sondern die individuell bei ein paar Kunden läuft.

    Und ich habe versucht, dir klarzumachen, dass das nicht stimmt. Es wird wohl sicherlicht mehr kleine als große Projekte geben, aber die großen Projekte sind keine Nischen. Selbst wenn die insgesamt nur 10% ausmachen sollten, sind es trotzdem keine Nischen. Und ich könnte mir durchaus vorstellen, dass es mehr als 10% sind.
    Auch bei Individualsoftware wird sehr viel C++ verwendet. Individualsoftware ist ja nicht durchgehend Enterprise mit Java. Unsere Software wird auch kein Endbenutzer jemals irgendwo runterladen oder kaufen können, wir machen Branchensoftware in CAD/PDM Bereich. Auch das ist ein sehr großes C++ Projekt.
    Außerdem interessiert mich nicht, was die meisten anderen machen und mich wunderts, dass du so viel Wert drauflegst. Ich würde es z.B. sehr viel interessanter finden, an Photoshop oder eher einem größeren CAD System mitzuarbeiten (passt besser zu dem, was ich grad mache), als irgendwo in einer 5 Mann Firma die nächste Vertreterprovisionierung in Java zu schreiben. Wenn 90% der Entwickler das machen und nur 10% an großen, interessanten Projekten mitarbeiten, dann will ich zu diesen 10% gehören. Und selbst wenns nur 5% wären. Und ich hab eine entsprechende Stelle ja auch gefunden und musste nicht mal lang suchen. Die großen Projekte gibts eben nicht nur bei den paar ganz großen Firmen, wie du dir das anscheinend vorstellst.

    Die Android Apps seh ich sowieso als Ausnahme... Ja, da wird sehr viel in Java entwickelt. Aber das meiste davon sind schon mal Amateurprojekte, prozentual werden nur ganz wenige Apps von Firmen entwickelt. Und wir entwickeln unsere Apps z.B. auch wieder in C++ und nicht in Java.

    NiceJava schrieb:

    Was ist denn an der Arbeit mit C++ besser, als an Java und C#? Mal abgesehen von der Performance und Systemnähe.

    Schwer zu beschreiben, zumindest für mich... Ich fühl mich in C++ einfach freier und flexibler. Der Umgang mit Value Types ist viel einfacher und natürlich, als in C# (in Java gehts ja überhaupt nicht, und da kann man nicht mal Operatoren überladen, was die Sprache noch hässlicher macht). RAII und Destruktoren finde ich wichtig, die kann man auch in sehr vielen Konstrukten einsetzen, wo man irgendeine Art von Scope braucht. Auch mit Templates kann man eben sehr viele nette Konstrukte kreieren, die auch noch typsicher sind. Grundsätzlich kann man Code schreiben, bei dem zur Kompilierzeit mehr geprüft und mehr Fehler abgefangen werden, als bei Java. Nur paar Punkte, die mir spontan einfallen.
    Und andersrum gefragt, warum braucht man Java? Ich weiß, es gibt durchaus genug Projekte, bei denen ich selber Java bevorzugen würde. J2EE gefällt mir eigentlich ganz gut für Intranets. Aber wenn man mal Desktopsoftware betrachtet (und ich meine nicht unbedingt das, was man irgendwo im Laden kaufen kann, kann natürlich Individualsoftware sein), was gibt es schon großartig für Gründe, sich bei einem großen neuen Projekt für Java statt C++ zu entscheiden? Ich kann mir kaum vorstellen, warum man das machen sollte.



  • Wo ist das ganze Drumrum zu C++, was andere Sprachen wie Java, PHP, C# usw haben? Wo sind die deutschen Fachzeitschriften, Blogs, Podcasts, Best-Practice-Artikel, gute Fachbücher sind ja auch rar gesät. C++ sieht von außen betrachtet nicht nach einer aktuellen modernen Sprache aus, sondern nach einem akademischen komplizierten Monster, eben weil das ganze Drumherum fehlt, was alle anderen Technologien haben. Ja ich glaub selbst Ruby hat eigene Fachzeitschriften. C++ wird doch den Einsteigern überhaupt nicht schmackhaft gemacht. Der Schrecken von C++ wird keinem Anfänger genommen. Das könnte anderes, sein wenn es viel mehr Artikel, Videos etc dazu geben würde. Das kann auch ein Grund sein, warum viele C++ nach ein paar Gehversuchen wieder in die Tonne kloppen.

    Was haben die User anstelle? An uraltes Forum wie dieses hier, wo oft auch der letzte, der es gut mit C++ meint, auseinander genommen wird, weil er kein const correctnes oder sonst was genau eingehalten hat und nicht die 55 Tricks kennt wie man sich NICHT mit C++ das ganze Bein abschießt!



  • Was du schreibst geht jetzt plötzlich in eine ganz andere Richtung. Worum gings gleich wieder am Anfang? Ob man neue Projekte überhaupt noch in C++ anfangen würde, oder ob nur altes Zeugs damit gepflegt wird. Und meine Aussage war, dass auch bei neuen großen Projekten C++ immer noch erste Wahl wäre. Wie gut das Angebot an C++ Infos für Anfänger ist, hat damit nicht ansatzweise was zu tun.



  • Java hat bessere IDEs, du hast mehr Libs zur Auswahl und die sind auch moderner. Du hast ein(!) Binary. Du hast geile Buildsysteme wie sbt, gradle und mavenrepository. Keine Headerscheiße, größere Standardlib mit Netzwerk- und GUI-Unterstützung. Du kannst Code mit JVM-Sprachen austauschen etc.
    Wer nicht bessere Gründe hat in C++ neue Projekte anzufangen als seine Vorliebe zu ihr, der arbeitet halt enorm unwirtschaftlich.

    L. G.,
    IBV



  • NiceJava schrieb:

    C++ sieht von außen betrachtet nicht nach einer aktuellen modernen Sprache aus, sondern nach einem akademischen komplizierten Monster, eben weil das ganze Drumherum fehlt, was alle anderen Technologien haben. Ja ich glaub selbst Ruby hat eigene Fachzeitschriften. C++ wird doch den Einsteigern überhaupt nicht schmackhaft gemacht. Der Schrecken von C++ wird keinem Anfänger genommen.

    Das liegt aber auch an den ganzen Leuten, die immer wieder erzaehlen, wie schwer und fehleranfaellig C++ doch ist und darauf hinweisen, dass Java, Python, Actionscript (wegen Flash) oder HTML 5 die Programmiersprachen der Zukunft seien. Zum einen werden Neuling dadurch zu den vermeintlich zukunftssicheren Scriptsprachen gedraengt und zum anderen wird C++ schlecht geredet.
    Kaum jemand weiss, dass memory leaks in C++ laengst der Vergangenheit angehoeren und die Loesung sogar umfassender als der Garbage collector ist. Von iteratoren, containern, generischen Klassen/Funktionen hat auch keiner Ahnung und von lambdas und asynch erst recht nicht.



  • IBV schrieb:

    Java hat bessere IDEs, du hast mehr Libs zur Auswahl und die sind auch moderner.

    Das stimmt jetzt nicht. Im Grunde fehlt fuer C++ nur eine plattformunabhaengige GUI-library, die eine weniger restriktive lizenz ist als Qt und einen guten GUI-designer bietet. Die meisten Libraries sind in C geschrieben und als C++-Programmierer hat man den Luxus, diese ohne Aenderung direkt in seinem Code verwenden zu koennen, was nach meiner Ansicht auch ueberhaupt der Grund fuer den damaligen Erfolg C++s ist.



  • Was die IDEs angeht, stimmt das teilweise. Visual Studio finde ich recht gut, hat aber auch einige Macken und ist natürlich eine Windows IDE. Die IDEs, die es für Linux gibt, finde ich nicht so toll. Muss aber sagen, dass ich mir den QtCreator noch nie genauer angeschaut habe. Was Java angeht... Eclipse und Netbeans sind zwar irgendwo gute IDEs, aber auch nicht so viel besser als Visual Studio und total lahm. Jetzt kann man Eclipse schon halbwegs bedienen, vor paar Jahren hat aber allein das Starten ab und zu mehreren Minuten gedauert. Und Eclipse ist zu undurchsichtig, ich hab schon sehr viel Zeit mit dem Untersuchen komischer Probleme verbracht, die von Eclipse automatisch verbrochen wurden.

    Dass die Standardbibliothek gut ist, ist vor allem für kleine Projekte interessante. Hab ich schon vor Tagen geschrieben. Bei kleinen Projekten finde ich Java und C# (vor allem C#) auch besser. Bei großen Projekten relativiert sich das sehr schnell. Auch für C++ gibt es in allen Bereichen sehr gute Bibliotheken.
    Und wenn man etwas abseits der Standard Enterprise Anwendungen braucht, gibt es für C++ viel bessere Bibliotheken, für die es dann bestenfalls mittelmäßige Java Wrapper gibt (VTK, OpenCascade, ITK). Würde mich sehr überraschen, wenn es für Java nativ irgendwas auch nur annähernd vergleichbares gibt.



  • Naja, Java mit Eclipse zu entwickeln ist eine ganz andere Welt als C++ mit VS.
    Mein Eclipse hat sicherlich unter 10sec Startup-Zeit. Zum Teil Design - Eclipse ist extrem overengineert um so extrem dynamisch sein wie es nun mal ist - und zum anderen Teil dass Java erst warmlaufen muss bis die Hotspots von Hotspot (höhö) vergewaltigt wurden. Ab dann hat man 0.0 Lag bei Aktionen. Überhaupt nicht langsam. Compilezeiten sowieso minimal bis nicht existent.

    Zum anderen nimmt einem Eclipse gewaltig viel Arbeit ab. Man tippt etwas und lässt Eclipse den Rest erledigen wie zb Variablen erstellen, Klassen importieren etc.



  • Ich weiß nicht, was für einen Rechner du hast. Ich hab einen Core i7 mit 16GB RAM und SSD. Und trotzdem ist Eclipse bei mir nicht "schnell". Ich merke öfter mal, dass es mal eine Pause macht, z.B. beim Wechseln der Fenster, Gehe zur Deklaration usw. Und mit der Zeit wird es immer langsamer.

    Mit Visual Assist hab ich auch einiges an Refactoring Funktionen für C++. Paar Ideen hätt ich vielleicht noch, was man da verbessern könnte, ist aber nichts dabei, was ich großartig vermissen würde. Kann man wunderbar damit arbeiten.



  • Auf der Arbeit einen i3, 12GB RAM und keine SSD. 😕
    Original Oracle Java?

    Bei C++ steigt meiner Erfahrung nach jede IDE irgendwann aus wenn man Unfug mit Templates treibt. Wenn man Java ähnlich aufgeräumt programmiert dann natürlich weniger.

    Was mich freut ist dass Eclipse bei soetwas nie die Fassung verliert. Ist zwar eigentlich selbstverständlich aber bin in Java ein richtiger Stream-Junkie geworden weil es einfach Spaß zu Programmieren ist. 🙂
    Habe ich immer im Vergleich zu C++ vermisst.

    Arrays.stream(new Integer[]{1, 2, 3, 4, 5}).filter(v -> v % 2 == 0).map(v -> v.toString()).collect(Collectors.toList()).size();
    


  • Mechanics schrieb:

    Bei kleinen Projekten finde ich Java und C# (vor allem C#) auch besser.

    und da du auch schriebst, dass nur 10% der Projekte wirklich mit vielen bis hundert Mann entwickelt werden, dann ist also Java/C# für 90% aller Softwareprojekte zu empfehlen. Toll, und solch eine Aussage von einem C++-Menschen.

    Zum Thema mit zum C++-Auftritt in der Öffentlichkeit, der könnte wirklich schlechter kaum sein. Es entsteht nun einmal der Eindruck, das man C++ nur nimmt, wenn man gar keine andere Wahl hat und nicht weil es sich gut damit entwickeln lässt. Jetzt wo so viele neue Features zu C++ gekommen sind, wäre es doch an der Zeit dies auch mal an die Leute ran zutragen. Mit einer C++-Zeitschrift guten Büchern, Video und so weiter. Wo halt nicht nur die Funktonbeschreibung der Sprache im Mittelpunkt steht, sonder was und wie man was damit schustern kann. Das fast unerschöpfliche Meer der BestPractice-Beispielen fehlt total, so unter dem Motte, so schreibt man einen kleinen Webserver, oder so lässt sich eine CSV-Datei lesen und schreiben, oder so erstelle ich ein kleines Jump-and-Run, so erstelle ich Masken für eine Datenbankabfrage und schreibe Verifikatoren für die Textfelder, so setzte ich die Lib OpenCV und XYZ ein, so mache ich mir das Leben mit CMake leichter, so sind die Hürden mit Crossplattform-Geschichten zu meistern und so weiter und so fort. Die Themen geben Stoff für viele viele Jahre zu dem Thema und dabei kann man immermal ein Feature von C++ hervorheben und genauer erklären.

    Einfach nur die Buchstaben und die Grammatik und Rechtschreibung einer Sprache zu lernen reicht doch nicht um tolle Bücher zu schreiben. Das ist ein Witz wie C++ an die Menschen ran getragen wird. Es fehlt das Ubuntu für die Massen. Eine Bühne, wo C++ dann das zeigen kann, was es auch sein kann, außer kompliziert und staubtrocken. Entwickeln soll Spaß machen und leicht von der Hand gehen, dann bleibt die Motivation für die Sprache auch lange erhalten. Voralem ist Programmieren auch was praktisches, was auch immer wieder mit praktischen Beispielen gezeigt werden sollte. Genau wie es mit bei Referenzen immer ernorm hilft zu jeder verdammten Funktion ein kleines Beispiel als Code mitzukommen. Verstehe ich den Text nicht, weil er einfach zu akademisch geschrieben ist, dann erkenne ich zu 99% aus dem Codeblock was diese und jene Funktion macht und das in ein paar Sekunden.

    Ich werde mit jetzt den Spaß machen und mein Projekt mal in C++ umsetzen und weiterentwickeln. Und ja ich weiß wie die Sachen im Speicher funktionieren. Ich habe damals ein paar Jahre ausschließlich zu 100% in Assembler programmiert.

    Aber ich hoffe, ich konnte hier nochmals klar machen, warum C++ den Ruf hat den es hat. Es liegt an euch Fachautoren, Verlegern und natürlich auch an Foren- und Blog-Betreibern diesen Ruf zu verändern.



  • NiceJava schrieb:

    Aber ich hoffe, ich konnte hier nochmals klar machen, warum C++ den Ruf hat den es hat. Es liegt an euch Fachautoren, Verlegern und natürlich auch an Foren- und Blog-Betreibern diesen Ruf zu verändern.

    Wenn du dich daran so störst, dann lerne halt C++ und ändere es selbst. :p Niemand wird hier etwas ändern, was er selbst gar nicht als Problem ansieht. Ich persönlich kann auch nicht so recht nachvollziehen was du sagst. Es gibt genügend best practice Bücher über C++.
    Und hier deine C++ Webserver:

    http://www.adp-gmbh.ch/win/misc/webserver.html

    http://www.boost.org/doc/libs/1_56_0/doc/html/boost_asio/examples/cpp03_examples.html#boost_asio.examples.cpp03_examples.http_server

    http://www.dreamincode.net/forums/topic/207537-c-simple-web-server/

    Andere C++ Tutorials:

    http://www.dreamincode.net/forums/forum/48-c-tutorials/

    http://www.c-plusplus.net/forum/f55

    @Mechanics: Schon mal IntelliJ ausprobiert? Gibt es auch als kostenlose Community-Edition. Legt noch mal einen drauf was gute Java-IDEs angeht.

    L. G.,
    IBV



  • Wenn man fehlervermeidend programmieren will, ist es in C++ am einfachsten. Also für mich bei quasi jedem Programm.

    NiceJava schrieb:

    Es liegt an euch Fachautoren, Verlegern und natürlich auch an Foren- und Blog-Betreibern diesen Ruf zu verändern.

    Sag doch mal bescheid, wenn der Gallileo-Verlag und Jürgen Wolf sich aus dem C++-Geschäft zurückziehen. Es gibt genug gute Bücher, aber sie gehen unter durch total falsche (anfangs gefakte) Amazon-Rezensionen.

    Außerdem KANN es keine durchgängig anfängerfreundliche Sprache geben, denn das Programmieren selbst ist total kompliziert, fürchte ich. Versuche dahin wie der Java-GC rächen sich stets.



  • Ethon schrieb:

    Ab dann hat man 0.0 Lag bei Aktionen.

    Hm.. Wieviel Wochen muss Eclipse dafür laufen, dass es dort ankommt? Bei mir ist es nie soweit gekommen.



  • IBV schrieb:

    NiceJava schrieb:

    Aber ich hoffe, ich konnte hier nochmals klar machen, warum C++ den Ruf hat den es hat. Es liegt an euch Fachautoren, Verlegern und natürlich auch an Foren- und Blog-Betreibern diesen Ruf zu verändern.

    Wenn du dich daran so störst, dann lerne halt C++ und ändere es selbst. :p Niemand wird hier etwas ändern, was er selbst gar nicht als Problem ansieht. Ich persönlich kann auch nicht so recht nachvollziehen was du sagst. Es gibt genügend best practice Bücher über C++.
    Und hier deine C++ Webserver:

    http://www.adp-gmbh.ch/win/misc/webserver.html

    http://www.boost.org/doc/libs/1_56_0/doc/html/boost_asio/examples/cpp03_examples.html#boost_asio.examples.cpp03_examples.http_server

    http://www.dreamincode.net/forums/topic/207537-c-simple-web-server/

    Andere C++ Tutorials:

    http://www.dreamincode.net/forums/forum/48-c-tutorials/

    http://www.c-plusplus.net/forum/f55

    @Mechanics: Schon mal IntelliJ ausprobiert? Gibt es auch als kostenlose Community-Edition. Legt noch mal einen drauf was gute Java-IDEs angeht.

    L. G.,
    IBV

    Ja, alles auf Englisch, da ist der Markt ja auch bedient. Jetzt kommt wieder der Spruch dass ohne Englisch nichts geht blablabla. Ist mir auch schon klar, aber für den Anfänger ist es wesentlich einfacher wenn er wenigstens in seiner Muttersprache lernen kann.

    So wie es aussieht, bleibt dann halt C++ bei seinem schlechten Ruf, da niemand was ändern will auf dem deutschen Markt.

    Eclipse und Netbeans rennt wie Sau bei mir unter einem i7 und auch mein Software-Renderer, den ich unter Java schreibe, macht keine Mucken. Das einzige unter OSX zieht mein Programm 50% CPU auf meinem i5 Macbook, unter Linux und Windows 3% auf einem i7 12GB Ram PC mit GTX760 und SSD. Ganz schlimm funktioniert Eclipse und auch Netbeans unter Mavericks und Yosemite, da habe ich schnell wieder auf Mountain Lion downgegradet. Aber wie gesagt unter Windows und XFCE unter Linux kann ich nicht meckern über die Performance.



  • NiceJava schrieb:

    Ja, alles auf Englisch, da ist der Markt ja auch bedient. Jetzt kommt wieder der Spruch dass ohne Englisch nichts geht blablabla. Ist mir auch schon klar, aber für den Anfänger ist es wesentlich einfacher wenn er wenigstens in seiner Muttersprache lernen kann.

    Also so kompliziert ist das Englisch dieser Fachbücher ja nun nicht, daß man davon groß behindert würde.



  • @NiceJava: Wie liest du eigentlich die Java Doc? Vieles gibt es nur in Englisch.



  • Ach komm, der musste ja jetzt kommen. Dann könnten man auch alle deutschen Posts, Fachartikeln, Bücher usw sein lassen. Es ist halt immer schwerer was in einer Fremdsprache was zu lernen und C++ ist schon schwer genug, im Vergleich zu den anderen heutig häufig eingesetzten Sprachen.



  • IBV schrieb:

    @NiceJava: Wie liest du eigentlich die Java Doc? Vieles gibt es nur in Englisch.

    Es geht doch nicht um mich, ich komme recht gut mit dem Fach-englisch klar. Aber ich habe halt genug Empathie und weiß auch noch aus meinen Anfangstagen, dass mir deutsche Artikel immer schneller einen Durchblick verschafft haben. Wenn man über einem gewissen Level raus ist, geht alles auch in English, aber gerade die ersten Schritte wäre was in der Muttersprache schon toll. Und wenn ich die Wahl habe zwischen einer englischen oder deutschen Ausgabe, dann wähle ich auch heute noch die deutsche, obwohl ich auch Wälzer in English habe.

    Aber Englisch vs Deutsch wollte ich hier nicht diskutieren, nur den Fachartikelmangel auf Deutsch von C++ im Vergleich zu Java und Konsorten, den man durch die Bank weg beobachten kann.

    Wenn man heute in die Welt des Programmierens einsteigt, egal ob an der Uni, in der Ausbildung oder auch als Hobby, dann spielt C++ wirklich keine große Rolle und das müsste ja nicht so sein.



  • NiceJava schrieb:

    Wenn man heute in die Welt des Programmierens einsteigt, egal ob an der Uni, in der Ausbildung oder auch als Hobby, dann spielt C++ wirklich keine große Rolle und das müsste ja nicht so sein.

    Das hat erstens nichts mit Fachbüchern zu tun, schließlich ist C++ älter als Java, zweitens kommt es auf das Gebiet drauf an. An meiner FH ist zwar bei C und Java der Schwerpunkt, aber bei den C-Vorlesungen haben wir einen C++ Crashkurs bekommen, weil andere Profs das in ihren Vorlesungen voraussetzen. Ich habe das jetzt in drei Vorlesungen gebraucht: Bildverarbeitung, Computergrafik und Multimedia. Und bei meiner Werkstudententätigkeit (Bildverarbeitung) brauche ich das auch und deswegen sehe ich mich nun gezwungen, C++ professionell zu lernen. Irgendwelche Kochbücher helfen mir da übrigens nicht weiter, die es übrigens sehr wohl gibt, auch auf Deutsch. Guck mal bei amazon. Da gibt es Bücher bei denen man C++ mit Spieleprogrammierung lernt. Oder Schrödingers Katze lernt C++ usw. Alles da...

    L. G.,
    IBV


Anmelden zum Antworten