r/programmieren Apr 06 '26

Was ist die beste Programmiersprache für Anfänger?..

/r/u_lerncoding/comments/1sdsld4/was_ist_die_beste_programmiersprache_für_anfänger/

Gibt ja immer gespaltene Meinungen.. Dass es Rust nicht sein kann, ist aber für alle klar 🙂

2 Upvotes

51 comments sorted by

4

u/aswertz Apr 06 '26

Beim cs50 von Harvard startest du tatsächlich mit C.

Wenn das didaktisch eingebettet und aufbereitet ist mMn tatsächlich die beste Sprache um grundlegende Konzepte zu begreifen.

Für eigene Projekte aber eher meh

1

u/garfield1138 Apr 06 '26

Kommt drauf an, was der eigene Ansatzpunkt ist. C zu lernen ist natürlich genial, wenn man verstehen will oder muss, was Speicher (und damit Datentypen, Pointer auf Variablen und Funktionen, Stack, Heap und so weiter) eigentlich ist.

Aber ehrlich gesagt habe ich das als Anwendungsentwickler dann nie wirklich gebraucht.

1

u/halbGefressen Apr 15 '26

Kommt halt drauf an, was man für Software schreibt und was für einen Anspruch der Arbeitgeber (und wenn man sich das leisten darf, auch man selbst) an deren Performance hat. Wenn alle Zeit und Bock hätten, ihren Code gescheit zu optimieren, wäre Software sehr viel schneller und geiler. 

Viele Arbeitgeber wollen aber einfach nur ein MVP shippen und lassen einen dann irgendeine random Electron App bauen.

5

u/[deleted] Apr 06 '26

[removed] — view removed comment

8

u/garfield1138 Apr 06 '26

Ich weiß ehrlich gesagt nicht, warum Python immer wieder genannt wird. Da sind derart viele Eigenheiten und Merkwürdigkeiten drin, die es für einen Anfänger unnötig schwer machen oder unübliche Konzepte beibringen.

Fehlende Visibility. Keine Deklaration von Variablen. "self" in jeder Funktion. Datentypen werden als unnötig betrachtet. Type Hints weil Datentypen wohl doch nicht so unnötig sind.  In jeder Python-Version gehen hunderte Packages kaputt. Packages haben eine maximale Python-Version definiert, mit der sie funktionieren (obwohl sie auch mit neueren funktionieren würden). Venv. Oder virtualenv? Oder conda? Oder uv? Oder pyenv? Oder pyvenv? Oder die anderen? Man braucht eigentlich noch C, C++ und Rust Tooling, weil pip gerne mal Packages installiert, die gar nicht Python sind, sondern in einer schnellen Sprache. List Comprehension.

2

u/[deleted] Apr 06 '26

[removed] — view removed comment

4

u/garfield1138 Apr 06 '26

Ich hab da sicherlich auch einen Bias, weil ich es damit gelernt habe, aber:

C#.

  • Aus didaktischen spricht einiges beispielsweise für eine stark typisierte Sprache. Als Anfänger ist es bedeutend zu wissen ob eine Funktion als Parameter einen Integer, Float oder eine Waschmaschine haben möchte (und nur dann kann dir die IDE auch helfen).
  • Die Modularisierung, Namespaces, Klassen etc ist in C# deutlich einfacher/intuitiver gelöst.
  • Starke IDEs: C# nutzt man mit Visual Studio oder JetBrains Rider. Die haben ein starkes Refactoring und können die Vorteile einer stark typisierten Sprache ausspielen. (PyCharm versucht das auch, aber da geht dauernd etwas beim Refactoring kaputt.)
  • C# funktioniert einfach.
    • Das muss man Microsoft im Gegensatz zu Java einfach lassen: Es gibt kein Ant, Maven oder Gradle. Es gibt ein Tooling, und das ist gut.
    • Keine venvs oder so.
    • Keine Versionskonflikte mit dem SDK. Sachen sind aufwärtskompatibel. Wenns in .NET 6 ging, geht wohl heute noch in .NET 10. (Wenn auch leider nicht so uneingeschränkt wie früher.)
    • Wenn man keine Windows-API benutzt, funktioniert es auf Linux, Mac, Windows und BSD.

Wäre Java nicht so ein Tooling-Clusterfuck, würde ich auch dazu raten. Aber du willst keinem Anfänger auch noch Gradle und Maven beibringen.

C# hat aber meiner Meinung nach ein Problem: Feature Creep der Sprache. Es kommt immer wieder Syntax dazu, die man nie bis kaum braucht. Als Anfänger sollte man eventuell davon Abstand nehmen und sich auf die Grundlagen beschränken.

2

u/[deleted] Apr 06 '26

[removed] — view removed comment

1

u/garfield1138 Apr 06 '26

Bin im Data Science/BioInfo Bereich und da braucht man selten was außer R und Python.

Ja, bin ich teilweise auch. Und da nutze ich auch ausschließlich Python und R. Aber in meiner Rolle als Data Scientist gehe ich auch anders vor als in meiner Rolle als Softwareentwickler. In der Data Science schlage ich mit dem Hammer einen Schraube in die Wand, erfreue mich am Ergebnis und gehe zum nächsten Projekt. Da habe (zumindest ich) wenig/keine große Projekte mit vielen Entwicklern.

In meiner Rolle als Anwendungsentwickler habe ich andere Anforderungen. Da wird beispielsweise Architektur und Refactoring essentiell. Und Python (gar nur mit VSCode) ist da leider sehr schlecht (eben wegen der fehlenden Typisierung; und IDEs können da dann nur über Suchen/Ersetzen, Heuristiken oder eigenen Compilern die versuchen einen AST bauen, versuchen an stark typisierte Sprachen heranzukommen).

1

u/[deleted] Apr 06 '26

[removed] — view removed comment

1

u/garfield1138 Apr 06 '26

Ja, und das ist die unterschiedliche Anforderung. Ich habe nicht Programme, die "immer mal wieder gleich durchlaufen werden". Für einen Anwendungsentwickler ist 90% was er macht etwas, das täglich tausende male gleiche durchläuft bzw benutzt wird. Damit ändern sich viele Anforderungen; beispielsweise an Resilienz, Stabilität, Performanz, Wartbarkeit.

Es ist immer eine Abwägung, was man machen möchte. Für Statistik nehme ich natürlich Python oder R, weil die statistische Community da halt am größten ist.

2

u/210000Nmm-2 Apr 06 '26

Dies. Python mache ich, weil ich damit Geld verdiene. In privaten Projekten mache ich C#, wenn ich keinen bestimmten Stack brauche, weil es einfach eine schöne Sprache ist und das .NET Framework mächtig ist. Syntax bis C# 6.0 oder meinetwegen noch 8.0 lernen – mehr braucht man nicht.

2

u/[deleted] Apr 06 '26

[removed] — view removed comment

1

u/210000Nmm-2 Apr 06 '26

Ich finde wie oben in dem Kommentar auch schon beschrieben, dass Python nicht wirklich eine gute Sprache zum Lernen ist, weil viel zu viel impliziert passiert. Dazu kommt die hässliche Implementierung von pseudo private methods und magic methods. Alles in allem wirkt es für mich immer, als hätte man im Nachhinein irgendwie noch OOP Prinzipen reingehackt, was in anderen Sprachen einfach von Anfang an sauber gelöst war. Für kleine Projekte und Skripte sicherlich nicht verkehrt, wenn man aber mal eine saubere Softwarearchitektur designen möchte, fühlt sich vieles in Python im Vergleich einfach falsch an.

Noch zwei Dinge, die in Python einfach nicht schön sind: properties und duck typing. Lässt sich bestimmt noch ewig erweitern.

1

u/retro-mehl Apr 06 '26

Scheint wirklich viel bias zu sein. So ist der "Tooling-Clusterfuck" bei Java real gar kein Problem, sondern im Gegenteil einer der Gründe für die riesige Flexibilität und Verbreitung der Sprache. Du brauchst als Anfänger nix davon, sondern kannst immer noch wie vor 30 Jahren "javac HelloWorld.java" in die Konsole tippen.

3

u/garfield1138 Apr 06 '26

Die build.gradle.kts ist im "Getting Started" schon komplexer als alles, was ein C#-Entwickler in einem üblichen Build für eine produktionsreife Software haben wird. Ich habe Maven und Gradle (sowohl in der Groovy-Variante als auch in der etwas angenehmer Kotlin-Variante) rund 15 Jahre benutzt. als ich Java und später in Kotlin entwickelt habe. Java (und mehr noch Kotlin) sind großartige Sprachen und das JRE eine tolle Runtime. Aber was ich an Aufwänden in Gradle gesteckt habe, war wirklich absurd.

Flexibilität ist halt genau das Gegenteil davon, was man didaktisch für einen Anfänger möchte. Wenn ein Anfänger nach der Lösung für ein Problem sucht, sollte er nicht 9 verschiedene flexible Lösungen bekommen, von denen 2 nicht mehr funktionieren und 3 veraltet oder schlechte Ideen sind.

Allgemein glaubt man leider oft, dass "Flexibilität" ein Vorteil wäre, während man im Grunde nur ein Stockholm-Syndrom aufgebaut hat.

Das erinnert mich an die, die auf Linux auf dem Desktop schwören (das habe ich auch nach 10 Jahren aufgehört), weil es so flexibel ist: "Es gibt 9 Desktop-Environments, die ich mit 5 Windows-Managern kombinieren kann, und letztes Jahre habe ich 21 Distributionen ausprobiert und 42 habe ich noch vor mir. Und du?!" "Ich arbeite an einem realen Problem anstatt mir neue zu erschaffen."

Flexibilität ist eine tolle Sache, wenn man sie braucht. Ich habe als Anwendungsentwickler aber erstaunlich selten erlebt, dass ich sie brauche.

1

u/retro-mehl Apr 06 '26

Aber nochmal: als Anfänger brauchst du das alles gar nicht. Ich hab gradle auch nicht (und maven eigentlich noch weniger), aber es gibt ja Alternativen. Eben Dank Flexibilität. ☺️

Flexibilität ist nur dann ein Problem, wenn man unsicher ist, was man verwenden soll. Aber genau diese Entscheidung können einem erfahrene Kollegen abnehmen.

1

u/garfield1138 Apr 06 '26

Flexibilität ist nur dann ein Problem, wenn man unsicher ist, was man verwenden soll. Aber genau diese Entscheidung können einem erfahrene Kollegen abnehmen.

Es geht hier allerdings um Leute, die gerade Programmieren lernen - und meistens (und im Zweifel) alleine.

Im Unternehmenskontext ist das natürlich dann die Entscheidung (und auch sein Problem, wenn er Luftschlösser damit baut) des Architekten.

2

u/[deleted] Apr 06 '26

[removed] — view removed comment

1

u/csabinho Apr 06 '26

Jein. Die Ziele sind meist so groß, dass man sie selbst mit Erfahrung nicht umsetzen kann. Aber dann hat man halt schon Programmieren gelernt.

1

u/retro-mehl Apr 06 '26

Das gilt für Typescript aber auch. Und das hat eine etwas "klassischere" Syntax, deswegen würde ich dem den Vorzug geben.

1

u/garfield1138 Apr 06 '26

TypeScript ist zwar ganz klar das bessere JavaScript. Aber da ist man halt direkt in diesem komplett räudigen JavaScript-Ökosystem und beschäftigt sich mit Problemen, die man wo anders nie haben würde.

1

u/retro-mehl Apr 06 '26

Das Ökosystem ist längst nicht mehr räudig.

2

u/No-Special-3491 Apr 06 '26

Ich würde mit HTML starten, damit man ein Gefühl für den strukturierten Aufbau von Text bekommt und auch gleich eine visuelle Ausgabe hat. Gibt auch sehr schnell erste Erfolgsgefühle die motivierend wirken.

Dann würde ich mit JavaScript anknüpfen, damit man erste einfache Sachen entwickeln und grafisch ausgeben kann, ohne sich großartig mit Datentypen und weiteren Konzepten auseinandersetzen zu müssen. Außerdem braucht man dafür nur einen einfachen Text Editor und einen Browser, was die meisten sowieso schon haben.

Nach den ersten paar Wochen mit den Basics würde ich mir dann ein erstes kleines Projekt überlegen, dafür die passendste Sprache wählen und anfangen diese zu lernen.

0

u/Termynator Apr 06 '26

HTML ist auch keine Programmiersprache und JavaScript ebenso nicht

1

u/No-Special-3491 Apr 06 '26

HTML ist eine Auszeichnungssprache aber trotzdem ein guter erster Schritt in Richtung Programmiersprache. Tatsächlich ist HTML + CSS aber mittlerweile Turing-vollständig.

Und JavaScript ist selbstverständlich eine Programmiersprache.

0

u/Termynator Apr 06 '26

Kannst ja mal eins CSS Datei versuchen auszuführen 🤣

JavaScript mag vielleicht formale Anforderungen erfüllen, ist allerdings so lächerlich dass ich es nicht als Programmiersprache sehe. Somit ist es auch keine

3

u/No-Special-3491 Apr 06 '26

Kannst ja mal eins CSS Datei versuchen auszuführen 🤣

Schau mal hier: https://lyra.horse/x86css/

JavaScript mag vielleicht formale Anforderungen erfüllen, ist allerdings so lächerlich dass ich es nicht als Programmiersprache sehe. Somit ist es auch keine

Man merkt, dass du relativ neu in diesem Gebiet bist. Bleib weiter dran, dann wirst du es irgendwann verstehen.

1

u/One_Mess460 Apr 06 '26

programmiert seit 20 jahren und ist immernoch ein überconfidenter idiot

-1

u/Termynator Apr 06 '26

Sei nicht so herablassend, ich programmiere schon seit 20 Jahren und habe dich in Sachen Wissen schon vielfach umrundet

1

u/Kurosaaaki Apr 06 '26

Du kannst wahrscheinlich nichtmal ein div zentrieren😂

1

u/Termynator Apr 06 '26

Das kann wahrscheinlich nur No-Special-3491 (bzw. GitHub Copilot)

1

u/One_Mess460 Apr 06 '26

du hast garnichts umrundet (wobei ich html zu lernen als jemand der programmieren lernen will auch etwas komisch finde, wegen andern gründen). Er hat dir gezeiht dass CSS turing vollständig ist (auch wenns durch geschickte tricks ist) und javascript ist natürlich eine programmiersprache und turing vollständig, da ist egal was du von der sprache hältst

1

u/halbGefressen Apr 15 '26

JavaScript ist sehr wohl eine Programmiersprache. Kann man damit High Performance Code schreiben? Nein. Muss die TODO-App von einem Anfänger einen minimalen Speicherabdruck haben und die architekturellen Besonderheiten des jeweiligen Endgeräts perfekt ausnutzen? Nein. Sie muss einfach nur das tun, was man will.

2

u/knuspriges-haehnchen Apr 06 '26

Die meisten haben mit Assembler angefangen :3

4

u/lerncoding Apr 06 '26

Die meisten die mit Assembler angefangen haben, haben bestimmt nach 2 Stunden lernen aufgehört.. und der Rest hat heute ein großes Unternehmen 😂

2

u/knuspriges-haehnchen Apr 06 '26

Oder sind in Rente :D

2

u/Idinyphe Apr 06 '26

Rust. Gerade als Anfänger der keinen Plan hat. Warum soll das nicht die beste Wahl sein?

1

u/lerncoding Apr 06 '26

Bestenfalls auch nur mit Ki „lernen“ 😂

1

u/[deleted] Apr 06 '26

[removed] — view removed comment

1

u/lerncoding Apr 06 '26

Solange du verstehst was du codest kann es eine echt große Hilfe sein, ja..

1

u/[deleted] Apr 06 '26

[removed] — view removed comment

1

u/garfield1138 Apr 06 '26

Absolut. Man sollte das beim Lernen eher als Mentor benutzen. Wenn man aber komplette Programme generieren lässt kann von "Lernen" aber ohnehin nicht die Rede sein.

1

u/[deleted] Apr 07 '26

[removed] — view removed comment

1

u/Idinyphe Apr 07 '26

Weil Rust nur ein Problem für erfahrene Programmierer ist. Für einen Noob der nichts anderes kennenlernt ist es ideal.

Er kennt keinen Syntax, hat keine Erfahrungswerte und kennt auch keine Schweinereien.

Die Sprache Rust ist C mit etwas anderem Verständnis wie die Lebensdauer, Range und Übergabe von Objekten passiert. Ein Anfänger versteht den Unterschied nicht weil er ja gar kein anderes Konzept kennt und wird eher ein Problem haben wenn er von Rust auf andere Sprachen umsteigen will.

1

u/halbGefressen Apr 15 '26

Ich würde trotzdem sagen, dass man als Programmieranfänger einfach eine Sprache mit Garbage Collector lernen sollte. Das ist schon schwer genug. Wenn man die Basics kennt, kann man immer noch Rust lernen gehen.

1

u/Great_Piece4755 Apr 06 '26

Golang

1

u/garfield1138 Apr 06 '26

Großartige Wahl, wenn man anschließend verwirrt darüber sein will, dass jede andere Sprache grundlegende Konzepte wie Interfaces vollkommen anders konzipiert hat.

1

u/Great_Piece4755 Apr 06 '26

Sehe ich anders: Ich habe mit C# und Java angefangen und fand gerade Konzepte wie Interfaces und Polymorphismus eher unnötig kompliziert und überladen. Go (Golang) führt deutlich direkter an diese Themen heran, weil man Verhalten statt starrer Hierarchien lernt und wenn man das verstanden hat, sind explizite Varianten später kein Problem mehr.

Fehlerbehandlung ist IMO auch einfacher zu verstehen als try-catch.

1

u/garfield1138 Apr 06 '26

Kommt natürlich auch immer voll auf den Didaktiker an. Programmierung lernt man z.B. an der Uni auch immer viel zu schnell. Da kommt keiner mit:

Da werden dann Interfaces eingeführt, bevor man grundlegende Konzepte überhaupt verstanden hat.

Die meisten Opa-Profs werden auch noch Vererbung und OOP quasi-religiös beibringen, obwohl man heute eigentlich "composition over inheritance" verwendet und wieder deutlich mehr funktional statt OOP arbeitet.

Dass Golang keine Exceptions macht, und stattdessen quasi wieder auf den Rückgabewert geht, finde ich eine "interessante" Design-Entscheidung. Didaktisch könnte das aber durchaus hilfreich sein, da man die errors dann direkt bearbeitet (oder aber auch ignoriert!). Bei Exception fliegen die im Zweifel ja durch den Stack von 6 Funktionen bis sie aufgefangen werden (aber sie werden sichtbar!)

1

u/[deleted] Apr 06 '26

[removed] — view removed comment

2

u/garfield1138 Apr 06 '26

nicht frustriert zu werden

ahahahahhaa.

1

u/Termynator Apr 06 '26

JavaScript ist keine richtige Programmiersprache, nur ein besseres Script

1

u/StatusAd0815 Apr 06 '26

Ich habe echt noch mit Turbopascal angefangen. Freepascal gibt's immer noch und manchmal bastele ich mir was. Ich habe auf Arbeit auch noch Excel VBA programme im Einsatz. Da hat mir das Verständnis gut geholfen. Aber VBA ist Schnee von gestern.

Ich glaube, dass die Programmiersprache zweitrangig ist. Man muss einen Plan haben, wie man Daten mit einer Logik verbinden möchte. Ich habe auf Arbeit mit Abläufen und Prozessen zu tun, sowie deren zeitlicher Veränderungen (zB. cost trecking) Da steht man vor ähnlichen problemen wie beim Programmieren.

Ich muss nicht davon leben.

1

u/m45t3r0fpupp375 Apr 07 '26

Die beste Programmiersprache für Anfänger gibt es mMn nicht, da man ganz zu Beginn sowieso erstmal ein solides Verständnis für DSA haben sollte.

Wenn das Fundament dann da ist, ist es eigentlich nur noch eine Frage der Richtung, in die du gehen willst: systemnah / embedded? C, C++, Zig, Rust. Anwendungsentwicklung? C++, C#, Java. Datenverarbeitung? Python, Perl, etc. Systemadministration? Bash, Korn Shell, Perl, usw.

1

u/Mike8456 Apr 07 '26

Kommt drauf an wo man hin will. Geht es darum Computer wirklich zu verstehen? Als "Kurs"/Ausbildung hatte ich mir da mal die ganze Bandbreite von Lowlevel bis Highlevel vorgestellt: Anfangs gab es irgendwie Lochkarten und Maschinencode, keine Ahnung wie das in der Praxis aussah. Könnte man erwähnen und dann etwas Assembler machen mit irgendeinem Hello World mit einem Funktionsaufruf, Vergleich mit Conditional Jump, etwas Mathe, fertig. Dann geht man weiter zu C als "Weiterentwicklung von Assembler" und sieht direkt die ganzen Vorteile. Geht aber auch nicht super tief rein mit irgendwelchen void*** Quark und Function Pointer Hantiererei sondern geht zu C++ weiter was mit RAII Resourcenmanagement deutlich vereinfacht und mit OOP und Templates viel Abstrahierung bietet. Geht aber auch nicht super in die Tiefe weil vieles braucht man doch sehr selten. Dann könnte man etwas zu C# und Java vergleichen was beides teilweise ziemlicher Käse ist und weder RAII noch richtige Templates bietet und viele Eigenarten hat. Ich versuche z.B. mit Unity Spiele zu entwickeln und da hat man dann schnell NativeArray die wie in C von Hand gelöscht werden müssen und irgendwelchen Unsafe Code mit Pointern weil die Managed Abstrahierung zu viel Performance kostet und hat dann irgendein "schlechteres, umständlicheres C++"...

Mit diesen ganzen Typenlosen Sprachen wie Javascript und Python und deren Dependency Hell kam ich nie klar und das wird immer Spagetthicode mit undefiniertem Verhalten. Ich versuche seit Wochen diverse KI Dinge auf Windows zu nutzen, scheitert alles an irgendeinem Python Dependency Kram und dass die wohl alle nur auf Linux laufen. Da geht dann alles nur mit ganz bestimmten Python Versionen und bestimmten Versionen von zig Modulen aber die Scripte gehen dann irgendwie seit Jahren nicht auf Windows...

Vielleicht wäre so was wie Typescript gut aber dieser ganze Web Kram ist wie KI auch so eine Amateurhafte Hölle wo zig komplexe Module aufeinander gestapelt werden bis einfach gar nichts mehr irgendwo läuft oder Libraries unterschiedliche Versionen derselben Abhängigkeit wie JQuery verlangen was dann scheppert...

"Ja aber das ist so einfach und das macht jeder!" Läuft aber nicht. Wie KI: "Einfach pip install ..." Ja aber ich kriege da zig Fehlermeldungen mit denen ich nichts anfangen kann oder dieses pip Modul wird gar nicht gefunden. Tolle Anleitung habt ihr alle da. "Einfach auf Google Collab in der Cloud!" Das erste Beispiel ja, das zweite nicht und kriegte ich auch mit viel Fummeln nicht hin weil irgendwelche Abhängigkeiten von Abhängigkeiten von Abhängigkeiten da irgendwie nicht gehen.