Est-il vrai qu’une personne disposant de bases assez bonnes en programmation peut facilement apprendre n’importe quel langage de programmation?
Eh bien, lorsque je parle de langage de programmation, je me réfère aux langages agiles et dynamiques tels que PHP, Perl, Ruby, etc., mais pas aux langages de programmation anciens d’un lointain passé.
J'ai travaillé uniquement sur java, groovy et flex dans une certaine mesure. Donc, compte tenu du fait que je suis un programmeur amateur, mais que je suis un étudiant rapide, approximativement, combien de temps faudrait-il pour maîtriser l'une de ces langues?
programming-languages
learning
Vamsi Emani
la source
la source
Réponses:
Oui, avec des réserves.
Il y a quatre semaines, je dirais que j'avais des compétences de niveau professionnel en C et C ++ et des compétences de niveau amateur en Java. Mon patron m'a demandé d'écrire un logiciel en JavaScript, avec lequel je n'avais aucune expérience, et je suis parti.
Au cours des deux semaines suivantes, j'ai lu de nombreux extraits de code, trouvé toutes les bonnes bibliothèques et écrit mon programme. C'est fait et ça marche. La semaine dernière, j’ai acheté un livre JavaScript, que je lisais et, garçon, je ne savais pas ce que je faisais. Maintenant, je comprends pourquoi mes objets agissaient si étrangement.
Alors maintenant je dis, je connais un peu JS. Je peux le lire et l'utiliser, mais je suis sûr que ce que j'écris est inefficace, difficile à lire et ne suit pas les meilleures pratiques.
En général, un apprenant rapide peut prendre une semaine et commencer à produire un produit de qualité médiocre dans une nouvelle langue. Si vous connaissez Java, vous pouvez très rapidement utiliser les langages C, C ++, PHP, Python, JavaScript, mais seulement suffisamment pour modifier le code ou écrire des fonctions bien définies. (Perl peut être plus difficile parce que les expressions rationnelles sont complexes.) Pour bien concevoir un système dans une nouvelle langue, vous voudriez probablement une année de développement professionnel avec des mentors expérimentés.
la source
En gros, la réponse est oui ... et non ... cela dépend de ce que vous entendez par principes fondamentaux et que vous maîtrisez facilement .
FAIT
Connaître les bases de la programmation aidera peu importe la langue. Par fondamentaux, je veux dire des choses qui ne sont pas spécifiques à un paradigme donné. Des choses comme l'algorithmique, les niveaux d'abstraction, l'isolement, etc.
Bien connaître les bases d’un paradigme donné (POO, fonctionnel, etc.) facilitera l’apprentissage de langues prenant en charge le même paradigme. On pourrait dire que bien connaître une langue vous permettra de maîtriser rapidement les langues de la même famille.
Avec chaque langue apprise dans la même famille, la suivante me sera beaucoup plus facile. Je ne serais pas surpris que cette courbe d'apprentissage soit exponentiellement plus rapide, car vous en savez plus.
MYTHE
--- édité la dernière section en fonction des commentaires ---
Fait...
mais
Mythe
la source
pour une langue similaire , oui
pour des langues avec des paradigmes radicalement différents, pas tellement
exemple: vous connaissez le C ++, vous voulez apprendre Java, un morceau de gâteau; vous connaissez VB.NET, vous voulez apprendre Prolog ... tout le gâteau, éventuellement trois ou quatre gâteaux
la source
Je crois que la réponse brève est: "un peu vrai mais difficile à vérifier". Il est très difficile de connaître les API, les utilisations, les idiomes et les paradigmes (OO, fonctionnel, etc.) étroitement associés à la syntaxe réelle d'un langage. Je pense que le langage lui-même est facilement conquis si vous possédez des connaissances et une expérience approfondies des bases de la programmation et des connaissances du compilateur, mais qu'il est difficile à maîtriser en raison de son caractère auxiliaire.
Un exemple clair serait de passer d’une langue à l’autre; C à Java. La syntaxe du code ressemble beaucoup aux programmes de style C, mais vous devez également connaître les API java (génériques, garbage collection, etc.) et très probablement, dans notre "paysage informatique" actuel, certains frameworks tiers (Spring, jUnit , Hibernate et ainsi de suite) pour faire quelque chose d’utile pour les entreprises. Donc, si vous avez déjà utilisé C, la syntaxe du langage ne serait pas le problème, mais le reste.
Cela vient de moi qui connais les langages Java, C #, Javascript, HTML, CSS, Delphi, etc. mon expérience en utilisant différents de plus tôt. Pour un «apprenant rapide», c’est vraiment une pensée latérale.
la source
Les bases de l’informatique à connaître comprennent non seulement les bases mathématiques (théorie des ensembles, logique, théorie des graphes, algèbre, théorie de l’information, théorie de l’information algorithmique, etc.), mais également un certain nombre de langages de programmation, au moins un de chaque groupe - c'est-à-dire un impératif (éventuellement avec la POO, mais ce bit n'est pas obligatoire), un fonctionnel enthousiaste, un fonctionnel fainéant, un logique, un concaténatif ou une pile.
Avec cette base, vous seriez capable d'apprendre facilement n'importe quelle nouvelle langue en un rien de temps. S'il manque des bits, vous risquez de vous heurter à une résistance sévère.
Et la meilleure façon d’apprendre le langage à l’intérieur est de mettre en œuvre un compilateur ou un interprète jouet pour un sous-ensemble significatif de celui-ci (bien sûr, sans bibliothèque standard - c’est la partie la plus compliquée et la plus ennuyeuse de toutes les langues).
la source
Je pense que le consensus est qu’avoir de bons fondamentaux aidera dans une certaine mesure, et je ne suis pas en désaccord avec cela. Cependant, un point qui manque dans les autres réponses est la question de capter les idiomes de la langue, et je pense que pour maîtriser une langue, vous devez l'écrire de manière idiomatique.
Par exemple, vous pouvez écrire des groupes de C # complètement corrects sans jamais utiliser l'
using
instruction pour vous débarrasser automatiquement des objets, mais en C # idiomatique bien écrit, vous en verrezusing {...}
beaucoup. Je ne connais pas de langages non-.Net qui possèdent cette construction (bien que j'en connaisse très peu et que mon Java soit plutôt rouillé et que je puisse me tromper), donc même un expert venant d'une autre langue ne possédant pas cette fonctionnalité devra apprendre cette idiome à partir de zéro pour ainsi dire.la source
C'est une affirmation vraie pour une définition de "assez bon" et "facilement".
Plus vous comprenez mieux les principes fondamentaux, plus il est facile de passer d’une langue à l’autre. Si vous êtes un programmeur expert Java ayant une solide connaissance des langages orientés objet, par exemple, les différences de syntaxe de base entre Java et C # devraient être relativement faciles à maîtriser en une semaine ou deux. Il faudra plus de temps pour comprendre comment les fonctionnalités de toutes les bibliothèques associées se mappent de l'une à l'autre, mais vous aurez probablement un bon aperçu des bibliothèques de base dans un mois ou deux. Ensuite, il faut déterminer les cas où l’approche standard d’un problème en langage A ne correspond pas directement à l’approche standard en langage B (c’est-à-dire que vous souhaitez utiliser LINQ en C # plutôt que JPA en Java) et vous mettre à l'aise. assez dans la nouvelle langue que vous ' y penser plutôt que penser dans l’ancienne langue et "traduire". Cela prendra probablement entre trois et six mois, selon la qualité des fonctionnalités que vous utilisez habituellement dans les cartes. Au bout de six mois, le programmeur expert Java serait probablement un développeur C # raisonnablement efficace et compétent. Mais comme pour tout, vous pouvez passer des années à apprendre tous les détails complexes, à maîtriser diverses bibliothèques et modules complémentaires qui ne font pas partie du langage, mais font partie de l'écosystème environnant, et s'améliorent généralement en tant que développeur dans ce langage. l'expert en programmation Java serait probablement un développeur C # raisonnablement efficace et compétent. Mais comme pour tout, vous pouvez passer des années à apprendre tous les détails complexes, à maîtriser diverses bibliothèques et modules complémentaires qui ne font pas partie du langage, mais font partie de l'écosystème environnant, et s'améliorent généralement en tant que développeur dans ce langage. l'expert en programmation Java serait probablement un développeur C # raisonnablement efficace et compétent. Mais comme pour tout, vous pouvez passer des années à apprendre tous les détails complexes, à maîtriser diverses bibliothèques et modules complémentaires qui ne font pas partie du langage, mais font partie de l'écosystème environnant, et s'améliorent généralement en tant que développeur dans ce langage.
la source
Je dirais que cela dépend complètement de l'enthousiasme d'une personne d'apprendre la nouvelle langue. Lorsque les fondamentaux sont solides et s’il peut comprendre la manière dont la nouvelle langue interprète quelque chose, il est assez facile d’apprendre n’importe quelle langue.
Le meilleur exemple est mon moi. J'ai travaillé avec pas mal de langages, même si j'ai effectué l'essentiel de mon travail en C #, mais j'ai commencé ma carrière par le C et ai ensuite appris le C ++, le Java, le VB, le PHP, les langages de script, le langage perl, etc. Partout au long de ce mandat, je n'ai jamais eu l'impression de ne pas pouvoir apprendre cette langue.
la source
Je n'ai jamais trouvé difficile d'apprendre un nouveau langage de programmation, bien au contraire, c'était très amusant la plupart du temps. Pourtant, il y a des langues que j'ai regardées mais que je n'ai jamais comprises, parce que je ne pouvais pas saisir l'idée qui les sous-tendait, s'il y en avait. Un exemple est COBOL, je n'ai jamais compris ce qui devait aller dans quelle DIVISION et SECTION et pourquoi. PHP et Groovy sont d’autres exemples. Avec PHP, j'ai essayé de comprendre pourquoi on en aurait besoin, étant donné qu'il existe perl. Peut-être que quelqu'un peut expliquer. Avec Groovy, je ne comprends pas non plus un peu les concepts sous-jacents.
la source
Tout dépend.
Je sais que c'est souvent la réponse ...
Mais que signifient les fondamentaux ?? Beaucoup de gens qui ont des principes fondamentaux pour un paradigme (comme OO) ne les ont pas pour d'autres paradigmes (comme fonctionnel).
Un grand nombre de personnes venant de OO et connaissant tous les modèles de conception n'ont peut-être aucune idée de modèles de conception fonctionnels ou d'éléments tels que la compréhension des listes, le currying, la récursion de la queue, les fermetures, etc.
Donc, OUI: si les fondamentaux sont les fondamentaux de tous les paradigmes.
Dans ce cas, le problème est que javascript utilise un grand nombre de paradigmes, tels que la procédure, OO et un peu fonctionnel, et a une portée étrange provenant de java, c ++, ...
Ainsi, les principes fondamentaux ne vous aident pas dans ce cas, mais ramasser plus de fondamentaux ici et continuer à convertir dans une autre langue peut devenir de plus en plus facile si vous avez plus de motifs dans votre boîte à outils.
la source
N'oubliez pas que l'art de la programmation informatique est l'art de rester EXACTEMENT ce que vous voulez dire. Donc, tout moyen de dire à l'ordinateur ce qu'il faut faire, de Java à Access, d'Excel à Visual Fortran, est un langage de programmation.
Et certaines langues sont tout simplement mauvaises. IMHO Excel et Basic sont de mauvaises langues; Java et C ++ sont de bons langages. Les scripts FileMaker sont une langue terrible. Le HTML peut être excellent si vous n'êtes pas négligé.
Pouvez-vous l'apprendre? Si c'est bon, oui. Si c'est mauvais, cela dépend de votre seuil de dégoût. Les choses qui vous donnent envie de vomir sont difficiles à apprendre.
Ne vous engagez pas tous à utiliser la langue X dans un projet, sauf si vous avez déjà vu et joué avec la langue X.
la source
La réponse est "Ceci est un fait, pas un mythe!"
Je suis comme vous. J'ai également travaillé dans diverses technologies, à savoir. Java, .net et récemment travaillé avec iPhone, Android et BlackBerry.
Le réseau est plein de ressources, il suffit de consulter l'information pour comprendre cela, de le mettre en œuvre et d'aller plus loin.
En fait "La technologie est faite pour les développeurs et non les développeurs sont faits pour les technologies, les technologies changent mais les développeurs ne le sont pas".
:)
la source