Haben die alten Widgets ausgesorgt?



  • IBV schrieb:

    Mechanics schrieb:

    Aber bei großen Projekten die schon laufen, ist man mit C++ mindestens genauso produktiv.

    Wieso ist man bei kleinen/mittelgroßen Projekten mit C# und Java produktiver und bei großen Projekten plötzlich nicht mehr? 😕

    Bei C# (oder Java) kann man sofort loslegen. Du startest die Entwicklungsumgebung, hast eines riesige Standardbibliothek, die wahrscheinlich schon vieles von dem was du brauchst mitbringt, und kannst direkt loslegen. Mit C++ kann man erstmal nicht ganz so direkt loslegen. Man braucht erstmal ein Buildsystem. Wenn man sich noch gar nicht auskennt, ist es schon mal eine Hürde. Wenn man sich mit einem auskennt, aber aus irgendeinem Grund plötzlich ein anderes braucht, ist es wieder eine Hürde. Dann braucht man wahrscheinlich erstmal irgendwelche Frameworks. Ist ziemlich wahrscheinlich, dass auch ein kleines Tool eine GUI brauchen wird, also muss man sich erstmal ein Framework wie Qt oder GTK besorgen und einrichten. Auch damit ist man nicht ganz so schnell, wie mit C#. Ich arbeite schon seit zig Jahren mit Qt und, trotzdem könnte ich eine kleine langweilige GUI in C# schneller erledigen. Wenn man dann irgendwelche zusätzlichen Bibliotheken braucht, ist es erstmal wahrscheinlich, dass man in C++ erstmal zusätzlichen Code schreiben muss, um die einzubinden, allein schon, weil jeder seine eigenen String und Container Klassen schreibt. Das kostet bei einem kleinen Projekt alles Zeit und rentiert sich nicht.
    Bei einem großen Projekt ist es egal (vor allem, wenns schon läuft). Da hat man irgendwann ein Buildsystem eingerichtet, verwendet bereits zig Bibliotheken, hat gewisse Workflows usw. Da werden dann wieder die Stärken von C++ wichtiger, wie Flexibilität oder gutes Laufzeitverhalten.



  • Das mit den Fixkosten stimmt schon, aber C# bietet auch genug Langzeitvorteile. Ich bin ja völlig verdorben, seit ich LINQ benutze, weil meine Unit-Tests jetzt WYSIWIM sind. Oder seit ich State-Machines für Hintergrundtasks nicht mehr von Hand machen muß.



  • Ich hab ja nicht unbedingt behauptet, dass C# für große Projekte schlecht wäre. Nur, dass sich die Vorteile relativieren und C++ dann auch nicht mehr so schlecht abschneidet.



  • Mechanics schrieb:

    Wenn man sich noch gar nicht auskennt, ist es schon mal eine Hürde.

    Hmm.
    Geanu darum gehts. Chefchen muss abschätzen, was zu *seiner* Amtszeit am meisten Output pro Kosten macht.



  • Meinte ich nicht unbedingt so... Buildsysteme ist etwas, was mich persönlich schon immer irgendwie gestört hat. Ich will doch einfach nur programmieren, ich hab keine Lust, mich in cmake reinzudenken. Hat sich in der Arbeit aber schon jemand drum gekümmert, ich weiß was zu tun ist, ist also keine Hürde mehr 😉



  • Ein neues Projekt in C++ anzugehen würde ich mir schwer überlegen und nur machen, wenn es unbedingt nötig wäre und es keine Alternative Sprache für die Anforderungen gibt. Man darf ja auch nicht vergessen, wie schwer man sich mit C++ das Bein abhacken kann, wie Stroustrup es so schön in seinem Buch beschrieb. Entwickler zu finden, die sich dann neu in das C++-Projekt einarbeiten und auch so weit C++ können, dass sie nicht großen Schaden anrichten, dürften auch schwer zu finden sein.

    Warum sollte man bei nicht so Performance kritischen Sachen überhaupt noch auf C++ zurückgreifen und nicht gleich Java oder C# nehmen? Da kann man von der Sprache her nicht viel falsch machen und jeder ist da schnell drin und um den Nachwuchs muss man sich auch keine Sorgen machen.

    Ich persönlich fand es unheimlich, wie schnell mein Projekt mit JavaFX schon im Vergleich zu Swing vorangeschritten ist. Ich habe das Projekt, was ich mit C++ und Qt angefangen und habe, trotz umschreiben der C++ Klassen auf Java, viel schneller wachsen sehen, als ich das mit C++ noch auf dem Plan hatte. Ich werde von der Sprache und der IDE nicht so aufgehalten, obwohl ich Java erst intensiv seit ein paar Wochen programmiere. C++ versuche ich schon seit Jahren immer wieder mal richtig zu lernen, aber da alles richtig gut zu machen, ist schon eine Herausforderung für mich.

    Ich bin nach wie vor auch noch an C++ interessiert, aber eindeutig mehr Spaß habe ich, wenn ich Netbeans anwerfe und mich von den Live-Fixes, dem Package-System, geilem Refactoring etc. verwöhnen lasse. Die Fehler, die ich mache, sind da so schnell gefixt, das ist unglaublich. Man kommt einfach sehr schnell und schön zu Potte und wird nicht von der Sprache aufgehalten. Zusätzlich ist alles kostenlos und läuft auf jeder Plattform.

    Vielleicht nimmt meine Euphorie auch wieder ab, aber derzeit kann ich es nicht erwarten weiter zu programmieren, das hatte ich sonst selten. Man, ich ärgere mich dass ich so viele Jahre immer einen Bogen um Java gemacht habe(nicht nativ und blablabla).



  • NiceJava schrieb:

    Da kann man von der Sprache her nicht viel falsch machen

    gaanz falsch



  • volkard schrieb:

    NiceJava schrieb:

    Da kann man von der Sprache her nicht viel falsch machen

    gaanz falsch

    Neeeeiiiinnnnn!!!! Seine ganzen Argumente wurden zu nicht gemacht mit nur zwei(!) Wörter von volkard!!! 😮



  • Also ich muß auch mal was dazu schreiben. 😃

    Ich kenne beide Welten: C++ und Java. Java mache ich jetzt beruflich seit 14 Jahren. In C# mit Silverlight und WPF habe ich ein wenig was gemacht, also reingeschnuppert.

    Für mich ist erstmal eines ganz klar: wenn jemand sein Werkzeug viele Jahre regelmäßig benutzt, schlägt er jeden anderen Konkurrenten, der Anfänger in der vermeidlich "einfacheren" Sprache ist. Sprich: ein C++-Qt-Profi (nein, Profi ist man in keinem Gebiet nach einem Jahr!) wird jeden Java-FX-Anfänger in Grund und Boden programmieren.

    D.h. aber nicht, das Qt oder C++ deshalb produktiver ist. Aber man sollte doch bei Vergleichen immer zwei Leute nehmen, die ihr Fach aus dem Eff Eff können.

    Und dann kommt der nächste Punkt: die Anforderungen. Lassen sich diese gleichwertig umsetzen? Qt Quick und Java FX können am Ende das gleiche, was der Kunde "sieht". Beides wird nicht in C++ oder Java umgesetzt, sondern einmal in ECMA und einmal in FXML. D.h. die GUIs zu designen/erstellen haben erstmal nichts mit der Sprache zu tun. Ist bei WPF/Metro auch so, da macht man es in XAML.

    Meine Meinung? Der Horror! 👎 Als Programmierer soll mach eine "Nicht-Programmierer"-Sprache parallel anwenden. Und das dann mit der eigentlichen Programmiersprache binden. WTF?

    Der Traum/Marketing von wegen, das ein Projekt einen Designer und einen Coder hat, und der Mist getrennt werden muß, ist doch die größte Lüge! Die wenigsten Firmen haben wirklich einen Designer angestellt oder beauftragen einen. Selbst Großkonzerne (für den ich arbeite) leistet sich keinen für Inhouse-Software.

    Das mag bei Adobe. Magix usw. anders aussehen, aber das sind doch verschwindend geringe Nutzer dieser Technologien? Die meisten Projekte sind doch eher Individual-Software, wo dann die Masken gleich vom jeweiligen C++/C#/Java-Coder mit übernommen werden. Und die müssen jetzt den Mist mit XAML, FXML, ECMA usw. ausbaden.

    Und hier kommt meiner Meinung nach die Chance für Java: JavaFX-GUIs kann man komplett in Java-Code umsetzen. Kein Bruch in der Technologie/Sprache. 👍

    WPF/Metro kann man auch irgendwie in C# umsetzen... aber wo ist die offizielle Doku? 😕

    Die Verkündung von Qt Quick sorgte in der Qt-Gemeinde für einen Aufschrei, wo denn jetzt die C++-Klassen dafür sind? Angeblich soll ja alles auch in C++ gehen... aber wo ist die offizielle Doku?

    Mich persönlich stört der neue GUI-Hype nicht. Nein, endlich können auch Desktop-Anwendung modern aussehen und belasten nicht mehr die CPU. Die GPU (die heute selbst eine AMD APU inklusive hat) muß sich im Büro nicht mehr langweilen.



  • *hust Du musst bei JavaFX8 nicht FXML nehmen, sondern kannst komplett bei Java bleiben, oder beides mischen. Hast du dich überhaupt ernsthaft mit JavaFX8 beschäftigt?



  • JavaFXFan schrieb:

    *hust Du musst bei JavaFX8 nicht FXML nehmen, sondern kannst komplett bei Java bleiben, oder beides mischen. Hast du dich überhaupt ernsthaft mit JavaFX8 beschäftigt?

    *hust*

    Artchi schrieb:

    Und hier kommt meiner Meinung nach die Chance für Java: JavaFX-GUIs kann man komplett in Java-Code umsetzen. Kein Bruch in der Technologie/Sprache. 👍



  • JavaFXFan schrieb:

    Hast du dich überhaupt ernsthaft mit JavaFX8 beschäftigt?

    hast du dich überhaupt ernsthaft mit meinem Post beschäftigt? 🙄



  • Naja, XAML ist für UI-Design wirklich einfacher zu lesen.

    Vergleiche das:

    // Initialize the button
    Button myButton = new Button();
    // Set its properties
    myButton.Width = 160;
    myButton.Height = 72;
    myButton.Content = "Click Me";
    // Attach it to the visual tree, specifically as a child of
    // a Grid object (named 'ContentPanel') that already exists. In other words, position
    // the button in the UI.
    ContentPanel.Children.Add(myButton);
    

    mit dem:

    <Grid x:Name="ContentPanel" Margin="12,0,12,0">
        <Button Height="72" Width="160" Content="Click Me" />
    </Grid>
    

    Im Prinzip kannst du alles fast 1:1 von XAML in C# übertragen. Die Attribute sind einfach Properties. In der MSDN sind auch alle Properties, Events, Methoden der Klassen beschrieben, das ist die offizielle Doku und meiner Meinung nach ausreichend.



  • Es ist trotzdem ein Bruch in der Technik. Ich muß zwischen zwei Welten hin und her springen. Muß Events in zwei Welten verknüpfen. usw.

    Das ist genauso sch**** wie der Bruch zwischen OOP und RDBMS. Keiner kann mir erzählen, dass das produktiv und effektiv ist.



  • Button myButton = new Button();
    myButton.Width = 160;
    myButton.Height = 72;
    myButton.Content = "Click Me";
    ContentPanel.Children.Add(myButton);
    

    Ja, den Code kann ich schnell lesen. Ist sozusagen meine Muttersprache.

    XML/XAML ist jedenfalls nicht Human-readable. Weiß nicht wer das immer verbreitet, das XML gut lesbar ist. Ist nicht mal effizient für ne Maschine zu verarbeiten. Stichwort JSON.

    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, z.B. für Validierung, Events usw. Dann ist alles dahin und ich weiß nicht...



  • NiceJava schrieb:

    ...

    Mich stören die vielen "ich" in deinem Beitrag. Ich habe vor allem explizit von größeren Projekten gesprochen, also so Größenordnung mehrere dutzend Entwickler und wird jahrzehntelang weitergepflegt. Alles, wo du "ich" schreibst, hört sich erstmal nach kleinen Projekten an 😉 Und da hab ich auch kein Problem mit Java oder C#.
    Ansonsten kann C++ bei großen Projekten durchaus seine Stärken ausspielen, nicht nur in Bezug auf Performance. Und bei jedem großen Projekt gibts Stellen, die performancekritisch sind, bzw. die Gesamtperformance eines großen Projekts muss stimmen. In C++ schießen sich hauptsächlich Anfänger in den Fuß. Ansonsten kann man durchaus sicheren Code schreiben, bei dem noch mehr Fehler zur Compilezeit abgefangen werden, als bei Java.



  • Also ich habe überhaupt kein Problem mit einem Mix aus Java und FXML für die UI. Ich kann beides wunderbar lesen und editieren. Mehrere hundert Entwickler interessieren mich nicht und sind auch sicher nicht das Tagesgeschäft eines Software-Entwicklers, sonder eher die Ausnahme.

    Klar spreche ich von mir. Ich kann ja schlecht für andere sprechen.

    Viel Spaß beim Suchen von C++-Entwickler die keine Anfänger mehr sind, wie lange braucht man um kein Anfänger mehr zu sein, 5 Jahre? Wer tut sich denn ernsthaft nach dem Studium heute noch C++ anstelle von Java, C# etc an? Das sind doch bloß ein paar Spezialisten. Der Löwenanteil tut sich C++, außer als Hobby, garantiert nicht mehr freiwillig an. Guckt dir doch mal die Stellenanzeigen an wie die Verteilung nach Sprachen da ist und schau die mal die Fachzeitschriften an, das ist auch immer ein guter Indiz was gerade so gefragt ist.



  • Das hört sich jetzt etwas naiv an... Ich hab von mehreren dutzend und nicht mehreren hundert Entwicklern geschrieben. Und das ist sicher keine Ausnahme. Ich weiß, es gibt sehr viele Klitschen mit 3-4 Entwicklern, hab auch in so einer gearbeitet. Aber es gibt auch sehr viele Projekte, an denen dutzende oder tatsächlich auch hunderte Entwickler arbeiten, und das sind meist auch die interessanteren Projekte. Ob es mehr solcher als kleinerer Projekte gibt, weiß ich nicht, aber das ist ganz sicher keine Ausnahme, auch wenn dir sowas anscheinend noch nicht untergekommen ist.
    Es stimmt schon, dass mittlerweile nicht mehr so oft C++ unterrichtet wird und es mehr Java/C# Jobangebote gibt. Aber das sagt erstmal auch nicht viel aus. Diese ganzen 0815 Java/C# Jobs können mir getrost gestohlen bleiben. Und ich weiß wovon ich rede, ich hab vier Jahre in diesem Bereich gearbeitet und kenne sehr viele dieser Firmen und Projekte. Es mag im Java Bereich vielleicht paar weniger interessante Projekte geben, die ich mir näher anschauen würde, aber in C++ gibt es deutlich mehr. Allein schon dass jedes größere bekannte oder wichtige Programm ist in C++ (oder vielleicht selten mal in C) geschrieben. Alle Browser, Office Pakete, CAD Systeme, DBMS, Photoshop... Irgendein größeres bekanntes Programm in Java? Außer Eclipse und Netbeans fällt mir eigentlich überhaupt nichts ein, glaub auch nicht, dass da noch jemals was kommt.



  • Artchi schrieb:

    Meine Meinung? Der Horror! 👎 Als Programmierer soll mach eine "Nicht-Programmierer"-Sprache parallel anwenden. Und das dann mit der eigentlichen Programmiersprache binden. WTF?

    Der Traum/Marketing von wegen, das ein Projekt einen Designer und einen Coder hat, und der Mist getrennt werden muß, ist doch die größte Lüge! Die wenigsten Firmen haben wirklich einen Designer angestellt oder beauftragen einen. Selbst Großkonzerne (für den ich arbeite) leistet sich keinen für Inhouse-Software.

    Das mag bei Adobe. Magix usw. anders aussehen, aber das sind doch verschwindend geringe Nutzer dieser Technologien? Die meisten Projekte sind doch eher Individual-Software, wo dann die Masken gleich vom jeweiligen C++/C#/Java-Coder mit übernommen werden. Und die müssen jetzt den Mist mit XAML, FXML, ECMA usw. ausbaden.

    Das mag sein, aber die Trennung des Designs erlaubt es am Ende wenigstens, dass man schnell mal einen freiberuflichen Designer für nen Tag da ranlassen kann um mit dem, was die bestehenden GUI IDs erlauben ohne den Code zu ändern, etwas anzufangen und dann die GUI doch noch zu optimieren.

    Notfalls kann der Auftraggeber auch selbst einen Designer mit dieser Aufgabe beauftragen.

    Mit hardkodiertem GUI Code wäre dies nicht möglich.
    Änderungen sind bei hardkodierten Code nicht mehr möglich ohne auch den Programmfluss usw. zu ändern, dass ist bei JavaFX und Qt Quick & Co anders.



  • NiceJava schrieb:

    Viel Spaß beim Suchen von C++-Entwickler die keine Anfänger mehr sind, wie lange braucht man um kein Anfänger mehr zu sein, 5 Jahre? Wer tut sich denn ernsthaft nach dem Studium heute noch C++ anstelle von Java, C# etc an?

    Antun? Ich würde sagen, wer in C++ entwickeln muss, wird besser bezahlt.
    Bei Java gibt's nämlich mehr Konkurrenz die einem ersetzen könnten.

    Das ist also ein Grund, sich C++ nach dem Studium anzutun.

    PS: Gilt natürlich auch für C oder auch inzwischen Nischensprachen wie Delphi, Fortran und Ada.

    Das sind doch bloß ein paar Spezialisten. Der Löwenanteil tut sich C++, außer als Hobby, garantiert nicht mehr freiwillig an. Guckt dir doch mal die Stellenanzeigen an wie die Verteilung nach Sprachen da ist und schau die mal die Fachzeitschriften an, das ist auch immer ein guter Indiz was gerade so gefragt ist.

    Ich übersetz mal die Stellenanzeige für einen Java Entwickler:

    Unser derzeitiger Java Entwickler taugt nichts oder wir haben zumindest das Gefühl, dass er besser sein könnte.
    Wir suchen daher einen anderen Java Entwickler der für weniger arbeitet und mehr Leistet, in der Hoffnung bei dem breiten Angebot an hunderten arbeitslosen Java Entwicklern doch einen zu finden, der besser ist als der, den wir momentan leider haben.

    In C++ kann zwar die Ursache, warum eine Firma einen neuen Entwickler sucht, der gleiche sein, aber sie wird es wesentlich schwerer haben auch wirklich Ersatz zu finden.
    C++ Entwickler ist somit ein recht sicherer Job, der sich zum Haus abzahlen eignen. Im Gegensatz zum Java Entwickler der jederzeit ersetzbar ist.


Anmelden zum Antworten