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?
la source
Réponses:
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.
la source
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.
la source
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.
la source
Écrivez le code. Si vous souhaitez suivre les mises à jour de la langue, continuez simplement à écrire du code.
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".
la source
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.
la source
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.
la source
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!).
la source
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 ++.
la source
À 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.
la source
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
la source
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 :)
la source
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.
la source
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.
la source
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.
la source
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!
Votre question devrait être de savoir comment ne pas les suivre. Mon conseil, quittez pokemon et devenez bon dans quelque chose que vous aimez.
la source