Wie mit dem Programmieren anfangen?

Es kann schon einen Unterschied machen womit man anfängt, ich habe z.B. mit der Spieleentwicklung begonnen, also was man eigentlich so gar nicht macht.
Die Sprache war BlitzMax, eine proprietäre Sprache mit Basic ähnlicher Syntax die aber auch "Klassen" kennt, nicht ganz so umfangreich wie in Java oder C++, aber es reicht.

Das wunderbare daran: Man hat in kürzester Zeit etwas grafisches auf dem Bildschirm und in noch etwas Zeit bewegt sich dieses etwas auch noch.
Hat man dann eine Idee oder möchte Klassiker wie Pong oder Tetris nachprogrammieren lernt man ohnehin die benötigten Sachen wie Abfragen, Schleifen usw.
Dadurch, das man sieht was man programmiert hat man eine ungeheure Motivation gegenüber dem trockenen Lernen einer Sprache, jedenfalls war es bei mir so.

Andere Sprachen ließen sich dadurch nach gewisser Zeit auch viel leichter durchblicken, z.B. Java, C# und letztendlich auch C/C++, wobei da der Knackpunkt die Speicherverwaltung bzw. das Verstehen der Pointer der größte Unterschied war, BlitzMax hat eben auch einen eingebauten Garbage Collector.

Wen das weiter interessiert, es gibt eine Demo hier: Klick

Soll keine Werbung sein, aber es ist eine schöne und interessante Option.
Sollten weitere Fragen dazu entstehen, kann mir gerne eine PN geschickt werden.
 
Zuletzt bearbeitet:
Großartiger Vorschlag! Leg doch erstmal 50-60 Ocken auf den Tisch, bevor du überhaupt anfängst. Und dann
kannst du ja mal sehen, ob des dir gefällt. Und wenn nicht: Ach gott, was kostet die Welt?
 
Dafür gibt es ja die Demo...30 Tage kann man damit herumspielen.

Und dein SICP ist natürlich für einen Freizeitprogrammierer das non-plus Ultra was sich jeder sofort und mit totaler Begeisterung reinzieht ;)
Ich bin eher ein Freund des praktischen Lernens, wenn ich sehe was das was ich tue bewirkt, hilft mir das mehr als wenn ich Text lese.

Natürlich tut es die Konsole auch, aber es sollte auch nur eine Option sein, weil es so eben auch geht und interessanter ist als trockenes Lernen.
 
soares schrieb:
Was hier nebensächlich ist! Es geht nicht darum, die effizienteste Sprache für Aufgabe A, B oder C zu finden, sondern eine Sprache, die einen guten Einstieg in die Programmierung ermöglicht.
Die Konzepte der Speicherverwaltung und Pointer-Strukturen sind nicht ganz ohne, somit macht die Effizienz der Sprache schon etwas aus. Wenn ich mich nie um malloc&free kümmern muss wird mein Leben einfacher und das Lernen weniger frustig.

Das alles sind keine Überlegungen, die hier eine große Rolle spielen. Es geht hier darum, überhaupt mit der Programmierung zu beginnen. Sich Grundlagen anzueignen! Bis man eine GUI entwickelt, vergeht einige Zeit. Und das hängt dann auch nicht von der Sprache ab. Mit Java kann ich z.B. genau so wxWidgets verwenden, wie mit C oder Python auch. Mit der Sprache per se, hat das nichts zu tun.
Wenn du mit purer und trockener Theorie beginnen willst, dann wäre ein Vorlesungsscript über Algorithmen und Datenstrukturen die sinnigste Version. Evtl. sollte man dann auch noch Chomsky-Grammatiken lernen, man könnte ja mal über ne RegExp stolpern, da ist ein Grundverständnis der Sprachwissenschaften ganz praktisch.

Viel motivierender ist es hingegen, direkt in eine Sprache einzutauchen, die mit wenigen Befehlen und Klicks (juhu @ WYSIWYG - Editoren!) eine kleine Oberfläche zu zaubern, die dann etwas bestimmtes macht, wenn man an bestimmte Stellen klickt. Besonders hübsch ist es dann, wenn ich nicht noch n dickes Handbuch wälzen muss um zu verstehen, welche Bibliotheken ich jetzt noch alles für den Compiler einbinden muss.

Ich find, Java ist eine sehr dankbare Sprache für Einsteiger. Nette Speicherverwaltung, kein großer Stress mit dem Compiler,...
 
Ich find, Java ist eine sehr dankbare Sprache für Einsteiger. Nette Speicherverwaltung, kein großer Stress mit dem Compiler,...
.. mit einer absolut hässlichen Syntax und vergleichsweise langsam. (Ja, das ist subjektiv. Nein, ich möchte jetzt keinen heiligen Programmiersprachenkrieg starten.)
 
Das langsam musst du aber belegen, wenn du es schon behauptest und dann die Sprache mit schönerer Syntax zeigen, die schneller ist. ;)
 
Beides in einem ... das geht nun wirklich nicht. ;) Aber schönere Syntax ist wirklich kinderleicht. Nur um wieder das schon erwähnte Python anzusprechen.
 
Ich würde ja mit PHP anfangen, nebenbei kann man auch noch HTML und CSS verinnerlichen und gute Kenntnisse in der Webentwicklung gewinnen.
Mit PHP lassen sich sehr schnell Erfolge erzielen, was meiner Meinung nach am Anfang sehr motivierend ist.
Dafür bist du natürlich ein bisschen beschränkt ;)
Danach kannst du auch mit Java und JSP(bzw. JSF) den Bereich vertiefen.

edit:
Für Anwendungen würde ich c# nehmen.
Damit bist du auch nicht soweit weg von Java, was die Syntax angeht.
 
Es ist mehr als unangebracht, sich in einem Anfänger-Thread über Performanzfragen auszulassen! Am Ende soll der TE noch in Assembler programmieren :freak:
 
Ohje, wie out-of-date ist denn diese Präsentation zu Java und C#? Das ist ja richtig amüsant anzuschauen :D

Ich hoffe inständig, dass das nicht mehr in der aktuellen Lehre verwendet wird.
 
Ursprünglich ging es dem Aufsteller der Behauptung aber darum, dass Java nicht nur hässlich, sondern auch unnötig langsam ist. Um die Performance allein geht es ja gar nicht. Auch wenn du Assembler nur als Übertreibung verwendet hast, bietet es lediglich Performance, ist aber in allen anderen Punkten weit abgedrängt.
Ich bin der Meinung, dass Java ein schlechtes Gesamtpaket bietet, und der TE deshalb lieber mit einer Sprache arbeiten sollte, die dahingehend besser ist. Höchste Priorität sollte dabei die Einfachheit der Syntax haben. Daher kann es auch eine andere Sprache sein, als wie von mir vorgeschlagen C#. Kern meiner Aussage ist im Grunde, alles ist besser geeignet als Java.
 
Wo liegt denn vom Schreiben her groß ein Unterschied zwischen Java und C#?
Und vor allem von der Syntax die fast genauso ist, weil die meisten verbreiteten aktuellen Sprachen ohnehin eine C-Syntax artige und erweiterte Syntax nutzen.
Speziell C# hat ja die Java Syntax großflächig übernommen.

Und das Java langsam ist, ist auch nicht mehr aktuell.
Zudem kann Java auf vielen Endgeräten bzw. Betriebssystemen laufen, probiere das mal mit C#.

Ich bin kein Verfechter von Java, aber warum bitte bietet Java kein gutes Gesamtpaket?
Wäre die Sprache nicht gut und einfach zu lernen, wäre Sie nicht an vielen Universitäten, wie auch an meiner, Einführungssprache und in der Berufswelt die Gefragteste.

Könntest ja mal deine Meinung etwas untermauern und nicht nur deine subjektive Meinung abgeben.
 
kinglouy schrieb:
Ursprünglich ging es dem Aufsteller der Behauptung aber darum, dass Java nicht nur hässlich, sondern auch unnötig langsam ist. Um die Performance allein geht es ja gar nicht. Auch wenn du Assembler nur als Übertreibung verwendet hast, bietet es lediglich Performance, ist aber in allen anderen Punkten weit abgedrängt.

Muss hier im Forum Sarkasmus dezidiert markiert werden?

Die Überlegungen hinsichtlich Performanz sind für den TE schlichtweg Quatsch und verwirren nur. In jeder Sprache kann man guten und schlechten Code schreiben.


kinglouy schrieb:
Ich bin der Meinung, dass Java ein schlechtes Gesamtpaket bietet, und der TE deshalb lieber mit einer Sprache arbeiten sollte, die dahingehend besser ist. Höchste Priorität sollte dabei die Einfachheit der Syntax haben. Daher kann es auch eine andere Sprache sein, als wie von mir vorgeschlagen C#. Kern meiner Aussage ist im Grunde, alles ist besser geeignet als Java.

Und die Syntax von C# ist jetzt wo einfacher? C# ist um einiges komplexer als Java, bietet in der Tat mehr syntaktische Goodies. Wenn man ausschließlich auf Windows unterwegs ist, sicherlich keine abwegige Wahl, aber die unsinnigen Aussagen, die hier angeführt werden, sind hanebüchen.
 
Zuletzt bearbeitet:
Also Javas Syntax als hässlich zu beschreiben und im Gegensatz C# anpreisen hat schon etwas sehr eigenartiges.

Und Java als auch C#/.NET bieten entgegen der Behauptung ein sehr sehr gutes Gesamtpaket :rolleyes:
 
Tumbleweed schrieb:
Ohje, wie out-of-date ist denn diese Präsentation zu Java und C#? Das ist ja richtig amüsant anzuschauen :D

Das Blöde an der Sache ist nur, dass in Java 7 keine (oder kaum, für den Fall dass ich etwas übersehe) der angesprochenen Punkte verbessert werden.

DaysShadow schrieb:
Könntest ja mal deine Meinung etwas untermauern und nicht nur deine subjektive Meinung abgeben.

Der Hauptunterschied liegt in der nicht intuitiven Struktur von Java:

  • Primitive Typen sind nicht kompatibel zu Object. Dadurch entstehen dann so Gebilde wie "new Integer(5)".
  • Bei Vererbung der gezwungene Aufruf von super() als erste Zeile im Konstruktor, wenn ein Baseclass-Konstruktor aufgerufen werden soll. Ein Intuitives Sprachkonzept ist wohl das genaue Gegenteil davon. Sieht aus, wie eine normale Methode, muss aber per Konvention als erstes aufgerufen werden.
  • Änderung in Java 7, beim Öffnen eines Try-Blocks ähnlich dem using bei C# ein Objekt anzugeben, welches nur eine Lebensdauer innerhalb des Blocks besitzt. Kläglicher Versuch das IDisposeable-Muster und Using zu implementieren, da hier zwei völlig verschiedene Konzepte vermischt werden, nämlich Fehlerbehandlung und Resourcen-Management.
  • Endloslange Verkettungen von Objekten. Beispiel: System.in kann nicht verwendet werden, um auf einfache Art und Weise einen String einzulesen, sondern es wird erst ein StreamReader benötigt.

Noch was zur Performance:
Methoden sind in Java grundsätzlich alle virtual. Der daraus entstehende Nebeneffekt sorgt dafür, dass bei jedem Aufruf einer Methode eine dynamische Methodensuche gestartet werden muss. Dazu beginnt die Suche in der Methodentabelle des dynamischen Datentyps eines Objekts und zieht sich entlang der Vererbungshierarchie, bis es ein Match gibt. In anderen Sprachen muss virtual aus diesem Grund explizit angegeben werden, da sich dies negativ auf die Performance auswirkt.


DaysShadow schrieb:
Zudem kann Java auf vielen Endgeräten bzw. Betriebssystemen laufen, probiere das mal mit C#.

Das ist kein gutes Argument, da dies in der Praxis sowieso selten relevant ist. Workstations in Firmen werden so selten auf andere Plattformen umgestellt, dass das Argument an Relevanz verliert.


DaysShadow schrieb:
Ich bin kein Verfechter von Java, aber warum bitte bietet Java kein gutes Gesamtpaket?
Wäre die Sprache nicht gut und einfach zu lernen, wäre Sie nicht an vielen Universitäten, wie auch an meiner, Einführungssprache und in der Berufswelt die Gefragteste.

Es bietet kein gutes Gesamtpaket, wegen den von mir oben aufgeführten Punkten und desweiteren sind die Entwicklertools sehr bescheiden. Wie vieles in der Programmierwelt ist es auch hier so, dass es einem Glaubenskrieg nahekommt, aber alle gängigen IDEs für Java sind die reinste Zumutung mit Eclipse und Netbeans. Für mich und viele Bekannte und Freunde, die einmal damit angefangen haben ist es so, dass Visual Studio DIE IDE überhaupt darstellt. Einmal damit gearbeitet und Eclipse kommt einem vor wie ein Stein, den man hinter sich herziehen muss.

Die Verbreitung der Sprache lässt sich folgendermaßen begründen:
  • Java war früher da. Früher wurde bei uns an der Uni mit C++ angefangen. Im Gegensatz zu C++ war selbst die erste Version von Java ein Fortschritt, was die Erlernbarkeit angeht. Sogesehen wurde es auch von vielen Profs als "Geschenk" aufgenommen, da es vieles vereinfacht. Deshalb sind auch vor dem Erscheinen von .Net und C# bereits viele Werkzeuge für die Bildung an Unis entstanden (z.B. BlueJ, 1999). Diese Praktiken werden bis heute beibehalten.
  • Nachdem Java auf diese Art aufgenommen wurde, hatte es MS mit C# natürlich schwer, den Marktanteil spürbar anzugreifen. Die Sprache muss ja zuerst angenommen werden. Viele Firmen haben zu dem Zeitpunkt allerdings schon längst mit der Entwicklung in Java angefangen, sodass hier natürlich nicht umgestiegen wird.
  • Die Breite Masse ist sehr Träge. Bei uns an der Uni nehmen viele Java als die ultimative Sprache hin, weil sie immerhin an der Uni unterrichtet wird. Motivation mit anderen Sprachen zu experimentieren existiert oft gar nicht.
 
kinglouy schrieb:
Das Blöde an der Sache ist nur, dass in Java 7 keine (oder kaum, für den Fall dass ich etwas übersehe) der angesprochenen Punkte verbessert werden.
Liegt daran, dass fast alle genannten Punkte bereits vor Java 1.7 "behoben" wurden. Von foreach, über auto (un)-boxing bis hin zu annotations wie @Override.

Dabei will ich gar nicht gegen C# argumentieren. Empfehle die Sprache ja (neben Java) selbst als guten Einstiegspunkt. Ich finde deine Argumentation allerdings völlig haltlos an allen Ecken und Enden.

Visual Studio ist schon recht angenehm, das ist wohl wahr. Es kostet aber auch ordentlich was, wenn man seinen Hintern nicht mehr an der Uni parkt. Abgesehen davon ist Eclipse sehr leistungsfähig, wenn man denn die Funktionen überhaupt kennt und benutzt. Nur die Stabilität und die gelegentlichen Konflikte zwischen den Versionen und Plugins nerven. Aber für kostenlose Software ist Eclipse außerordentlich gut.

P.S.: Manche der angesprochenen Punkte sind absichtlich in Java so, wie sie sind. Bloß weil es operator overloading gibt, heißt das nicht, dass es gut ist.
 
Zuletzt bearbeitet:
Also, ich habe mit BASIC angefangen. BASIC („Beginner’s All-purpose Symbolic Instruction Code“) ist sehr einfach zu erlernen und für Anfänger ideal - wie der Name schon sagt. Im Prinzip ist es egal, welche Programmiersprache man zum Lernen nimmt um das Grundsätzliche des Programmierens zu verstehen. Wenn Du erstmal eine Sprache kannst ist es relativ einfach eine weitere zu erlernen. Aber BASIC ist halt besonders einfach.
Bei Microsoft kannst Du Dir Visual Basic Express kostenlos runterladen:
http://www.microsoft.com/germany/express/products/windows.aspx
Im Web gibt es jede Menge Anfängerseiten. Einfach mal Googeln.

Viel Spaß! :daumen:
 
Zuletzt bearbeitet:
Zurück
Oben