Wie tief kann man eine Programmiersprache lernen?
Im Bereich der IT und Softwareentwicklung bzw. Programmierung hab ich viel gelesen, dass es nicht ausreicht, viele Programmiersprachen zu können, sondern ist es wichtig, dass man die gelernte Sprachen wirklich gut beherrschen kann. Jetzt lautet meine Frage: Wie tief kann man in eine Programmiersprache hineingehen und es lernen?
LG
5 Antworten
Auch Du verwechselst Programmiersprache mit Programmieren.
Programmiersprache ist einfach ein Werkzeug mit dem man dem Rechenknecht sagt was er tun soll. Eine Programmiersprache selbst, beschränkt sich auf ein recht überschaubares Set an Basiskommandos und die Festlegung einer Syntax. Alles Darüber hinaus ist das Aufrufen von Funktionen Methoden, welche in einem Framework oder nativen Bibliotheken des Betriebssystems definiert sind.
Keines Beispiel, welche zeigt, das das .Net-Framwork nix mit C# zu tun hat.
demo.cs (C#)
using System.Drawing;
using System.Windows.Forms;
class Test : Form{
Label foo;
public Test(){
this.Text = "Eine EselApp";
ClientSize = new Size(320, 240);
foo = new Label(){Text="Hallo Welt"};
Controls.Add(foo);
}
public static void Main(string[] args){
Application.Run(new Test());
}
}
demo.ps1 (PowerShell)
using namespace System.Windows.Forms
using namespace System.Drawing
Add-Type -a 'System.Windows.Forms'
$Form = New-Object 'Form'
$Form.Text = 'Eine EselApp'
$Form.ClientSize = '320,200'
$Foo = New-Object 'Label'
$Foo.Text = 'Hallo Welt'
$Form.Controls.Add($foo)
$Null=$form.ShowDialog()
Zwei Sprachen aber das gleiche Famework. ich habe nichts weiter getan als ein Paar Parameter für im .Net-Framework definierte Objekte zu initialisieren und letztlich eine ebenfalls im Framework definierte Methode Aufzurufen , die Objekte agieren zu lassen.
Es ist nicht wichtig welche Sprache Du verwendest, um dem Rechenknecht zu sagen was er tun soll. Du musst Dir (unabhängig von einer Sprache) vorstellen können, welche Schritte nötig sind um von einem Ausgangszustand ausgehen einen Ergebniszustand zu erreichen.
Eingansparameter => BlackBox => Zielzustand
Die Aufgabe des Programmierers/Entwicklers ist es sich zu überlegen was in der BlackBox passieren muss.
1,2,3,4,5 => BlackBox => 1,4,9,16,25
Was könnte in der Kiste sein?
Die Rolle einer Programmiersprache wird von Anfängern völlig überbewertet.
Ich habe in meinem Leben ein gutes Duzend Programmiersprachen genutzt, wenn mir eine Aufgabe gestellt wird liegt meine Magie nicht im beherrschen einer Sprache , sondern , an dem Wissen, wie man eine Blackbox möglichst effizient füllt. Einer abstrakten Vorstellung der nötigen Abläufe .
Heutige Aufgaben und Abläufe sind inzwischen so komplex, das man garnicht mehr in jede beliebige Tiefe abstrahieren kann und auch nicht muss. Dafür sind die Frameworks zuständig.
Man muss nicht wissen wie eine Datei gelesen oder geschrieben wird (es sei denn man ist Fachmann für DateiSysteme). Es genügt zu wissen, das es eine Methode dafür gibt. Man muss nicht wissen wie ein Fenster auf dem Bildschirm landet... (es sei denn man möchte etwas implementieren, was vom normalen Prozetere abweicht). Erst dann (und nur dann) beschäftigt man sich damit.
...ansonsten landet man bei den Leuten mit den sanften Stimmen und den langärmligen Jacken....
Wirklich alles beherrschen zu wollen wäre illusorisch!
Das funktionierte noch bei meinem ersten u880 -Computer in den 80er Jahren. Schon unter M$Dos wurde es so komplex , dass man ohne Nachschlagewerke und Spezialisierung nicht mehr zurecht kam.
Nö, ich bin weder ein verücktes Genie noch leide ich unter WissensBulimie . Ich habe keine Ahnung wie man in C# eine Datenbank programmiert (brauche ich aktuell nicht) , aber ich hab ne Vorstellung davon wo man nachschauen müsste , wenn ich's mal bräuchte.
Lerne einfach analytisch zu denken und zu abstrahieren. Lerne
Verschaffe Dir einen überblick, wo Du welche Informationen beziehen kannst, wenn Du sie benötigst. (der größte Teil der Arbeit eines Programmierers besteht aus Recherche)
Es geht nicht nur um "die Programmiersprache", der viel größere Aufwand sind die ganzen zusätzlichen Frameworks, die es da draußen gibt.
Parallel kann man aber auch beliebig tief ins Detail gehen, bis zur CPU und was sie tatsächlich tut und wie es sich auswirkt, ist die Detailtiefe fast unbegrenzt.
Aber das wichtigste ist die Erfahrung.
Und für alles drei gibt es kein Maß, also gibt es für deine Frage auch keine Antwort ;)
ChatGPT würde nicht "in einem Schuppen landet bei dem die Codebase schon ewig alt ist" schreiben ;) Schon allein, weil dieser Bot die Satzzeichen richtig einsetzt.
Es gibt Programmiersprachen, bei denen es schon fast zum guten Ton gehört, seinen eigenen Interpreter und Compiler dafür selbst zu schreiben, vollständig. Aber trotzdem ist eine Programmiersprache lediglich ein Werkzeug, um die Programmlogik in einer Form beschreiben zu können, die sich zur Übersetzung in computerverständliche Instruktionen eignet. Egal wie gut du egal welche Sprache kennst, das eigentliche Programmieren beginnt davor, nämlich das zu lösende Problem in klare Folgen von Anweisungen umsetzen zu können.
Anders gesagt, es hilft nicht, beliebige Programmiersprachen gut zu kennen, wenn der Programmierer das zu lösende Problem nicht versteht.
Eigene Erfahrung:
Es ist eigentlich fast unmöglich eine Programmiersprache zu 100% zu können. Kommt aber natürlich auch auf die Sprache an sich an.
Als Anwendungsentwickler baust du mit der Zeit & Berufserfahrung sehr viel Wissen zu der jeweiligen Sprache auf.
Warum ist es fast unmöglich, eine Programmiersprache zu 100% lernen? Sogar wenn man sich sehr Mühe gibt?
Weil die zum Teil so umfangreich sind, dass du dein Leben lang immer wieder neue Dinge dieser Sprache lernst. Es gibt denke mal keinen Programmierer, der noch nie im Internet nach Lösungen für sein Problem gefunden hat. Es ist ein stetiger Prozess, der immer komplexer, anspruchsvoller und zeitintensiver wird.
Das ist wie mit jeder anderen Sprache auch:
du kannst Deutsch sprechen und verstehen, aber du beherrschst die Sprache nicht so wie Goethe oder Hesse
Ebenso gibt es auch bei den Programmierern "Päpste", die allen was vormachen können.
Zusätzlich zu meinem Vorredner, muss ich erwähnen, dass man neben Frameworks oft auch noch ältere Technologien lernen muss. Wenn man beruflich in einem Schuppen landet bei dem die Codebase schon ewig alt ist. Dazu kommen dann noch allgemeine Software-Design-Patterns und auch die Fähigkeit mit komplett wirren Code umgehen zu können und diesen zu verstehen. Wenn man wirklich erfolgreich werden will braucht man zudem noch Tech-Know-How in sehr vielen bereichen, die selbst nichts mit dem Programmieren zutun haben. Dazu dann noch Empathie für Abteilungen und die Fähigkeit Geschäftsprozesse zu verstehen. Kommunikationsfähigkeit etc.... Nur programmieren zu können bringt einen nicht weit.