72 votes

Connaissez-vous vraiment vos langages de programmation ?

Je suis souvent étonné de voir comment peu certains de mes collègues le savent ou se soucient de leur métier. Quelque chose qui sans cesse me frustre, c'est que les gens ne veulent pas en savoir plus que nécessaire sur les langages de programmation qu'ils utilisent chaque jour.

De nombreux programmeurs semblent contenus à apprendre quelques pidgin sous-dialecte, et le bâton avec qui. S'ils voient un mot-clé ou à construire, qu'ils ne connaissent pas, ils vont se plaindre que le code est "difficile."

Que penseriez-vous d'un ingénieur civil qui a évité de calcul, parce qu'il avait "tous ceux délicat symboles mathématiques?"

Je ne dis pas que nous devons tous devenir des "langue des avocats." Mais si vous faites vos vivant en tant que programmeur, et la prétention d'être un utilisateur compétent de la langue X, puis je pense qu'au minimum, vous devriez savoir ce qui suit:

  • les mots clés de la langue et de ce qu'ils font
  • la validité de formes syntaxiques
  • le fonctionnement de la mémoire, les fichiers et les autres ressources du système d'exploitation sont gérés
  • où la langue officielle de la spécification et de la bibliothèque de référence pour la langue est

Le dernier est celui qui obtient vraiment moi. De nombreux programmeurs semblent n'avoir aucune idée qu'il y a un "cahier des charges" ou "standard" pour une langue donnée. J'ai encore à parler à des gens qui pensent que Microsoft a inventé le C++, et que si un programme ne compile pas sous VC6, il n'est pas valide d'un programme C++.

Les programmeurs de ces jours, il est facile quand il s'agit de l'obtention de spécifications. Nouveaux langages comme C#, Java, Python, Ruby, etc. tous ont leur documentation disponible gratuitement à partir du site web du commerçant. Les anciennes langues et les plates-formes ont souvent des normes contrôlées par des organismes de normalisation que la demande de paiement pour les specs, mais même cela ne devrait pas être un moyen de dissuasion: la norme C++ est disponible à partir de l'ISO pour 30 $(et pourquoi suis-je la seule personne que je connais qui a une copie?).

La programmation est assez dur, même lorsque vous faites la connaissance de la langue. Si vous ne le faites pas, je ne vois pas comment vous avez une chance.

De quoi faire le reste vous en pensez? Suis-je en droit, ou devrions-nous tous être contenu avec le niveau type de langage de programmation de l'expertise?


Mise à jour: Plusieurs commentaires ici. Merci. Un couple de personnes de frapper sur quelque chose que je n'avais pas pensé: Ce qui ne m'irrite n'est pas le manque de connaissances, mais le manque de curiosité et de volonté d'apprendre. Il semble que certaines personnes n'ont pas de temps à peaufiner leur art, mais ils ont beaucoup de temps à écrire beaucoup de code incorrect.

Je ne m'attends pas les gens à être en mesure de réciter une liste de mots-clés ou EBNF expressions, ou passer leur temps libre de la navigation à travers les specs, mais je ne m'attends à ce que quand ils voient un peu de code, ils doivent avoir une petite idée de ce qu'il fait.

Peu de gens ont une connaissance complète de tous les coins sombres de leur langue ou de la plate-forme, mais tout le monde devrait au moins savoir assez que quand ils voient quelque chose de familier, ils sauront comment faire pour obtenir toute l'information supplémentaire dont ils ont besoin pour comprendre. Il doit être vu comme une occasion d'apprendre quelque chose de nouveau, pas une occasion de se plaindre du "langage des avocats".

30voto

Peter Meyer Points 11163

Kristopher, j'admire votre passion autour de cette question et faire preuve d'empathie. J'ai tendance à être plus en ligne avec Rob pensée, en particulier l'utilisation de Google/Internet pour accéder à des informations sur votre langue en cas de besoin.

Peut-être d'une manière tangentielle de la pensée par rapport à cette question, je me sens en général la plupart des programmeurs juniors sont hors de contact avec les fondements de la façon dont les choses fonctionnent avec des langages, environnements, de protocoles, de même les ordinateurs en général-vous le nom. Je pense que les fondements de la connaissance est essentielle pour la conception de bien remplir les systèmes et écrire du bon code, et remonte à la compréhension de pourquoi quelque chose est fait d'une certaine manière, par opposition à seulement comment il est fait.

Je pense que c'est devenu plus facile depuis Visual Basic entrés dans l'ère de développement RAD pour les masses à vis les choses plus. C'était une critique événement important dans le développement de logiciel, pas de doute, mais je pense que ce chemin d'évolution, tout en faisant de bons développeurs plus productif, permet aux autres d'être assez productive, sans nécessairement comprendre ce qu'ils font. Suis-je logique?

J'ai toujours été croyant que si quelqu'un était un étudiant en informatique, alors qu'ils devraient être en mesure de code dans n'importe quelle langue et à comprendre l'importance de connaître les nuances de différentes langues. Je pense que ce pourrait être peut-être plus important que de connaître tous les mots clés et les formes syntaxiques (Rob exception notable).

Donc, moi aussi, j'ai une frustration similaire avec des programmeurs qui n'est pas tout à fait ce qui se passe réellement. Je pourrais ajouter à votre liste d'éléments:

  • Combien de ces programmeurs ne sais pas comment le HTTP fonctionne dans sa forme la plus simple? Combien d'entre eux ne savent pas que vous pouvez obtenir RFC en ligne qui spécifient l'ensemble de ces protocoles et rouler vos propres clients et les serveurs, et les lecteurs de courrier, etc?
  • Combien de programmeurs de ne pas comprendre pourquoi il est important de réduire votre base de données des appels ou d'obtenir autant de données que vous avez besoin dans un aller-retour à la base de données et, idéalement, pas plus que ce qui est nécessaire? (Ou pour toute d'appels à distance!)

Ce sont deux de mes bêtes noires. Je suis sûr qu'il ya plus.

24voto

rjzii Points 8979

Depuis c'est un peu plus de question / coup de gueule, je vais casser un peu les choses.

Quels sont tous les mots clés de la langue?

Je pense que vous serait difficile de trouver quelqu'un qui peut le nom de chaque mot-clé et ce qu'ils signifient pour toutes les langues qu'ils travaillent avec sur le dessus de leur tête. Cependant, je pense que si vous vous spécialisez dans une langue donnée (par exemple, Un programmeur C++), ce devrait être le cas. Dans le cas de quelqu'un qui travaille avec plusieurs langues sur une base quotidienne, sachant que tous les les principaux, et d'être rapidement en mesure de trouver de la documentation sur le reste d'entre eux devrait être suffisant.

Ce sont tous les valides formes syntaxiques?

Dépend probablement sur la langue que vous travaillez avec - si vous travaillez avec Perl, où il y a plus d'une façon de le faire, puis je me maintenir contre tous ceux à ne pas savoir quoi que ce soit. Cependant, c'est également un autre domaine où je pense qu'un bon programmeur doit connaître les principales formes syntaxiques et être capable de regarder le reste d'entre eux en cas de besoin. À un strict minimum, ils ne devraient pas penser qu'il n'est pas valide seulement car il ne respecte pas la syntaxe la plus commune.

Comment sont la mémoire, les fichiers et les autres ressources du système d'exploitation est-il géré?

C'est un domaine où je suis d'accord avec vous je pense que vous devriez avoir une bonne compréhension de la façon dont ces choses fonctionnent dans la langue que vous travaillez avec. Quand j'ai commencé à travailler avec ASP.NET j'ai rencontré un certain nombre de bugs dans mes applications qui ont été entièrement attribuable à moi de ne pas comprendre pleinement la page du cycle de vie; cependant, une fois que j'ai pris le temps de la lire, j'ai été en mesure de mieux comprendre les choses. Aussi, cela devient encore plus important dans certains environnements où un algorithme peut ne pas être aussi rapide que vous pensé qu'il pourrait être en raison de la façon dont le système est stocker des tableaux.

Où est la langue officielle de la spécification et de la bibliothèque de référence pour la langue?

En ce jour de l'âge, avec tellement d'informations qu'une recherche Google, je serait susceptible de lever un sourcil à quelqu'un qui était un programmeur et ne pouvait pas trouver cette information.

Comme pour la plus grande partie de votre question, dans certains cas, je ne pense pas que vous devriez être entièrement contenu avec un peu de la langue de programmation de l'expertise; toutefois, dans le cas de certains jeunes développeurs je pense que c'est juste quelque chose que vous avez à attendre, et peut-être même leur mentor pour développer cette expertise. Une fois que vous commencez à obtenir plus d'expérience sous votre ceinture de bien et de faire la transition loin d'être un développeur junior, vous perdez une partie de cette attente, et en effet, vous devriez être en mesure de s'attendre à un développeur expérimenté pour en savoir plus de ces choses. En tant que tel, je pense que le plus expérimenté, vous êtes en tant que développeur, le plus que l'on attend de vous en termes de connaissances et il est raisonnable pour un développeur expérimenté pour avoir un bon, mais pas nécessairement parfaite, la compréhension de toutes ces choses.

24voto

bruceatk Points 4226

Ayant programmé depuis plus de 28 ans et dans de nombreux de nombreuses langues, je ne crois pas qu'il y a tout ce que je savais que chaque mot-clé (peut-être que C et de l'Action) ou de toutes les formes syntaxiques. Je suis vraiment très forte dans l'environnement que je travaille sur (Windows) mais il y a beaucoup de choses que je ne sais pas maintenant à propos de la gestion de la mémoire, des fichiers, des OS et des ressources en général.

Je dirais que la meilleure façon de voir les choses n'est pas ce qu'ils savent, mais comment ils se comportent quand ils ne savent pas quelque chose. Si votre co-travailleurs de l'abandonner et de se plaindre, alors peut-être il est certainement temps de chercher un autre emploi. Si ils font de leur mieux pour apprendre et ensuite demander des conseils/une aide, de les couper un peu de mou et de leur venir en aide. Vous allez apprendre en faisant cela et ils feront de même.

9voto

Mark Cidade Points 53945

J'ai l'habitude d'essayer d'apprendre tout sur une langue que j'utilise régulièrement, comme C#, Visual Basic, ou JavaScript. Mais ensuite, il y a des langues que je ne l'utilise pas souvent, comme le Python, dont je n'ai probablement pas tout savoir. J'ai toujours essayer d'en savoir au moins ce qu'il est possible de faire avec la langue donc si jamais j'ai besoin de faire quelque chose que je ne connais pas la syntaxe ou de l'idiome, je vais savoir que ça existe et qu'elle le cherche.

Mais le strict minimum pour toutes les langues sont des déclarations, des définitions d'opération, l'opération de l'invocation, les types les plus courants, à condition de construire et de boucle de construire.

Si vous savez seulement que bien, mais savoir tout ce qu'il ya à savoir sur la programmation de la bibliothèque se soucient de vous, alors vous pouvez probablement le faire tout autant dans la bibliothèque de domaine comme quelqu'un qui sait tout sur une langue et la meilleure façon de mettre en œuvre des algorithmes différents, mais sait rien à propos de la bibliothèque.

Jetez un oeil à Java: la plupart des programmeurs Java ne connaissez probablement pas ou se soucient beaucoup de génériques, mais ils peuvent faire beaucoup de choses avec Java bibliothèque de classes ainsi que de connaître les nombreuses infrastructures à leur disposition.

9voto

Oddthinking Points 8946

Ce qui est totalement erroné de la communauté à faire ce commentaire, mais je vais essayer de toute façon.

Même si vous êtes frustré avec ces codeurs pour refuser de faire un effort pour apprendre les détails de votre langage de programmation favori, ils sont frustré avec vous pour votre perdre de temps en devenant trop-expert, ce qui est inutile, arcana.

Alors que l'apprentissage de la langue peut en effet faire votre code de 20% inférieur ou 20% plus rapide (Attention: il est composé de chiffres!), il y a un coût d'opportunité dans l'apprentissage de ces détails.

Tandis que vous lisez les normes ISO, vos collègues peuvent être l'apprentissage des concepts plus généraux qui les aideront tout au long de leur programmation de carrière. J'ai perdu la trace du nombre de langages de programmation et systèmes d'exploitation, j'ai produit code pour. Certains d'entre eux, j'étais une langue avocat. La graisse beaucoup de bien en connaître les détails d'un langage de programmation, je n'ai pas utilisé de 15 ans ne me maintenant. Alors que le temps que j'ai consacré à l'apprentissage des compétences plus générales de continuer à verser des dividendes: par exemple, l'Orientation de l'Objet, écriture claire, et comment utiliser une feuille de calcul.

Vos collègues peuvent être d'apprendre à faire de meilleures estimations. De nombreux gestionnaires de projet préfèrent un rythme plus lent programmeur qui frapper des cibles avec plus de précision.

Vos collègues peuvent être d'apprendre à faire une interface graphique plus intuitive. De nombreux clients préfèrent un programme qui fait sens pour eux, que l'un est plus rapide.

Vos collègues peuvent être d'apprendre à interagir les uns avec les autres. De nombreux membres de l'équipe préfèrent un sympathique collègue qu'un impitoyablement efficace.

Vos collègues peut être passer plus de temps avec leurs proches. De nombreuses familles préfèrent un membre de la famille attentionné qu'un seul qui peut le code de 20% plus vite.

Je ne prétends pas tout le monde devrait devenir un généraliste. (Il est bon d'avoir une langue-l'avocat de l'équipe de consulter, si nécessaire.) Toutefois, ni tout le monde devrait devenir un spécialiste et certainement ils ne doivent pas tous être spécialisées dans la même Langue-De-La-Journée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X