Welche Programmiersprache lernen (was ist die mächtigste)?

17 Antworten

Die beste Programmiersprache für Anfänger?

Die "beste" Programmiersprache

Die Frage nach der besten Programmiersprache (ob für Anfänger oder generell) lässt sich nicht beantworten. Jede hat ihre Vor- und Nachteile, was es unmöglich macht, die "beste" zu bestimmen.

Sprachen für bestimmte Einsatzgebiete

Die erste Entscheidung, die Programmier-Anfänger treffen müssen, ist, mit welcher Programmiersprache sie anfangen sollen. Die Wahl der Sprache hängt von dem ab, was man damit vor hat. Wer programmieren lernen will, hat in der Regel ein konkretes Ziel vor Augen. Eine eierlegende Wollmilchsau gibt es nicht wirklich, Programmiersprachen sind für einzelne Aufgabenbereiche gut:

  • Für Web Development (Websites schreiben) im Frontend (das, was der Nutzer sieht) ist die Skriptsprache JavaScript naheliegend, da sie von den meisten Browsern nativ unterstützt wird und sehr weit verbreitet ist. Auf GitHub ist sie die meistgenutzte Sprache ( http://githut.info/ ). Hier sollten aber Vorkenntnisse in HTML & CSS vorhanden sein.
  • Serverseitig, also im Backend (das, was der Nutzer nicht direkt sieht), sind PHP, JavaScript (mit Nodejs), Python, Java und Ruby vorne mit dabei.
  • Für Desktop Apps bieten sich z. B. Java, Python, C-Sprachen (C, C++, C#), aber auch die oben genannten Web-Technologien an.
  • Bei der Entwicklung von Mobile Apps sind Java/Kotlin (Android), Swift, Objective-C (beide iOS) und auch wieder die oben genannten oft genutzte Sprachen.
  • (diese Liste lässt sich noch weiter fortführen)

Wenn es dir nur um das Programmieren an sich (ohne konkretes Ziel) geht, dann bringe ich dir hier mal meine Meinung näher. Grundsätzlich ist es so, dass es leichter ist neue Sprachen zu lernen, je mehr man schon kann. So lassen sich Erfahrungen und Fähigkeiten aus verschiedenen Einsatzgebieten und Sprachen auch auf andere übertragen.

General Purpose

Die erste Programmiersprache sollte meiner Meinung eine Sprache sein, die für Vieles verwendet werden kann, da man sich so einen großen Überblick über die Einsatzgebiete verschaffen kann. Eine Sprache wie PHP, die sich fast nur auf das Erzeugen von HTML-Code fokusiert, ist daher eher ungeeignet.

Imperativ vs. deklarativ

Außerdem sollte sie imperativ sein. In imperativen Sprachen schreibst du konkrete Anweisungen, die nacheinander ausgeführt werden sollen. Das gibt dir ein besseres Verständnis über Algorithmik.

Beispiel: Ausgabe der Quadrate ungerader Zahlen von 3 bis 11

Imperativ in C:

for (int i = 3; i < 12; i += 2) {
printf("%d\n", i * i);
}

Deklarativ in Haskell:

mapM_ print [ i^2 | i <- [3,5..11] ]

Popularität

Warum sollte sie populär sein? Weil man dann - gerade als Anfänger - einfacher Hilfe bekommt. Je größer und bekannter eine Sprache ist, desto mehr Material findet man auch bei Recherchen und desto schneller und öfter bekommt man in Foren Antworten. Und diese Hilfestellungen sind für Anfänger Gold wert.

Meine Meinung: Python

https://www.python.org/

Ich halte Python für die am besten geeignete Programmiersprache für Anfänger:

  • Sie erfüllt meine drei Kriterien.
  • Der Interpreter (das Programm, das du zum Ausführen brauchst) ist für alle gängigen Betriebssystem frei erhältlich: https://www.python.org/downloads/
  • Die Hürden bis zum ersten Programm sind minimal: Nachdem der Interpreter heruntergeladen ist, kann direkt eine Textdatei mit Python-Code praktisch aufwandslos ausgeführt werden.
  • In die IDLE kann man Anweisungen eintippen und bekommt sofort Rückmeldung.
  • Python vereinfacht sehr viel (z. B. dynamische Typisierung), sodass der Anfänger nicht gleich mit allen möglichen Konzepten erschlagen wird.
  • Es werden mehrere Paradigmen benutzt (u. a. funktionale Programmierung).
  • Die auf Einrückung basierende Syntax erspart verwirrende Klammern.
  • Der Quellcode ist auch für Nicht-Programmierer leicht verständlich
  • Mit pip lassen sich Pakete aus einem riesigen Repertoire installieren, die dir alle möglichen Funktionen bieten.

Java

https://en.wikipedia.org/wiki/Java_(programming_language)

Java ist wohl die Sprache, die den meisten Anfängern empfohlen wird. Diese Empfehlungen kommen oft von Programmieren, die selbst noch Anfänger sind und damit nur ein sehr eingeschränktes Sichtfeld haben (das ist nicht abwertend gegenüber Anfängern gemeint). Von Java rate ich dir jedenfalls ausdrücklich ab!

Es handelt sich dabei zwar um eine relativ leichte Sprache, dafür ist sie aber sehr komplex und hat viel Boilerplate Code.

Beispiel: Ausgabe von "Hello World"

In Python:

print("Hello World")

In Java:

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}

Oft wird als Argument pro Java angeführt, man würde damit die objektorientiete Programmierung lernen. Fakt ist, dass Java nicht vollständig das Paradigma der OOP erfüllt. So gibt es z. B. primitive Datentypen und die Kommunikation über Messaging funktioniert nicht so, wie sie es soll. Java ist defintiv keine pure objektorientierte Sprache. Wenn es dir wirklich darum gehen sollte, OOP zu lernen, dann lerne Smalltalk, aber nicht Java!

Des Weiteren braucht man für Java, wenn man damit richtig programmieren will, eine IDE und diese sind meistens so überladen, das Anfänger davon erschlagen werden.

Es gibt noch sehr viele weitere Gründe, die gegen Java (als Einsteigersprache) sprechen, die möchte ich hier gar nicht aufzählen.

JavaScript

https://en.wikipedia.org/wiki/JavaScript

Um Missverständnissen vorzubeugen: JavaScript hat (fast) nichts mit Java zu tun.

Diese Sprache ist sehr vielfältig. Man kann sie zur Entwicklung von Desktop Apps, Mobile Apps, Serveranwendungen und dynamischen Websites (das ursprünglichen Einsatzgebiet) nutzen.

Ich persönlich programmiere sehr gerne und häufig mit JavaScript , allerdings hat die Sprache sehr viele Designfehler, eher unleserlichen Code und ist schwer zu debuggen. Das kann erst recht für Anfänger sehr abschreckend sein.

Etoys / Scratch

https://en.wikipedia.org/wiki/Etoys_(programming_language)

https://en.wikipedia.org/wiki/Scratch_(programming_language)

Etoys und die Billigkopie Scratch sind Sprachen, deren Code visuell (nicht mit Text) geschrieben wird. Sie sind beide dafür gedacht, Kindern das Programmieren näher zu bringen. Für mehr sind sie aber auch nicht nutzbar.

C / C++

https://en.wikipedia.org/wiki/C_(programming_language)

https://en.wikipedia.org/wiki/C%2B%2B

C und C++ sind sehr hadwarenahe Sprachen und deshalb sehr schwierig. Daher sind auch sie für Anfänger ungeeignet.

Wie lerne ich am besten eine Sprache?

Es gibt verschiedene Möglichkeiten, Sprachen zu lernen:

  • Die offizielle Dokumenation der jeweiligen Sprache ist meist die vollständigste und fehlerfreiste Anlaufstelle. Allerdings findet man sich als Anfänger dort eher weniger zurecht, da es keine roten Faden gibt.
  • Ich bin ein Fan von Fachliteratur. Bücher sind oft gut durchdacht und detailliert. Auch das sprachliche und fachliche Niveau sind im Vergleich zu z. B. Videos deutlich höher. Ich würde dir in jedem Fall englische Literatur empfehlen. Abschreckend ist hier leider oft der Preis.
  • Tutorials auf YouTube sind kostenfrei, leicht zugänglich und leider sehr oft Müll. Gute Videos zu bestimmten Themen sucht man meist lange. Außerden ist das Überfliegen bei langen Videos praktisch nicht möglich, ein großer Nachteil gegenüber der Literatur. Ich möchte aber nicht Videos generell schlecht reden, es gibt definitiv auch gute.
  • Bezahlte Video-Kurse bilden ein Hybrid aus gut durchdachter Literatur und ... Videos.
  • Interaktive Lernprogramme, wie z. B. SoloLearn. Ich halte nicht wirklich viel davon, nach meiner Erfahrung lässt die Qualität sehr zu wünschen übrig.

Wichtig ist immer, dass du selbst programmierst (Learning by doing) und nicht einfach nur abtippst. Im Internet oder in den Fachbüchern gibt es viele Programmieraufgaben, die auch versuchen solltest zu lösen. Ansonsten kommst du nicht voran. Diese Gefahr besteht vor allem bei Youtube-Videos.

Ich kann dir diese Youtube-Playlist empfehlen, in der grundsätzliche Konzepte des Programmierens erklärt werden ohne eine bestimmte Sprache zu benutzen. Das Risiko, dazu verleitet zu werden, nur abzutippen, ist damit gleich null. Nichtsdestotrotz würde ich dir raten, gleichzeitg eine Programmiersprache zu lernen, in der du diese Konzepte dann umsetzt.

https://youtube.com/watch?v=nVMlDghNcHg

Respekt für so eine gute, fachliche Antwort! Das ist die kompetenteste Antwort, die ich bisher auf dieser Plattform gelesen habe.

9

Das ist mit Abstand die beste, fachlichste Antwort, die ich je gelesen haben. Merci!!!

4

Gute Antwort!

1

Am mächtigsten ist C. C hat sich als Standard etabliert und jede Maschine und andere Programmiersprache liefert eine C-Schnittstelle.

Ohne professionelle Werkzeuge wie DE von TaSSAu, die Speicherzugriffsfehler exakt anzeigen ist es jedoch für Anfänger kaum möglich C-Programme zum Laufen zu bekommen. Eclipse für Java ist kostenlos und desshalb wird Anfängern häufig Java empfohlen, wobei Java aufgrund seines Umfangs und Überladenheit langfristig nicht die Produktivität von C zu bieten hat. Sun hatte sich überigens mit Java übernommen und ist insolvent gegangen! (Professionelle Werkzeuge kann es einfach nicht kostenlos geben)

Webseiten besitzen grafische Oberflächen, die mit Designprogrammen erstellt werden und Hintergrundprogramme, die selbstverständlich auch in C erstellt werden können. Bei Webseiten ist es ziemlich egal. Die Oberflächen von Webseiten können inzwischen identisch zu PC-Anwendungen programmiert werden, sind sogar schneller als Herkömmliche Webseiten, aber mit dem schwerwiegenden Nachteil, dass Suchmaschinen die Seite nicht durchsuchen können.

Die von Dir gesuchte "eierlegende Wollmilchsau der Programmiersprachen" gibt es leider nicht. In der Tat ist es so, dass man mit verschiedenen sprachen verschiedene Dinge besser oder schlechter umsetzten kann. Also kann man sagen, es gibt Sprachen, die besser geeignet sind für Grafikanwendungen und welche für Steuerungen...

Eine recht einfache und weit verbreitete Programmiersprache ist natürlich der Klassiker BASIC. Diese gibt es in so vielen Dialekten und ist auch relativ leicht im Selbststudium zu erlernen. Allerdings ist das dann besten Falls ein Einstieg um mal ein paar grundlegende Dinge beim Programmieren zu verstehen... Im wie weit BASIC heute außerhalb des Lernsektors noch ein wesentliche Rolle spielt kann ich nicht sagen.

Aktuell ist sicherlich C++ in den verschiedensten Abarten und Dialekten. Hiermit lassen sich Programme für den PC aber auch für einfache Mikrokontroller schreiben. Natürlich musst Du immer den passenden Compiler bzw. die Entwicklungsumgebung für die Zielplattform haben...

Speziell im Bereich des Internets spielen solche Dinge wie HTML, Flash, PHP und Java eine Rolle. Allerdings sind dass eben schon alles Sparchen, die sehr auf die Bedürfnisse im Web zugeschnitten sind - sprich die Darstellung und Funktionen auf Internetseiten betreffen.

Also als erstes würde ich die raten, mal zu überlegen wo Du genau hin willst und was Du vorhast. Wenn es um Web-Seiten geht, solltest Du vielleicht mit einem entsprechenden Editor anfangen und Dich so in die Materie einarbeiten. Anwendungen für Windows oder auch Android sind dann sicher mehr im Bereich der Hochsprachen wie z.B. C++ angesiedelt. Aber auch hierfür gibt es Entwicklungspakete, mit denen man sicherlich einen guten Einstieg findet.

Ich hoffe Dir mit dieser Antwort schon mal einen Hinweis gegeben zu haben, wohin der weg führen kann. Deine Frage ist aber so allgemein gehalten, dass sie eben nicht einfach und knapp zu beantworten wäre.

Welche Sprache Du lernen solltest/möchtest hängt im wesentlichen davon ab, was Du programmieren möchtest.

Mit Java gestaltet sich systemnahe Programmierung schwierig, dafür ist es dank VM platformunabhängig und dabei noch relativ performant.

Skriptingsprachen wie Javascript, PHP usw. sind in der Regel sehr einfach, meist weniger performant und besitzen einfache Ausdrucksformen. Aber systemnahe Programmierung ist auch damit nicht wirklich machbar.

C bzw. C++ sind gute Allrounder, man kann mit ihnen Systemprogrammierung machen, die Mächtigkeit ist hoch, aber komplexe Ausdrucksformen fehlen und manche Dinge sind sehr zeitaufwändig in der Umsetzung.

Letztlich wird es darauf ankommen, was Deine Ziele sind, aber wenn es wirklich ums Web geht, wirst Du um Javascript wohl nicht herumkommen.

Was ist das mächtigste Werkzeug? Der Hammer? Wenn man einen Nagel in die Wand hauen will vielleicht, zum Schneiden von Glas würde ich ihn aber nicht nutzen, ebenso wenig um eine Zahnwurzelbehandlung durchzuführen.

Man nimmt die Sprache, die für die Aufgabe angebracht ist. Das werden im Fall von Webseiten meist Auszeichnungssprachen und Skriptsprachen sein wie HTML, CSS, PHP und JavaScript, wobei es hier auch andere Möglichkeiten gibt, bei Desktop Programmen eher Sachen wie C# oder Java. Mobile je nach Plattform Java oder Objective C oder gar HTML5 Apps.

Womit du anfängst würde ich fast davon abhängig machen wo du ansprechendes Lernmaterial findest. Menschen sind verschieden, der eine kommt gut mit einem Buch klar, der nächste mit Videotutorials von Youtube oder interaktiven Lösungen wie CodeAcademy, FreeCodeCamp oder SoloLearn.

Im groben findest du aber wahrscheinlich am meisten Informationen zu Java im Desktopbereich und PHP/JavaScript im Webbereich, wobei gerade JavaScript aufgrund der vielen Standards, Libraries und Frameworks sehr verwirrend sein kann, dafür ist es aber ohne zusätzliche Tools innerhalb jedes Browsers nutzbar.

Der Hammer? Wenn man einen Nagel in die Wand hauen will vielleicht, zum Schneiden von Glas würde ich ihn aber nicht nutzen, ...

Echte Männer schneiden Glas zur Not auch mit einem Hammer! Nur werden die Schnitte dabei vielleicht etwas zu zahlreich und nicht ganz so genau. ;)

1

Der Vergleich hinkt, wenn eine Sprache nicht für alles zu gebrauchen ist, dann ist es keine Sprache!

0
@Speitelsbach

Dann ist nach deiner Definition keine Sprache eine Sprache. Denn entweder kann sie einige Sachen nicht oder ist schlicht wesentlich zu aufwendig für den Anwendungsfall.

Ist PHP eine Sprache? Über 80% der Websites bauen darauf auf. Trotzdem schreibst du damit keine Betriebssysteme oder Treiber.

Mit Assembler kannst du sicher Treiber schreiben, ein AAA Game würde ich damit aber nicht programmieren wollen, sofern ich mit einer Mannschaft um 1.000 Mann unter 100 Jahre fertig werden will.

Sprachen haben alle ihre Vor- und Nachteile, unabhängig was davon technisch irgendwie machbar ist. Wie gesagt Hammer und Glasscheibe geht auch. Lässt sich sicher so stabilisieren, dass du nur ein kleines Loch schlagen kannst und damit halbwegs genau Glas "schneiden" kannst.

Ist dann in etwa wie GTA 5 mit Assembler zu programmieren. Die eine Sprache gibt dem Entwickler mehr Verantwortung und Möglichkeiten, die andere übernimmt Sachen für ihn, verbietet ihn dafür hier und da direkte Zugriffe. Die eine Sprache ist OOP, die andere funktional aufgebaut, die nächste rein prozedural.

Du kannst auch etwas nehmen wie Oracle PL/SQL und über UTL_HTTP ein CMS ala Wordpress realisieren. Das wäre aber genauso wahnsinnig wie die Wurzelbehandlung mit dem Hammer, klappt trotzdem, würde ich trotzdem nicht machen oder zumindest nicht an mir machen lassen :D

Keine Sprache davon ist dann eine Sprache, denn das jeweils andere kann sie nicht. Auch bringen die Sprachen je nach Gebiet völlig andere Standardbibliotheken mit und damit schon fertige Funktionalitäten.

0
@apachy

Dann sollte es sich nicht Sprache, sondern vielleicht Dialekt oder Jargon nennen. Das Wort Sprache ist auf jedenfall fehl am Platz, wenn noch nicht einmal der Anspruch auf Vollständigkeit besteht!

0

Was möchtest Du wissen?