Programmierer, die die Syntax vergessen

17

Müssen gute Programmierer beim Schreiben von Code Syntax an der Spitze ihrer Sprache haben? Was halten Sie von ihnen, wenn sie online nach einfachen Dingen suchen? Sind sie gut oder schlecht (vielleicht wissen sie, wo sie suchen müssen)? Sollten Programmierer ein gutes Gedächtnis haben? Ist das ein Merkmal für einen guten Programmierer?

maz3tt
quelle
1
Je nachdem wie "einfach". Einige Beispiele / Hintergründe wären hilfreich. Es kann auch ein Inkonsistenzproblem mit der Sprache / Umgebung sein, die sie programmieren.
rwong
1
Ich würde denken, dass dies Teil der Definition eines guten Programmierers wäre, da es unter schnell \ effizient fällt. Wenn Sie mit einer Referenz keine Codezeile schreiben können, werden Sie nicht rechtzeitig etwas erledigen. Andererseits ist das kein Aufruf, sich Dinge zu merken.
Stonemetal
In C ++ muss ich normalerweise die Syntax für Zeiger-auf-Funktionen nachschlagen (Member oder nicht), da ich sie nicht so häufig verwende ... Vielleicht ist die Syntax manchmal einfach komisch ?
Matthieu M.

Antworten:

25

Meine Philosophie beim Programmieren ist, dass es ein "Geisteszustand" ist und der Rest "nur Syntax". (dh nicht (als) wichtig)

Das heißt, man sollte die einfachen Dinge nicht nachschlagen müssen. Zumindest nicht für die Sprache (n), mit der Sie regelmäßig arbeiten. Es gibt nichts auszusetzen, wenn man eine Erfrischung braucht und zu wissen, wie man Informationen findet, ist mit Sicherheit eine gute Fähigkeit. Die Kernsyntax sollte jedoch unbedingt bekannt sein. Ansonsten verbringen Sie zu viel Zeit mit Suchen und zu wenig Zeit mit Programmieren.

George Marian
quelle
8
Genau wie eine gesprochene Sprache: Sie müssen wissen, wie man sie spricht, aber Wörterbücher sind eine große Hilfe. Oft wissen Sie, was Sie ausdrücken möchten, bevor Sie das Vokabular haben!
Kevin Cantu
@ Kevin - Genau - aber Sie können auch beurteilen, wie häufig jemand solche Referenzen macht. Die meisten von uns benutzten sie von Zeit zu Zeit, aber Sie fragten jemanden, der sagte, dass sie eine Sprache sprechen könnten, aber das Bedürfnis verspürte, sich ständig auf ein Wörterbuch zu beziehen.
Jon Hopkins
@jon Genau. Indem wir die Metapher der gesprochenen / geschriebenen Sprache fortsetzen, können wir mit einigem Aufwand die Sichtbarkeit der Sprache verbessern und unseren Wortschatz verbessern. Daher mein unersättlicher Appetit zum Lesen und die weitere Suche nach einer guten iPhone-Karte. Ähnliches gilt für Programmiersprachen. Wenn ich Probleme mit einer bestimmten Sprache habe, erstelle ich ein Snippet, das dies demonstriert, und halte es zum einfachen Nachschlagen griffbereit. Und natürlich möchte ich diese Problembereiche gelegentlich wiederholen. Es hat einige Zeit gedauert, aber ich habe mir endlich die lästige switch-Anweisung so gemerkt.
George Marian
Ich denke, dass auch ein fortgeschrittener Entwickler wahrscheinlich mehrere Sprachen im Griff hat und sie manchmal verwirren wird. Ich verwechsle immer noch die Deklaration eines mehrdimensionalen Arrays zwischen C # und C ++ von Zeit zu Zeit (war es "arr [] [] oder arr [,]") und muss es nachschlagen.
Steven Evers
28

Es kommt darauf an, was Sie meinen, aber die kurze Antwort lautet ja.

Werden Programmierer hier und da ein Semikolon oder eine geschweifte Klammer vergessen? Sicher. Werden sie die Syntax einer switch-Anweisung nachschlagen, weil sie sie wahrscheinlich selten verwenden? Nun, das tue ich. Werde ich mit ActionScript arbeiten und es stattdessen wie Java schreiben? Bestimmt. Es kann einige Zeit dauern, bis Sie sich an die Eingabe einer neuen Sprache gewöhnt haben, insbesondere, wenn Sie jahrelang mit einer anderen gearbeitet haben.

Das eigentliche Problem sollte sein, wenn ein Programmierer die Syntax nicht ändern kann, selbst wenn ihm eine IDE hilft. Wenn die Person nicht weiß, wofür ein Semikolon ist oder was diese ausgefallenen geschweiften Klammern sind, müssen sie mehr lernen.

Jeremy Heiler
quelle
8
Heh, die genaue Syntax der switch-Anweisung macht mir normalerweise auch Sorgen.
George Marian
Das ist der gleiche Grund, warum ich bei Python-Skripten bleibe, auch wenn ich Ruby bevorzuge. Ich muss bei der Arbeit in Python programmieren, und das Hin und Her wäre zu verwirrend.
LennyProgrammers
+1 für die Syntax von switch-Anweisungen - aus irgendeinem Grund nur schwer zu
fassen
5
Ganz zu schweigen von der Vielzahl der Sprachen, die man kennt, und der Syntax, die sich manchmal vermischen können.
Josaph
@ Dave Ich denke, das Problem ist die Mischung aus Symbolen. Es ist normalerweise switch, gefolgt von etwas in Klammern, dann einer öffnenden Klammer, dann casemit einer Beschriftung, die nicht in Klammern steht, dann einem Doppelpunkt, dann werden die Anweisungen normalerweise mit Semikolons dargestellt. Und vergessen wir nicht die breakAussagen. Durch Anstrengung und Willenskraft habe ich es mir schließlich gemerkt und ich muss es immer noch gelegentlich überprüfen. nur um sicher zugehen.
George Marian
10

Es würde mich auf jeden Fall überraschen, wenn ein sonst guter Programmierer routinemäßig nach einer Sprache suchen müsste, die er fließend beherrscht. Natürlich kann es Eckfälle geben, die in der Praxis nicht oft verwendet werden, so dass dies durchaus akzeptabel wäre Damit ein guter Programmierer sie nicht kennt, muss er in der Regel jedoch nicht nach der Syntax suchen. Er muss nach Funktionen und Klassen aus Bibliotheken suchen :)

aaronasterling
quelle
+1. Ich würde mich für fließend in C ++ halten und täglich nach Funktionsnamen und Argumenten suchen . Ich werde zum std::stringBeispiel nie jedes Mitglied von auswendig lernen .
Kristo
8

Wenn Sie die Sprache regelmäßig wechseln oder in drei oder vier Sprachen gleichzeitig arbeiten, können Sie nicht viel dagegen tun. Eine Zeitlang arbeitete ich an Projekten, die einen ständigen Wechsel erforderten, und begann, mich selbst als "Referenzprogrammierer" zu bezeichnen.

Matthew Frederick
quelle
4
+1 Stimme voll und ganz zu. Codierer, die mit einer Geschwindigkeit von Knoten zwischen Sprachen wechseln (ich kann 10 oder mehr Sprachen an einem Tag haben, der viele Projekte umfasst), haben Probleme, sich an die undurchsichtigen Unterschiede zwischen ähnlichen Sprachen zu erinnern, insbesondere in den Standardfunktionen der Bibliothek. Das wird schlimmer, wenn du älter wirst, was ich bemerkt habe.
Orbling
Das ist mein Problem, wir arbeiten an so vielen Dingen, dass ich mich manchmal nicht einmal an die Grundlagen erinnern kann. Vor allem, weil ich normalerweise nur den Kontext verwenden kann, hat jemand eine for-Schleife oder eine Funktion in der Nähe geschrieben, und ich kopiere einfach diese Syntax. Ich habe mich in letzter Zeit gezwungen, die Syntax zu lernen, aber es reicht nicht aus, mich nur auf das Üben zu verlassen, damit ich es mir merken kann. Ich habe eine Sprache (Javascript) ausgewählt, mit der ich die Syntax in mein Gehirn einschleifen kann. Es hilft sehr, vor allem beim Üben von Whiteboard-Interviews.
Jemmeh
5

Ich schreibe C ++ seit mehr als 15 Jahren, kenne aber einige seiner arkanen syntaktischen Ecken noch nicht auswendig.
Wie kann eine Funktionsvorlage erneut explizit instanziiert werden? Und wie sieht die Syntax aus, um eine Vorlage mit einem template-template-Argument teilweise zu spezialisieren? Und lassen Sie mich nicht damit anfangen, eine Funktion zu deklarieren, die einen Zeiger auf ein Array von Zeigern auf Funktionen zurückgibt, die Arrays von Zeigern auf ...

Ich vermute, dass es höchstens ein oder zwei Dutzend Menschen auf dieser Welt gibt (wenn überhaupt), die die gesamte C ++ - Syntax auswendig können. Und diese verdienen wahrscheinlich alle ihr Geld, indem sie C ++ - Compiler-Frontends schreiben.

sbi
quelle
4

Ich bin neugierig auf Googeln "Syntax" hier.

Mein Verdacht (und meine Befürchtung) ist, dass wir nicht darüber sprechen, welche Parameter ein Aufruf benötigt (da die meisten IDEs Sie dort auffordern, damit Sie sie nicht googeln), sondern dass Sie tatsächlich Dinge vom Typ "Wie geht man X?"

IDEs haben es unnötig gemacht, sich genaue Namen und Parameterlisten in der Art und Weise zu merken, wie es früher erforderlich war, und das hat viele Leute ein bisschen faul gemacht, aber das ist in Ordnung.

Aber was brauchst du zu Google? Für mich ist das normalerweise keine Syntax, das ist nur etwas, was Sie entweder nicht wirklich wissen oder nur vorübergehend kennen.

Das soll natürlich nicht heißen, dass es falsch ist, Google-Inhalte zu haben - Sprachen können heutzutage ziemlich umfangreich sein und nur wenige Menschen wissen alles, aber ich würde sagen, wenn Sie behaupten, mit einer Sprache kompetent zu sein, sollte Google eher die Ausnahme als die Regel sein .

Für mich, es sei denn, Sie tun etwas relativ Ungewöhnliches, oder Sie haben nach einer gewissen Zeit etwas Rostiges an der Sprache. Wenn Sie behaupten, eine Sprache zu "beherrschen", sollten Sie nicht mehr als 10% der Dinge googeln höchstens, und das sollte wirklich ziemlich spezifisches Zeug sein.

In Bezug auf die Idee, dass es um ein gutes Gedächtnis geht, ist es nicht wirklich. Es geht um das instinktive Gefühl, das Sie für etwas bekommen, das Sie wirklich (und nicht oberflächlich) kennen. Ich denke nicht, dass ich weiß, wie man eine Melanzane Parmigiana ohne Rezept zubereitet, ein Zeichen, dass ich ein gutes Gedächtnis habe, es ist ein Zeichen, das ich verstehe zubereitet, wie man dieses Gericht zubereitet - es sind subtil unterschiedliche Dinge.

Stellen Sie sich außerdem folgende Frage: Würden Sie erwarten, dass Sie in eine Restaurantküche gehen und feststellen, dass der Küchenchef ständig in einem Kochbuch nachschaut? Oder um zu sehen, wie der Mechaniker an Ihrem Auto arbeitet und das Hayes-Handbuch für dieses Modell durchblättert? Wenn ich eines dieser Dinge sehen würde, wäre mir ziemlich unangenehm, wie gut diese Person war.

Jon Hopkins
quelle
Kommentar zur Down-Abstimmung? Bin echt daran interessiert, was die Uneinigkeit ist.
Jon Hopkins
+1 - Guter Anrufsyntax != api
Jeremy Heiler
3

Meine Meinung ist Nein. Es ist nicht die Syntax, die wichtig ist, sondern Ihre Logik, um ein Problem zu lösen oder ein Ziel zu erreichen. Wenn Sie an mehreren Sprachen arbeiten, ist es selbstverständlich, dass Sie sich manchmal nicht an die genaue Syntax erinnern.

Fraz Sundal
quelle
0

Syntax ist nur die Sicht auf die zugrunde liegende Semantik der Sprache, da es bei der Programmierung nur darum geht, die zugrunde liegenden semantischen Bausteine ​​zu verwenden, um etwas zu erstellen. Wenn Sie die grundlegenden Konzepte der Sprache nicht verstehen, spielt es keine Rolle, wie gut Sie sich die Syntax einprägen können, Ihr Code wird ein schreckliches Durcheinander sein. Wie jemand sagte: "Gute Programmierer haben einen Interpreter und einen Compiler im Kopf." Beachten Sie, dass die Syntax nicht erwähnt wird, da hier nicht die eigentliche Arbeit stattfindet.

davidk01
quelle