Dans le chapitre un de "The Pragmatic Programmer", le premier objectif d'apprentissage est:
Apprenez au moins une nouvelle langue chaque année. Différentes langues résolvent les mêmes problèmes de différentes manières. En apprenant plusieurs approches différentes, vous pouvez élargir votre façon de penser et éviter que le getter ne soit frappé dans une ornière. [...]
Pour y parvenir au cours d'une carrière, la liste des langues risque de s'allonger (surtout si vous ne souhaitez pas "progresser" dans la gestion). De toute évidence, l'éducation d'un programmeur (ou quelque forme que ce soit) va vous permettre de démarrer avec un noyau de langages commercialement utiles (la liste habituelle des offres d'emploi: C, C ++, Ruby, Python, JavaScript, C #, Java, VB, .. .). De plus, un programme d'apprentissage formel ou informel est susceptible d'avoir couvert des approches fonctionnelles (via quelque chose comme Haskell, LISP ou un langage dérivé du ML)
Mais une fois qu'un sous-ensemble raisonnable de cette liste est appris, quelle est la prochaine étape et pourquoi ?
la source
Réponses:
Rendez-le intéressant et passez chaque année à écrire un interprète ou un compilateur pour votre propre langage de programmation qui remplit une niche pour laquelle vous n'avez jamais utilisé de langage de programmation. Chaque année, écrivez votre prochain compilateur / interprète en utilisant la langue que vous avez écrite l'année précédente.
la source
Vous devez maximiser la «pertinence marginale», c'est-à-dire toujours vous aventurer dans de nouveaux domaines dans lesquels vous n'êtes pas encore fort. Variez à la fois les langages de programmation et les concepts . Si vous ne connaissez aucun langage orienté objet, essayez Java et un framework à haute abstraction comme Hibernate. Ensuite, écrivez quelques trucs d'administration système dans un langage de script tel que Python ou Perl. Ensuite, acquérez quelques compétences de bas niveau en C ou C ++, en écrivant du code serveur multithread haute performance. Si vous ne connaissez pas la programmation fonctionnelle, essayez Haskell avec des problèmes de théorie des graphes tels que la résolution de Peg Solitaire , etc. comme sécurité de capacité objet ,Prolog ou VHDL .
Bon exercice d'ailleurs! Cela vous apprendra à penser latéralement et à envisager les problèmes en termes d'angoisse linguistique, au lieu de compter sur trop peu de techniques spécifiques à la plate-forme. Par exemple, une fois que vous maîtrisez les similitudes et les différences dans la répartition des méthodes virtuelles entre C ++ et Python, vous "l'obtiendrez" à peu près instantanément pour tout autre langage.
la source
Un langage qui n'affecte pas votre façon de penser la programmation ne vaut pas la peine d'être connu. - Alan Perlis
Comme certaines des autres réponses l'ont abordé, si vous apprenez une nouvelle langue par an, pourquoi? est d'étendre vos capacités en tant que programmeur. Le comment? c'est en apprenant des langues avec des paradigmes distincts de ceux des langues que vous connaissez déjà, et en faisant le point sur les paradigmes que vous connaissez déjà détermine la langue à apprendre ensuite.
Quels sont ces paradigmes? L'ouvrage avancé Concepts, techniques et modèles de programmation informatique offre une excellente vue d'ensemble avec une carte graphique .
Ainsi, si vous ne connaissez que les langages impératifs de type C, alors l'apprentissage de Scheme / Lisp est extrêmement utile. Si vous connaissez déjà les langages impératifs et fonctionnels, alors l'apprentissage de Prolog sera utile, etc.
Un livre récent qui essaie d'enseigner plusieurs langues et paradigmes est Seven Languages in Seven Weeks . Bien sûr, vous ne parlerez pas couramment chaque langue après une semaine d'étude, mais cela semble fournir une perspective multi-paradigme accessible et orientée vers le praticien.
Lorsque vous cherchez un autre paradigme, c'est vraiment un moment zen; passer de la programmation impérative à la programmation fonctionnelle m'a fait voir le monde de l'informatique sous un jour entièrement nouveau. Bon apprentissage!
la source
C - comme l'essentiel, "sous-tend tout", langage de programmation des systèmes
Lisp (Scheme) - le langage ur étrange mais incroyablement puissant que les grands pirates pensent définit cool
Smalltalk - parce que c'est ce que OO était censé être
Erlang (ou autre langue d'acteur) pour comprendre les acteurs
Haskell - pour comprendre les Monades
Javascript - car il est partout et essentiel pour l'écriture de scripts dans le navigateur
L'un de Python / Ruby / Perl (mais peu importe lequel) - vous savez donc à quoi ressemble un langage de script populaire, moderne et de haut niveau avec un bon support de bibliothèque
SQL - pour pouvoir parler aux bases de données relationnelles
Prolog - parce que vous devez encore vous faire exploser
la source
la source
1) Prolog: c'est complètement différent de tous les langages impératifs que vous avez utilisés jusqu'à présent, et cela changera votre façon de penser les problèmes
2) Lisp: sans lui, vous pourriez aussi bien utiliser Vi
3) Erlang: Encore une fois, c'est complètement différent, aussi, cela semble assez à la mode.
4) Quelque chose de Turing Tarpit (par exemple Brainfuck), et probablement écrire un compilateur ou un interprète pour cela: je ne peux pas penser à une raison pour le faire, mais cela semble être une bonne idée.
la source
Outre ceux que vous avez énumérés,
Haskell, F #, Clojure, OCaml, Lua, Go, D, Erlang, Objective C.
la source
Bien que je convienne qu'il est bon d'apprendre de nouvelles langues (et même impératif au cours d'une longue carrière), je pense qu'une par an, c'est trop au-delà des cinq à dix premières années. Ce que je préférerais voir c'est quelqu'un avec ce niveau d'expérience apprendre de nouvelles choses sur les langues qu'ils connaissent déjà. À un moment donné, vous avez besoin de connaissances approfondies et approfondies. Vous pouvez donc écrire une construction If en 12 langues, big whoop. Je préférerais voir quelqu'un qui se penche vraiment et devenir expert dans au moins une chose. Et puis les prochaines années deviennent un expert dans autre chose. Au cours d'une carrière de plus de 30 ans, je veux que quelqu'un ait une connaissance approfondie, pas seulement les bases de beaucoup de choses.
la source