Comment gérer le besoin de connaître plusieurs langages de programmation? [fermé]

25

Je suis un programmeur relativement jeune. J'ai 23 ans et je programme professionnellement depuis environ 5 ans.

Comme la plupart des programmeurs, j'ai commencé avec C, j'ai appris l'assemblage x86 pour le plaisir, puis j'ai trouvé le C ++ qui s'est avéré être ma plus grande passion dans le monde de la programmation. La programmation avec C et C ++ vous oblige à apprendre des API, des bibliothèques et des frameworks spécifiques à la plate-forme, chacun nécessite une étude et une expérimentation constantes. Après un certain temps, j'ai dû passer à Java et C # car la demande sur ma région concerne essentiellement ces langages. Avec ces langues, je suis entré dans le monde du développement web et j'ai ensuite dû apprendre le javascript. Développer pour le .NET Framework était passionnant au début, mais je ressentais constamment que je me retrouvais coincé par Microsoft (et bien sûr, le .NET Framework m'éloignait de Linux). Pour le développement de bureau, je pouvais faire à peu près tout ce que je faisais avec .NET en utilisant C ++ avec Qt mais pour le développement Web, je devais chercher une alternative. J'ai rapidement trouvé Django, puis j'ai commencé à apprendre Python pour pouvoir utiliser Django. Aujourd'hui, j'apprends le développement iOS avec Objective-C.

Jusqu'à présent, il était assez facile d'apprendre tous ces langages (le C ++ m'a bien formé), mais je crains qu'un jour je ne puisse pas les suivre tous. Juste pour clarifier. Les seuls langages que j'ai appris car je devais le faire étaient C # et Java. Toutes les autres que j'ai apprises pour le plaisir, parce que j'aime programmer et apprendre de nouvelles choses. J'aime aussi garder mes compétences pointues sur le développement de bureau, web et mobile.

Ma question est: comment gardez-vous une trace de plusieurs langages de programmation? (Je veux dire, gardez une trace des changements apportés à ces langages et gardez vos compétences pointues) et: Existe-t-il suffisamment de langages de programmation?

Raphael
la source
20
Comment osez-vous même penser à ne pas apprendre plus de langues!?
Mateen Ulhaq
9
"Chaque fois que j'apprends quelque chose de nouveau, cela me fait sortir des vieilles choses de mon cerveau. Comme cette fois, j'ai suivi un cours de vinification à domicile et j'ai oublié comment conduire."
Dean Harding
1
La programmation ne consiste pas à maîtriser la syntaxe du langage X, la programmation consiste à apprendre à programmer. Apprenez à choisir la bonne langue pour le bon travail, puis une fois que vous avez choisi cette langue, apprenez l'API et la syntaxe, puis faites ce que vous faites dans n'importe quelle autre langue ... PROGRAMME!
Chris
6
certaines langues que vous n'oublierez jamais; d'autres que vous avez hâte d'oublier
Steven A. Lowe
3
Vous êtes principalement amateur de POO. Vous devriez explorer d'autres langages de paradigme comme le langage fonctionnel Haskell, puis penser à garder une trace.
Vigneshwaran

Réponses:

27

Personnellement, je pense que "garder une trace" des langues est une perte de temps. Il est toujours bon de choisir de nouveaux langages populaires, mais une fois que vous avez un langage populaire et bien établi comme C ++, Python, etc. sous votre ceinture, vous ne devriez pas vous inquiéter. Si vous êtes un bon programmeur, la langue n'est qu'un ensemble de mots clés.

Il n'y a que tant de paradigmes substantiels là-bas; peut-être que les vieux chiens ne peuvent pas apprendre de nouveaux trucs, mais il n'y a vraiment pas beaucoup de nouveaux trucs. Si vous craignez que votre langage fonctionnel / orienté objet / événementiel / quel que soit le langage ne dure pas, apprenez un autre paradigme; mais ne vous inquiétez pas trop du choix exact de la langue.

Et que se passe-t-il si vous oubliez un ou deux mots clés après vous être éloigné d'une langue pendant un certain temps? C'est pourquoi nous avons Google.

Matthew Read
la source
2
Ne laissez pas votre patron voir. :) Ou un non-programmeur. Ils penseront que la programmation est si facile, et pourquoi un programmeur serait payé pour un travail aussi simple.
Mateen Ulhaq
4
Je pense que cela est vrai si vous restez dans un paradigme spécifique. Par exemple, OO / impératif. Il tombe en panne si vous regardez une langue qui n'est pas impérative.
Richard
@ Richard: Je sais que vous ne voulez pas suggérer que OO implique nécessairement impératif, non?
Frank Shearar
@Frank: Oui, plutôt qu'un groupe de langages très couramment utilisé (Java, C #, C ++) qui sont les deux ...
Richard
1
"(a) la langue n'est qu'un ensemble de mots clés" - je ne suis pas d'accord. Chaque plateforme a des façons de faire locales et idiomatiques. Être un bon programmeur sur la plateforme X implique bien plus que de la syntaxe. Par exemple, un excellent code JavaScript ne se produira pas si je suppose que mon état d'esprit .NET OO est tout ce dont j'ai besoin.
Bevan
54

Je crains qu'un jour je ne puisse pas tous les suivre.

Après 30 ans, permettez-moi de dire ceci.

Oui, vous perdez la trace.

Alors?

C'est pourquoi ils rédigent des manuels de référence.

S.Lott
la source
14

Le véritable avantage de l'apprentissage de plusieurs langues réside dans les différents paradigmes et modèles et modes de pensée qu'ils vous accordent.

Votre connaissance de Java et de son héritage unique aurait dû façonner votre vision du C ++ et de son héritage multiple. Votre connaissance de Java et de son GC aurait dû façonner votre vision du C ++ et de sa mémoire gérée par l'utilisateur. Votre connaissance de C ++ et de ses modèles aurait dû façonner votre vision de Java et de ses génériques. Bien entendu, toutes ces relations fonctionnent dans les deux sens.

Si vous n'avez jamais écrit dans un langage fonctionnel, vous n'apprécierez pas ce que la <algorithm>bibliothèque de C ++ essaie de faire et ce qu'il manque en n'ayant pas de fonctions citoyennes de première classe (avant C ++ 11 au moins). Si vous n'avez jamais écrit dans une langue typée dynamiquement, vous ne réaliserez pas les limites de ce que la frappe statique peut et ne peut pas faire pour vous. Si vous n'avez jamais écrit dans une langue sans état mutable, vous ne comprendrez pas les sanctions que cet état mutable vous impose.

Apprendre d'autres langues, c'est bien, car cela vous permet de mieux comprendre vos langues existantes. À cet égard, vous n'avez pas à vous soucier de rester à jour, car les concepts d'une langue n'ont pas tendance à changer rapidement - ou pas du tout.

Philip Potter
la source
8
+1 Il ne s'agit pas seulement d'apprendre plusieurs langues (l'apprentissage des langues est la partie la plus facile). Apprendre différents paradigmes est ce qui est important. Personnellement, je pense qu'au niveau universitaire, les étudiants devraient être exposés à ces différents paradigmes, c'est un triste état de choses quand il y a tellement d'universités "McJava (tm)" ces jours-ci (veuillez noter que je ne dis pas que Java est mauvais, disons, lire le contexte complet s'il vous plaît.). :(
Darknight
8

Ma question est: comment gardez-vous une trace de plusieurs langages de programmation? (Je veux dire, gardez une trace des changements dans ces langues et gardez vos compétences pointues)

Écrivez le code. Si vous souhaitez suivre les mises à jour de la langue, continuez simplement à écrire du code.

Existe-t-il suffisamment de langages de programmation?

L'apprentissage de plusieurs langues vous aide à vous faire une idée d'autres langues que vous n'auriez pas autrement. L'apprentissage de nombreuses langues vous offre une perspective globale étendue sur le calcul en général.

Mais il est impossible d'apprendre toutes les langues et toutes les langues n'ont pas de valeur, ni pour vous ni pour votre travail. Les langues ésotériques ne valent pas la peine d'être apprises, sauf pour leur valeur intellectuelle inhérente, car elles n'ont pas de réelle utilité pratique.

Donc non, il n'y a pas de "assez". Mais il existe certainement une chose telle que "cela ne vaut pas la peine".

gris-fondu
la source
4

Ne vous inquiétez que de suivre les langues que vous pensez utiliser ou utilisez actuellement. L'apprentissage de nouvelles langues est utile, mais il n'y a aucune raison d'en savoir plus sur des changements plus petits dans une langue si vous ne finissez jamais par l'utiliser à nouveau.

jzd
la source
4

N'arrêtez jamais d'apprendre; mais réalisez que vous ne savez jamais tout sur tout. Vous aurez toujours des environnements où vous êtes plus fluide. Ne vous inquiétez pas, continuez à vous amuser.

Javier
la source
Certes, n'arrêtez jamais d'apprendre, mais FOCUS. Tout apprendre, c'est comme courir comme un poulet sans tête fu **, et à la fin vous êtes bon dans RIEN.
Slawek
@Slawek: "en fin de compte, vous êtes bon dans RIEN exactement". Presque. Une meilleure version pourrait être: Au final, les choses dans lesquelles vous étiez bon ont été remplacées par une nouvelle technologie dont vous n'avez aucune idée.
S.Lott
3

Vous avez suffisamment de langages de programmation lorsque vous sentez que vous avez terminé. La connaissance de plusieurs langues est excellente, mais je ne sais pas si la connaissance de 12 lorsque vous utilisez 2 au travail offre plus qu'un avantage contextuel. Il n'y a rien de mal à connaître plus de langues, mais le reste du temps, vous feriez probablement mieux d'améliorer vos connaissances dans les langues et disciplines que vous avez le plus besoin d'utiliser. Comme les langues parlées, vous voulez être plus compétent dans celles qui apportent de la valeur à votre vie.

Je me souviens de plusieurs programmeurs qui se vantaient de connaître plusieurs langues mais d'écrire du code de la même manière dans chacun, et ce n'est pas nécessairement une bonne chose.

De plus, à mesure que vous vieillissez, le temps vous aidera à vous faire une idée (j'ai beaucoup moins de temps pour étudier à part que je ne le faisais avant de me marier, avoir des enfants, devenir écrivain indépendant, commencer à traiter des problèmes de carrière et ma mémoire a commencé à aller vers le sud. Doh!).

Bernard Dy
la source
3

J'ai appris de nombreuses langues au cours des 25 dernières années et plus. Après un certain temps, certains deviennent moins utiles et se font oublier (Perl). Ne parlons même pas du montage 6502, Apple BASIC, Lisp, Prolog, Pascal, SPAN, FORTRAN ...

D'autres langues ont disparu, puis j'ai dû réapprendre (Python) après 10 ans. Il était inutile de suivre Python, il ne faut pas longtemps pour se mettre à jour - Google / SO est votre ami.

Au final, une langue n'est qu'un outil. Vous l'utilisez pour le travail à accomplir. La compétence est de savoir quoi utiliser quand. Pour être honnête, une fois que j'ai commencé à utiliser C ++, je n'ai plus jamais voulu faire de codage C. Quand j'ai appris le C #, je n'ai jamais voulu recommencer le C ++.

Dave
la source
3
les rapports sur la mort de Perl sont grandement exagérés.
Philip Potter
Ce n'est rien de personnel contre Perl. J'avais l'habitude de travailler sur Unix, donc Perl était mon arme de choix. J'ai construit de très grosses applications technologiques en l'utilisant. Ensuite, je suis passé à Windows. Maintenant, je suis de retour mais l'application que je développe est en Python, il semble donc inutile d'utiliser Perl et Python.
Dave
1

À mon avis, la programmation ne concerne pas uniquement la langue que vous utilisez. La programmation est une façon de penser. Il faut être un bon analyste pour écrire un bon logiciel, le langage de programmation ne vous aidera qu'à construire votre logiciel. Bien sûr, chaque langue a ses défauts ou ses avantages, mais pour construire un bon logiciel, vous devez penser en tant que développeur. Les gens qui ne pensent pas comme un développeur ne créeront pas de bons logiciels, quelle que soit la qualité du langage qu'ils utilisent.

Je fais toujours la comparaison avec quelqu'un qui construit une maison, il ne se soucie pas de son marteau, tant qu'il en a un, il peut construire la maison. Il peut avoir besoin de se familiariser avec le marteau (par exemple le poids), mais une fois qu'il connaît l'outil, il peut construire une maison fantastique. S'habituer à l'outil n'est pas si difficile car la plupart des "versions" de l'outil sont assez similaires (cela vaut pour les marteaux, mais aussi pour les langages de développement).

Pendant mes études, nous utilisions Java (avant, j'utilisais ASP et VB5), mais après avoir obtenu mon diplôme (il y a environ 5 à 6 ans), j'ai appris à utiliser C # (et Javascript), un changement de poste m'a "obligé" à utiliser VB.NET, le travail suivant m'a permis d'utiliser les deux langages .NET (ce que j'ai fait) et a même "permis" de me permettre d'utiliser Java à nouveau (pour certains outils hérités qu'ils utilisaient). Aujourd'hui, je travaille avec X ++ (langage de Microsoft Dynamics AX), mais je fais encore du développement en .NET. Ce ne sont que les langues avec lesquelles je travaille dans mon travail quotidien, j'aime aussi explorer de nouvelles langues comme F #, Ruby, etc. L'apprentissage de ces nouvelles langues n'a pris que quelques jours (juste pour comprendre la syntaxe) et le reste du temps que vous jouez avec la langue et apprenez progressivement.

Il y a tellement de langues, mais j'ai tendance à me concentrer uniquement sur les langues qui sont vraiment différentes (comme F #). Je vois l'apprentissage de nouveaux langages comme intéressant et amusant, donc pour l'instant je vais bien, apprendre un nouveau langage est assez facile (au moins si la pensée est la même, C #, VB, Java sont égaux, mais par exemple F # est assez différent) et je ne m'inquiète pas trop.

Gertjan
la source
1

j'ai commencé ma carrière il y a 5 ans sur vb6, je suis passé à php, puis à java puis à .net. actuellement pour la dernière année travaillant sur asp.net mvc2 et essaye aussi ma main sur mvc3

le secret est qu'il ne faut jamais devenir obsolète, vous ne pouvez pas tout maîtriser dans le monde, alors ne vous inquiétez pas

maz3tt
la source
1

Je pense que c'est une question de carrière. Par conséquent, vous ne devez tenir compte des personnes qui vous embauchent que si vous connaissez un ensemble spécifique d'outils. Peut-être que cela disqualifie le travail, mais peut-être pas. Apprenez donc de nouvelles choses superficiellement. Mais continuez à apprendre les choses difficiles (mathématiques, nouveaux paradigmes de programmation) profondément.

L'adaptation à l'utilisation de nouveaux outils est un compromis. L'industrie informatique regorge d'hypes et vous devez vous défendre contre ces derniers. Cela commence par la déclaration: non, je continue à utiliser mon ancien éditeur (emacs?). Mais de temps en temps, vous devez apprendre de nouvelles choses. Ils s'améliorent vraiment au fil des ans (3-4). Si vous avez la chance d'apprendre de nouvelles choses au travail avec un vrai projet à portée de main: n'hésitez pas, car ce sera amusant! La meilleure façon de discerner le battage médiatique de la véritable innovation est de regarder les gens qui l'utilisent. Vous jugez mieux les gens que la technologie :)

fausto
la source
1

Je suggérerais d'apprendre des langues avec différents paradigmes, comme fonctionnel, OO et logique, car ils sont si différents.

Cependant, je ne suggérerais pas nécessairement d'apprendre 3 langages fonctionnels ou 3 langages OO.

Si vous êtes bon à réciter, peut-être. Mais j'ai du mal à apprendre encore et encore des choses similaires, qui se trouvent être presque les mêmes, mais pas exactement, en particulier des choses de bibliothèque comme la peinture de fenêtre, l'appel de base de données, les bibliothèques de collection, où vous devez vous rappeler différents noms et conventions, mais qui se comportent presque de la même manière. Était-ce paintRect (xstart, ystart, xend, yend) ou (xstart, ystart, largeur, hauteur)? Y compris «fin» ici, pas l'inclusion là-bas?

Mais certaines personnes n'ont pas de mal à apprendre ces choses.

Je suggérerais donc d'apprendre certaines langues, mais en apprendre quelques-unes en profondeur pourrait vous en apprendre plus, que la langue après langue uniquement à la surface. Peut-être pas 2 langues par an, mais tous les deux ans une langue.

Utilisateur inconnu
la source
0

Je suis un peu du côté opposé du spectre. Je déteste apprendre plusieurs langues, car vous apprenez des choses simples et vous ne réussissez jamais à résoudre des problèmes plus profonds de cette façon. En même temps, vous apprenez de mauvaises pratiques dans d'autres langues.

Vous avez déjà vu un développeur Java hardcore coder en C ++, c'est un gâchis qui attend d'exploser ...

Le problème est que toutes les langues ont leurs pièges où l'abstraction commence à fuir ou à jouer contre vous. Vous pouvez apprendre la syntaxe en 1 jour, mais il faudra 5 ans pour savoir comment coder efficacement et sans bug. Utilisez-vous à () ou []? Pourquoi malloc fera que votre processus de longue durée soit à court de mémoire?

Et les paradigmes d'apprentissage sont également une proposition intéressante. Parce que l'utilisation des directives Java en C ou des directives Perl en C # est probablement une démonstration impressionnante de la façon d'écrire du code obscurci.

L'apprentissage de quelques nouvelles langues pourrait vous aider à élargir vos horizons, mais elles ne devraient pas vous faire sentir plus intelligent, elles devraient vous faire sentir plus bête avec chaque nouvelle que vous apprenez.

Codeur
la source
0

Quelqu'un d'autre a suggéré quelque part que "tout le monde devrait connaître 3 langues".

J'ai tendance à être d'accord. Vous devez connaître un langage compilé (C / C ++, C #, etc.), un langage interprété (Python, Ruby, etc.) et un langage de traitement de texte (Perl, Awk, etc.). Je pense également que vous devriez connaître un langage de script shell (Bash, ces jours-ci ou Windows Power Shell). Le même conseil s'applique aux kits d'outils et aux API.

La seule façon de suivre le rythme d'une langue est de l'utiliser. Si vous gardez votre boîte à outils de langues régulières limitée à quelques-uns, vous pourrez plus facilement les utiliser régulièrement pour résoudre des problèmes, et ainsi vous pourrez suivre les développements dans chacun d'eux.

Alors, mettez-vous au courant des technologies que vous utilisez quotidiennement et restez-y. Il n'y a rien de mal à barboter dans d'autres domaines d'intérêt lorsque vous avez le temps. Habituellement, il ne faut pas longtemps à un programmeur compétent pour apprendre une nouvelle technologie, étant donné la motivation suffisante et le temps de blocage pour s'y asseoir.

Il n'est pas nécessaire de suivre toutes les technologies disponibles ... vous pourrez les faire tourner de haut en bas selon vos besoins, en vous concentrant sur celles que vous utilisez le plus régulièrement.

Adam Hawes
la source
-5

Les gars, vraiment - c'est triste. Aucune spécialisation, "je vais tout apprendre". Désolé avec cette approche, vous saurez tout, mais vos compétences seront si faibles que personne ne vous paiera bien.

Une recherche a révélé que vous avez besoin de 10 ans de formation pour être "bon" avec quoi que ce soit (programmation, guitare, danse, etc.). Et c'est vrai, vous avez besoin de 5 à 10 ans d'écriture en C ++ / python / etc. acquérir les compétences nécessaires pour développer un code commercial de bonne qualité.

Et ces conneries sur les références linguistiques? Et où sont les bonnes habitudes de programmation qui sont différentes pour chaque langage de programmation. Dans quelle référence trouvez-vous de bonnes pratiques de gestion de la mémoire et des structures de données pour les pratiques de sécurité côté C ou serveur?

Bureau, mobile, serveur (!!!) - ce sont des environnements complètement différents. Vous décidez si vous voulez "jouer" toute la vie, ou vous vous concentrez sur une chose et obtenez un travail décent. Les gens vous diront probablement que vous devriez connaître toutes les langues sur terre, car ils essaient de faire de même pour améliorer leur travail de merde. Mais devinez quoi, ils ne pourront jamais le faire, même après avoir lu la "référence" Java, car de quoi seront-ils capables alors? Exactement RIEN.

Ouais - apprenez la conception graphique, l'écriture de scénario et le flash aussi, vous en aurez besoin! :) Je ne sais pas exactement ce qui ne va pas mais si vous faites du client, du serveur et du mobile en même temps - quittez votre travail et n'attendez pas demain car vous devez le faire maintenant!

Ma question est: comment gardez-vous une trace de plusieurs langages de programmation?

Votre question devrait être de savoir comment ne pas les suivre. Mon conseil, quittez pokemon et devenez bon dans quelque chose que vous aimez.

Slawek
la source
1
Vous savez que j'ai raison - qui gagne plus? Ingénieur Java senior chez IBM ou "programmer-o-graphican-o-computerfixer-o" dans une entreprise locale de développement de sites Web? Eh bien, je connais de bons graphistes qui ne font que des graphiques et facturent 10 000 $ pour un projet de bannière "stupide" ... et certains gars "je sais tout" qui créent des sites Web stupides pour des entreprises locales stupides pour 150 $ (qui incluent la création de graphiques), la correction ordinateurs en attendant, etc. Parce qu'ils savent si peu de choses dans tant de domaines que tout ce qu'ils peuvent vraiment faire est d'installer un thème wordpress ou de vérifier pourquoi msoffice ne fonctionne pas.
Slawek
-1 pour être plus une diatribe qu'une réponse, et pour confondre votre expérience personnelle avec le monde. J'aimerais voir de quelle «recherche» vous parlez. La notion pop qui circule de nos jours est qu'il faut 10 000 heures de pratique active pour développer une expertise dans un domaine. Cela a été popularisé par les écrits de Malcom Gladwell. Ce n'est probablement pas mauvais en règle générale, mais ce n'est guère une loi de la physique. 10000 heures, c'est cinq ans de 40 heures, et bien sûr, beaucoup d'entre nous consacrent beaucoup plus d'heures aux premiers stades de notre carrière.
Charles E. Grant
Non, ils ont une spécialisation. Leur spécialisation est la programmation. Les langages de programmation sont simplement des outils du métier à ramasser en cas de besoin et à jeter lorsqu'ils ne sont pas nécessaires. La chose de 10 000 heures a été popularisée par le livre de Malcolm Gladwell. Mais avez-vous compris ce qu'il disait? Il disait être un génie musical, par exemple, a pris 10 000 heures. Il ne disait pas qu'il fallait 10 000 heures pour être bon à jouer du piano.
Antonio2011a
Si personne n'a jamais appris plus d'une langue, nous programmerions tous en assembleur. Aujourd'hui, j'utilise Groovy, Java, Javascript, SQL, Ant et Selenium. Je n'ai pas besoin de 7 personnes dans mon équipe. J'ai besoin de gens qui peuvent acquérir une nouvelle technologie et faire bouger les choses.
Kevin Cline,