Je sais que pour apprendre une langue, vous pouvez simplement acheter un livre, suivre les exemples et, dans la mesure du possible, essayer les exercices. Mais ce que je cherche vraiment, c'est comment maîtriser la langue une fois que vous l’avez apprise.
Maintenant, je sais que l'expérience est un facteur majeur, mais qu'en est-il de l'apprentissage des éléments internes de la langue, quelle est la structure sous-jacente, etc.
Il y a des articles disant de lire ce livre, de lire ce livre, de créer ce jeu et ce jeu-là. Mais pour moi, cela ne signifie pas maîtriser une langue. Je veux être capable de lire le code des autres et de le comprendre, peu importe la difficulté. Comprendre quand utiliser une fonction et quand une autre, etc. etc.
La liste pourrait s'allonger encore et encore, mais je crois avoir bien expliqué le problème. :)
Et pour finir, prenons le cas échéant, quelle que soit la langue, bien que le mieux serait que C soit pris comme exemple.
la source
Réponses:
Je dois répondre: "Tout ce qui précède." Les gens se disputent pour savoir si le codage est un art, un métier, une discipline du génie ou une branche des mathématiques, et je pense qu'il est plus juste de dire qu'il en est une partie. En tant que tel, plus vous maîtriserez la langue avec des techniques, mieux ce sera. Voici une liste partielle:
Utilisez la langue toute la journée, tous les jours. Habituellement, cela signifie être employé à plein temps dans la langue.
Lisez tout ce que vous pouvez sur la langue. Surtout, les "meilleures pratiques" et les idiomes.
Rejoignez un groupe d’utilisateurs pour parler avec d’autres de la langue et de ce qu’ils en font.
Travaillez avec le code des autres! Il n'y a pas de moyen plus rapide d'apprendre quoi ne pas faire dans une langue que de devoir nettoyer après quelqu'un qui a fait quelque chose de terrible.
Soutenez le code que vous écrivez - chaque bogue devient un tour de vos pires décisions!
Etudier l'informatique et les langues en général
Apprenez une langue très différente. Un grand compliment à C serait un langage fonctionnel comme Lisp. Cela transformera votre façon de penser en langage procédural.
Apprenez à utiliser les frameworks et les API disponibles pour cette langue.
Prenez le temps de faire vos propres expériences avec la langue. Le SICP ne s’applique pas au C, mais l’attitude d’apprendre une langue en testant ses limites est très productive.
Lisez l’histoire de la langue pour comprendre pourquoi elle a été conçue telle quelle.
Assistez à des conférences pour entendre la langue parlée par les auteurs ou pour apprendre ce que les leaders de l'industrie font avec la langue.
Prenez un cours dans la langue.
Enseignez la langue aux autres (grâce à Bryan Oakley )
En résumé, faites tout ce que vous pouvez penser. Il n'y a aucun moyen de tout savoir sur la plupart des langues. Chaque technique d'apprentissage que vous utilisez apporte une perspective supplémentaire à votre compréhension.
la source
Every technique you use to learn brings and additional perspective to your understanding.
10 000 heures de pratique suffisent.
Lire "Apprenez à programmer en dix ans"
Points clés ci-dessus:
la source
Ne vous considérez JAMAIS comme le maître de toute la langue tant que vous n'avez pas mis en place une meilleure langue. Ce qui signifie que pour apprendre comment une langue particulière fonctionne de dessous, procurez-vous un livre qui vous apprendra les concepts de compilateur / interprète de la langue. Par exemple:
C: Le compilateur LCC
C ++: La conception et l'évolution de C ++ (Et ensuite, construisez votre propre compilateur C ++ ou au moins comprenez l'implémentation de celui-ci en utilisant le code du compilateur GNU C ++)
Java: Obtenez "Inside JVM" et obtenez le code source de javac. Le code .C de "java" est également utile
Python: implémentation CPython.
ObjectiveC: Presque tout le matériel fourni par Apple sur les composants internes des codes d’environnement d’environnement d’exécution ObjC et du compilateur va vous aider.
Lisp: SICP Book (enseigne Scheme et un interpréteur-compilateur de base pour lisp like language): Lisp in Small Pieces (un autre bon livre).
la source
Essayez d’utiliser le langage pour quelque chose pour lequel il n’était pas destiné. Écrivez un pilote de périphérique en Python ou une bibliothèque de manipulation de matrice en COBOL. Je pense que l’un des meilleurs moyens de maîtriser une langue est de la pousser vraiment, d’essayer de faire en sorte que ses forces dépassent ses faiblesses.
la source
Je vais vous faciliter la tâche. Vous ne maîtriserez jamais une langue. Période. Si vous pensez que vous avez, alors vous avez très évidemment pas. Soudain, vous ne parvenez pas à atteindre le sommet d'une montagne en disant: «Eh bien, maintenant, je maîtrise parfaitement cette langue. Et maintenant? Même les programmeurs chevronnés qui travaillent avec le même langage depuis des décennies vous diront qu’ils rencontrent encore parfois de nouvelles idées, processus, pratiques, etc. Le véritable objectif est de maîtriser votre compréhension conceptuelle d’un langage ou de plusieurs langues. La capacité d'apprendre de nouveaux concepts et la rapidité avec laquelle vous pouvez adopter des fonctionnalités nouvelles ou modifiées dans le langage est bien plus importante qu'une connaissance pratique de chaque mot clé et de chaque syntaxe. Arrêtez de vous soucier de "maîtriser" une langue, mais simplement d’améliorer et d’affiner en permanence la qualité et l’efficacité de votre code.
la source
The true goal is to master your conceptual understanding of a language or languages.
Exactement. C'est ce que je voulais vraiment dire.Vous connaissez déjà la réponse à cette
Cela se résume à un travail acharné, à la détermination et à tout ce que vous pourriez ne jamais atteindre.
Pensez à l’origine du terme. Pour devenir un maître artisan, vous deviez être un apprenti puis un compagnon. Seuls eux pourraient avoir la chance de devenir maîtres. Tout au long du chemin, on vous enseignerait et vous pratiqueriez et vous observeriez et interrogeriez les autres selon leur métier et (espérons-le) apprendre d'eux.
Il n'y a pas de solution miracle ...
la source
Commencez par lire et comprendre ce qu'est SDLC (cycle de vie du développement logiciel). C’est un processus itératif qui implique l’amélioration de soi, l’apprentissage,
**practicing, practicing...**
Cela ouvrirait vos horizons sur quels domaines devez-vous apprendre ou améliorer. Il est également très utile de lire plusieurs livres de génie logiciel de base une fois que vous avez créé quelques applications par vous-même.
En outre, une fois que vous êtes à l'aise avec un langage POO , vous pouvez commencer à apprendre les modèles de conception , et Head First Design patterns est vraiment un bon livre à considérer. J'aime ce livre.
la source
Il n'y a pas de substitut à l'expérience. Afin de maîtriser quelque chose, vous devez le faire / l'utiliser, beaucoup, pour différentes choses.
Alors, n'hésitez plus et utilisez ce langage pour des exercices (comme Project Euler ) et des projets personnels, des éléments dont vous avez réellement besoin ou des éléments que vous jugez intéressants. Écrivez un jeu, écrivez une application Web, écrivez un analyseur, comme vous voulez. Et à chaque étape, efforcez-vous de comprendre ce que vous faites plutôt que de simplement coller du code ou suivre des instructions.
C’est quelque chose que vous pouvez faire dès que vous avez compris la syntaxe de base. Il suffit de prendre un code et de prendre le temps de le détailler. Recherchez des éléments que vous ne comprenez pas ou posez des questions spécifiques à des endroits tels que Stack Overflow .
la source
En haut du problème, découvrez l’architecture: comment organiser vos projets, quelle est sa structure. Ne les laissez pas grandir au hasard.
Au niveau intermédiaire, apprenez différentes techniques et paradigmes. Plus vous avez d'outils divers dans votre répertoire, plus vous avez de pouvoir. Si vous n’avez étudié que le java, le python et le ruby, vous n’avez été exposé qu’à une infime partie de l’espace de programmation. Apprenez la programmation impérative et fonctionnelle, apprenez le prologue et J. L'idée n'est pas de "maîtriser" cent langues, mais d'apprendre différentes façons de résoudre les mêmes problèmes.
Parmi les problèmes de bas niveau, une chose qui pourrait vous aider à devenir un meilleur programmeur (en fait, quoi que vous fassiez) est d’avoir un bon modèle mental de la plate-forme. Par exemple, vous pouvez apprendre comment les structures de contrôle C fonctionnent et connaître les bibliothèques les plus courantes, mais si vous ne possédez pas de modèle mental de fonctionnement des pointeurs et de la mémoire, vous aurez des problèmes avec les expressions moyennement complexes.
la source
Puis-je faire quelques suggestions?
Tout d’abord, si vous pouvez trouver un mentor avec lequel discuter de votre utilisation de la langue, obtenir les meilleurs conseils et astuces, et savoir quand une technique est meilleure que l’autre.
Deuxièmement, pratiquez autant que possible et essayez la langue au maximum! J'avais l'habitude de travailler en équipe, ce qui (par amusement) choisissait chaque jour un verbe ou un autre élément du langage de programmation du manuel. C'était une marque d'honneur si vous pouviez l'intégrer à votre codage ce jour-là. Cela signifiait que toute l'équipe de programmation devait examiner et comprendre le terme (parfois) obscur afin de le comprendre et de l'utiliser efficacement. Certains jours, nous avons échoué, mais cette équipe était amusante à travailler et techniquement allumée !!
la source
Les langages de programmation reflètent les idées qui sous-tendent les paradigmes de programmation développés pour le développement de logiciels à usage général ou pour le développement de logiciels à usage spécifique. Par exemple, un langage de programme tel que Java représente le paradigme de programme orienté objet, mais AspectJ (une extension de Java) est utilisé pour programmer en fonction de la programmation orientée aspect.
Compte tenu de cette brève introduction, il ne serait pas très utile d’acquérir et de lire un livre en soi pour maîtriser une langue. Vous devez comprendre l'environnement dans lequel vous pouvez programmer en utilisant le langage souhaité, en apprendre davantage sur le paradigme et, plus important encore, créer une application significative en utilisant ce langage. Construire une petite application qui peut vous donner un avant-goût des différents outils fournis par la langue est une approche d'apprentissage vraiment utile.
J'ai vu des gens venant de la pure communauté C sans rien apprendre sur l'orientation objet ni sur la difficulté d'apprendre Java ou Objective-c. J'ai également vu des gens peiner avec la programmation d'interfaces utilisateur sans vraiment comprendre les éléments d'interface utilisateur, la programmation événementielle, etc.
J'espère que ça aide!
la source
J'ajouterais deux éléments à la liste de Glen
la source
Construire sur ce que @TMN a dit. J'ai eu beaucoup de succès dans l'apprentissage des langues en écrivant le même programme dans une langue différente.
Par exemple, l'écriture d'un programme qui lit dans un fichier CSV, analyse le texte puis le réécrit dans un deuxième fichier CSV avec les colonnes dans l'ordre inverse.
Comme ça,
à
Cela vous donnera une compréhension de base ou la langue. Ensuite, voyez ce que vous pouvez faire d'autre. Peut-être autoriser la substitution de valeur, la réorganisation ou la lecture de la ligne de commande. Rendez-le aussi complexe que vous le souhaitez.
Je pense aussi ce que @GlenPeterson a dit à propos de,
C'est une bonne idée. Je suggérerais un langage comme Haskell car, dans les dernières versions, vous pouvez programmer en utilisant les quatre paradigmes de programmation de OO, procédural, logique ou fonctionnel. Même s’il s’agit d’un langage fonctionnel, vous pouvez avec un effort quelconque mettre en œuvre les autres paradigmes, ce qui constituerait une bonne expérience d’apprentissage.
Super langue pour jouer avec.
la source
Vous ne pouvez pas apprendre une langue du livre. Tout ce dont vous avez besoin est pratique et pratique. Ne pensez pas que vous pouvez apprendre une langue à partir de ce livre particulier ou de cette source particulière. Il suffit de penser que le langage de programmation est identique au langage humain. Vous ne pouvez simplement apprendre l'anglais ou le français en lisant un livre en particulier.Tout ce dont vous avez besoin, c'est de l'utiliser la vie quotidienne. Code à partir de zéro, étendre ses fonctionnalités, essayez de construire quelque chose qui vous satisfera un peu. Et si vous envisagez de maîtriser un langage en sachant le langage entier et en utilisant chaque élément du langage de programmation dans un codage pratique ... VOUS NE POUVEZ PAS. Ou même si vous le pouvez, cela pourrait prendre 10-15 ans.
la source