Vaut-il la peine d'être polyglotte en langages informatiques? [fermé]

14

Vous pouvez souvent entendre que les programmeurs doivent apprendre de nombreuses langues différentes pour s'améliorer. Je vais toujours à l'école et je n'ai pas une grande expérience en programmation (un peu plus d'un an). Mais ce qui était une noble intention d'améliorer les compétences en programmation s'est transformé en une sorte d'OCD: je sens que je ne me calmerai pas avant d'avoir appris tous les langages de programmation relativement connus.

Et voici la question elle-même: le fait d'être des langages de programmation polyglottes vous aidera-t-il réellement (et je ne veux pas dire "le programmeur devrait connaître au moins tous les paradigmes", je veux dire vraiment tous les langages dont vous entendez habituellement parler)? Quelqu'un at-il une expérience similaire? Cela aide-t-il à l'emploi / compétences / carrière? À quelle fréquence pouvez-vous appliquer ces compétences?

Anton Barkovsky
la source
3
Je pense que lorsque les gens suggèrent aux autres d'apprendre de nouvelles langues, c'est moins pour apprendre des langues que pour apprendre de nouveaux paradigmes. Mes deux langages principaux sont Python et C ++, l'apprentissage de Haskell a été une grande expérience pour moi, car cela m'oblige à penser différemment que je ne le ferais autrement.
Vitor Py
4
Connaître tous les paradigmes majeurs aide vraiment beaucoup . Être exposé au moins un peu à tous les langages intéressants peut quelque peu aider si vous concevez vos propres langages (et dès que vous entrez dans le paradigme de programmation orientée langage, vous êtes susceptible de le faire).
SK-logic
4
"Un langage qui n'affecte pas votre façon de penser la programmation, ne vaut pas la peine d'être connu." (Alan Perlis). Amen.
2
@Job, connaître 10 langages de programmation ne prend qu'une infime fraction d'un effort requis pour apprendre les bases d'un seul langage parlé.
SK-logic
2
@ SK-logic dépend. Je parie que je peux apprendre à un enfant de 6 ans à parler espagnol plus rapidement que je peux lui apprendre le python.
Raynos

Réponses:

10

"Le programmeur doit connaître au moins tous les paradigmes"

Qui aide

Je veux dire vraiment toutes les langues dont vous entendez habituellement parler

Ça n'aide pas. Bien qu'une fois que vous connaissez tous les paradigmes, vous pouvez apprendre une langue par semaine.

Il est tout simplement plus optimal de passer une semaine à apprendre cette langue lorsque vous en avez besoin .

Un bon programmeur est un programmeur paresseux

Note latérale:

Apprendre des langues courantes / populaires n'est pas aussi utile que d'apprendre "tous les paradigmes". Le premier ne couvre pas le second. Par exemple, l'apprentissage du Soi est incroyablement utile pour comprendre l'OO prototypique. Ce n'est pas un langage commun ni populaire, mais c'est beaucoup plus utile que d'apprendre le python quand vous connaissez déjà ruby.

Conception de la langue:

Connaître la plupart des langues est utile si vous écrivez / concevez une nouvelle langue. Il existe donc un solide cas d'utilisation, mais c'est une niche assez intéressante.

Ce que je vous recommande de faire à la place:

Lire le code complet 2 au moins 3 fois

Les langues vont et viennent à gauche et à droite selon "ce qui est populaire". La technologie devient obsolète après des mois ou des années en fonction de la courbe technologique. (Le Web déconseille la technologie au rythme de tous les 6 mois).

La technique de programmation et la théorie de l'informatique restent toujours les mêmes.

Raynos
la source
Mais il y a beaucoup de fonctionnalités mineures intéressantes dans les langues et même apprendre une nouvelle langue à partir d'un paradigme déjà connu peut vous
couper le
@AntoBarkowski c'est une fausse déclaration, ne comparez pas SmallTalk à d'autres langages OO. Java / C ++ / C # / etc. ne sont pas de vrais langages OO. Bien sûr, SmallTalk mérite d'être appris, mais ce n'est pas le même paradigme;)
Raynos
6
Les gens continuent de dire "vous pouvez apprendre une langue par semaine", mais ce n'est tout simplement pas vrai. Bien sûr, vous pourrez écrire du code syntaxiquement correct dans cette langue, mais il y a plus que cela. Par exemple, C # et Java sont très similaires syntaxiquement et sont tous deux des langages OO. Cependant, écrire du code Java en C # ne fait pas de vous un programmeur C #.
R0MANARMY
3
@ R0MANARMY "<bons programmeurs> peuvent apprendre une langue en une semaine". Un langage n'inclut pas les bibliothèques, les frameworks et les API. Ma définition de bons programmeurs pourrait cependant être très élevée.
Raynos
1
@ R0MANARMY, lequel de ces minuscules bits sémantiques que vous avez mentionnés peut prendre plus d'une heure à comprendre?
SK-logic
4

Il ne s'agit pas de savoir coder dans une multitude de langages, il s'agit, comme vous le dites, de paradigmes. Plus vous connaissez d'options, mieux c'est. La connaissance de plusieurs langues aide certainement, mais si vous continuez à apprendre les mêmes types de langues, vous serez rapidement dans une impasse.

La clé est de savoir quelle langue / système est le meilleur pour implémenter une partie de votre projet. Même si vous avez choisi une langue principale (comme le font la plupart des projets), vous aurez toujours toutes sortes d'outils, de scripts, d'automatisation et de support de construction qui doivent être écrits. Habituellement, une variété d'autres langues ou outils sont meilleurs que votre langue principale.

Juste pour clarifier, je trouve idiot d'essayer d'apprendre toutes les langues dont vous entendez parler: il y en a des centaines et souvent ce ne sont que de légères variations sur d'autres langues.

edA-qa mort-ora-y
la source
3

À mon humble avis, ce n'est pas le cas. D'abord parce que vous ne pouvez pas apprendre une langue en moins d'un an. Il faut 2 jours pour pouvoir y écrire du code, mais cela prend beaucoup d'expérience pour écrire du code fluide et bien formé pour la langue donnée. Pourquoi GC fonctionne comme il le fait, où allouer de la mémoire, quelles constructions sont plus rapides, comment concaténer correctement les chaînes, quels sont les coins dangereux du langage, etc.

J'écris de terribles codes Java / .NET en tant que développeur C ++, comme beaucoup de développeurs Java écrivent de terribles codes C ++.

La meilleure partie de l'apprentissage d'autres langues est que vous apprenez de nouveaux paradigmes et possédez peut-être un meilleur outil pour un problème concret. Dites - vous avez besoin d'une application graphique très rapide et non publique, .NET y est irremplaçable.

Mais apprendre un langage afin de ne pas utiliser de structures dans .NET, ou de ne pas divulguer tous les objets en C ++, prend beaucoup de temps. Je pense qu'il vaut mieux le dépenser pour apprendre les principes de conception, les plateformes et la langue de votre choix.

Mais ce n'est que mon avis.

Codeur
la source
2
"parce qu'on ne peut pas apprendre une langue en moins d'un an" Faux. Ne confondez pas l'apprentissage d'une langue avec l'apprentissage des cadres populaires qu'elle expose. Ajoutez également des "techniques de programmation générales" à la liste à la fin.
Raynos
@Raynos: Je pensais que c'était de cela qu'il parlait.
Steven Jeuris
1
Ma façon préférée de jouer avec un nouveau langage consiste à implémenter un compilateur pour un sous-ensemble décent de celui-ci. Au total, il faut de 2 à 4 heures pour comprendre la langue et être capable d'identifier et de lui voler les meilleures fonctionnalités. Pas presque un an, pas même un jour.
SK-logic
1
Eh bien, si vous rejoigniez un grand projet C ++ et que vous veniez à une interview avec des mots comme "Je programme en Java depuis 10 ans, mais j'ai passé les 6 derniers mois sur C ++, donc je connais le langage". Je doute que vous obteniez un poste de développeur senior hautement rémunéré pour ce travail. Donc, non, je pense toujours que vous ne pouvez pas apprendre une langue en un mois environ.
Coder
2
@Coder, si vous rejoigniez un grand projet C ++ et veniez à une interview avec des mots comme "Je programme en 20 langues depuis 10 ans, y compris C ++", vous auriez probablement un emploi.
SK-logic
2

Il est pas pratique de savoir , mais il peut être très utile de savoir au sujet de eux. Ce que je veux dire par là, c'est que lorsque vous rencontrez un nouveau problème, vous pouvez dire: «Je me souviens vaguement que [une autre langue] avait une manière supérieure de résoudre des problèmes comme celui-ci. Je devrais chercher cela.

Karl Bielefeldt
la source
Je trouve que les podcasts tels que SE Radio sont bons pour ça. Ils sont souvent à la bonne longueur d'écoute sur un trajet au travail et vous pouvez apprendre beaucoup de cette façon. Mais c'est de la forme Pourquoi est <X> intéressant.
Zachary K
1

Vous aideriez davantage votre carrière en développant des connaissances de domaine puis en apprenant de nombreux langages de programmation. Sans oublier que vous allez avoir besoin d'apprendre des outils supplémentaires pour aller avec, comme comment utiliser un profileur dans votre langue, même pour le débogueur, le meilleur cadre GUI et comment programmer rapidement avec lui, quelles bibliothèques tierces communes existent avec des compromis et idiomes spécifiques à la langue.

Il est également plus sage d'apprendre à faire plus de choses plutôt que de nombreuses façons de faire la même chose.

Peter Smith
la source
1

J'ai travaillé sur plusieurs systèmes où les composants étaient écrits en plusieurs langues (le pire contrevenant m'obligeait à livrer du code écrit en Ada 83, C, Fortran 77, SQL et DCL, alors que mon dernier travail m'obligeait à livrer du code C ++ et Java ). Donc, oui, il y a des cas concrets où vous devez connaître suffisamment plusieurs langues pour être productif (productif! = Compétent; vous n'allez pas être un expert approfondi en C ++ et Java et ... à moins que vous suis un monstre).

Au-delà de cela, le point de prendre le temps d'apprendre plusieurs langues est d'aider à séparer les concepts de la mise en œuvre . Pour moi, la POO n'a commencé à avoir du sens que lorsque j'avais travaillé avec plusieurs POO. De plus, à un moment donné de votre carrière, vous devrez rapidement changer de vitesse et commencer à travailler sur quelque chose de totalement nouveau et inconnu; prendre un certain temps maintenant pour aller au-delà de ce que vous devez savoir aidera à faciliter cette transition lorsqu'elle se produira.

John Bode
la source
1

Je pense que vous seriez mieux servi d'apprendre quelques langues différentes, puis au moins une en profondeur avant de vous lancer dans la nécessité d'apprendre toutes les langues possibles. Une fois que vous avez un minimum de largeur, la profondeur devient vraiment importante pour votre progression en tant que développeur. J'aurais vu quelqu'un avec de la profondeur dans une ou deux langues et une poignée de quelques autres que quelqu'un avec une poignée de tout. Approfondir, c'est comme apprendre un autre paradigme, cela changera votre façon de penser la programmation et cela ouvrira des portes à des projets passionnants vraiment complexes.

HLGEM
la source
0

C'est comme apprendre à parler plusieurs langues. Les apprendre tous au point d'être utiles est presque impossible. Restez fidèle à ceux que vous êtes susceptible d'utiliser et vous serez mieux. Vous pouvez très bien apprendre C ++, C # et Java, mais essayer de presser Perl, Python, VB (pas VB.NET), Ruby et JavaScript à un niveau professionnel en même temps est juste stupide. Il n'y a pas assez d'heures dans la journée pour maintenir vos compétences à niveau en une seule fois.

Christopher Bibbs
la source