Programmieramateur kann sich nciht entscheiden

  • Thread-Ersteller Thread-Ersteller Ultrix
  • Erstellungsdatum Erstellungsdatum

Ultrix

L12: Crazy
Thread-Ersteller
Seit
11 Jan 2008
Beiträge
2.466
Also, erst mal meine bisherigen Kenntnisse ein wenig dargestellt:

Schule: 1 Jahr Pascal, 1 Jahr Delphi
Ansonsten leichte Erfahrungen mit Action Script1+2 (Flash),ein paar Erfahrungen mit C und C++ und der Begriff objektorientierte Programmierung ist mir nciht fremd.

Nun zu meinem Problem: Ich würde mich gerne auf eine Programmiersprache festlegen, kann mich aber nciht entscheiden. Anfangs möchte ich bei der einfachen GUI-Programmierung bleiben (keine Konsolenanwendungen), später aber mal auf Komplexeres im Sinne von OpenGL oder DirectX umsteigen.

Würde ich mich hierbei für C++ entscheiden, so würde ich hier wieder zwischen GTK und QT stehen.

Hauptsächlich stehe ich eigentlich zwischen C++, Java und C# und kann mich nciht entscheiden.


Kann mir jemand Rat leisten, um die Entscheidung zu erleichtern?
 
Zuletzt bearbeitet:
Also meine Meinung ist ja, dass man mit jeder Sprache extrem gut zurecht kommen kann wenn man sie gut kennt. Deswegen hält ja auch jeder Programmierer seine Sprache für die beste. Machst du das so privat zum Vergnügen oder ist da eine berufliche Absicht dahinter? Wenn ja wären da ein paar Details seht interessant. Mit Delphi kannst du jedenfalls gar nix mehr anfangen.

Mal eine grundsätzliche Frage. Kennst du die Vorteile/Schwächen der Sprachen? Fange auf GAR KEINEN FALL mit C++ an. Das endet in 90% aller Fälle damit, dass man die Motivation verliert. C++ ist echt ein harter Brocken, zwar schnell und vielseitig aber eben auch ein wenig veraltet und kompliziert. Als geeignet empfinde ich sowohl Java als auch C#. Beide Sprachen sind moderner und erreichen einen viel höheren Abstraktionsgrad.

Die beiden Sprachen sind sich ja nicht so unähnlich. Die wichtigste Frage ist wohl, willst du damit plattformunabhängig sein? Bei C# geht das nur bedingt. Obwohl es jetzt Open-Source ist stehen die unabhängigen Implementationen gegenüber Microsoft einige Versionen zurück. Java ist aber dafür grundsätzlich nicht so der Hit bei GUIs. Wenn du z.B. Swing mit der WPF in Vista vergleichst wird das ziemlich schnell klar.
 
Delphi würde ich nicht komplett abschreiben, vor allem weil erst vor kurzem CodeGear von Borland rauskam. Die Sprache ist nicht tot und wird z.B. in einigen Firmen sogar noch bevorzugt verwendet.

In Sachen GUI, ist es auch recht Einsteigerfreundlich, da es ja quasi "What you see, is what you get" ist.

Persönlich habe ich noch Erfahrung mit C, Visual Basic, .NET, Java, Python...

Visual Basic ist sehr Einsteigerfreundlichen in Sachen GUI und Programmierung. Für nen Anfänger würd ich die Sprache empfehlen, auch wenn sie veraltet ist. Aber zum Kennenlernen der Strukturen etc. und mal bisschen was rumspielen ist sie auf jeden Fall geeignet.

Mein (windowsbasierter) Favorit für Fensterapplikationen ist allerdings .NET (da gibt es nen VB oder C# Sprachaufsatz für... ansonsten ist die Sprache zu 90% mit Java identisch). Vor allem gibt es da auch z.B. kostenlos die Windows/Xbox Game Library (XNA Game Studio heißt das glaub ich), von Microsoft, die für die Download-Titel für (Xbox)-Live (aber auch Windows) verwendet werden kann... hab es mir zwar noch nicht genau angeschaut, aber soll die Spieleentwicklung vereinfachen und auch Schnittstellen zu OpenGL etc. bieten.

Wenn du wirklich später auf DirectX und OpenGL umsteigen willst, würde ich dir deswegen .NET empfehlen.

Als freie Entwicklungsumgebung gibt es dafür SharpDevelop
Die Kostenpflichtige Variante wäre Visual Studio 2005 oder 2008

Reines C++ bzw. C# sind zwar performancetechnich die besten, aber es dauert zum Teil sehr lang bis man die Sprachen wirklich ins Detail beherrscht... und für Anfänger find ich es deswegen nicht so gut geeignet. Ich würd erst später darauf umsteigen.

Der einzigen wirkliche Vorteil von Java ist eigentlich nur die plattformunabhängigkeit. Von der Performanceseite her wage ich zu behaupten, dass es (außer VB vielleicht) relativ weit hinten steht.
 
Zuletzt bearbeitet:
Es gibt auch ein kostenloses Visual Studio. SharpDevelop ist ziemlich grottig im Vergleich dazu. ;-)
 
Es gibt auch ein kostenloses Visual Studio. SharpDevelop ist ziemlich grottig im Vergleich dazu. ;-)
Ok, wusste ich nicht ;)
Hab eben nur mal kurz gegoogelt. An der Arbeit arbeite ich mit VS2005, und muss mir da nicht so Gedanken um Alternativen machen ^^

Werd ich mir daheim mal angucken, da ich da noch nix hatte, thx ^^

Hier noch der Link zur VS Express Version
 
Zuletzt bearbeitet:
Also meine Meinung ist ja, dass man mit jeder Sprache extrem gut zurecht kommen kann wenn man sie gut kennt. Deswegen hält ja auch jeder Programmierer seine Sprache für die beste. Machst du das so privat zum Vergnügen oder ist da eine berufliche Absicht dahinter? Wenn ja wären da ein paar Details seht interessant. Mit Delphi kannst du jedenfalls gar nix mehr anfangen.
Erstmal nur privat. Ab je nachdem kann es sein, dass ich mich für ein Informatikstudium entscheide.
Mal eine grundsätzliche Frage. Kennst du die Vorteile/Schwächen der Sprachen? Fange auf GAR KEINEN FALL mit C++ an. Das endet in 90% aller Fälle damit, dass man die Motivation verliert. C++ ist echt ein harter Brocken, zwar schnell und vielseitig aber eben auch ein wenig veraltet und kompliziert.
Genau das ist es auch was mich davon abhält zu sagen, ich lege mich auf C++ fest. Es lassen sich viele PRogrammiermodelle realisieren und es gibt libraries für alles, aber das macht das Ganze umso komplizierter.
Aber andererseits lass ich Pointer auch nur ungern los.
Als geeignet empfinde ich sowohl Java als auch C#. Beide Sprachen sind moderner und erreichen einen viel höheren Abstraktionsgrad.
Bei Java steht bei mir immer der Gedanke, dass es im Vergleich zu den andern beiden zu langsam sein könnte.

Außerdem bin ich mir gar nciht so sicher, ob ich den Abstraktionsgrad überhaupt so hoch haben möchte; In diesem Kontext sollte ich erwähnen, dass auch Assembler für mich schon immer eine besondere Anziehung hatte.

ALs "Amateur" sollte ich dann aber wohl erst mal mit dem Einfacheren beginnen.
Die beiden Sprachen sind sich ja nicht so unähnlich. Die wichtigste Frage ist wohl, willst du damit plattformunabhängig sein? Bei C# geht das nur bedingt. Obwohl es jetzt Open-Source ist stehen die unabhängigen Implementationen gegenüber Microsoft einige Versionen zurück. Java ist aber dafür grundsätzlich nicht so der Hit bei GUIs. Wenn du z.B. Swing mit der WPF in Vista vergleichst wird das ziemlich schnell klar.

Plattform unabhängig wäre schön, aber nicht erforderlich. Inwiefern kann ich denn C# mit C++ vergleichen? Ist das "C" in C# berechtigt?


@Excaliburn:

Delphi fällt für mcih komplett aus. Das, was ich bis jetzt gesehen habe, ist mir zu unflexibel und mir gefällt die Syntax auch nciht wirklich. Plattformunabhängig ist Delphi afaik auch nciht.

Ich weiß nciht inwiefern man die einzelnen Basic-Versionen vergleichen kann, aber ich habe etwas Erfahrung mit Darkbasic gesammelt. In Darkbasic kam ich mir aber wegen der gewöhnungsbedürftigen Strukturierung/Syntax immer etwas verwirrt vor. O.o

Wie lange kann man denn die Lebensdauer von C# einschätzen?
 
Ich wollt dir auch Delphi garnicht vorschlagen ;)
Hab mich nur darauf bezogen, dass Coda meinte das man mit Delphi garnix mehr anfangen kann ^^

Mein Vorschlag bleibt immer noch .NET
Hat den Vorteil, dasses auf Windows (ab XP) standardmäßig installiert ist. Durch die Entwicklung von Mono auch irgendwann auf Linux lauffähig ist. Es relativ leicht zu erlernen ist. Es noch supported wird. Es einen C# bzw. VB Sprachaufsatz besitzt. Und Support für DirectX und OpenGL bietet (nicht zuletzt durch den Zusatz des XNA Game Studios).

Und falls man doch irgendwann auf Java umsteigen will (warum auch immer) hat man nicht wirklich Probleme, da die Sprachen fast identisch sind.
 
Also Java ist nicht so langsam wie es immer hingestellt wird. Die größten Schwächen bei der Perfomance findet man aber gerade bei der Oberfläche. Was den Abstraktionsgrad angeht stellst du dich einfach gegen die Zukunft - außerdem ist es absolut von Vorteil wenn man anfangs das Konzept der Sprache isoliert erlernen kann bevor man sich um die Hintergründe kümmert.

Übrigens gibt es auch in C# Zeiger allerdings ist das Konzept einfach nicht empfehlenswert und solcher Code läuft daher nicht unter eingeschränkten Rechten. Zuletzt möchte ich noch anmerken, dass man von Mono niemals erwarten darf eine vollständige Implementierung zu erreichen. Dinge wie z.B. das COM-Interop werden die niemals hinbekommen, weil's unter Linux auch gar kein COM gibt. C# wird mindestens noch bis der Nachfolger von Windows 7 erscheint wichtig sein. Bei Vienna hast du sowieso nur mit Managed Code die höchsten Privilegien. Microsoft wird C# also noch heftiger pushen als jetzt schon.
 
Nun gut, dann werde ich mich, wie es aussieht, erstmal an C# und .NET versuchen und da Wissen und Erfahrung sammeln.
Danke für eure schnelle Hilfe :)
 
Was ist denn das für eine Frage?
Du kannst dich in jede beliebigen objektorientierten Sprache einarbeiten. Wenn du das Konzept einmal verstanden hast, kannst du nämlich auf jede andere OO-Programmiersprache umsteigen. Es ist wirklich Wurscht womit du jetzt anfängst.
Du solltest dich allerdings lieber vom Gedanken Informatik=Programmieren losreißen, denn genau das ist die Informatik nicht. Es werden analytische Fähigkeiten trainiert und abstrakte Denkweise müssen verinnerlicht werden. Die Informatik benutzt nur die Programmiersprachen als Werkstoff, um etwas zu produzieren, sie ist aber völlig losgelöst davon. Genauso benutzt sie die Mathematik, um etwas auszudrücken, macht aber was ganz anderes. Es ist schon richtig, dass es gut ist, wenn man als Informatiker programmieren kann, ist aber nicht essenziell, um ein guter Informatiker zu sein.
Achja, die richtig spannenden Sachen kannste übrigens als Softwarearchitekt machen, da läuft aber alles auf hohem Abstraktionsniveau ab. Genau dafür wirst du eigentlich im Informatikstudium ausgebildet, nämlich alle Dinge in hohem Maße zu abstrahieren und sie dann eigenständig bewerten zu können. Gut, ich rede jetzt vom Diplomstudiengang, vom Bachelor erwartet man sowas eher weniger (vom Master wiederum schon).
Aber bitte nicht die Programmierung als Motiv für ein Informatik-Studium nehmen.^^
Ich spreche übrigens als angehender Software Engineerer. Da es eigentlich "Informatik im praktischen Sinne" ist, ist der Grundgedanke derselbe.
 
Mit Delphi kannst du jedenfalls gar nix mehr anfangen.

Das ist so absolut nicht richtig. Ich selbst entwickle professionell auf Delphi und die Sprache hat durchaus auch Vorteile (sehr viel bessere Performance bei Fensterapplikationen als Windows Forms in C# beispielsweise, wobei hier wiederum WPF schneller ist, aber das nur am Rande).

Da du, wie du sagst schon grundlegende Kenntnisse hast würde ich dir zu C# raten. Ist die momentan wohl "sauberste" Objektorientierte Programmiersprache, allerdings solltest du dich, wie einschnaehkeee geschrieben hat, erstmal grundlegend mit den Konzepten der Objektorientierten Entwicklung auseinandersetzen. Man Code sehr viel flexibler und effizienter gestalten, wenn man diese Konzepte kennt, und beherrscht. Vor allem mit dem Thema Modellierung solltest du dich eingehend beschäftigen, hier kann man viele klassische Fehler vermeiden und vorbeugen. Damit will ich nicht sagen, dass du Modellierer sein musst, um programmieren zu können, aber wer sich mit Modellierung auskennt, und die dadurch notwendige Abstraktion beherrscht tut sich sehr viel leichter mit dem entwickeln von Software

[EDIT]@Ultrix: Delphi als unflexibel zu bezeichnen ist etwas kurzsichtig. Die Sprache ist durchaus flexibel, allerdings muss man sich mit dem modularen Grundkonzept von Pascal anfreunden können. C# (bis .Net 2.0) /Java beherrscht nichts, was Delphi nicht auch beherrscht. Die Syntax ist allerdings gewöhnungsbedürftig, da hast du recht. Ich komme auch von C#/Java, aber nach einiger Zeit schreibt man Delphi-Code genauso schnell wie jede andere Sprache[/EDIT]
 
Zuletzt bearbeitet:
Da du, wie du sagst schon grundlegende Kenntnisse hast würde ich dir zu C# raten. Ist die momentan wohl "sauberste" Objektorientierte Programmiersprache, allerdings solltest du dich, wie einschnaehkeee geschrieben hat, erstmal grundlegend mit den Konzepten der Objektorientierten Entwicklung auseinandersetzen. Man Code sehr viel flexibler und effizienter gestalten, wenn man diese Konzepte kennt, und beherrscht. Vor allem mit dem Thema Modellierung solltest du dich eingehend beschäftigen, hier kann man viele klassische Fehler vermeiden und vorbeugen. Damit will ich nicht sagen, dass du Modellierer sein musst, um programmieren zu können, aber wer sich mit Modellierung auskennt, und die dadurch notwendige Abstraktion beherrscht tut sich sehr viel leichter mit dem entwickeln von Software
Kann jemand vllt Literatur oder Links zum Thema Modellierung empfehlen?
[EDIT]@Ultrix: Delphi als unflexibel zu bezeichnen ist etwas kurzsichtig. Die Sprache ist durchaus flexibel, allerdings muss man sich mit dem modularen Grundkonzept von Pascal anfreunden können. C# (bis .Net 2.0) /Java beherrscht nichts, was Delphi nicht auch beherrscht. Die Syntax ist allerdings gewöhnungsbedürftig, da hast du recht. Ich komme auch von C#/Java, aber nach einiger Zeit schreibt man Delphi-Code genauso schnell wie jede andere Sprache[/EDIT]
Ich bin "Amateur", wie viel Weitsicht kann man da verlangen? ^^
Ich weiß über Delphi mehr oder minder nur das, was ich im Unterricht gelernt habe, und da ist mir vor allem das Deklarieren von Variablen (die man ohne Pointer soweit ich erfahren habe nicht mitten im Quelltext deklarieren kann) eben negativ aufgefallen.


@einschnaehkeee:

Joa, danke für den Hinweis, wobei ich mir schon darüber im Klaren bin, dass es in der Informatik, also der Wissenschaft des systematischen Bearbeitens von Informationen, vor allem Dingen allgemein das Analytische und Abstrakte eine primäre Position einnimmt. Wobei ich mir wie gesagt gar nciht so sicher bin, ob ich diesen Teil der Informatik so genau einsteigen will. Für mich geht es jetzt erstmal konkret ums Programmieren. :)
 
Kann jemand vllt Literatur oder Links zum Thema Modellierung empfehlen?

UML@Work von Prof. Martin Hitz ist mehr oder minder ein Standard-Werk (übrigens mein Uni-Professor). Wobei ich mir jetzt nicht sicher bin, ob du bereit bist, Geld dafür auszugeben. Ansonsten hab ich mich mit Literatur zu dem Thema nicht sonderlich beschäftigt, da es mir auf der Uni und bei der Arbeit doch recht effektiv eingehämmert wurde :)

Ich bin "Amateur", wie viel Weitsicht kann man da verlangen? ^^
Ich weiß über Delphi mehr oder minder nur das, was ich im Unterricht gelernt habe, und da ist mir vor allem das Deklarieren von Variablen (die man ohne Pointer soweit ich erfahren habe nicht mitten im Quelltext deklarieren kann) eben negativ aufgefallen.

Das mit der Weitsicht sollte kein Vorwurf sein, ich wollte nur darauf hinweisen, dass es oft nicht so ist, wie es den Anschein hat.

Dass Variablen in Delphi nicht im direkt im funktionalen Code deklariert werden können, war für mich anfangs auch gewöhnungsbedürftig, allerdings hat es auch Vorteile.

@einschnaehkeee:

Joa, danke für den Hinweis, wobei ich mir schon darüber im Klaren bin, dass es in der Informatik, also der Wissenschaft des systematischen Bearbeitens von Informationen, vor allem Dingen allgemein das Analytische und Abstrakte eine primäre Position einnimmt. Wobei ich mir wie gesagt gar nciht so sicher bin, ob ich diesen Teil der Informatik so genau einsteigen will. Für mich geht es jetzt erstmal konkret ums Programmieren. :)

Ist zwar jetzt nicht an mich gerichtet aber: Auf meiner Uni wird seit Jahren eine Diskussion geführt, wie man Studienanfänger am besten in die Materie einführt. Erst das Programmieren beibringen oder doch erst die darüberliegenden abstrakten Konzepte. Wir lernen bis auf weiteres als erstes die Programmierung an sich, allerdings steht die nur ein Semester lang alleine da. Nur soviel: Programmieren kann jeder, Software entwickeln und vor allem gute Software entwickeln erfordert viel mehr
 
UML@Work von Prof. Martin Hitz ist mehr oder minder ein Standard-Werk (übrigens mein Uni-Professor). Wobei ich mir jetzt nicht sicher bin, ob du bereit bist, Geld dafür auszugeben. Ansonsten hab ich mich mit Literatur zu dem Thema nicht sonderlich beschäftigt, da es mir auf der Uni und bei der Arbeit doch recht effektiv eingehämmert wurde :)
Ah, ne Geld wollte ich erstmal nicht ausgeben, dafür bin ich zu unentschieden. Aber trotzdem danke.
Das mit der Weitsicht sollte kein Vorwurf sein, ich wollte nur darauf hinweisen, dass es oft nicht so ist, wie es den Anschein hat.
Habs auch nicht als Vorwurf aufgefasst :)
Ist zwar jetzt nicht an mich gerichtet aber: Auf meiner Uni wird seit Jahren eine Diskussion geführt, wie man Studienanfänger am besten in die Materie einführt. Erst das Programmieren beibringen oder doch erst die darüberliegenden abstrakten Konzepte. Wir lernen bis auf weiteres als erstes die Programmierung an sich, allerdings steht die nur ein Semester lang alleine da. Nur soviel: Programmieren kann jeder, Software entwickeln und vor allem gute Software entwickeln erfordert viel mehr
Ja, und ich mach mir da auch keine Illusionen. Aber dennoch gibt es da einige Dinge, die ich gerne mal für mich verwirklichen möchte. Und ich will eben auch mal etwas tiefer in das eigentliche Programmieren einsteigen, aber eben locker.
 
Wenn locker gehen soll, dann nimm' nicht C++. Das ist zwar 'ne super Sprache, aber man muss quasi gezwungen werden das zu lernen, damit man dahinter bleibt. ;)
Ich persönlich hab' noch Java gelernt. Eine meiner Meinung nach relativ einfache und teilweise intuitive Sprache. Der Nachteil von Java ist gleichzeitig ein Vorteil: Dadurch, dass Java durch die mitgelieferte Umgebung auf so gut wie allen Systemen läuft (egal ob Windows, Linux oder sonstiges) es ist auch vergleichsweise langsam. Inwieweit das für die jetzt ausschlaggebend ist bzw. ob das dich bei deinen Programmen dann überhaupt juckt weiß ich nicht.
Zu Java gibt's übrigens auch ein schönes Openbook:
http://www.galileocomputing.de/openbook/javainsel7/
Von C# hab' ich keine Ahnung, sorry, darum will ich dazu auch nichts sagen. Aber egal für was du dich entscheidest, du brauchst Geduld und gute Nerven.
 
Wenn locker gehen soll, dann nimm' nicht C++. Das ist zwar 'ne super Sprache, aber man muss quasi gezwungen werden das zu lernen, damit man dahinter bleibt. ;)
Ich persönlich hab' noch Java gelernt. Eine meiner Meinung nach relativ einfache und teilweise intuitive Sprache. Der Nachteil von Java ist gleichzeitig ein Vorteil: Dadurch, dass Java durch die mitgelieferte Umgebung auf so gut wie allen Systemen läuft (egal ob Windows, Linux oder sonstiges) es ist auch vergleichsweise langsam. Inwieweit das für die jetzt ausschlaggebend ist bzw. ob das dich bei deinen Programmen dann überhaupt juckt weiß ich nicht.
Zu Java gibt's übrigens auch ein schönes Openbook:
http://www.galileocomputing.de/openbook/javainsel7/
Von C# hab' ich keine Ahnung, sorry, darum will ich dazu auch nichts sagen. Aber egal für was du dich entscheidest, du brauchst Geduld und gute Nerven.

Danke, nach dem Buch hab ich schon länger gesucht, mir ist nur der Titel entfallen :)
 
Hab grad net viel zum Thema beizutragen, nur gibt's hier auch ein Java-Buch kostenlos zum Saugen, was auch net schlecht ist:
http://www.javabuch.de/

Mit C# ist es übrigens sehr angenehm zu arbeiten, kann man empfehlen. Der GUI-Builder von Visual Studio ist außerdem auch nicht ohne.^^

Wenn du schon etwas weiter mit Modellierung bist und dich weiter in Java einarbeiten willst, dann schau dir mal EMF in Verbindung mit oAW an, da kann man richtig krasse Sachen machen und es ist alles Open Source. (was natürlich nicht immer gut ist ;-) ).^^
 
Hab grad net viel zum Thema beizutragen, nur gibt's hier auch ein Java-Buch kostenlos zum Saugen, was auch net schlecht ist:
http://www.javabuch.de/

Mit C# ist es übrigens sehr angenehm zu arbeiten, kann man empfehlen. Der GUI-Builder von Visual Studio ist außerdem auch nicht ohne.^^

Wenn du schon etwas weiter mit Modellierung bist und dich weiter in Java einarbeiten willst, dann schau dir mal EMF in Verbindung mit oAW an, da kann man richtig krasse Sachen machen und es ist alles Open Source. (was natürlich nicht immer gut ist ;-) ).^^

Zu C# kann ich auf jeden Fall zustimmen :)

Aber erstmal langsam, hab doch erst mit dem einen begonnen ;)
 
Zurück
Top Bottom