Dans combien de langages de programmation un programmeur devrait-il être un expert? [fermé]

21

La plupart des programmeurs se spécialisent-ils sur une seule pile, laissant d'autres choses en place, ou sont-ils experts dans plusieurs langues en même temps? Si c'est plus d'un, combien est standard?

Par expert, je veux dire plus que simplement connaître la syntaxe d'un langage - un expert en sait assez sur les bibliothèques, les outils, les environnements et la syntaxe standard pour pouvoir écrire des programmes non triviaux sans avoir à chercher constamment des choses ou à lire des livres / tutoriels.

blueberryfields
la source
2
Je ne pense pas qu'il y ait de réponse objective (ou même subjective) à cette question. Plus vous êtes un expert, mieux c'est pour vous - plus vous avez de perspectives. Vouliez-vous dire "Dans combien de paradigmes de langage de programmation un programmeur devrait idéalement être un expert?"
talonx
6
Je ne suis pas d'accord avec votre définition d'expert. Pour moi, il est beaucoup moins important de rechercher ou non les fonctions de la bibliothèque que de savoir si vous pouvez ou non écrire du code idiomatique dans cette langue. Si vous pouvez penser dans une langue, vous êtes au moins près d'être un expert.
Chinmay Kanchi
1
Comment pensez-vous dans une langue, si vous devez rechercher la plupart de vos mots dans un dictionnaire pour savoir ce qu'ils signifient?
blueberryfields
1
@blueberryfields: La maîtrise d'une langue est bien plus que du vocabulaire et au-delà des bases, le vocabulaire n'en est qu'une petite partie. Ce n'est pas bon de savoir qu'une fonction existe si vous ne pouvez pas faire quelque chose d'intelligent avec cette connaissance. Il est beaucoup plus facile de simplement rechercher la fonction que de comprendre comment faire quelque chose d'intelligent avec elle. Je dirais que connaître suffisamment la documentation pour savoir rapidement où chercher une fonction donnée si elle existe est une connaissance suffisante de la bibliothèque. Après cela, vous vous souviendrez précisément de ceux que vous utilisez et vous vous souvenez vaguement de ceux que vous n'utilisez pas.
aaronasterling
2
@blueberryfields: Selon la langue / plate-forme , un peu de connaissance peut être une chose dangereuse . Ce que je veux dire est: si une personne prétend connaître par cœur de nombreuses fonctions de bibliothèque et n'a pas besoin de lire la documentation, je m'attendrais à ce que cette personne connaisse également toutes les valeurs de retour, les conditions d'exception et les pièges / mises en garde, à la Raymond Chen par cœur, et être capable d'écrire un livre et de donner une conférence à Microsoft / Google etc. Bref, la personne finit par faire de nombreuses petites erreurs amusantes.
rwong

Réponses:

33

Le principal avantage de connaître plusieurs langues n'est pas de les écrire directement. Toutes choses étant égales par ailleurs, je préfère travailler avec un programmeur C # qui connaît également C, Python et Lisp (par exemple) plutôt que celui qui n'a jamais piraté en C #. Ce n'est pas que connaître plus de langues, c'est mieux, c'est qu'être capable de penser à des problèmes à plusieurs niveaux et de multiples perspectives est vraiment utile.

Un langage de programmation qui ne change pas votre façon de penser la programmation ne vaut pas la peine d'être connu. -Alan Perlis

Il ne s'agit pas de cocher une autre langue ou de la mettre sur votre CV; il vous suffit de bien comprendre ses concepts sous-jacents pour pouvoir les programmer afin d'en tirer pleinement parti. Vous n'obtiendrez pas cela d'avoir une compréhension de base de la syntaxe.

La réponse la plus directe est "cela dépend".

Dans les grandes entreprises, vous êtes censé / autorisé à se spécialiser, mais comme je l'ai dit ci-dessus, je pense qu'il est toujours avantageux de comprendre les choses au-delà de votre seul outil préféré.

Dans les petits endroits, vous ne pouvez vraiment pas vous en tirer. Si rien d'autre, vous devez généralement maintenir votre application ainsi que la créer, et vous ne devriez probablement pas utiliser les mêmes langues pour parcourir les journaux / munging de données que pour créer réellement votre application. Je suppose que vous pourriez techniquement vous en tirer avec la connaissance d'une seule langue, mais l'avantage d'avoir un langage performant, fortement typé (ou au moins capable d'assertion), probablement compilé, fait le gros du travail et un langage de script pour la maintenance / les tâches de configuration / scripting semblent assez importantes. Je ne voudrais pas m'en passer, certainement.

Inaimathi
la source
3
oui, cela élargit également mon horizon - penser en plusieurs langues pour résoudre un problème
maz3tt
3
+1 à tout Inaimathi. Considérez un langage de programmation comme un outil. Oui, nous devons très bien connaître notre outil, mais lorsque vous ne savez utiliser qu'un marteau, tout peut ressembler à un clou
Liviu T.
14

Vous avez une question très intéressante:

Je ne pense pas qu'un programmeur devrait être un "expert" sur une langue spécifique. Je crois qu'en tant que programmeurs, nous sommes censés être des experts de la programmation, de la conception d'algorithmes, de la réflexion en étapes claires, mais un langage de programmation est quelque chose que vous venez d'apprendre.

Un "bon" programmeur, je veux dire par là qui gère les projets de développement sans effrayer derrière le classique "Je n'ai jamais travaillé avec ça avant", devrait apprendre une langue en moins de 5 jours ouvrables. Vous apprenez les meilleures pratiques, les outils et les bibliothèques principalement de 2 façons, 1: lecture et 2: travail. Soit vous rebondissez la tête contre le code, soit vous lisez un tas de livres.

Dans quelques années suivant la prémisse de "bons programmeurs écrivent juste du code", pas de code C # ou de code C ++ ou de code Java, vous vous rendrez compte qu'après avoir appris à développer des programmes, le langage et les technologies ne sont pas si importants. Bien sûr, vous saurez comment vous déplacer en C # mieux que PHP, mais si vous avez bien appris, vous découvrirez que vous traverserez Python si vous le devez.

J'espère que mes idées vous ressemblent!

David Conde
la source
+1 "les bons programmeurs écrivent juste du code ... le langage et les technologies ne sont pas si importants" - très vrai, cela prend beaucoup de temps pour arriver à cette conclusion.
Orbling du
Thks, et vous avez bien compris: 11 ans et ça compte ... :)
David Conde
3

Un, mais cela ne signifie pas que vous pouvez négliger les autres. Vous devez en savoir suffisamment pour justifier pourquoi vous ne les utilisez pas ou connaître vos limites, vous pouvez donc demander de l'aide le cas échéant.

JeffO
la source
3

Je pense que cela dépend probablement de votre personnalité, il y a des gens qui se délectent de creuser dans les coins et recoins d'un sujet, et il y en a d'autres qui aiment avoir une vue d'ensemble des choses. Vous devrez probablement déterminer quel type de personnalité vous êtes. Je ne mets pas l'un au-dessus de l'autre ont chacun leur utilité.

En tant que premier, vous serez l'expert, le gourou, le spécialiste. En tant que ce dernier, vous serez d'une utilisation plus générale et utilisable dans diverses situations, mais vous n'allez peut-être pas aussi profondément ou longtemps dans un sujet.

Harald Scheirich
la source
2

Un. Mais il vaut mieux être sacrément bon dans ce domaine.

Satanicpuppy
la source
2

Une

Celui devant toi.

Steven A. Lowe
la source
1
+1 Le nombre de langues dans lesquelles vous devez être expert est au minimum le nombre que vous devez utiliser. ;-)
Orbling
1

Comme l'a dit Joel dans le podcast SO, il vaut mieux connaître de nombreuses langues et savoir comment / quand utiliser la bonne langue pour la tâche. Il y a des choses que vous pouvez faire beaucoup plus rapidement dans une langue que dans une autre. Je pense qu'il serait bon de connaître un langage impératif et un langage fonctionnel par exemple. Souvent, l'apprentissage d'un langage plus difficile ou plus ésotérique forme votre cerveau à être un meilleur programmeur dans l'ensemble.

chiurox
la source
1

Aucun car il y a probablement des programmeurs qui ne seront experts dans aucun langage, mais ils apprécient l'environnement diversifié qu'ils ont et utiliseront divers langages selon les circonstances, car certains peuvent connaître quelques technologies côté serveur comme PHP, ASP.Net en C # .Net ou VB.Net, ou Java, quelques langages de script côté client comme JavaScript ou Flash, et cela sans entrer dans le matériel utilisé pour mettre en place les trucs Web ici.

En même temps, il peut y avoir des programmeurs qui sont des experts dans une douzaine de langues ou plus car c'est ce qu'ils étudient assez fidèlement la plupart du temps pour garder le maximum sur chaque langue.

JB King
la source
1

Premièrement, mais il doit être capable de lire de temps en temps des programmes du monde réel non triviaux qui sont écrits dans quelques autres langues. D'une certaine manière, celui dans lequel le programmeur est un expert est comme leur langue maternelle, ils y pensent, mais apprendre et parler d'autres langues est très bon en ce qu'il montre que le programmeur peut apprécier d'autres façons de penser. S'ils peuvent penser dans plus d'une langue aussi couramment que leur langue maternelle, c'est génial.

vpit3833
la source
1

C'est une bonne question, mais je ne pense pas qu'il existe une norme. Normalement, d'après ce que j'ai vu, les gens sont parfaitement experts dans un langage de haut niveau (C ++, Java, etc.) dans un environnement (windows / linux, mac, solaris). Ils connaissent à peu près un autre langage de haut niveau mais ne le comprennent pas pleinement. (par exemple C ++, les gens Java se connaissent à peu près). En gros, je veux dire qu'ils peuvent comparer les performances d'une tâche dans la langue dans laquelle ils sont experts et dans l'autre langue. Et puis ils sont modérés dans certains langages de script. (par exemple, les gens Linux connaissent bash, les gens Windows connaissent VBA, les gens web connaissent PHP).
Pour moi, ce qui compte, c'est la connaissance de base de l'algorithme plutôt que le langage. Si vos bases sont bonnes, il y a moins de chances de gâcher dans n'importe quelle langue.
Mais oui, il peut parfois être utile de savoir quelle langue pourrait être meilleure pour quelle tâche. Par exemple, le code suivant est beaucoup plus rapide en pascal qu'en C.

strcat (A, "Bonjour"); strcat (A, "WOrld"); strcat (A, "I say hi!");

En effet, Pascal enregistre la longueur de la chaîne au premier emplacement et il est donc facile de passer au dernier emplacement. En C, la terminaison de la chaîne est '\ 0' et vous devrez donc parcourir toute la chaîne pour l'opération strcat.

Manoj R
la source
0

Cela dépend de l'environnement dans lequel vous programmez. Lors d'un emploi précédent, la plupart de mon travail était en Perl; pendant mon séjour là-bas, je suis devenu très compétent. Maintenant, je travaille dans un endroit qui a des programmes hérités en trois langues dont je connais à peine la syntaxe; Je suis censé les entretenir en plus de mon travail sur de nouveaux projets. Je suis maintenant moins maître de n'importe quelle langue, mais je pense que j'ai une meilleure idée de la programmation . J'ai appris à penser de manière plus abstraite, à voir d'abord la situation dans son ensemble, puis à rechercher la syntaxe et les bibliothèques pour remplir les détails.

Bruce Alderman
la source