Wie nach 25 Jahren wieder ins Programmieren einsteigen ?

Aerologic

Cadet 3rd Year
Dabei seit
Juni 2007
Beiträge
32
Hallo Zusammen,

ich habe zu seligen Zeiten sehr intensiv auf C64, CBM 8096, Apple II, C128, ..... programmiert (jetzt kann sich jeder mein Alter ausrechnen ;) ) nebem BASIC und etwas CP/M überwiegend 6502/6510 Assembler. Dinge wie RS232 Schnittstellenkommunikation wie Lichtsteuerung, BASIC Befehlserweiterungen, Assembler Programmier-Front-Ends, .... also relativ systemnah.
Ich bin dann allerdings beim Aufkommen der Hochsprachen wegen anderer Prioritäten relativ schnell ausgestiegen.

Würde mich nun gerne nach 25 Jahren wieder mit dem Thema beschäftigen ohne dass ich extrem viel Zeit hätte. Scope:

Beispiele:
- Simulationen (i.e. Population/Darwinismus) ohne größere Grafik
- Externe Steuerung von Antrieben, Schrittmotoren, Relais
- Ein paar Ideen für einfache aber spaßige casual und retro games ;-)
Platform:
- Windows
- iOS wäre cool

Ich kenne also die Prinzipien, das Typsystem des Programmierens zumindest für imperative Sprachen, die Frage ist, wie komme ich am einfachsten in die "Neuzeit" ?
Bin derzeit schlicht und ergreifend bei C++ gelandet.
Habt Ihr eine andere Empfehlung ? Wenn nein, welches C nehme ich da ?

LG
 

Paladin.de

Lt. Junior Grade
Dabei seit
Juli 2008
Beiträge
421
C++ ist vielseitig anwendbar. Vor da aus kann man auch C#-sachen oder microcontroller in C programmieren. iOS ist objective C, was etwas spezieller ist.

Am einfachsten zu lernen ist, je nach Verbindungen einfach mal n paar Laborübungen von Unis/FH's durchzuarbeiten. Da steigert sich meist der schwierigkeitsgrad von übung zu übung bzw. führt neue sachen ein. Da hat man meist nen guten überblick von den Grundlagen bis hin zu Objektorientierter Programmierung
 

Aerologic

Cadet 3rd Year
Ersteller dieses Themas
Dabei seit
Juni 2007
Beiträge
32
Hmm, gute Idee mit den Laborübungen. Kommt man da von extern ran ?
 

andy_0

Admiral
Dabei seit
März 2011
Beiträge
7.824
Simulationen und Steuerungen programmieren sich heute genauso wie vor Jahrzehnten mit Assembler und C/C++. Spieleentwicklung, insbesondere für Mobilgeräte, haben einen komplett anderen Fokus.

Mit C macht man nichts falsch. Für iOS und Co. musst du schauen, welche Software verwendet wird. Für Windows verwendet man am besten C#, für Spiele unter Windows C/C++, außer du möchtest auf XNA entwickeln, dann wieder C#.

Das dies alles nicht ohne erheblichen Zeitufwand geht, sollte klar sein. Insofern verstehe ich nicht, warum du schreibst "Würde mich nun gerne nach 25 Jahren wieder mit dem Thema beschäftigen ohne dass ich extrem viel Zeit hätte." Das schließt sich doch irgendwie aus. Spieleentwicklung, mal abgesehen von der Logik, ist eine komplett eigene Sache für sich, wie es eben auch die Programmierung für embedded Systems, OS (Windows, Linux) Mobilgeräte (Windows Phone, Android, iOS) etc. ist.
 

KingZero

Ensign
Dabei seit
März 2010
Beiträge
221
Schau dir Python in der Version 2.7 an. Damit kannst du alles machen, was du aufgezählt hast, bis vielleicht auf iOS. Das weiß ich leider nicht.
Als erste Anlaufstelle zum lernen von Python, schau dir das Tutorial auf der offiziellen Seite an. Das ist meiner Meinung nach sehr gut erklärt.
 

DogsOfWar

Lt. Commander
Dabei seit
Juni 2005
Beiträge
1.924
bei mir is nu auch schon 20 jahre her das ich meine ersten schritte mit c64 gemacht hab und im unterricht inner realschule sprites für meine c64 experimente berechnet habe. nach schule gings dann weiter mit stundenlagem abtippen vom assemlercodes aus sämtlichen zeitungen...

geos 2.0 war der kracher^^ workbench 3.0 von meinem ersten amiga 1200 hat mich dann vollkommen umgehauen wenn man den vergleich zu basic und assembler zieht^^

heute schreib ich mir für alles mögliche batches um sämtliche backups usw mit einem klick auszuführen weil zu mehr hab ich auch gar keine lust mehr...
 

captmcneil

Ensign
Dabei seit
Juni 2005
Beiträge
189
Hoi,

als Anwendungsentwickler kann ich nur den Hinweis geben, dass C# und Java, wenn man aus der System-Richtung kommt, einen ordentlichen Paradigmenwechsel erfordern. Ich kann sozusagen "naturgemäß" gar nicht anders, als die Vorteile der Objektorientierung zu predigen (gerade für Spiele), aber dennoch wäre es denke ich unter den gegebenen Rahmenbedingungen nicht der erhoffte schnelle Einstieg.

Wenn Du schon aus der systemnahen Ecke kommst, würde ich auch zu C tendieren, mit der Option, dann später mal C++ mit Klassen oder halt Objective-C anzuschauen. Ich denke, dass für Dich das Zeigergedöns dann das kleinste Übel ist.

Eine interessante Nische wäre eventuell auch F#. Das wäre eine funktionale/imperative Sprache im Stil von Prolog oder Lisp mit dem Vorteil, super Tools und die riesen .Net-Bibliothek auf Abruf zu haben.

Wenn vielleicht doch etwas mehr Zeit da ist - soo schwer ist Java nun auch nicht. Es gibt sehr wenige Schlüsselworte, und auch die Objektorientierung ist im Vergleich zu C++ deutlich simpler realisiert. C# ist da durchaus ein bisschen anders, da kann man anfangs vor lauter Features leicht die Übersicht verlieren.
 
Zuletzt bearbeitet:

Mortal

Ensign
Dabei seit
Aug. 2004
Beiträge
231
Gerade in Bezug auf wenig Zeit würde ich hauptsächlich Java verwenden, vorallem für die Spiele.
Mit Schnittstellenprogrammierung kenne ich mich nicht aus, ich würde vermuten C ist da angemessen und sollte beim TE kein zu großes umdenken erfordern (wobei es bei kleineren Projekten sicher auch kein Problem ist C durch C++ anzureichern sofern das mit den Compilern passt in dem Bereich...)
 

Sukrim

Lieutenant
Dabei seit
Apr. 2009
Beiträge
956
Hmm, gute Idee mit den Laborübungen. Kommt man da von extern ran ?
Von vielen Universitäten (besonders amerikanischen) gibt es Vorlesungsaufzeichnungen im Internet. Bestimmt gibt es an einer Uni in deiner Nähe auch immer wieder abends offene Vorträge, die irgendwo angekündigt werden (z.B. Newsgroups oder so) wo man dann fragen kann, welche Lehrveranstaltungen da bei deinem Interesse zutreffen würden. Wenn du das mal weißt, kommst du auch oftmals leicht an Mailaddressen von Professsoren, die du vielleicht mal um Unterlagen bitten kannst oder so.
 

Aerologic

Cadet 3rd Year
Ersteller dieses Themas
Dabei seit
Juni 2007
Beiträge
32
Vielen Dank Euch allen für das Feedback !

Ich werde alle Vorschläge unter die Lupe nehmen und dann mal schauen, eas dabei raus kommt.

Grüße
 

benneq

Admiral
Dabei seit
Juli 2010
Beiträge
9.179
Vor allem solltest du dich für einen Bereich entscheiden:
- Windows
- Linux
- OS X
- Plattformübergreifend
- Mobile Devices
- Spiele
 

FunnyName

Lt. Commander
Dabei seit
Feb. 2011
Beiträge
1.036
Java oder C# mit starkem OO Fokus (ich würde Java bevorzugen) oder C/C++ wenn du eher etwas systemnäher bleiben willst.

Zumindest im Java Umfeld findet man auch einen Haufen guter Tutorials etc. im www
 

Funart

Lieutenant
Dabei seit
Feb. 2006
Beiträge
803
Wenn ich mir den Startpost durchlese muss ich fast schon von Java abraten.
Der Grund dafür liegt im Java eco System, welches stark framework basiert ist. Dadurch muss man einfach neben Java selbst noch ein paar Frameworks beherrschen damit man irgendwas von bedeutung auf die Straße bekommt. Vorallem ist Systemnahe nicht grade das Steckepferd. Das lässt sich in meinen Augen nicht mit dem wenig Zeit vereinbaren. In meinen Augen dauert es 2 Jahre bis man einmal halbwegs klar kommt wenn man nicht Softwareschrott abliefern will.

Vielleicht wäre ein µController das richtige und damit einmal mit klassischem C etwas zu Programmieren.
LEDs, LCD Display und Co sollten auf dem board vorhandne oder anschließbar sein.
 

Mortal

Ensign
Dabei seit
Aug. 2004
Beiträge
231
Nein, für die Systemnahe programmierung wäre Java quatsch (da hast du mit C schon recht)- aber alles was sonst auf seiner Liste steht kann er mit Java problemlos und schnell umsetzen. Er wird sich mit ein wenig Einarbeitung relativ schnell auf den Kern des Problems konzentrieren können ohne sich mit merkwürdigen Fehlern rumschlagen zu müssen...

Die offensichtlichsten Vorteile mal aufgelistet:
-Sehr gute freie Entwicklungsumgebung (Eclipse)
-Guter Debugger
-Gargabe Collection
-Man wird zu OOP gezwungen - gerade beim Einstieg sicher Vorteilhaft

Wenn er sich wenig Zeit nimmt(auch für die Einarbeitung) wird er in Java eher vertretbaren Code schreiben als in C oder C++.
 

captmcneil

Ensign
Dabei seit
Juni 2005
Beiträge
189
@Mortal:
Ich stimme Dir zu im Hinblick auf OO, wirklich, aber ich muss Funart einfach Recht geben, was die Anforderungen des OP angeht.

OO ist der "moderne" (naja, seit Smalltalk-80, auch schon ein paar Jahre her...) Weg und das Pattern für quasi alles, was man sich ausdenken kann. Aber wenn Du aus der µ-Schiene kommst, und einfach nur kurz neu einsteigen willst, ist ein kompletter Paradigmenwechsel nicht das, was Du willst.

So sehr ich C hasse, ich denke einfach, es ist das beste dafür, einfach weil es als einzige Sprache alle Optionen offen lässt.

Man könnte argumentieren, dass ein klassischer Ansatz hier nicht passt, aber das würde heißen, dem OP zu sagen, dass er keine Chance hat, und das wäre ja auch etwas unfair :-)
 
Zuletzt bearbeitet:

Mortal

Ensign
Dabei seit
Aug. 2004
Beiträge
231
66% seiner Anforderungen haben wenig mit dem zu tun was er mal gemacht hat - mit der Neuzeit hat er ja offenbar auch kein Problem ;)
Naja mit seinem Background wird er sich schon zurechtfinden...
 

Funart

Lieutenant
Dabei seit
Feb. 2006
Beiträge
803
Mortal du vergisst einfach gewisse Faktoren.
Wenn ich ihm jetzt empfehle Java zu lernen mit allem was dazu gehört um z.B. Webpages zu erstellen. Sind die chance minimal das er so lang dabei bleibt. Weil es einfach viel Zeit und erfahrung braucht bis man es wirklich kann. Wenn ich ihm aber jetzt empfehle mit µController mal was zu machen ist der Einstieg für ihn leichter und er bleibt bei der Sache weiter zu Java kann er noch immer gehen ;)
 

Mortal

Ensign
Dabei seit
Aug. 2004
Beiträge
231
Warum würdest du ihm beibringen wollen wie man dynamische Internetseiten mit Java macht?
 

BounceToThat

Cadet 4th Year
Dabei seit
Feb. 2007
Beiträge
121
Wenn Du für IOS programmieren willst, kommst Du an Objective-C nicht rum, da Objective-C aber eigentlich nur eine Erweiterung von C ist, würde es sicher nicht schaden mit C anzufangen. C# kenne ich leider nicht, aber im Grunde ist es doch so, man lernt die Basics wie Schleifen, if-else, switch, Variablen Deklaration, u.U. Vererbung, etc. und versucht zu verstehen was dahinter steckt. Wenn man es verstanden hat, dann kann man das Wissen auf viele andere Sprachen anwenden, man muss sich nur die spezielle Syntax anschauen. Wenns dann spezieller wird, dann schaut man sich die Dokumentation an oder in der heutigen Zeit Tutorials und man ist relativ schnell drin in der jeweiligen Sprache.

Mein Weg führte über C++ -> Java -> Objective-C

Und da muss ich sagen, dass ich von Java -> Objective-C doch einige Probleme hatte, da plötzlich der tolle Garbage Collector weg war ;) und man selber die Speicherverwaltung übernehmen muss.
 
Top