Haben die alten Widgets ausgesorgt?



  • 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. Ich persönlich kenne ein BusinessBasic und eine Hostel-Verwaltungssoftware in Delphi. Das sind alles kleine Firmen mit 1-5 Mann, aber ich denke schon, dass dies eher der Alltag ist, als große Sachen wie ein Firefox, Photoshop usw. und Firmen in denen gleich 50 Leute an einem Projekt arbeiten.

    Dass Java nur auf Windows läuft ist Unsinn, hier unter OSX läuft es auch wunderbar(wenn man nicht gerade auf Mavericks oder Yosemite geupdatet hat^^) Zumal man jede Javaapp mit zwei Klicks mit einem ausführbaren Starter versehen kann und die JRE einfach mit ins Projekt einkopiert wird, das frisst ja alles heute kein Brot mehr.

    Zu den geilsten Javaprogrammen, der letzten Zeit gehört für mich Bitwig. Da stinkt Cubase richtig gegen ab in meinen Augen.

    Welche Individual-Software muss denn schon so nah an der Maschine dran sein, dass Java nicht reichen würde, außer irgendein Grafikgedöns? Was nun wirklich kein Tagesgeschäft ist.

    Wenn ich eine neue IT-Firma aufmache und Projekt-X an den Kunden bringen will, werde ich dann C++ als erstes in Betracht ziehen, oder werde ich nicht eher erst einmal schauen, ob das nicht mit einer weniger anspruchsvollen Programmiersprache umgesetzt werden kann?



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



  • C++ ist imho einfach eine sehr lustige Sprache. Da macht mir das Programmieren Spaß.
    Java finde ich stumpf, bin aber auch deutlich produktiver damit.



  • NiceJava schrieb:

    Zu den geilsten Javaprogrammen, der letzten Zeit gehört für mich Bitwig. Da stinkt Cubase richtig gegen ab in meinen Augen.

    Das mag auch damit zusammenhängen, dass Bitwig seine eigene Java-Runtime an Bord hat, die für die in Java programmierte Oberfläche der Suite zuständig zeichnet. Alle Oberflächenelemente reagieren gefühlt ohne jede Verzögerung. Die eigentliche Signalverarbeitung – man merkt ihr an, dass sie sorgfältig für Linux optimiert wurde – übernimmt nicht etwa Java-Bytecode, sondern ein klassisches Binary.

    http://www.linux-community.de/Internal/Artikel/Print-Artikel/LinuxUser/2014/06/Bitwig-Studio-macht-Linux-zur-Musikworkstation

    Wenn ich was in C++ mache, fühle ich mich ehrlich gesagt 20-30 Jahre zurückversetzt. Nicht nur wegen Sprachelemente wie Header, sondern auch wegen dem rückständigem IDE-Support. (Intelligente) Codevervollständigung und Refactoring geht nirgends besser als in Java (und vll. noch C#). Auch die Libraries sind i. d. R. vielfältiger und moderner als in C++. Sowas wie Akka gab es für Scala/Java deutlich früher als das jetzige Prototyp in C++. Dafür ist die C++ Variante performanter...

    Ich hätte gerne die Performance von C++ und sowas modernes wie Scala. Ich denke rust ist so ein Kandidat. Wenn Apples Swift offen wäre, wäre es auch für die Welt interessant.

    L. G.,
    IBV



  • Artchi schrieb:

    XML/XAML ist jedenfalls nicht Human-readable.

    Es ist genauso lesbar/unlesbar wie HTML, und damit haben viele kein Problem. Des weiteren ist XAML kürzer als Sourcecode und kann sogar von der Implementierung unabhängig umgesetzt werden.

    Artchi schrieb:

    Ich kann an der XAML/FXML/HTML/XHTML-Seuche nichts tolles finden, wenn ich da als Mensch drauf schauen soll. Vorallem wenn bei XAML auch noch Code mit versteckt werden kann...

    Man kann Code einbetten, man muss es aber nicht (Es sei den du meinst mit verstecken das man den Code nicht sehen kann, das wäre aber nur typisch für Abstraktionsschichten - in meinem Fall ist der Code weitgehend* außerhalb der UI und unabhängig von der Oberfläche (ob nun WPF, Xamarin.Forms [Android, WP, iOS], WinRT...).

    * Ausnahmen sind ausschließlich die Initialisierung (Bootstrapper) und Code der rein von der UI abhängig ist, den bastle ich aber auch nicht in den XAML-Code.



  • Vor allem kann man doch das XML nutzen oder halt nicht. Man kann in FXML sogar Java direkt einbinden, oder auch Javascript. Man kann komplett auf FXML verzichten und es per Hand im Code mache, oder auch hier ein Teil XML ein Teil durch den Code generieren lassen oder oder oder. Man kann Propertys direkt mit Variablen im Java-Source-Code binden, oder es eben lassen und und und. Bei C++ wird doch immer hervorgehoben, dass man soviel Möglichkeiten hat eine Sache zu erledigen. Und wenn ein Teil in Java nicht schnell genug ist, dann lagert man diesen Teil halt in ein kleines Native-Binary aus. Wenn man nicht will, dass der Kunde was von Java mitbekommt, dann gibt man die JRE mit und wrappt alles und packt das in einen Installer. Der Kunde hat dann eine EXE als Installer und eine EXE um das Programm zu starten und muss kein Java installiert haben, aber es läuft. Und wenn mal der eine oder andere Entwickler, der noch C++ kann, weg stirbt, dann findet man schwer Ersatz. Bei Java kannst du sogar irgendeinen Entwickler nehmen und ihm in einem halben Jahr Java einprügeln, bei C++ ist das nicht möglich, da braucht es Jahrelange Erfahrung bis da mal jemand wirklich einsatzbereit ist.



  • NiceJava schrieb:

    Bei Java kannst du sogar irgendeinen Entwickler nehmen und ihm in einem halben Jahr Java einprügeln, bei C++ ist das nicht möglich, da braucht es Jahrelange Erfahrung bis da mal jemand wirklich einsatzbereit ist.

    na doch.

    Wieso auch nicht, was der neuling in einem halben jahr in java lernt hat er in einem halben jahr auch in C++ gelernt, nur dass er bei C++ sogar noch den Vorteil hat das OOP-Geschiss ignorieren zu können.



  • NiceJava schrieb:

    Bei Java kannst du sogar irgendeinen Entwickler nehmen und ihm in einem halben Jahr Java einprügeln, bei C++ ist das nicht möglich, da braucht es Jahrelange Erfahrung bis da mal jemand wirklich einsatzbereit ist.

    Was?! 😮 Wie kommst du darauf?! Was macht C++ so komplex, dass man Jahre braucht bis man einsatzbereit?



  • NiceJava schrieb:

    Bei Java kannst du sogar irgendeinen Entwickler nehmen und ihm in einem halben Jahr Java einprügeln,...

    Stimmt, dies ist auch ein wesentlicher Grund für die vielen tollen Anwendungen, die besonders träge sind oder gerne NullPointerExceptions produzieren...

    NiceJava schrieb:

    ...bei C++ ist das nicht möglich, da braucht es Jahrelange Erfahrung bis da mal jemand wirklich einsatzbereit ist.

    Ich habe bislang kaum eine Sprache erlebt wo ein wirklich gutes Ergebnis von Personen kommt, die mal eben eine Sprache gelernt haben. C++ mag komplex sein (selbst wenn man Templates nur nutzt und nicht selbst erstellt), doch man lernt mit C++ wenigstens auch etwas Interna, die einen Entwickler wenigstens weiterhelfen wenn er verwundert in anderen Sprachen so etwas wie NullPointerExceptions bekommt...



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


Anmelden zum Antworten