Muss ich die Interna einer Programmiersprache verstehen?

11

Ich bin Anfänger in Python und es gefällt mir bisher sehr gut. Eine Frage, die mir sehr oft einfällt, ist, ob ich die Interna einer Programmiersprache (wie in meinem Fall Python) verstehen und daher lernen muss. Wie Sie vielleicht wissen, ist Python selbst in C geschrieben.

Meine Frage lautet also: Wie tief muss man in eine Programmiersprache eintauchen, um diese Sprache zu beherrschen oder fließend zu beherrschen? Ich vergleiche diese Frage mit "natürlichen" Sprachen. Ich kenne nicht jedes Detail der Grammatik in meiner Muttersprache, aber ich kann mich ohne Probleme in dieser Sprache ausdrücken. In diesem Moment spreche ich fließend eine Sprache. Gilt das auch für Programmiersprachen?

Flo Schönfeld
quelle
4
Interna werden wichtig, wenn Sie sich um die Leistung sorgen müssen.
Gort the Robot
7
Ich weiß einiges über CPython- und PyPy-Interna, aber in 80% der Fälle sind sie für meine Python-Programmierung nutzlos (oder sogar schädlich, wie ablenkend). Ich bin froh, dass ich die anderen 20% kenne, und das nicht nur für die Leistung, sondern auch, um dumme Fehlermeldungen zu verstehen und nicht tragbares Verhalten zu vermeiden.
2
Nein und nein. Auf keinen Fall ein Duplikat von beiden.
1
Es hängt davon ab, was Sie unter "Interna" verstehen, aber ich weiß, dass es für professionelle C # - und Java-Programmierer nicht ungewöhnlich ist, zumindest ein gewisses Verständnis der CLI oder JVM zu haben.
user16764

Antworten:

8

Sie müssen nichts über die Interna einer Programmiersprache wissen , um Programme in dieser Sprache zu schreiben. Je besser Sie jedoch die Sprache verstehen, desto besser werden Ihre Programme.

  1. Die Kenntnis von Datenstrukturen und Algorithmen hilft Ihnen bei der Auswahl der Datenstrukturen, die für Ihre spezielle Aufgabe am besten geeignet sind. Einige Sprachen besitzen diese Datenstrukturen intern.

  2. Wenn Sie die "Kultur" der Sprache verstehen, können Sie Programme schreiben, die "Best Practices" folgen, damit sie leichter zu verstehen, besser zu warten und leistungsfähiger sind.

  3. Das Schreiben eines Compilers für diese Sprache (oder eines Compilers für eine andere Sprache in dieser Sprache) kann Ihnen ein tiefes Verständnis der Sprache vermitteln und Ihre Programme über den Durchschnitt hinaus verbessern.

  4. Wenn Sie andere Sprachen beherrschen (insbesondere solche eines anderen Paradigmas), sind Sie ein besserer Programmierer in Ihrer Primärsprache, da Sie diese Fähigkeiten und Werkzeuge in Ihre Primärsprache einbringen können.

Als Konsequenz müssen Sie nichts über Ihren Computer wissen, um Programme darauf zu schreiben. Wenn Sie jedoch wissen, wie Ihr Computer funktioniert, können Sie besser Programme dafür schreiben.

Robert Harvey
quelle
7

Ich kenne nicht jedes Detail der Grammatik in meiner Muttersprache, aber ich kann mich ohne Probleme in dieser Sprache ausdrücken. In diesem Moment spreche ich fließend eine Sprache. Gilt das auch für Programmiersprachen?

Einfach gesagt, ja. Solange Sie sich gut ausdrücken (und andere verstehen) können, werden Sie als fließend in der Sprache angesehen.

Das heißt, für manche Jobs reicht es nicht aus, einfach fließend zu sein. Bestimmte Arten von Autoren, Jobs, die vorbildliche Redefähigkeiten erfordern, und einige Akademiker, die sich auf die Sprache konzentrieren, müssen sie "besser als fließend" kennen. Ebenso erfordern einige Programmierspezialitäten Kenntnisse der Sprachinterna, aber für die meisten Leute ist es ausreichend, die Programmiersprache zu kennen, die der Frage nach ihrer Nummer entspricht oder einen Cheeseburger bestellt.

Telastyn
quelle
0

Ich würde "kompetent" mit einer Sprache definieren als:

  • Verstehen Sie den Großteil der Syntax und das ausreichende Wissen, um nach neuen Funktionen zu suchen, die Sie im Code anderer Personen finden.
  • Kenntnisse über Standardbibliotheken und / oder Frameworks sowie die Fähigkeit, offizielle Dokumentationen zu allen neuen Themen zu finden, zu lesen und zu verstehen, die Sie verwenden müssen.
  • Verständnis und Fähigkeit, gängige Redewendungen und Namenskonventionen für die Sprache zu verwenden.

Beachten Sie, dass die Funktionsweise der Sprache nicht auf dieser Liste steht, aber es gibt viel "Lernfähigkeit". Zumindest ein flüchtiges Verständnis der Interna kann hilfreich sein, ist aber nicht erforderlich, um kompetent zu sein. Es ist jedoch eine sehr gute Idee, genug über sie zu wissen, damit Sie alle Referenzen in der Dokumentation, die Sie lesen, verstehen können.

Beispiel: Ich weiß, dass sowohl VB.NET als auch C # in IL (Intermediate Language) von .NET kompiliert werden, das dann für das Zielframework kompiliert wird. Ich weiß nicht viel über IL, aber ich weiß genug, um es zu erkennen, wenn ich es sehe, und im Allgemeinen zu verstehen, wie es mit bestimmten Dingen umgeht. Ich betrachte mich als kompetent in C #, aber nicht in VB.NET, obwohl die "Interna" gleich sind und ich sie nicht tief verstehe.

Bobson
quelle