c++ oder c# oder java, oder gar vb ?

bluex

Erfahrenes Mitglied
Hi

Ich arbeite hauptsächlich mit php usw , also bin eher in web tätig: Nun brauche ich aber ein Windowstool das mir meine Arbeit etwas erleichtern soll da ich vor einem grösseren Projekt stehe, bei dem ich wiederkehrende Arbeiten gern teilweise automatisieren möchte um Zeit zu sparen.

Die Anforderungen des Programms sind eigendlich recht simpel:

  • eine GUI
  • XML Unterstützung zum lesen und schreiben von XML-Datein
  • Die Möglichkeit etwas als tar zu packen


Ja nun stellt sich mit als PHPler die frage was da für mich am einfachsten zu erlernen wäre. Habe bücher zu vb, c++, java. Alle ungefähr gleich dicke Brocken. Aber welche Sprache nun die richtige für mich sein soll ist auf den ersten Seiten leider nicht zu erkennen ... xD Hat von euch evtl jemand beim Umstieg von PHP mit einer Sprache besonders gute oder schlecht Erfahrungen gemacht... Möchte mich jetzt nicht blind in eines der Bücher einlesen um dann auf halbem Weg feststellen das das doch nicht die richtige Sprache für mich ist .... Es sollte schon irgenwie von der Syntax PHP ähneln. Und sprachen die kein ; am Ende einer Anweisung haben sind mir ohnehin suspect ^^

Ein Kolege meint ich solle doch gleich C# lernen ... habe mir mal visual C# 2008 express besorgt ... bin mir aber nicht so sicher ob es besser als die anderen sein soll, da es ja doch recht komplex sein soll....

MfG
blueX
 
Zuletzt bearbeitet:
Hi,

vor einiger Zeit stand ich vor der gleichen Entscheidung, ich hatte damals aber ein paar Sprachen mehr "intus". Ich muss ganz ehrlich sagen, dass ich Java seit anfang an gehasst habe. Es war für mich ein langsames Wrack, doch seit nun drei Jahren Code ich auch Java. Um dir mal einen kleinen Überblick zu geben, was ich wann gelernt habe:

QB - VB 3* - ASM - C/C++ - HTML/JS - Perl - Delphi - PHP - C++ mit OOP - C# - Java - RoR
* (hat mit heutigem VB nichts zutun)

Klar, Sprachen wie Brainfuck oder Whitespace habe ich auch durch, aber was waren eher exoten zum ausprobieren. Heute Code ich Desktopanwendungen überwiegend in C#, Webanwendungen in PHP, Java oder RoR.

Aber um nun mal auf dein Problem zurückzukommen:
Die allererste Frage ist nach der Performance. Wenn du Performance brauchst, dann kannst du Java voll in die Tonne treten. In Java wirst du ohne geeignete Tools auch keine schicken GUIs bauen können.

C / C++ ist von der Performance natürlich nicht zu schlagen. Allerdings wird es hier auch schwer sein, ein gescheites GUI zu bauen. Ich habe in letzter Zeit nichts mit Visual C++ aus dem VS etwas gecoded, deshalb weiß ich nicht, in wie weit die IDE dich heute unterstützt, aber zu meiner Zeit war es doch etwas sperrig. Vor allem, wenn es ums Debuggen ging.

(Einige werden mir jetzt einen bösen Blick zuwerfen, aber ich schreibe es mal trotzdem.) VB ist C# für Frauen ;-)
In C# hast du mehr Möglichkeiten etwas zu machen, und eine PHP-ähnlichere Syntax. Aber es kommt fast der gleiche .Net Bytecode heraus. Beides wird zu einer .Net Anwendung kompilliert. Performance ist recht angenehm und die Features auch. Die IDE hilft dir vor allem beim Debuggen.

Ich würde dir deshalb zu C# raten. Übrigens: Du kannst auch mit PHP eine GUI schreiben, die unter Windows läuft.
 
Ja genau des Problem hab ich mit Java, Hab die letzten Tage mal n bischn im Buch rumgeschnüffelt und fand das ganze auf eine gewisse Art umständlich... Besonders im Abschnitt zum Thema GUI dreht sich mir da der Magen um 0o Zumal ich auf eine gewisse Geschwindigkeit angewiesen bin, da ich die einstellungen schnell hintereinander ändern können muss .. und das Programm auch die Datein eines ganzen Ordners samt Unterordnern nach bestimmten zeichen durchsuchen und ersetzen soll...

Bei C++, VB, und C# sehen die Entwicklungsumgebungen von MS alle recht ähnlich aus deswegen bin i mir da noch nich so sicher gewesen was i dan denn nun nehmen soll. Aber wie es Aussiet wird es dann nun wohl auf C# hinauslaufen. Das die Syntax nich ganz so PHP-fremd sein soll hab i eben auch nochmal woanders gelesen und das kommt mir sehr gelegen da ich ja recht schnell Erfolge sehen möchte. Werd mir da jetzt mal ein Buch bestellen und dann loslegen :)

Danke für die schnelle Antwort.

MfG
blueX
 
Die allererste Frage ist nach der Performance. Wenn du Performance brauchst, dann kannst du Java voll in die Tonne treten. C / C++ ist von der Performance natürlich nicht zu schlagen.

C++ wird locker von der Performance von C geschlagen, C++ und Java sollten von der Performance her (vorallem nach Update 10 des 6er JDK) gleich auf sein. Und C wird noch mal um längen von Assembler geschlagen. Was jetzt aber nicht heißt, dass C++ und Java langsam sind - im Gegenteil.

Letztendlich hängt die Performance wohl nur zu 3, 4 Prozent von der Wahl der Programmiersprache ab. Ein schlecht geschriebenes Assembler Programm kann genauso wenig einen Blumentopf gewinnen, wie ein schlecht geschriebenes C, C++ und Java Programm. Und ich glaube nicht, dass der Threadsteller so der Pro-Coder ist, dass es auf die Performance der Programmiersprache ankommt (ist jetzt nicht böse gemeint, @bluex, sollte aber in der Wahl der Programmiersprache berücksichtigt werden).


In Java wirst du ohne geeignete Tools auch keine schicken GUIs bauen können.

Naja ... wenn du in Java keine schicke GUI zusammen bekommst, dann bekommst dus auch in keiner anderen Sprache. Du hast in Java ähnliche Möglichkeiten wie in anderen Sprachen. Durch unterschiedliche Layout-Manager und Look and Feels sind dir da eigentlich fast keine Grenzen gesetzt. Auch Transparenz und "nicht eckige Fenster" sind seit JDK 6 Update 10 kein Problem mehr - oder eben zu SWT greifen.

Allerdings wird es hier auch schwer sein, ein gescheites GUI zu bauen.

*zustimm*, und vermutlich noch deutlich schwerer als mit Java.

(Einige werden mir jetzt einen bösen Blick zuwerfen, aber ich schreibe es mal trotzdem.) VB ist C# für Frauen

Da musste ich jetzt mal schmunzeln. In der Tat halte ich nicht viel von VB - und kenne auch einige Frauen die von VB zu C# umgestiegen sind. Dennoch ist C# eine schöne Sprache. Viel besser konzepiert als das veraltete C und C++ (ist ja auch verständlich), allerdings nicht Plattformunabhängig (was aber auch seine Vorteile hat).

bluex hat gesagt.:
Ja genau des Problem hab ich mit Java, Hab die letzten Tage mal n bischn im Buch rumgeschnüffelt und fand das ganze auf eine gewisse Art umständlich... Besonders im Abschnitt zum Thema GUI dreht sich mir da der Magen um

Hm, was denn genau!? Evlt. ist dir nur vieles Fremd/Neu oder du hast ein schlechtes Buch erwischt.

bluex hat gesagt.:
und das Programm auch die Datein eines ganzen Ordners samt Unterordnern nach bestimmten zeichen durchsuchen und ersetzen soll...

Also bei SOWAS würde ich nun wirklich keine Sprache wegen der Performance ausschließen. Bei diesen Gebieten kannst du soooooooo viel falsch machen und Performance verlieren ... Aber aus eigener Erfahrung lässt sich das auch mit Java recht performant umsetzen ;) .

bluex hat gesagt.:
Bei C++, VB, und C# sehen die Entwicklungsumgebungen von MS alle recht ähnlich aus deswegen bin i mir da noch nich so sicher gewesen was i dan denn nun nehmen soll.

VB nicht, C# oder C++ (C++ ist Performanter, C# mit dem ausgereifteren OO-Konzept). Überflieg doch mal die Sprachkenzeichen von C# und C++ und schau, was dir am ehesten liegt. Außerdem solltest du bei deiner Entscheidung nicht nur dein aktuelles Projekt ins Auge fassen (welches eigentlich mit jeder aktuellen Programmiersprache performant gelöst werden kann), sondern dir auch überlegen, wo du in Zukunft stehen willst.

Wenn du einen neuen Job als Webentwickler möchtest, wirst du um neuere "Sprachen" als PHP kaum herumkommen. Java ist nach wie vor sehr gefragt in der Serverseitigen Programmierung. Aber auch Dinge wie RoR, JS und Ajax werden immer mehr gefragt.

Möchtest du nen Treiber oder andere Hardware/Systemnnahe Programm entwicklen, solltest du auf C oder C++ zurückgreifen.

Für mehrere Plattformen entwickelst du am Besten mit Java und hast ein sehr sauberes OO-Konzept. Außerdem: Mit Java kannst du Programme für alle möglichen Einsatzorte schreiben. Als (besseren) PHP-Ersatz auf nem Server, als Desktopapplikation, als Applet in Websites, auf mobilen Endgeräten, ...

Wenn du Windowsspezifisch bleiben möchtest, und Wert auf ein gutes OO-Design legst, solltest du C# wählen.

Natürlich gibt es noch mehrere für und wieders für die einzelnen Sprachen. Das hier aber alles aufzuzählen wäre zu viel (mein Post ist sowieso schon lang genug ;) ).

bluex hat gesagt.:
Das die Syntax nich ganz so PHP-fremd sein soll hab i eben auch nochmal woanders gelesen

Die PHP-Syntax ist für mich n eigenes Paar Schuhe, nur schwer vergleichbar ;) . C kann man am ehesten mit C++ und C# am ehesten mit Java vergleichen (meine Meinung).

bluex hat gesagt.:
da ich ja recht schnell Erfolge sehen möchte.

Schnelle Erfolge sind meistens mit unsauberen Code verbunden. Wenn du nicht vorhast eine Programmiersprache ernsthaft zu erlernen, sondern eigentlich bei PHP bleiben möchtest und nur einmalig ein Programm in einer anderen Sprache benötigst, dann halte ich es für sinnvoller jemanden dafür zu bezahlen dir so ein Programm zu schreiben.

Hoffe ich konnte dir ein bisschen weiterhelfen.

Gruß

The_S
 
Wenn, dann mach das in C++. Da hast du alle Möglichkeiten. C ist völlig veraltet, Assembler nicht programmierbar, VB für Kiddies, C# ist "C++ for Dummies" und Java viel zu umständlich.

So, und jetzt mal Scherz und Ironie beiseite. Ganz deutlich: Das obige war (von meiner Seite aus natürlich) eine einfache Schei**hausparole. :) Ich denke, am wichtigsten für deine Belange sind:
- Was "schmeckt" dir?
- Was ist passend für dich?
- Was kannst du schnell und praktisch einsetzen?

Daß ich ganz persönlich das Ganze wohl am liebsten in C++ und/oder Perl schreiben würde, ist völlig nebensächlich, denn das sind nur meine persönlichen Vorlieben, die aber mit deinem Problem nichts zu tun haben.

Du tendierst ja schon Richtung C# und scheinst eher eine Abneigung zu Java zu haben. Daß mit Java keine performanten Anwendungen möglich sind, habe ich auch sehr lange Zeit geglaubt und bin zwischenzeitlich eines Besseren belehrt worden. Also was die effektive Ausführungszeit eines Tools in C# oder Java angeht, da schenken sich die beiden heutzuzage nichts mehr. Aber auch ich habe mit Java fast nichts am Hut. Nicht weil die Sprache so schlecht ist, sondern einfach weil ich keinen Bezug dazu habe. Und ohne Bezug fällt mir das Lernen einer Sprache sehr schwer.
C++ halte ich nach wie vor für ziemlich knifflig, um das sauber in den Griff zu bekommen. Damit meine ich: Wenn du unter C++ oder Delphi unsauber programmierst, "versaust" du dir dein System dahingehend, daß möglicherweise Speicherlecks übrig bleiben, die sich evtl. nicht sofort, aber dann doch bei längerer Verwendung des Tools bemerkbar machen. Da wirklich ein Auge drauf zu haben und auch alle Objekte wieder sauber aufzulösen erfordert ziemliche Sorgfalt und auch etwas Übung. Natürlich helfen einem da die diversen IDEs und Tools, aber alle Arbeit wird dem Programmierer natürlich nicht abgenommen.
In C und Assembler fällt diese Problematik dann noch heftiger aus.
Sehr viel einfacher sieht es da mit Java und C# aus, wo es eine Garbage Collection gibt. Auch da lassen sich natürlich Speicherlecks erzeugen, die dann aber aufgrund der Laufzeitumgebung nur temporärer Natur sind.
VB ist auch keine schlechte Angelegenheit (auch wenn in den Term "C# für Frauen" richtiggehend genial finde :D ).
Von daher würde ich als vorläufige Topkandidaten VB, Java und C# ansehen.

Basteln willst du ein Windowstool. Also ist Plattformunabhängigkeit schon mal kein Thema. Du brauchst dann noch ein GUI, Objekte für XML-Verarbeitung und tar-Packaging. GUI und XML kriegst du mit Java, VB und C# problemlos hin. Aber was die tar-Kompatibilität angeht, habe ich einfach mal spontan (ohne jedoch über echtes Hintergrundwissen zu verfügen) bei Microsoft so meine Zweifel, daß das problemlos funktioniert. Ergo rückt für mich Java auf den ersten Platz und VB und C# etwas dahinter, wobei ich mir aber sicher bin, daß es entsprechende Tools, Klassen oder Komponenten auch für VB oder C# gibt. K.o.-Kriterium ist das also nicht.

Dann geht es nur noch darum: Was willst du? Und deinen Posts entnehme ich, daß du dich für C# entschieden hast/entscheiden willst. Gemäß der Anforderungen deines Tools würde ich dazu sagen: "Leg los", aber rechne damit, daß du für tar-Packaging möglicherweise ein bißchen mehr braucht als nur die Standard-Komponenten.
 
Ich programmier Java und C#

Um zu entscheiden welche Sprache ich benutze schau ich einfach darauf was meine Plattformen sind.

Bei (nur)Windows - C#
Bei Linux/Mac/Windows/.. - Java

Die beiden Sprachen sind recht simple und auf keinenfall langsam.
Der aufbau einer GUI in C# wird durch die IDE von MS vereinfacht,
in Java steht dir Netbeans oder andere Plugins, IDE's zu verfügung.

Java-GUI vergleiche ich immer mit einem Lego baukasten und so kann man es auch
programmiern.

PS: Hab Java 2 Jahre lang programmiert und der "umstieg" auf C# war kinderleicht vorallem gibt es ja zur notlösung noch J# xD


mfg
 
Hey,

danke für eure Zahlreichen Antworten. Ja also hmm nun bin ich mir gerade wieder nicht so sicher ob ich nicht auch mal Java versuchen sollte. xD C++ fällt schonmal weg da mit das ganze etwas zu komplex ist und ich mit nem Graphischen gedächtnis gestraft bin, habe ich grosse Probleme beim erlernen von dingen wo ich nicht schnell Resultate nachvollziehen kann, was ich bei PHP, JS + AJAX, usw... nicht hatte da ich dort meine Ergebnisse eigendlich sofort Praktisch anwenden kann ... . Bei C++ müsste ich mir glaube erst diverse Theorie aneignen um was zu Stande zu bekommen was mir ohne Graphischen zusammenhang einfach mega schwer fällt. Daher das mit den schnellen Ergebnissen ;)
Habe eben mal geguckt also hmm mein Java Buch ist noch von 2004 vllt sollte ich mir mal ein aktuelleres besorgen. Hmm sorry aber was Programmierung angeht die nicht mit dem Netz zu tun hat hab ich absolut keinen schimmer , aber bin der Meinung gelesen zu haben das man mit C#.NET nicht blos auf Windoof angewiesen ist, sondern durch die .NET Umgebung seine Programme auch auf anderen Betriebsystemen ohne Änderungen zum Laufen bekommt... oder ist des doch nicht so einfach :suspekt:

Also C# werde ich jetzt auf jeden Fall anfangen , aber ziehe jetzt auch Java in erwägung. Danke für eure Posts.. das hat mir sehr geholfen einen besseren Überblick zu bekommen :) C und Assembler muss ich vermutlich aber auch noch lernen, da ich Hauptberuflich in der Industrie zugange bin und mich gerad richtung SPS Technik weiter Bilde xD

Was ich bei Java noch rcht irritierend finde ist, dass es da anscheinend verschiedene Sachen gibt : SE, JEE, J2EE.... und im meinem Mittelalterlichen Buch konnte ich dazu auch noch nichts finden .. 0o

MfG
BlueX
 
Zuletzt bearbeitet:
hi!

ich habe java eine zeitlang an der uni programmieren müssen und habe es hassen gelernt. Die Sprache ist anfangs richtig einfach(keine Pointer...) und schön OOP. Aber im späteren Verlauf wird sie richtig unübersichtlich und so manche Lifecycles und Packages machen einem schon das Leben schwer. Bei SAP hatte ich es mit J2EE zu tun. Ich kriege heute noch epileptische Anfälle, wenn ich nur dran denke :suspekt:. Aber zurück zum Thema. Ich persönlich würde dir C# ans Herz legen. Das ist einfach und verständlich.
C# ist das moderne Java, wie mein Dozent immer sagt und ich finde er hat recht. Du findest auch viel Zeugs auf Codeproject.com. Da wirst du bestimmt auch fündig.

Gruß
Thorsten
 
Habe eben mal geguckt also hmm mein Java Buch ist noch von 2004 vllt sollte ich mir mal ein aktuelleres besorgen.

Wenn dein Java-Buch die Version 5 (JDK 5 oder JDK 1.5) beinhaltet, ist es aktuell genug. Ansonsten reicht es auch dicke, um dir die Basics anzueignen.

Hmm sorry aber was Programmierung angeht die nicht mit dem Netz zu tun hat hab ich absolut keinen schimmer , aber bin der Meinung gelesen zu haben das man mit C#.NET nicht blos auf Windoof angewiesen ist, sondern durch die .NET Umgebung seine Programme auch auf anderen Betriebsystemen ohne Änderungen zum Laufen bekommt... oder ist des doch nicht so einfach :suspekt:

.NET läuft auf unterschiedlichen Plattformen - allerdings nur auf unterschiedlichen Windows-Plattformen. Für Linux gibt es noch das Mono-Projekt, was VERSUCHT .NET auf Linux zu bringen, wird aber offiziell von MS nicht unterstützt. Richtige Plattformunabhängigkeit gibt es nur mit Java (auf die du aber verzichten kannst, wenn du ohnehin nicht plattformunabhängig programmieren willst).

Was ich bei Java noch rcht irritierend finde ist, dass es da anscheinend verschiedene Sachen gibt : SE, JEE, J2EE.... und im meinem Mittelalterlichen Buch konnte ich dazu auch noch nichts finden .. 0o

Ja, das ist die oben angesprochene Vielseitigkeit von Java. Java kann für die unterschiedlichsten Bereiche eingesetzt werden

SE oder J2SE ist für normale Desktop-Anwendungen
JEE ist das neuere J2EE und wird für serverseitige Programmierung im Stil von PHP verwendet
J2ME bzw. JME ist für mobile Endgeräte z. B. Handys aber auch Kaffeemaschinen
Java Card läuft auf Smart-Cards.

Wenn du also einmal die Syntax und die Basics von SE drauf hast, ist es auch nicht mehr so schwer für das Web, Handys oder eine Smart-Card zu programmieren ;) .

Thopeto hat gesagt.:
ich habe java eine zeitlang an der uni programmieren müssen und habe es hassen gelernt. Die Sprache ist anfangs richtig einfach(keine Pointer...) und schön OOP. Aber im späteren Verlauf wird sie richtig unübersichtlich und so manche Lifecycles und Packages machen einem schon das Leben schwer

Ist ja schön, dass hier manche sagen "Java ist blöd", aber warum Java "blöd" ist, hat noch keiner gesagt. Ich bin durchaus an einer konstruktiven Diskussion interessiert, aber dazu bitte mit Fakten argumentieren und keine losen Behauptungen in den Raum werfen. Danke!

Thopeto hat gesagt.:
Bei SAP hatte ich es mit J2EE zu tun. Ich kriege heute noch epileptische Anfälle, wenn ich nur dran denke

s. o.

Thopeto hat gesagt.:
C# ist das moderne Java, wie mein Dozent immer sagt und ich finde er hat recht.

Naja, C# ist neuer als Java. Man kann genauso sagen "Java ist das erfahrenere und deshalb ausgereifterte C#" :rolleyes: . Beide Sprachen sind sich sehr ähnlich, ich kann mir nicht vorstellen, dass du eine von den beiden Sprachen in den Himmel loben kannst und eine andere Grottenschlecht findest - zumindest nicht, wenn du dich mit der Materie auseinander gesetzt hast und objektiv an die Sache rangehst. Beide Sprachen haben Ihre Daseinsberechtigung, der eine programmiert halt mit C# lieber, der andere mit Java.
 

Neue Beiträge

Zurück