Frage von gigy122, 99

Mit welcher Programmiersprache soll ich anfangen und wie soll ich sie angehen?

Hey Leute! Ich bin 13 und interessiere mich sehr fürs Programmieren. Ich kenne mich sonst schon ziemlich gut mit dem Computer aus. Das, was mich im Moment am meisten beschäftigt, ist das Programmieren. Aber mit welcher Sprache ist es am einfachsten anzufangen? Python, VB, C, C#, C++, Java, HTML? Und was gibt es für Möglichkeiten, das Programmieren zu lernen? Ist es schwierig, wenn man eine Sprache beherrscht, zu einer anderen zu wechseln? Wie ist es mit der Kompatibilität der Programme, welche man programmiert? Windows, Mac, Linux? Auf YouTube habe ich bis jetzt leider keine besonders guten Tutorials gefunden. Vielen Dank für eure Antworten!

Antwort
von NoHumanBeing, 50

Aber mit welcher Sprache ist es am einfachsten anzufangen? Python, VB, C, C#, C++, Java, HTML?

HTML ist keine Programmiersprache, sondern eine Auszeichnungssprache.

In der Uni fängt man häufig mit Java an, aber ich finde auch Python sehr gut für den Einstieg. C-Sharp ist sehr ähnlich, wie Java, etwas "moderner", dafür weniger portabel. (Mono ist nicht vollständig kompatibel zu .NET. Abweichungen gibt es leider auch in vielen Punkten, die recht "grundlegend" sind.)

Ist es schwierig, wenn man eine Sprache beherrscht, zu einer anderen zu wechseln?

Das kommt darauf an. Wenn Du wirklich programmieren kannst (bis Du das wirklich kannst, werden Jahre vergehen ;-) - was Dich nicht demotivieren soll, wollte es nur gesagt haben ;-) ), fällt es leicht, neue Sprachen zu lernen, insbesondere dann, wenn die Sprachen das selbe Paradigma aufweisen.

Die meisten modernen Sprachen sind objektorientiert. Wenn Du eine beherrscht, wird es Dir leicht fallen, auf andere objektorientierte Sprachen zu wechseln. So habe ich beispielsweise C++ in zwei Wochen erlernt, nachdem ich bereits Java, C-Sharp, Python (und ein paar weitere Sprachen) beherrschte, aber plötzlich C++ für meine Abschlussarbeit brauchte. Ein "Paradigmenwechsel", etwa von einer objektorientierten zu einer funktionalen (nicht zu verwechseln mit prozeduralen oder auch imperativen) Sprache (oder umgekehrt), dürfte Dir hingegen sehr schwer fallen und kommt schon fast einem kompletten "Neuanfang" gleich.

Wie ist es mit der Kompatibilität der Programme, welche man programmiert? Windows, Mac, Linux?

Das kommt darauf an. Höhere Programmiersprachen, wie Java oder Python abstrahieren tendenziell stärker von der unterliegenden Architektur (Hardware, Betriebssystem), als systemnahe Sprachen (z. B. C oder gar Assembler ;-) ).

In C oder C++ programmierst Du recht häufig direkt "gegen" die Betriebssystem-API (z. B. Socket-API, Grafik-API, Sound-API, ...). Diese Programme sind dann nicht über Systemgrenzen portabel. Du musst sie für ein anderes Betriebssystem neu schreiben. Teilweise gibt es Bibliotheken, die die Betriebssystem-API abstrahieren und so Portabilität ermöglichen. Bei Sound z. B. gibt es eine Bibliothek namens PortAudio, gegen das Du programmieren kannst. Diese Bibliothek ruft dann ihrerseits eine Betriebssystem-API, z. B. DirectSound oder ASIO unter Windows, ALSA oder JACK unter Linux, CoreAudio unter OSX auf und "verbirgt" so die darunterliegende System-API.

(Dies soll keine Werbung für PortAudio sein. Ich "kämpfe" zur Zeit mit einem Gerät, das unter Linux von ALSA erkannt wird, mit dem PortAudio aber um's Verr*cken nicht arbeiten möchte. PortAudio enthält unglaublich viele "asserts" darüber, wie sich ein Audio-Gerät gefälligst verhalten soll und geringste Abweichungen (z. B. ein falscher Rückgabewert oder abweichendes Timing von Interrupts) führen dazu, dass die Bibliothek sofort "aufgibt", anstatt zumindest zu "versuchen", mit dem System zu arbeiten. Grauenhaft!)

In Python oder Java programmierst Du häufig gegen eine abstrakte Klassenbibliothek, die mit der Sprache mitgeliefert wird. Der Python-Interpreter oder die JVM (Java Virtual Machine) ist dann seinerseits/ihrerseits für jedes System nativ implementiert und ruft die entsprechenden Betriebssystem-APIs auf. Dadurch musst Du Deinen Programmcode häufig nicht verändern, wenn Du das Programm unter einem anderen Betriebssystem oder auf einem anderen Prozessor ausführst, weil die Laufzeitumgebung dieser Sprachen bestrebt sind, die Details des darunterliegenden Systems vor Deiner Software zu "verbergen" und Dir eine "homogene Umgebung" zu präsentieren, für die Du Deine Software programmieren kannst. Dafür gibst Du natürlich auch etwas an Kontrolle ab und kannst bestimmte (vor allem hardwarenahe) Dinge nicht mehr tun (was aber auch vor allem am Anfang nicht so wichtig ist).

Antwort
von Machtnix53, 36

Es kommt ganz auf dich an, was du mit dem Programmieren erreichen willst und wieviel Geduld du hast.

Die Sprachen unterscheiden sich im Wesentlichen im Abstraktionsgrad, darin
wie stark der tatsächliche Ablauf im Computer verborgen bleibt.

High-Level-Sprachen (zB Java oder C#) sind wie LEGO-Baukästen, du bekommst eine Menge  Bausteine, die du dann zu einem Programm zusammensetzen kannst. Fehlerträchtige Programmiertechniken wie Pointer werden nicht zugelassen. Das ergibt schnelle, aber flache Erfolge. Denn
die eigentliche Arbeit haben die gemacht, die die Bausteine entworfen haben.

Das Gefühl, ein LEGO-Haus gebaut zu haben, ist nicht zu vergleichen mit der
tiefen Befriedigung, eine reale Hütte gebaut zu haben und dabei alles
verstanden zu haben, was dafür wichtig ist. 

Die unterste Low-Level-Sprache ist Assembler. Damit kannst du jeden einzelnen Schritt des Prozessors bestimmen, was natürlich vorraussetzt, dass du etwas über den Prozessor weißt.

C ist auf der ersten Abstraktionsebene über Assembler. Die Besonderheiten des Prozessors muss man nicht kennen, aber wenn man sie kennt, kann man dank der Transparenz und Durchgängigkeit  von C fast so effizient programmieren wie direkt in Assembler. Deshalb wird bei der Entwicklung von
Betriebssystemen wie Linux immer noch in C programmiert. Auch die
Bausteine der High-Level Sprachen sind zum großen Teil in C geschrieben.

C++ ist eine objektorientierte Erweiterung von C. Die Erweiterungen sind
ähnlich wie bei anderen High-Level-Sprachen nicht mehr transparent. Da
pures C aber eine Untermenge von C++ ist, kann man jeweils wählen, ob
man die Vorteile von purem C oder die der Erweiterungen nutzen will. So
kann man eigene Klassen mit der Effizienz von purem C schreiben, die fertigen Objekte aber komfortabel wie andere Bausteine zusammensetzen.

Kommentar von NoHumanBeing ,

High-Level-Sprachen (zB Java oder C#) sind wie LEGO-Baukästen, du bekommst eine Menge  Bausteine, die du dann zu einem Programm zusammensetzen kannst.

... aber nicht musst.

Ich habe für eines meiner Projekte auch mal einen XML-Parser entwickelt, inklusive Scanner, Parser und der dafür benötigten Automaten, anstatt einfach den "Baustein" namens System.Xml zu verwenden.

Warum? Zum einen, weil ich für einen bestimmten Zweck ein bestimmtes, wohldefiniertes Verhalten des Parsers brauchte und ich mich nicht darauf verlassen konnte und wollte, dass die Implementierung von Microsoft dieses Verhalten immer (auch in künftigen Versionen) zuverlässig zeigen würde. Zum anderen, weil System.Xml um Größenordnungen langsamer war, als mein selbst geschriebener Parser. ;-)

Also nein, Du musst die "Baukästen" nicht verwenden. Das einzige, was Dir die Sprache tatsächlich "aufzwingt", ist die automatische Speicherbereinigung (garbage collection). Das ist für manche Anwendungen auch sehr störend bis untragbar. Ich wollte nur anmerken, dass niemand Dich dazu zwingt, die .NET-Klassen zu verwenden. Du kannst natürlich auch einfach nur primitive Datentypen verwenden und Dir Deine benötigten Funktionen mit ein paar Schleifen und Verzweigungen selbst zusammenstricken. Nur weil eine Sprache eine umfangreiche Klassenbibliothek anbietet, heißt das noch lange nicht, dass man diese Bibliothek auch verwenden muss. ;-)

Natürlich ist es ein "anti-pattern", Funktionalität nachzubilden, die durch die Klassenbibliothek bereits geliefert wird. Aber es ging mir darum, dass das schiere Vorhandensein dieser Klassen (selbst wenn sie "Schrott" sein sollten) ja noch kein Nachteil ist. Du kannst schließlich den größten Teil der Klassenbibliothek links liegen lassen und Dir die Funktionalität selbst zusammenstricken. Und in manchen Fällen (z. B. wenn etwas wirklich performancekritisch ist oder wenn Du Dich auf wohldefiniertes Verhalten verlassen können musst) kann es auch aus architektonischer Sicht vollkommen gerechtfertigt sein, das auch tatsächlich zu tun.

Kommentar von Machtnix53 ,

"aber nicht musst."

Ja, aber um effektive eigene Klassen und Funktionen zu schreiben, muss man auch  zum Low-Level hinabsteigen und sich da ein bisschen auskennen. Ich wende mich nicht gegen High-Level-Programmierung, sondern nur gegen die Vorstellung, dass Low-Level Sprachen jetzt überflüssig oder veraltet wären.

Ich benutze auch gerne selbstgeschriebene Funktionen oder Klassen, weil ich dann genau weiß, was ich hab. Oft finde ich es auch ermüdender, genau herauszufinden, was es für fertige Bausteine gibt und ob und wie sie für meine Zwecke geeignet sind, als sie selbst zu schreiben.

Außerdem mag ich es nicht, an ein bestimmtes Produkt gebunden zu sein. Ich habe einige GUI-Programme mit Borlands C++ geschrieben, das schon lange nicht mehr unterstützt wird. Aber sie für eine neuere Entwicklungsumgebung umzuschreiben ist ein enormer Aufwand, so dass ich sie fast neu schreiben müsste.

Dagegen habe ich ein paar Systemprogramme in C, die sich ohne Änderungen völlig problemlos auf einem anderem Prozessor (Raspberry) compilieren ließen.
 

Antwort
von Franz1957, 35

Laß Dich von der immer gern gegebenen Auskunft, daß HTML "keine Programmiersprache" sei, nicht irritieren. HTML zu können gehört heute zum Grundlagenwissen jedes Programmierers, denn HTML ist eine der wichtigsten Sprachen zur Strukturierung von Output, der von Nichtmaschinen gelesen werden soll.

Hier der entsprechende Rat eines ausgewiesenen Fachmanns:

F: Welche Programmiersprache soll ich als erste lernen?


A: HTML, wenn du es immer noch nicht weißt. Es gibt Unmengen schlechter HTML-Bücher da draußen und besorgniserregend wenig gute. Ich empfehle: HTML: The Definitive Guide.

Wenn du bereit bist, mit echter Programmierung zu beginnen,würde ich Perl oder Python empfehlen. C ist sehr wichtig, ist aber auch sehr viel schwerer.


Quelle: Eric S. Raymond, "How to become a Hacker"
http://koeln.ccc.de/prozesse/writing/artikel/hacker-howto-esr.xml

Zum Einstieg ins Programmieren lernen ist HTML deshalb so gut geeignet, weil es, genau wie alle "richtigen" Programmiersprachen, eine formale Sprache ist, für die es eine Grammatik gibt, an die man sich ziemlich genau halten muß, wenn die Maschine das gewünschte Ergebnis herausgeben soll. Du lernst dabei den Umgang mit Dateisystem und Editor, Du lernst, die Regeln nachzuschauen, sie richtig auf Dein Vorhaben zu übertragen und genau zu arbeiten. Das Gleiche gilt auch für CSS, eine weitere Sprache, die als Ergänzung zu HTML sehr wichtig ist.

Wer damit schon ein bißchen Übung hat, für den ist der Einstig in JavaScript, Java, Pascal, Perl, Python, PHP, C, ... (ganz lange Liste) ... schon deutlich einfacher. 

Und Du wirst als Programmierer auch weiter mit formalen Sprachen wie z.B. wie XML oder JSON zu tun haben, die "keine Programmiersprachen", aber zur Datenstrukturierung in der Kommunikation zwischen Maschinen unentbehrlich sind.



Kommentar von Franz1957 ,

Falls Du Lust hast, mehreren Programmiersprachen im Vergleich zuzuschauen, wie sie auf die gleiche Aufgabe angesetzt werden, dann ist rosettacode.org eine Fundgrube. Du siehst dann auch ohne in alle Einzelheiten eingeweiht zu sein, daß es mit einigen Sprachen kurz und bündig, und mit anderen Sprachen umständlicher geht. Und vielleicht auch, daß Du manche Sprachen verständlicher oder hübscher findest als andere.

Hier z.B. wird gezeigt, wie man jede Programmiersprache "Hallo" sagen läßt:

http://rosettacode.org/wiki/Hello_world/Text

Die Liste aller dargestellten Programmieraufgaben findest Du im Menü unter "Explore" > "Tasks".

Antwort
von aringa12345, 51

VB ist sehr einfach, kann ich nur empfehlen. Hab damals auch damit angefangen. Ansolsten evtl. C# das ist auch "relativ" einfach ;)

HTML ist keine "richtige" Programmiersprache sondern eher eine Struktursprache. Ist auch gut für den Einstieg da bist du aber auf Websites beschränkt.

Kommt also drauf an was du progrmmieren willst :)

Viele Sprachen sind sehr ähnlich (C# und Java z.B.) andere weniger.

Am besten fängst du erstmal mit einer an und arbeitest dich hoch.

Viel Glück ;)

Antwort
von Vanelle, 38
Das, was mich im Moment am meisten beschäftigt, ist das Programmieren. Aber mit welcher Sprache ist es am einfachsten anzufangen?

Falscher Ansatz. Bevor man sich Gedanken über die Programmiersprache macht, muss man programmieren lernen!

Es ist gar nicht so einfach, eine Aufgabe so in ihre Bestandteile zu zerlegen, dass sich daraus eine Befehlsfolge entwickeln lässt (Programm), die auch zur Lösung führt.

Das lernt man mit Papier, Bleistift und Hirnschmalz :-)

Es macht wahrscheinlich sehr viel mehr Spaß und die Motivation wird auch gefördert, wenn man seine Gedanken zum "Laufen" bringen kann.

Daher sollte die erste Programmiersprache möglichst einfach und "eingängig" sein, damit man sich auf das wesentliche (Erstellung eines Programms) konzentrieren kann. Wir haben mit der Jugendgruppe gute Erfahrungen mit Python gemacht.

"Filmchen" helfen wenig, eher schon die VHS oder ein Computerclub im Umfeld.

Antwort
von Zuck3r, 50

Java ist eine relativ dankbare Programmiersprache um sie als erstes zu lernen.
Python ist auch relativ nett, wird aber eher selten verwendet.

Du kannst dir mal die blocklygames anschauen. Da lernt man das Ganze ein wenig spielerisch.

Kommentar von NoHumanBeing ,

Python ist auch relativ nett, wird aber eher selten verwendet.

Python wird sowohl "zum Einstieg", als auch im professionellen Einsatz durchaus öfter mal verwendet.

Kommt eben auf den Einsatz an. Viele neuere/modernere Tools im unixoiden Umfeld sind in Python entwickelt.

Kommentar von Zuck3r ,

Ist mir eher selten unter gekommen bis jetzt. Das einzige das ich kenne, wo Python verwendet wird, ist nagios bzw die plugins dazu.

Antwort
von Peterwefer, 48

Von einer Sprache zur anderen wechseln ist durchaus möglich. Ja, welche Programmiersprache? Das kommt darauf an, um welche Probleme es geht. Ich jedenfalls liebe das gute alte Pascal (hier als free Pascal verfügbar):

http://www.freepascal.org/

Antwort
von Starstalker, 45

Kommt auf deine Interessen drauf an: 

Einen guten allgemeinen Einstieg ins Programmieren bietet Java. 

Hardwarenahe programmierung lernst du am Besten mit einer C Variante. 

HTML ist keine Programmiersprache sondern eine Seitenbeschreibungsprache. Wen du Richtung Webdesign gehen willst, dann PHP und HTML5

Für die verscheieden Sprachen gibts auf Youtube gute Einsteigertutorials.

Antwort
von KnorxyThieus, 33

Hallo,

Erstmal meinen Glückwunsch zu deiner Entscheidung zu programmieren! :-)

Also ich würde mich bei der Wahl der Sprache - ich programmiere jetzt seit 5 Jahren - auf verschiedene Faktoren konzentrieren: Zu Anfang auf die Einfachheit und Einsteigergerechtigkeit, weiterhin auf die spätere Relevanz, wenn dir auch nur irgendwie eine informationstechnische Karriere vorschwebt, sowie darauf, dass sie Spaß macht.
C selber scheidet m. E. schon aus, weil das nur ein heute kaum noch genutzter Vorgänger C++s ist.

Jetzt mal direkt zu deinen Fragen:

Mit HTML - das ist übrigens keine Programmiersprache, sondern wird zur Darstellung von Webseiten genutzt - kann man betriebssystemunabhängig arbeiten; um erstmal ein grobes Verständnis für Syntax und Semantik zu entwickeln, wäre das als Einstieg gar nicht mal so schlecht. Insofern du daran interessiert bist. Java läuft, soweit ich weiß - da bin ich aber kein Experte! - auch auf Windows und Linux, VB nur für Windows, C# und C++ kann man im Prinzip für beide nennen.
Ist es schwierig, von einer Sprache zur anderen zu wechseln? Zu Anfang schwieriger, später leichter - aber du wirst definitiv nicht mit einer Sprache dauerhaft durchkommen. Verschiedene Umstände erfordern verschiedene Sprachen.
Wie kann man das Programmierenlernen angehen? Es gibt verschiedene Weisen: Setze dich mit jemandem zusammen, der es dir erklärt, lies ein oder mehrere Bücher/Onlinetutorials oder schau dir Videotutorials an. Es kommt ganz darauf an, was für ein Lerntyp du bist: Mir hat das Buch am meisten geholfen. Tutorials sind rar und noch rarer gut, Videotutorials waren mir meistens zu langsam und der kommunikative Typ bin ich überhaupt nicht.
Grundsätzlich ist das nur für den ersten Einstieg wichtig. Danach - so erging es zumindest mir - hat man konkrete Fragen, wie eine bestimmte Sache funktioniert, und löst diese in der Regel durch ausgiebiges Googeln, das dich zu verschiedenen Foren und Dokumentationsstellen führt, auf denen die beantwortet werden.

Ich hoffe, ich konnte dir etwas, helfen, frag auch gerne noch mal nach ... :-)

Kommentar von Machtnix53 ,


C selber scheidet m. E. schon aus, weil das nur ein heute kaum noch genutzter Vorgänger C++s ist.

Da irrst du dich. C ist nicht nur ein Vorgänger, sondern ein wichtiger Bestandteil von C++. Mit C++ Compilern kann man auch in purem C programmieren, und das ist immer noch von Bedeutung, wenn es um Effizienz geht.

ZB ist die Stringverarbeitung mit char* und Endnull immer noch um etwa das 10fache schneller als mit den String-Objekten. Aus solchen Gründen sind Betriebssysteme wie Linux immer noch in C ohne ++ Erweiterungen programmiert.

Kommentar von KnorxyThieus ,

Okay, okay ... ich meinte halt, dass man anstatt von C ja gleich das ganze C++ lernen kann, sich halt ein C++-Buch kauft, in dem überholte Techniken gar nicht mehr gelehrt werden und alles zusammengefasst dargestellt wird.

Kommentar von NoHumanBeing ,

C ist nicht "überholt". Viele System-APIs benutzen "C-Semantik". Alles, was irgendwie "embedded" ist, programmiert man in C.

C++ ist außerdem eine total "überfrachtete" Sprache. Wenn Dir C zu "systemnah" für einen bestimmten Zweck ist, nimm eine "richtige Hochsprache", wie Java oder Python. Wenn Dir die zu abstrakt oder zu langsam sind, nimm C.

C++ "braucht" man wirklich selten. Die allermeisten Leute, die diese Sprache verwenden, wären vermutlich besser damit bedient, verschiedene Teile des Programms in unterschiedlichen Sprachen zu entwickeln. C++ ist einfach ein Moloch!

Kommentar von KnorxyThieus ,

Wenn du etwas in C/C++ vorhast zu schreiben, verwendest du dann wirklich ein C-Projekt und kein C++-Projekt? Nur, weil man C++ programmiert, heißt das ja nicht, dass man zwingend objektorientiert programmieren und alle Neuerungen ausnutzen muss. Aber manche Features sind doch ganz praktisch!

Kommentar von NoHumanBeing ,

Nunja, ich würde sagen es kommt drauf an.

Nein, zugegeben, ich verwende auch ab und an einen C++ Compiler für "C Code".

Wobei es ja durchaus einige semantische Unterschiede zwischen C und C++ gibt, über die man "stolpern" kann.

Ein Beispiel: Leere Parameterliste in C muss offiziell als "(void)" geschrieben werden, in C++ als "()".

Es gibt zahlreiche weitere Beispiele. Insbesondere wenn man für den Embedded-Bereich entwickelt, kann es auch wichtig sein, in ANSI C zu entwickeln und nicht in C++.

Antwort
von TheGam3r792, 42

Ich würde dir Java empfehlen, da diese am häufigsten und leichtestem ist.

Kommentar von BernerKruemel ,

mit java hab ich auch angefangen probier zum beispiel mal das programm KarelJ aus das hab ich in der schule benutzt

Keine passende Antwort gefunden?

Fragen Sie die Community