Programmiersprache für Anfänger

Ich halte programmieren für ein Mittel zum Zweck. Es ist ja nicht das handwerkliche aufschreiben des Systems, sondern das planen und ausdenken desselbigen.
Mit Klassen, Funktionen, Variablen und weiteren Sprachabstraktionen zu jonglieren ist in der Regel für den geneigten Menschen gut lernbar.

Das erschaffen von sauberen Systemen ist dagegen schwerer. Hier muss lange nachgedacht und verworfen werden. Die Unterschiede werden nämlich dort sichtbar.

TCP ist ein schönes Protokoll, voll von State Machines, feedback-loops und cleveren Methoden um ein Ziel zu erreichen.
BitTorrent mit DHT, leicht zu Implementieren, aber sich ein derartiges System auszudenken, nicht so leicht.
Eine Rendering Engine wie im Browser oder LaTeX, vollgestopft mit Gleichungen und Algorithmen.
Verteilte Transaktions Protokolle (Distributed Consensus usw,) die größere verteile Systeme erst ermöglichen. (Siehe Googles Chubby und Spanner)

Multi-Core Programmieren, mit Java leicht, mit C nicht so sehr. - Ein schönes Beispiel.
Ein Großteil der Programmierer benutzt Threads, aber hat keine Ahnung wie man es ordentlich synchronisiert.
Vielen ist nicht bekannt, dass viele Prozessoren (z.B. ARM) ein Memory-Model haben, welches schwächer ist als Sequential Consistency.
D.h. Innerhalb eines Threads ist Reihenfolge da, aber Threads können Reihenfolge von anderen Threads umgeordnet wahrnehmen.
Hier kommt dann "volatile" und das Java Memory Model ins Spiel. - Sehr interessant übrigens: C und C++ hatten kein definiertes Memory Model und haben erst kürzlich das von Java übernommen.

Wenn mir mal ein Herzschrittmacher eingesetzt wird, oder ich mich auf das Steuerungssystem in einem Flugzeug oder Auto verlassen muss, dann
hätte ich gerne, dass jemand formal bewiesen hat, dass die Schläge des Herzschrittmachers niemals ausserhalb eines bestimmte Frequenzbereichs liegt (Hard Real Time) usw.


Die meisten Programmier beschäftigen sich den lieben langen Tag damit triviale Dinge aufzuschreiben wie irgendwelchen Web Mist, GUIs oder Business Logik, geschweige denn Plugins für den liebsten Text-Editor.
Diese Dinge sind in der Tat Handwerk und benötigen großes Können, aber unterscheiden sich grundsätzlich von den obengenannten Dingen.


Ja ein Studium macht einen nicht zu einem Programmierer, das war auch nicht der Sinn der Sache. Wer sich aber für programmieren interessiert kann die entsprechenden Vorlesungen buchen und sein Wissen so weit erweitern, bis selbst das letzte Quäntchen Magie getilgt ist.

Am Ende bleiben nur Unmengen an Mathematik, Formalen Methoden und Beweisen übrig.

Wer dazu keine Lust hat, gut. - Aber dann aus Verdruss alles was etwas komplizierter ist als albernes Zeug abzutun...

John Carmack steht neuerdings auch voll auf Static Typing, Funktionales Programmieren und Formate Methoden.
 
Zurück
Oben