Soll ich C++ benutzen?
-
Hi,
mir wurde schon vor fast 15 jahren eingetrichtert, dass das wichtigste von allem plattformunabhängige Programmierung wäre. Und wo wurden die Programme benutzt, die ich seit dem gemacht habe - ausschließlich unter Windows.
Sicher gibt es auch Programme die auf mehreren Plattforman laufen müssen, aber das sind nur ganz wenige, und Plattformunabhängigkeit bedeutet IMMER eine Beschränkung auf den KLEINSTEN gemeinsamen Nenner.
Da macht es keinen Unterschied, ob ich Plattformunabhängigkeit durch den Browser als Betriebssystem, Java oder sonstwas erreiche.
Im übrigen sind die Betriebssysteme doch heute zum größten Teil alle sehr ähnlich. Irgendwie sind das mehr oder weniger alles kleine Unixe, auch wenn auf manchen Windows, auf anderen Linux und auf wieder anderen Mac-OS steht. An Anfang zu Zeiten von Sios, Udos, CP/M... war das noch nicht so. Es ist also in gewisser Sicht eher eine Vereinheitlichung zustande gekommen. (spätestens mit dem Tod von Jobst wird die Mac-Euphorie auch wieder abebben).
Unsere ganzen Disskusionen zu dem Thema hier sind zum großen Teil sehr akademisch/dogmatisch und von der eigentlichen Sache abgehoben.
Betrieb XYZ will nicht im Browser oder in der Cloud oder native arbeiten, der will SEIN PROBLEM LÖSEN bzw. SEINE AUFGABEN ERFÜLLEN.
Den interessiert es dabei wenig, was wir dabei dazu zu sagen haben. Den interessieren vor allem Sicherheit, Zuverlässigkeit, Kosten, Effizienz...
Was nützen die besten Cloud-Lösungen, wenn gerade das Netzt abgeschmiert ist.
Eine auf Windows- oder Unix bzw. Linux basierende Softwarelösung ist einmal installiert auf dem Rechner immer verfügbar. Da ist es egal, ob er gerade Netzzugang hat, oder ob momentan das nötige Kleingeld für die Cloud-Nutzung fehlt. Er kauft eine LÖSUNG für seine Aufgaben ein, und hat die auf dem Schreibtisch unbegrenzt zu seiner Verfügung. Für viele Betriebe ist es schlichtweg eine Katastrophe, wenn für längere Zeiten die EDV ausfällt.
Auch sind Touchpads sicher elegant, aber wenn ich mir angucke, mit was für einen Affenzahn bei uns die Kolleginnen ihre Zahlen über eine normale Tastatur reindonnern, dann sehe ich das nicht mal mit Spracheingabe als schneller zu realisieren an.
Mir hat schon kurz nach der Wende ein Fachmann aus den alten Bundesländern gesagt, das smein Job demnächst wegfällt, weil das alles über entsprechende Superprogramme automatisch erfolgt. Kurioserweise sitze ich immer noch an meinem Computer und schreibe meine Software selber.
Sicher kann mann vieles auch im Browser realisieren, aber zum einen weiss ich da nie so ganz genau wer alles mithört, zum anderen lege ich Aufgaben lieber in die Compilierzeit als in den Programmstart im Browser. Ein natives Programm ist fertig. Das läuft ohne Probleme (wenn ich sauber programmiert habe) auf jedem Rechner, egal, welches Systemupdate er drauf hat. Programme im Browserfenster können sich unter umständen mit der nächsten Java-Version völlig anders verhalten. Schließlich sind diese Scriptsprachen oder Zwischencodes nur ein Hinweis, wie es in etwa ablaufen sollte. Maschinensprache ist dagegen fest in Eisen gegossen. Und für die Auslieferung compiliert wir ein Programm genau ein einiziges mal. Gestartet wird es dagegen meist wesentlich öffter.
Auch kann ic mir kaum vorstellen, daß ein Kampfpilot in einer F16 wenn der Gegner in Sicht kommt im Browser Das Adventure "SchiessDenVogel" startet, sondern der wird auf den Knopf drücken und sich darauf verlassen, dass die entsprechenden in C++ oder ADA programmierten Dinge ihre Pflicht tun. Und wenn ich mit dem Auto auf Glatteis komme möchte ich auch nicht erst im Browse auf "HilfMirHalten" klicken.Gruß Mümel
-
Die Plattformunabhängigkeit ist echt ein Problem, sehe ich hier auch auf Arbeit. Wir machen alle Desktop-Anwendungen in Java, aber die Projektleiter wollen alles immer Windows-like haben. Dann dürfen wir uns den fehlenden Kram selbst implementieren, wenn wir im Netz nichts brauchbares finden. Und ich denke mir dann immer: mit C oder C++ hätte ich einfach das Windows SDK benutzen können, weil da die Wünsche vom Projektleiter drin sind... weil er diese Gimmicks alle ja von Windows her kennt. Aber ist ja nicht mein Geld was da verbraten wird.
Wenn man sich mal so neuere Projekte anschaut, wie Google Chrome Browser, wird man feststellen, das diese ihre GUI plattform-abhängig programmieren. Chrome benutzt z.B. in der Windows-Version die WTL. Dann wird sich halt die Mühe gemacht, unter Linux eine andere GUI-Lib zu nutzen. Bedingte Compilierung sei Dank.
Auch Adobes recht neues Lightroom nutzt unter Windows die MFC, und für OS X wohl sicherlich Cocoa. Adobe macht sich in dem Fall die Arbeit. Denn nur so kann man dem Anwender (Kunden!) die beste User Experience bieten.
Dumm nur, das die meisten nativen Windows-GUI-Libs eine schreckliche API haben (Paradebeispiele Win32 API, MFC und WTL).
Die meisten nutzen doch wahrscheinlich Qt & Co. nur, weil es erstmal einfacher zu verstehen und zu nutzen ist. Das diese APIs plattform-unabhängig sind, ist denke ich eher ein Nebeneffekt!
Es gab damals für SmartWin++ relativ gutes Interesse. Ein moderne C++-GUI-Lib, die voll plattform-abhängig ist. OK, das Projekt ist heute tot. Aber war ein Ansatz.
Das Plattform-abhängigkeit nicht schlimm ist, zeigen die ganzen OSX-Anwendungen. Aber Cocoa ist (wenn ich mir so die Doku dazu anschaue) sehr einfach zu nutzen. Auch wenn ich Objective-C schrecklich finde, aber das API-Design ist um Längen besser als die nativen MS-APIs.
Was wäre, wenn es eine wirklich moderne, einfach anzuwendende native Win32-API in ISO-C++ geben würde? Ich wette, das viel mehr Programmierer gerne die Plattform-Abhängigkeit in Kauf nehmen würden! So wie es auch viele OSX-Programmierer tun.
-
Artchi schrieb:
Dumm nur, das die meisten nativen Windows-GUI-Libs eine schreckliche API haben (Paradebeispiele Win32 API, MFC und WTL).
Die meisten nutzen doch wahrscheinlich Qt & Co. nur, weil es erstmal einfacher zu verstehen und zu nutzen ist. Das diese APIs plattform-unabhängig sind, ist denke ich eher ein Nebeneffekt!
[...]
Was wäre, wenn es eine wirklich moderne, einfach anzuwendende native Win32-API in ISO-C++ geben würde? Ich wette, das viel mehr Programmierer gerne die Plattform-Abhängigkeit in Kauf nehmen würden! So wie es auch viele OSX-Programmierer tun.
Absolut. Als ich damals angefangen habe mit GUI's habe ich es genommen weil ich die WinAPI schwer verstanden habe. Aber ich hab sie auch als unhandlich und kompliziert kennengelernt. Das hat mir den letzten Nerv geraubt.
wxWidgets dagegen war schnell und einfach zu erlernen und mit wenigen Handgriffen und funktionierendes und produktives Programm gewachsen ohne viele Vorkenntnisse.Eine native WinAPI in C++ wäre ein Anfang - aber ich würde trotzdem bei wxWidgets bleiben, weil mittlerweile Plattformunabhängigkeit für mich eine Rolle spielt.
Der Look and Feel ist ebenfalls wichtig, da der User sonst die App nicht mag eventuell, siehe GTK Programme auf Windows.
wxWidgets und QT bieten hier aber mit nativen Widgets eine gute Alternative.