Wegen GUI-Programmierung zu C# wechseln?



  • asc schrieb:

    Grundsätzlich sollte die Sprache erst einmal gänzlich egal sein wenn es um Programmierung geht. Wobei ich dir insoweit recht gebe, das es sinnvoller wäre in der Schule auf etwas einzugehen das man recht einfach auf jeden PC zum laufen bekommt (und WPF setzt schon gewisse Voraussetzungen an das System), wie z.B. C++, Java und Co.

    C# und Java sind einfacher zu lernen als C++



  • sc schrieb:

    C# und Java sind einfacher zu lernen als C++

    Das stimmt, aber grade bei C++ finde ich lernt man sehr viel da man sich hier auch mit dem Speichermanagment, etc. beschäftigen muß. Im Endeffekt ist das aber jedem selbst seine Entscheidung bzw. die des Arbeitgebers. 🙂



  • DEvent schrieb:

    Inzwischen haben weder Linux noch MacOS viel Unterschied mit Windows.

    Wenn du ein laufendes System vorfindest, UND die Benutzer mit der Programmauswahl klar kommen, ja. Diese zwei Bedingungen sind aber in der Regel (gerade bei Jüngeren) nicht gegeben. Und ich hatte bislang fast nie das Glück das ein 0815 PC sofort mit Linux in allen Bereichen klar kommt (zumindest deutlich seltener als mit Windows) - und ja, ich weiß das Linux, gerade wenn man reinen Officebereich betrachtet, durchaus mit Windows vergleichbar ist.

    Und was MacOS angeht: Wenn du viel Geld hast, trifft deine Aussage (Software die sowohl auf Windows als auch MacOS verfügbar ist, ist nur selten Preislich identisch - und sehr häufig gilt dies zum Nachteil von MacOS). Ich habe MacOS aktiv im Einsatz, bevor eine Frage kommt...



  • sc schrieb:

    C# und Java sind einfacher zu lernen als C++

    Dem habe ich auch niemals wiedersprochen. Wobei man anderseits bei C++ auch eher mal zeigen kann was hinter den Kolissen passiert. Nur war im Beispiel WPF kontra C++, und dort ist das Problem das die WPF massiv höhere Anforderungen als ein C++ Compiler erfordert.


  • Administrator

    @Samyboy,
    Ich persönlich habe vor etwas mehr als einem Jahr mit der C# Programmierung angefangen. Ich habe nach einer Sprache gesucht, welche gut für Business Anwendungen ist. GUIs können deutlich angenehmer mit C# erstellt werden und die Datenanbindung ist meistens deutlich leichter (bzw. eigentlich ist das .Net zu verdanken). Also falls du auf Windows entwickeln willst, dann kann ich C# nur empfehlen. Es ist auch wirklich relativ schnell als C++ Programmierer erlernt.

    Ich persönlich bin nun inzwischen soweit, dass ich ein Projekt plane, welches intern auf C++ setzt, eine C Schnittstelle anbietet, welche dann über P/Invoke in ein C# Programm eingebunden wird, damit das GUI per WPF gemacht werden kann. Wobei der endgültige Entscheid dazu noch nicht gemacht wurde. 🙂

    P/Invoke ist, denke ich, auch noch einer der grossen Vorteile von C# .Net.

    Grüssli



  • hö? Das müsste doch auch einfach so funktionieren? WPF und Managed C++. Oder gefällt dir das nicht 😃



  • PRIEST schrieb:

    WPF und Managed C++

    Besser: WPF und C#



  • Managed C++ ist doch eine Missgeburt, Bäh.


  • Administrator

    PRIEST schrieb:

    hö? Das müsste doch auch einfach so funktionieren? WPF und Managed C++. Oder gefällt dir das nicht 😃

    1. Was ich bisher von C++/CLI (Managed C++ ist veraltet) gesehen habe, gefällt mir nicht wirklich.
    2. Die Programmlogik wird später dann wahrscheinlich auch mit GUIs auf Linux und MacOSX ausgestattet. Daher möchte ich gerne ein standardisiertes ABI, damit ich ohne Probleme aus anderen Programmiersprachen die Logik einbinden kann.
    3. Ich überlege mir sogar, die ganze Programmlogik in C zu schreiben. In erster Linie wird es nämlich eine Datenbankanbindung sein und die Datenlogik wird dann von der Datenbank gemacht. Das ist einer der Bereiche, welcher noch erst in der Grobplanung vorliegt 😉

    Grüssli





  • Dravere schrieb:

    Ich persönlich bin nun inzwischen soweit, dass ich ein Projekt plane, welches intern auf C++ setzt, eine C Schnittstelle anbietet, welche dann über P/Invoke in ein C# Programm eingebunden wird, damit das GUI per WPF gemacht werden kann. Wobei der endgültige Entscheid dazu noch nicht gemacht wurde. 🙂

    Mir kommt das sehr wüsst vor. Wenn würde ich dann an deiner Stelle auf PInvoke und die C-Schnittstelle verzichten und auf C++/CLI setzen (was weitgehend C++ kompatibel ist, aber wenigstens auch eine saubere .Net Schnittstelle liefern kann).

    Dravere schrieb:

    P/Invoke ist, denke ich, auch noch einer der grossen Vorteile von C# .Net.

    Genau das P/Invoke sehe ich persönlich als krank an. Ist aber wohl auch Geschmackssache (Ich würde persönlich beim .Net Framework auch eher komplett auf C# setzen).



  • PRIEST schrieb:

    hö? Das müsste doch auch einfach so funktionieren? WPF und Managed C++. Oder gefällt dir das nicht 😃

    WPF lässt sich nur sehr mühsam mit C++/CLI (und vermutlich Managed C++) verwenden, und auch nur wenn man gewisse Abstriche macht. Zumal der WPF Designer (Auch wenn er ohnehin nicht sehr gut ist) auch nur C# und VB.Net unterstützt.


  • Administrator

    asc schrieb:

    Mir kommt das sehr wüsst vor. Wenn würde ich dann an deiner Stelle auf PInvoke und die C-Schnittstelle verzichten und auf C++/CLI setzen (was weitgehend C++ kompatibel ist, aber wenigstens auch eine saubere .Net Schnittstelle liefern kann).

    Naja, ob C++/CLI auch noch mit dem neuen C++ Standard kompatibel sein wird? Mir ist dieses C++/CLI Zeug irgendwie ein zu grosses Gefrickel. Hat meiner Meinung nach viel zu viele Unbekannte. P/Invoke hat vielleicht eine lästige Syntax, aber dagegen helfen enstprechende Codegeneratoren. Ansonsten sehe ich keine Nachteile von P/Invoke.
    Zudem will ich die C Schnittstelle, weil ich eben eine standardisierte Schnittstelle möchte. So bin ich völlig frei, in welcher Sprache ich später die Anbindung machen möchte: Java, Python, C, Objective-C oder sonst irgendwas.

    Aber naja, das Projekt ist ja erst noch in der groben Planung und in diesem Thread geht es um anderes 😉

    Grüssli



  • Danke für alle die geantwortet haben!

    Ich konnte echt was aus diesem Thread mitnehmen 😉



  • Also man kann auch sehr gut in C++ GUIs entwickeln, gibt sogar einige Plattformübergreifende Lösungen wie Qt, GTKmm oder wxWidgets.
    Gibt also keinen Grund hierfür C# zu verwenden, wenn man sich nicht mit .net und der Sprache selbst beschäftigen will.



  • phlox81 schrieb:

    Gibt also keinen Grund hierfür C# zu verwenden, wenn man sich nicht mit .net und der Sprache selbst beschäftigen will.

    Es gibt keinen Grund C++ zu verwenden wenn man sich nicht mit der Sprache selbst beschäftigen will. 🕶



  • C# forever schrieb:

    phlox81 schrieb:

    Gibt also keinen Grund hierfür C# zu verwenden, wenn man sich nicht mit .net und der Sprache selbst beschäftigen will.

    Es gibt keinen Grund C++ zu verwenden wenn man sich nicht mit der Sprache selbst beschäftigen will. 🕶

    Der Threadersteller hat ja gerade betont das er bereits C++ kann.



  • asc schrieb:

    DEvent schrieb:

    Inzwischen haben weder Linux noch MacOS viel Unterschied mit Windows.

    Wenn du ein laufendes System vorfindest, UND die Benutzer mit der Programmauswahl klar kommen, ja. Diese zwei Bedingungen sind aber in der Regel (gerade bei Jüngeren) nicht gegeben. Und ich hatte bislang fast nie das Glück das ein 0815 PC sofort mit Linux in allen Bereichen klar kommt (zumindest deutlich seltener als mit Windows) - und ja, ich weiß das Linux, gerade wenn man reinen Officebereich betrachtet, durchaus mit Windows vergleichbar ist.

    Und was MacOS angeht: Wenn du viel Geld hast, trifft deine Aussage (Software die sowohl auf Windows als auch MacOS verfügbar ist, ist nur selten Preislich identisch - und sehr häufig gilt dies zum Nachteil von MacOS). Ich habe MacOS aktiv im Einsatz, bevor eine Frage kommt...

    In einer Schule sollten die Schüler in der Regel ein funktionierendes System vorfinden, denke ich. Der Aufbau einer IT-Infrastruktur gilt auch nicht unbedingt als schwerer mit Linux. Und Schulung: "Um die Entwicklungsumgebung zu starten, klicken sie bitte auf "Anwendungen->Entwicklung->IDE" und wenn sie fertig sind, speichern sie ihre Arbeit unter "/home/USERNAME/" ab." Man, das hört sich aber nach mächtigen zusätzlichen Schulungsaufwand an.

    Es geht auch nicht um das Betriebssystem, sondern um Programmierwerkzeuge, durch die man nicht auf eine Plattform oder ein System gezwungen wird. Es ist doch egal, ob in der Schule Windows läuft und ich zu Hause Linux installiert habe, oder umgekehrt. Es geht darum, möglichst vielen Schülern ohne großen Aufwand zu ermöglichen, ihre Arbeit zu erledigen. Und da ist es am Besten, man kann auch zu Hause das nutzen, was man bereits hat und muss sich nur die entsprechende Software besorgen. Wenn es geht einfach und kostenlos.

    Grafische Anwendungen kann man definitiv auch ohne Technologien mit "Lock-in" schreiben. So gut wie jedes ausgereifte Toolkit hat auch einen vernünftigen GUI-Designer und Exportmöglichkeiten zu diversen Programmiersprachen.



  • unabhängig schrieb:

    ...Und da ist es am Besten, man kann auch zu Hause das nutzen, was man bereits hat und muss sich nur die entsprechende Software besorgen. Wenn es geht einfach und kostenlos.

    Und da in der Regel zu Hause ein Windowssystem vorliegt, und diverse IDEs kostenlos sind, ist die Sprache auch fast egal (Für die drei üblichen Verdächtigen Java, C++ oder C# gibt es [in der Regel mehrere] kostenlose Entwicklungsumgebungen unter Windows). Sollte man aber OS-Neutraler werden muss man etwas einschränken (z.B. unter C# auf die Verwendung gewisser .Net Bibliothekten wie WPF verzichten).



  • Ausnahmen bestätigen die Regel und bei 90% Marktanteil sind 10% Ausnahmen. Ich gehe zudem davon aus, dass es bei Programmierern oder angehenden Programmierern etwas mehr als 10% sind (dafür allerdings auch viele, die Dual-Boot verwenden), bei Präsentationen konnte ich auf den Laptops der Anderen eher 50% oder sogar mehr "Alternativen" erkennen). Windows in der Schule zu verwenden finde ich nicht verkehrt, vor allem wenn man es gesponsert bekommt. So schlecht wie viele Linuxer/Äpfel es gerne sehen wollen ist es sowieso nicht. Aber man hat keinen Nachteil eine Programmiersprache, IDE und Frameworks zu benutzen, die frei für alle gängigen Desktopsysteme verfügbar sind. Dass man genau die Werkzeuge trifft, die man später auch im Berufsleben verwendet, ist sowieso unwahrscheinlich. Daher geht es ohnehin eher darum die Prinzipien zu erlernen, nicht das Verwenden einzelner Werkzeuge.

    Wir hatten beispielsweise LCC32 und nur Kommandozeile benutzt (Für ein Semester, da sonst nur Embedded-Kram anlag). Es war kein allzu großes Problem Quellcode zwischen dem und anderen Umgebungen auszutauschen, wenn man ein bischen aufgepasst hat. Aber hätten wir noch mehr Technologien verwenden müssen, die nicht plattformunabhängig sind, dann wäre das sehr ungünstig.


Anmelden zum Antworten