Seit dem ersten Jahr an meiner Universität beneide ich meine Kommilitonen (die hauptsächlich von einer technisch orientierten Berufsschule kommen) darum, dass sie C beherrschen. Ich komme von einem naturwissenschaftlich orientierten Lyzeum und hatte nie Programmiererfahrung oder -kurse, sondern nur ein paar Sommerarbeiten mit PHP, die ich in einem PHP-in-7-Stunden-Kurs gelernt hatte (und mein Interesse am Programmieren war noch sehr jung). Ich möchte wissen ... war es ein legitimer Neid? Muss jeder Programmierer C können? Vermittelt C ein tiefes Verständnis dafür, wie ein System funktioniert oder wie man programmieren muss? Ich weiß, dass man beim Programmieren in C ein tiefes Verständnis von Puffern, Speicher und so weiter haben muss. Ich möchte also Ihre Meinung dazu hören.
Antworten
Zu viele Anzeigen?Nein, Sie müssen C nicht kennen. Aber die Kenntnis von C (oder einer anderen "maschinennahen, aber nicht assemblerähnlichen" Sprache) steigert Ihr Potenzial als Programmierer erheblich. Denn Sie werden viel mehr von der inneren Funktionsweise verstehen.
Und natürlich sind auch Assembler-Kenntnisse von Vorteil. Aber mit dem obigen Absatz wollte ich auf das untere Ende der Computersprache abzielen. Gerade weil wir in modernen Sprachen so viel als selbstverständlich ansehen (OO, umfangreiche Bibliotheken, Garbage Collection, um nur einige zu nennen). Und ja, das hilft uns Programmierern, effizienter zu arbeiten. Aber es verbirgt einige der maschinellen Aspekte, die wir manchmal sehen müssen, und deshalb ist es so wichtig, dass wir die inneren Abläufe kennen.
Ich denke zwar, dass es wichtig ist, Speicherzuweisung, Zeiger, Register, ... zu verstehen. würde ich sagen, dass zu viel Erfahrung in C auch ein Hindernis für das Verständnis von höheren Sprachen oder OO-Sprachen sein kann. C verleitet dazu, prozedural zu denken, und das kann in manchen Fällen schlecht sein ...
Ich würde C definitiv nicht als Einstiegssprache empfehlen, aber es kann eine große Hilfe sein, sich irgendwann mit C zu beschäftigen...
Nebenbei bemerkt bin ich der Meinung, dass die Montage viel nützlicher sein kann, um das Grundprinzip zu verstehen. Gleichzeitig ist Assembler weit genug von jeder Sprache entfernt, die Sie verwenden würden (es sei denn, Sie arbeiten in einem sehr speziellen Bereich). Das wird Ihnen helfen, bei der Assemblerarbeit eine andere Denkweise beizubehalten als bei der Verwendung einer höheren Programmiersprache.
Dies ist ein durchaus diskutierbares Thema. Ich persönlich denke, dass C-Kenntnisse die Fähigkeit verbessern, auch mit anderen Sprachen zu arbeiten, wenn man versteht, was vor sich geht unter der Motorhaube . Aber Sie wissen nicht haben C zu kennen, um qualitativ hochwertigen Code erstellen zu können.
Eric Sink hat sich auch einmal Gedanken gemacht über diese Frage .
Was ich in den meisten Antworten vermisse, ist die Tatsache, dass C eine sehr leicht zu erlernende Sprache ist. Alles, was Sie jemals über die Syntax wissen müssen, ist in einem dünnen, prägnanten Buch (K&R) enthalten, und das schließt alle Standardbibliotheken ein. Ich würde Sie also ermutigen, zumindest ein Buch zu überfliegen und zu sehen, worum es geht, auch wenn Sie nicht vorhaben, es zu benutzen.
Diese einfache C-Syntax bringt nur erweitert für die meisten modernen C-basierten Sprachen (C++, C#, Java). Sie können nicht sagen, dass Sie diese Sprachen wirklich kennen, bis Sie zumindest eine Teilmenge der Hunderte von Bibliotheken, die mit ihnen kommen, beherrschen, und das kann Monate oder Jahre der Erfahrung dauern.
Das Schwierige an C ist, dass man dadurch die wahre Natur der Maschine dahinter erkennen kann. Wenn Sie wirklich wissen wollen, wie ein Computer funktioniert, müssen Sie Dinge wie Zeiger, Speicherzuweisung und Stack vs. Heap vs. ausführbaren Code verstehen. Sie können die grundlegende C-Syntax in ein paar Stunden lernen, und das bringt Sie auf den Weg, viel mehr zu verstehen. Die Aussage "Ich bin ein C-Experte" ist nur ein Ersatz für die Aussage "Ich verstehe wirklich, wie ein Computer funktioniert."
Zusätzlich zu Gamecats Antwort habe ich die Erfahrung gemacht, dass bei der Arbeit mit Leuten, die andere Sprachen beherrschen, ein Unterschied in den Fähigkeiten zwischen denjenigen besteht, die C beherrschen, und denjenigen, die es nicht tun. Ich arbeite hauptsächlich in Java und weiß es sehr zu schätzen, dass ich vorher ein paar Jahre mit C gearbeitet habe. Darüber hinaus habe ich auch viel mit Perl gearbeitet. Ich würde sagen, dass es hilfreich ist, so viele Sprachen wie möglich zu kennen, um verschiedene Sichtweisen auf die eigene Arbeit zu erhalten und verschiedene Paradigmen anzuwenden.
- See previous answers
- Weitere Antworten anzeigen