Les programmeurs oublient la syntaxe

17

Les bons programmeurs doivent-ils avoir la syntaxe à la pointe de leur langue lors de l'écriture de code? Que pensez-vous d'eux s'ils recherchent des trucs simples en ligne sur Google? Sont-ils bons ou mauvais (peut-être savent-ils où chercher)? Les programmeurs doivent-ils avoir une bonne mémoire? Est-ce un trait pour un bon programmeur?

maz3tt
la source
1
Selon la façon dont "simple". Quelques exemples / antécédents seraient utiles. Il peut également s'agir d'un problème d'incohérence avec la langue / l'environnement qu'ils programment.
rwong
1
Je pense que cela ferait partie de la définition d'un bon programmeur, car il relève de fast \ efficient. Si vous ne pouvez pas écrire une ligne de code avec une consultation de référence, vous n'obtiendrez rien en temps opportun. D'un autre côté, ce n'est pas un appel à mémoriser des choses.
stonemetal
En C ++, je dois généralement rechercher la syntaxe des pointeurs vers des fonctions (membres ou non) car je ne les utilise pas si souvent ... peut-être que parfois la syntaxe est juste bizarre ?
Matthieu M.

Réponses:

25

Ma philosophie sur la programmation est que c'est un "état d'esprit" et le reste est "juste de la syntaxe". (c'est-à-dire pas (comme) important)

Cela dit, il ne faudrait pas avoir à chercher les choses simples. Du moins, pas pour la ou les langues avec lesquelles vous travaillez régulièrement. Il n'y a rien de mal à avoir besoin de rafraîchissements et savoir comment trouver des informations est certainement une bonne compétence. Cependant, la syntaxe de base doit certainement être bien connue. Sinon, vous passez trop de temps à chercher et trop peu de temps à programmer.

George Marian
la source
8
Exactement, comme une langue parlée: il faut savoir la parler, mais les dictionnaires sont d'une grande aide. Souvent, vous savez ce que vous voulez exprimer avant d'avoir le vocabulaire!
Kevin Cantu
@Kevin - Exactement - mais vous pouvez également juger la fluidité d'une personne en fonction de la fréquence à laquelle elle ferait de telles références. La plupart d'entre nous les utiliseraient de temps en temps, mais vous interrogeriez quelqu'un qui a dit qu'il pouvait parler une langue mais qui ressentait le besoin de se référer constamment à un dictionnaire.
Jon Hopkins
@jon Précisément. Poursuivant la métaphore de la langue parlée / écrite, avec un certain effort, nous pouvons augmenter notre exposition à la langue et améliorer notre vocabulaire. D'où mon appétit vorace pour la lecture et la recherche continue d'une bonne application de carte flash pour iPhone. De même pour les langages de programmation, lorsque j'ai des problèmes avec un idiome particulier, je crée un extrait qui le démontre et le garde à portée de main pour une référence facile. Et, bien sûr, je tiens à revoir ces zones problématiques à l'occasion. Cela a pris un certain temps, mais j'ai finalement mémorisé la déclaration du commutateur embêtant de cette façon.
George Marian
Je pense qu'un développeur plus «avancé» aussi aura probablement plusieurs langues à son actif et les confondra parfois. Je confond toujours la déclaration d'un tableau multidimensionnel entre C # et C ++ de temps en temps (était-ce "arr [] [] ou arr [,]") et je dois le rechercher.
Steven Evers
28

Cela dépend de ce que vous voulez dire, mais la réponse courte est oui.

Les programmeurs vont-ils oublier un point-virgule ou une accolade ici et là? Sûr. Vont-ils rechercher la syntaxe d'une instruction switch parce qu'ils l'utilisent probablement rarement? Eh bien, je fais. Vais-je travailler avec ActionScript mais l'écrire comme Java à la place? Absolument. Cela peut prendre un certain temps pour s'habituer à taper dans une nouvelle langue, surtout si vous avez travaillé avec une autre pendant des années.

La vraie préoccupation devrait être si un programmeur ne peut pas faire des têtes ou des queues de la syntaxe même avec un IDE les aidant. Si la personne ne sait pas à quoi sert un point-virgule, ni à quoi servent ces accolades frisées, alors elle a plus à faire.

Jeremy Heiler
la source
8
Hé, la syntaxe exacte de l'instruction switch me donne aussi du fil à retordre.
George Marian
C'est la même raison pour laquelle je m'en tiens aux scripts Python, même lorsque je préfère Ruby. Je dois coder en Python au travail, et les allers-retours seraient trop déroutants.
LennyProgrammers
+1 pour la syntaxe de l'instruction switch - c'est juste insaisissable pour une raison quelconque
billy.bob
5
Sans parler de la myriade de langues que l'on connaît et la syntaxe peut parfois se mélanger.
Josaph
@dave Je pense que le problème est le mélange de symboles. Il est généralement switchsuivi de quelque chose entre parenthèses, puis d'une parenthèse ouvrante, puis cased'un libellé qui n'est pas entre parenthèses, puis de deux points, puis des instructions généralement terminées par des points-virgules. Et, n'oublions pas, les breakdéclarations. C'est par l'effort et la force de volonté pure que je l'ai finalement mémorisé et je dois encore revérifier de temps en temps; Juste pour en être certain.
George Marian
10

Je serais certainement surpris si un autre bon programmeur devait régulièrement rechercher la syntaxe d'un langage dans lequel il parlait couramment. pour qu'un bon programmeur ne les connaisse pas, mais, en règle générale, un programmeur qui parle couramment n'a pas à rechercher la syntaxe. Il doit rechercher des fonctions et des classes dans les bibliothèques :)

aaronasterling
la source
+1. Je me considérerais couramment en C ++ et je recherche quotidiennement les noms de fonction et les arguments . Je ne mémoriserai jamais chaque membre de std::string, par exemple.
Michael Kristofik
8

Si vous êtes dans une position où vous changez régulièrement de langue ou travaillez en 3 ou 4 langues en même temps, vous ne pouvez pas faire grand-chose. Pendant un certain temps, j'ai fini par travailler sur des projets qui nécessitaient une commutation constante et j'ai commencé à me considérer comme un "programmeur de référence", devant chercher beaucoup plus que je n'aurais préféré.

Matthew Frederick
la source
4
+1 Entièrement d'accord. Les codeurs qui sautent entre les langues à un rythme de nœuds (je peux avoir 10 langues ou plus en cours de route sur plusieurs projets) finissent par avoir du mal à se souvenir des différences obscures entre des langues similaires, en particulier dans les fonctions de bibliothèque standard. Cela devient pire à mesure que vous vieillissez, je l'ai remarqué.
Orbling du
C'est mon problème, nous traversons tellement de choses au travail que je ne me souviens même pas des bases parfois. D'autant plus que je peux généralement utiliser le contexte, quelqu'un a écrit une boucle for ou une fonction à proximité, je copie juste cette syntaxe. Cependant, je me suis forcé à apprendre la syntaxe récemment, comptant sur la pratique pour me faire mémoriser ce n'est pas suffisant. J'ai choisi une langue (Javascript) pour moudre la syntaxe dans mon cerveau. Cela aide beaucoup, en particulier avec la pratique des interviews sur tableau blanc.
Jemmeh
5

J'écris du C ++ depuis> 15 ans, mais je ne connais toujours pas par cœur certains de ses coins syntaxiques obscurs.
Comment instanciez-vous explicitement à nouveau un modèle de fonction? Et quelle est la syntaxe pour spécialiser partiellement un modèle qui a un argument modèle-modèle? Et ne me lancez pas sur la déclaration d'une fonction qui renvoie un pointeur vers un tableau de pointeurs vers des fonctions qui prennent des tableaux de pointeurs vers ...

Je soupçonne qu'il y a au plus une ou deux douzaines de personnes dans ce monde (s'il y en a) qui connaissent vraiment toute la syntaxe C ++ par cœur. Et ceux-ci gagnent probablement tous leur argent en écrivant les frontends du compilateur C ++.

sbi
la source
4

Je suis curieux de connaître la "syntaxe" de Google ici.

Mon soupçon (et ma crainte) est que nous ne parlons pas des paramètres pris par un appel (car la plupart des IDE vous y inviteront pour que vous ne les recherchiez pas sur Google), mais de véritables choses de type "comment faire X".

Les IDE ont rendu inutile de mémoriser des noms précis et des listes de paramètres de la manière qui était requise auparavant, ce qui a rendu beaucoup de gens un peu paresseux à ce sujet, mais ça va.

Mais quelque chose dont vous avez besoin pour Google? Pour moi, ce n'est généralement pas la syntaxe, c'est juste quelque chose que vous ne connaissez pas vraiment ou que vous ne connaissez que passablement.

Bien sûr, cela ne veut pas dire qu'il est mal de devoir utiliser Google - les langues peuvent être assez larges de nos jours et peu de gens savent tout, mais je dirais que si vous prétendez être compétent avec une langue, alors Google devrait être l'exception plutôt que la règle. .

Pour moi, sauf si vous faites quelque chose de relativement inhabituel, ou peut-être que vous êtes rouillé avec la langue après une période de faire quelque chose de différent, si vous prétendez "connaître" une langue, vous ne devriez pas googler plus de 10% des choses tout au plus, et cela devrait être vraiment très spécifique.

En référence à l'idée qu'il s'agit d'avoir une bonne mémoire, ce n'est pas vraiment. Il s'agit du genre de sensation instinctive que vous ressentez pour quelque chose que vous connaissez vraiment (plutôt que superficiellement). Je ne considère pas le fait que je sais cuisiner un Melanzane Parmigiana sans recette comme un signe que j'ai une bonne mémoire, c'est un signe que je comprends comment cuisiner ce plat - ce sont des choses subtilement différentes.

D'ailleurs, demandez-vous ceci, vous attendez-vous à aller dans une cuisine de restaurant et à trouver le chef qui regarde constamment un livre de cuisine? Ou pour voir le mécanicien travaillant sur votre voiture feuilleter le manuel Hayes pour ce modèle? Si je voyais l'une ou l'autre de ces choses, je serais assez inquiet de la qualité de cette personne.

Jon Hopkins
la source
Commentaire pour le vote négatif? Suis véritablement intéressé par ce qu'est le désaccord.
Jon Hopkins du
+1 - Bon appelsyntax != api
Jeremy Heiler
3

Mon opinion est non. Ce n'est pas la syntaxe qui est importante mais votre logique vers la résolution d'un problème ou la réalisation d'un objectif. Si vous supposez travailler sur plusieurs langues, c'est naturel que parfois vous ne vous souvenez pas de la syntaxe exacte.

Fraz Sundal
la source
0

La syntaxe n'est que la vue au-dessus de la sémantique sous-jacente du langage, car la programmation consiste à utiliser les briques sémantiques sous-jacentes pour construire quelque chose. Si vous ne comprenez pas les concepts fondamentaux utilisés par le langage, peu importe votre capacité à mémoriser la syntaxe, votre code sera un horrible gâchis. Comme quelqu'un l'a dit un jour, "Les bons programmeurs ont un interprète et un compilateur en tête." Remarquez qu'il n'y a aucune mention de syntaxe car ce n'est pas là que le vrai travail se produit.

davidk01
la source