Unklarheiten beim lernen einer Programmiersprache

Metal_Rex

Cadet 4th Year
Registriert
Sep. 2012
Beiträge
87
Hallo Leute,
der womöglich 100ste Thread zum Thema Programmierspraache lernen aber mir sind ein Paar Dinge nach all dem Lesen noch nicht ganz klar zum Thema Programmiersprache lernen:

1. Welche Sprache ist einfach (wohl Python oder Ruby) aber auch relativ universell? Als Anfänger weiß man ja noch nicht was man einmal machen wird also sollte man sich alles offen oder einfach halten?
2. Was genau kann ich mit welcher Sprache machen oder was ist ein ersichtlicher Unterschied? Z.B. so:
C++, ...: kann man FarCry mit programmieren aber nur für Windows
PHp...: Browsergames
Java: Alles?
schwerer wirds schon mit JavaScript (das hörte sich auch danach an, dass man damit Spiele machen kann?)

Vielleicht kann mir jemand eine kurze Rückmeldung dazu geben, da mir nach all dem Lesen eine Liste fehlt mit Dingen die ich mir als Anfänger vorstellen kann oder ist es einfach zu tiefgründig um es zu verstehen oder einfach noch unwichtig? Für mich ist da kein großer Unterschied zwischen glaube AirBnB (nutzt Ruby) und Youtube (nutzt Python) .
 
Die Qual der Wahl. Rein theoretisch ist es egal, was du als erstes lernst, da man mit jeder Programmiersprache ein Spiel zusammenbasteln kann.
Jedoch um dir den Wind aus den Segeln zu nehmen: Ein Spiel ist schon eine etwas aufwendigere Sache, wenn es nicht nur PingPong sein soll. Am Anfang geht es beim Lernen erst mal darum, dass man die grundlegenden Konzepte der Programmierung versteht. Diese sind ziemlich universell und drum kommt man so oder so nicht.

Empfehlungen sind immer schwer auszusprechen, ich habe z.B. wegen meinem Studium damals mit Java angefangen und finde, dass dies für den Anfang nicht schlecht war. Ein beherzter Sprung ins kalte Wasser, aber am Ende ist man glücklich, da man in Java auch alles machen kann. Es ist die Eierlegende Wollmilchsau unter den bekannten Programmiersprachen.

Probiers einfach aus.
 
Vielleicht bin ich ja oldschool, aber ich würde sage das du erstmal C lernen solltest um überhaupt zu verstehen wie eine Programmiersprache überhaupt funktioniert
und um dir ein gewisses Handwerkszeug anzueignen was Algorithmen angeht. Eine Alternative dazu wäre einfacher einzusteigen, und zwar mit Python.

Später kommt es ganz darauf an was du programmieren willst und auf welcher Maschine der code laufen soll.
Da gibt es dann von Fall zu Fall gut und weniger gut geeignete Sprachen.

Du solltest dich von dem Gedanken verabschieden gleich Crysis 5 programmieren zu wollen und zu können!!
Erstmal musst du lernen wie du Dinge überhaupt umsetzen kannst. Welche Möglichkeiten du hast und wie man diese umsetzt.

Erst mit diesem trockenen Wissen bist du überhaupt in der Lage ein Ziel zu formulieren und einen Weg dahin.
 
Programmiersprachen trinken auch nur dasselbe Bier. Will heißen: alles geht in allen Programmiersprachen ungefähr gleich. Womit Du also anfängst... bleibt Dir überlassen.

IMO ein guter Einstieg ist PHP. Das ist C-basiert, unterstützt aber auch objektorientierte Stile, und man kann es für Websites ebenso wie für Kommandozeilenscripts verwenden. Gleichzeitig ist es aber eine Interpretersprache, sodaß Kompilieren und Linking und so weiter alles wegfallen.

Kurz: relativ schnelle Erfolge für relativ wenig Aufwand.

ABER:

Wenn Du nix zu tun hast - wenn Du kein Problem hast, welches Du "jetzt" gerne irgendwie gelöst kriegen möchtest, dann wird das mit dem Programmiersprachenlernen kaum funktionieren. Irgendetwas eher "abgehobenes" wie "mit C/C++ kann man Treiber programmieren" ist eher kein Ansporn. Es sei denn natürlich, Du möchtest gleich ins kalte Wasser geworfen werden. Dann rechne aber mit Bluescreens galore. ;)

Such Dir stattdessen etwas kleines. Uhren in JS sind beliebt. Mit HTML und JS bekommt man einen Taschenrechner relativ gut hin. Mit PHP kann man mit einer interaktiven Webseite anfangen - Formular in HTML, wo man Daten eingibt, und PHP kümmert sich dann um die Verarbeitung.

Ruby und Python ordnen sich dort ebenso ein wie PERL. Die sind aber alle sehr modularisiert, was es schwieriger macht, dort einzusteigen - man braucht für konkrete Problemlösungen erstmal Module, die man aber auch erstmal identifizieren muß.

Für Sprachen, die am Ende eine lauffähige EXE-Datei ergeben sollen und sowas ähnliches wie plattformunabhängig sein sollen... könnte man in Richtung C# schauen. JAVA auch. Hier muß man sich dann aber erstmal in OO-style Programmierung einarbeiten und JAVA ist noch einen dicken Ticken strenger als C#, sodaß die Lernkurve eher steil wird.
 
C ist in meinen Augen eine höchst unsaubere Sprach, wo selbst Profis Fehler machen können, ohne dass diese auffallen.

Für Einsteiger, zum Lernen einer sauberen Programmierung, eignet sich C# und Rust.
In Schulen wird häufig Java unterrichtet, weil man dort am schnellsten Erfolge erzielt.

Für Spieleprogrammierung gibt es gute Schnittstellen zwischen C# und z.B. Unity.
 
1. Python ist in der Tat eine recht einfach zu lernende Sprache, aber auch Java ist nicht wirklich schwer. Die meisten Programmiersprachen sind an sich erstmal nicht wirklich schwer, wenn es nicht gerade Assembler oder C sind. Wobei man auch C als Anfang nehmen kann, denn erstmal geht es sowieso um die Grundlagen und ganz simple Programme. Wenn man aber erstmal etwas größere Sachen angeht, dürften die meisten mit C nicht mehr so viel Spaß haben. Es erfordert einfach etwas mehr Arbeit, die einem andere Sprachen oft abnehmen.

2. Für normale Programme taugen praktisch alle Programmiersprachen, aber manche natürlich mehr als andere. PHP ist zum Beispiel sehr stark auf Web fokussiert und wäre definitiv nicht das, was ich jemanden zum Programmieren lernen nahe legen würde. Wie man am Post von RalphS sehen kannst, sehen das andere Leute aber durchaus anders. Ob man nun aber Python, Java, Go, C++ oder sonstwas nimmt für seine ersten kleinen Projekte ist eigentlich egal.

Ich würde vermutlich einfach mit Java anfangen. Das ist die so ziemlich am meisten genutzte Programmiersprache überhaupt und man kann sich vor Guides, Hilfen und Anleitungen kaum retten. Wenn du zumindest ein paar Grundlagen drauf hast, wird dir vielleicht auch klarer, ob du damit weiter machen möchtest oder eine andere Richtung einschlagen möchtest, etwa Web mit HTML und PHP oder doch eher Skripte mit Python oder du entdeckst den Hardcore Coder in dir und findest die Idee von C doch ganz nett.
 
Mir hat im Studium C++ fast das Genick gebrochen, es war mir deutlich zu theoretisch (wenn ich die Begriffe Vererbung und Pointer nur höre, wird mir heute noch schlecht:rolleyes:). Mit Java kam ich deutlich besser klar.

Aber um die Grundlagen/Verfahrensweisen zu erlernen möchte ich mal zwei ganz einfache Programmiersprachen nennen:
1. Scratch: Grafikbasierte Programmiersprache --> Befehle zusammenschieben. Scratch ist darauf ausgelegt kleine Spiele zu programmieren.
2. SmallBasic: Textbasiert (wie die "großen" Programmiersprachen), Tutorials als pdf mit aufeinander aufbauenden Aufgaben.
 
PHP und JavaScript sind Skriptsprachen. Diese sind eher für kleinere Progrämmchen gedacht, hauptsächlich um in Webanwendungen interaktive Dinge zu tun, die mit normalen HTML allein nicht funktionieren.
Die sind eher nicht dazu gedacht, ein komplettes eigenständiges Programm zu schreiben.

Ich würde für den Einstieg Java empfehlen. Und dann auf zu C++.
Von Python und Ruby halte ich eher Abstand. Meine Erfahrung zeigt bisher, dass Programmierer, die mit Python oder Ruby gelernt haben, keine besonders guten Programmierer sind. Die Sprachen sind teilweise so sehr vereinfacht, dass "richtige" Programmiersprachen danach schwer fallen. Die kommen dann an und meinen sie könnten programmieren, sind dann aber mit vielen Konzepten von "echten" Programmiersprachen plötzlich total überfordert, weil die bisher komplett im Hintergrund abliefen.

Java ist zwar auch (zumindest für mein Empfinden) leicht, aber dichter an C++. Der Schritt zu C++ ist nach meiner Erfahrung von Java aus deutlich einfacher als von Perl oder Ruby. Von Java aus zu Python, Ruby etc. ist in der Regel gar kein Problem.

Wenn du C++ ordentlich kannst, kannst du in der Regel alles (auch nicht nur Windows). Zumindest fällt dir dann alles andere recht leicht beim Umstieg.
Das Problem ist, dass C++ für den Direkteinstieg recht hässlich sein kann. Machbar ist es, aber nicht gerade bequem.
Das liegt daran, dass C++ zwar sehr mächtig und performant sein kann, aber an sich eine alte Sprache ist, wo viele Dinge ziemlich unschön historisch gewachsen sind. Deshalb sind einige Dinge recht inkonsistent, in Tutorials findet man z.B. viele Dinge, die für einen anderen Standard gelten und dann wundert man sich, warum das bei einem selbst nicht geht. Außerdem muss man sich bei Java erstmal noch praktisch keine Gedanken um das Zielsystem machen, da sollte eigentlich fast alles erstmal laufen. Es gibt einfach ein paar Stolpersteine mehr bei C++.
Daher ist meine Empfehlung wie gesagt Java zu lernen. Syntaktisch sind die sehr ähnlich. Man kann fast alle Konzepte aus Java mit minimalen Anpassungen direkt nach C++ übernehmen. Dann lernt man ein paar C++-spezifische Dinge dazu und wenn man dann C++ kann, kann man sich meist ohne unverschämt zu sein Programmierer nennen.
 
PHP ist eher datenbankorientiert. Weborientiert kann man mit PERL auch haben. :)

Soweit muß man aber gar nicht gehen. Ein simples Script
Code:
<?php
echo "Hello World";
?>
gibt mit PHP bereits ein Ergebnis (auf der Kommandozeile).

Ja, mir gefällt JAVA auch sehr gut. Aber die Allgemeingebräuchlichkeit geht doch stark zurück und so nach und nach wird das wohl eher Richtung IoT gehen. Aus den Browsern fliegt es ja nun endgültig raus.

Plus, aber das ist nur meine Meinung: Für OO allgemein und JAVA im Speziellen braucht man Einstiegshilfe. Was ist ein Objektmodell? Wo ist der Unterschied zwischen statischem und dynamischem OM? Ein Eventmodell brauch ich auch, ebenso wie ein Exceptionmodell.

Wenn man's erstmal begriffen hat, dann läuft JAVA aus der Hand, das stimmt. Aber da muß man erstmal hinkommen und selbstlernend.... weiß nicht.
 
Man unterscheidet grundsätzlich zwischen kompilierten und interpretierten Programmiersprachen. Die Auswahl einer Sprache erfolgt anhand ihrer Eigenschaften und damit ihrer Eignung, ein bestimmtes Problem, das wiederum bestimmte technische Ansprüche stellt, zu lösen.

Im Bereich der kompilierten Sprachen kann ich nicht ganz so gut beurteilen, welche sich zum Einstieg eignet, bei den für das Web relevanten Skriptsprachen würde ich deutlichst davon abraten, mit JavaScript anzufangen, sondern lieber mit PHP.

Ich würde mir folgende Dinge in dieser Reihenfolge anschauen und lernen:

1) einfaches PHP (also kleine Skripte zur Lösung eines kleinen Problems oder schlicht zur Auslieferung von dynamisch erzeugten Webseiten in prozeduraler Programmierung zu schreiben, also nur mit den "Bordmitteln" der Sprache selbst zu arbeiten)
2) Objektorientierte Programmierung in PHP
3) Webframeworks (diese erst einmal anschauen und versuchen zu verstehen, wie sie aufgebaut sind und warum und letztlich versuchen, damit zu arbeiten)

Gute Seiten sind:

- https://www.w3schools.com/ (als Dokumentation / API der für das Web relevanten Sprachen)
- http://www.peterkropff.de/ (sehr unterhaltsam geschriebene und ausführliche Tutorials zu PHP, MySQL, HTML und CSS)
 
Ich würde mich auf jeden Fall am Anfang mit den Grundlagen der objektorientierten Programmierung beschäftigen, als Sprache ist Java gut dafür geeignet. Wenn man einmal mit objektorientierten Sprachen programmiert hat, dann will man prozedurale Sprachen wie z.B. C nicht mehr verwenden.
 
sthyen schrieb:
... (wenn ich die Begriffe Vererbung und Pointer nur höre, wird mir heute noch schlecht:rolleyes:). ...

Oje, hier bin ich hängen geblieben, aber das ist doch das Schönste!

Metal_Rex, gute Einsteigertipps hast du bekommen, und am effizientesten lernst du eine Programmiersprache, wenn du sie mit einem Projekt erlernst, das dich wirklich interessiert und das du dann am Ende einsetzen kannst.
Nur ein paar Codeschnipsel ohne großen Zusammenhang lernen bringt fast gar nichts.
 
Mir ging es nicht konkret um Spiele :)

Was ich mir aus Spaß an der Freude vorstellen könnte:
Einen Skilltree ähnlich wie Dungeon and Developers. Z.B. mit "Putzskills" oder anderen Sachen. Weiß garnicht ob da so viel programmiert wird als mit Photoshop gearbeitet wird.

Oder eine App/Webseite die mit Daten eines Wetterdienstes bemisst ob heute Motorradfahrtag ist oder nicht (gibt es auch irgendwo im Google Store)

Ein eigenes Haushaltsbuch. Ich denke, dass könnte sehr komplex werden, allerdings gibt es eben Dinge in Excel die man ohne Programm nicht hinbekommt. Irgendetwas stört immer an einem Fremden Programm.

Mich würde ebenso ein "Spiel" nur aus künstlicher Intelligenz interessieren. Im Sinne von Daten eingeben und schauen was passiert. Es gab mal ein nicht so bekanntes "Spiel" (war glaube eher für wissenschaftliche Zwecke) im Browser Namens NERO, in dem man einfach eine Anzahl von Einheiten hatte die gegeneinander kämpften und mit der Zeit selber gelernt haben, bessere Wege zu gehen etc. Das ganze muss ja nicht grafisch aufwendig sein oder könnte sogar Textbasiert werden wie damalige spiele.

Ich habe für einen kleinen Pferdesportverein eine Homepage gemacht. Evl. würde sich dann Javascript anbieten zu lernen?

So ein Paar kurz überlegte Dinge :) Am Computer selber finde ich vorallem Zufall (wie die Minecraft-Welt erstellt wird) und KI interessant.

Das schöne an Apps/Browser ist ja der, das man seine Sachen schnell zur schau stellen kann. HTML und CSS habe ich immerhin Ahnung - wer hatte nicht mal das Gefühl gehabt er bräuchte eine eigene Website :)
 
Zuletzt bearbeitet:
RalphS schrieb:
Plus, aber das ist nur meine Meinung: Für OO allgemein und JAVA im Speziellen braucht man Einstiegshilfe. Was ist ein Objektmodell? Wo ist der Unterschied zwischen statischem und dynamischem OM? Ein Eventmodell brauch ich auch, ebenso wie ein Exceptionmodell.

Sehe ich nicht so, ist auch meiner Erfahrung nach nicht so.
Probleme mit Objekt-Orientierung haben meiner Erfahrung nach nur Leute, für die das befremdlich ist, weil sie eben anders programmieren gelernt haben. Wer von 0 auf objektoriertes Programmieren einsteigt, hatte zumindest im meinem Umfeld fast nie Probleme damit. Das waren eher die einfacheren Teile. Da scheitert es eher daran, mal einen Algorithmus für ein simples Problem zu finden und dann Schleifchen etc. zu basteln, die das auch umsetzen. Bei mir damals konnten alle Modellchen basteln und objektorientierte "leere Hüllen" hübsch modellieren. Nur haben die halt nichts gemacht, weil es halt nicht ausreicht einer Funktion einen Namen zu geben, der ausdrückt, was sie vielleicht machen soll.

Dynamische und Statische Modelle? MMn überhaupt nicht zentral. Genauso wie Modelle allgemein. Damit wird später eine sinnvolle Nutzung der Objektorientierung geübt. Aber die Basics werden einfach so direkt gelernt. Statische Modelle kommen da zwar vor, aber die werden oft vorerst noch nicht einmal so benannt, weil eine Unterscheidung zwischen statischen und dynamischen Modellen wie gesagt überhaupt erst dann relevant wird, wenn man schon grundlegend weiß wie man programmiert, aber noch übt sinnvoll objektorientiert zu modellieren und danach zu programmieren. Wer einfach direkt Programmieren lernen will, wird über dynamische Modelle anfangs gar nicht stolpern und sich die Frage nach dem Unterschied gar nicht stellen.

Am Anfang kriegt man eine Klasse mit Main() und legt los. Und das funktioniert auch ganz gut. Dann lernt man, wie man eine richtige Klasse daraus macht und wie man eine weitere Klasse definiert und einbindet und schon sind die Basics fast drin.
Dann lernt (eher übt) man nur noch, wann man wofür am besten eine eigene Klasse macht, wie man durch Vererbung effizient komplexere Klassen-Varianten benutzt etc. etc.. Aber irgendetwas programmieren kann man zu diesem Zeitpunkt schon. Das mag nicht sauber modelliert sein, aber laufen wird es wohl.

Ich weiß nicht warum manche Leute OOP immer gleich mit 10000 Stunden UML gleichsetzen, als könnte man kein Stück Code produzieren ohne UML-Modellierung bis zum Erbrechen durchgekaut zu haben. Kommt aber komischerweise öfter vor. Bei nicht objektorientierten Sprachen wird ja auch nicht erst ewig modelliert. Liegt vielleicht daran, dass viele Unterrichtende das Modell zu sehr ins Zentrum rücken... Keine Ahnung.
 
Ieh UML :lol:

Da denken wir ganz offensichtlich verschieden. Klar kann man mit JAVA genau eine Klasse haben und alles damit machen, was man halt für sein Projekt braucht.

Aber dann macht man es falsch und hätte auch was anderes verwenden können.

--- Nicht daß es weiter relevant wäre. Wir sind uns auf jeden Fall einig, daß JAVA für den Einstieg keine schlechte Wahl ist. JAVA nimmt einem halt viel übel und das macht die Lernkurve eher steil und die Erfolgserlebnisse kommen entsprechend später, aber davon abgesehen...


Dennoch: Einfach drauflos ist nicht. Das ist es in keiner Programmiersprache. Hier unterscheiden sich eher die Coder von den Programmierern als die Sprachen untereinander.
 
RalphS schrieb:
...
Dennoch: Einfach drauflos ist nicht. Das ist es in keiner Programmiersprache. Hier unterscheiden sich eher die Coder von den Programmierern als die Sprachen untereinander.

Oh ja, ein wichtiger Hinweis für Anfänger, vor der Wahl der Sprache liegt die Theorie, "wie programmiert man überhaupt".

"Alles schon Zeile nach Zeile untereinander und alle Variablen wild manipulieren"? (???)
 
Vielleicht mag einer von euch noch was zu meinem Post 3 Beiträge über diesem hier sagen?
 
Wenn du Wert auf konzeptionelle Verschlüsselung legst, wähle Perl... ^^

Ne, was ich dir mitgeben kann, lern eine nach dem anderen, und zwar gründlich.

Aufgrund des beschiessenen Lehrplanes am dem sich unser Unterricht orientiert, habrn wir von allem etwas, aber nichts richtig. Etwas PHP, etwas JS, etwas Ruby, etwas Phyton, etwas TJython... aber nichts richtig. Anstelle von einem Jahr sich einer zu widmen, wird innerhalb von einer Woche Grundlagen reingepresst, und dann wieder fallen gelassen.
Nicht so machen!
 
Das A und O bei der Programmierung sind Analyse und Design. Das Programmieren selbst ist das gehobenes Handwerk. Ist das Design schlecht wirst Du es mit keiner Programmiersprache reparieren können.
 
Zurück
Oben