J'ai eu mon premier examen de programmation récemment ... et bon je l'ai quasiment floppé. N'a pas fait grand du tout. Je n'ai que moi-même à blâmer car en dehors de la période universitaire, je n'ai pratiquement rien fait.
Maintenant, j'en ai un autre qui approche vers l'heure d'été et je ne permets pas que cela se reproduise. Depuis quelques semaines, je lis, lis et lis encore. Je continue à passer en revue les choses plus anciennes que j'ai manquées et les choses plus récentes que nous faisons. Donc, évidemment, je peux remarquer une énorme différence dans ma compréhension de la langue. Mais c'est à peu près tout. Je peux lire le code et j'ai maintenant une idée de ce qui se passe dans le code ... mais pour ce qui est de l'écriture du code moi-même, je ne sais rien. C'est comme si je ne savais jamais quelle approche adopter et je ne pouvais jamais vraiment comprendre les questions.
J'ai fait pas mal de lecture (environ 5-6 heures depuis environ un mois) chaque jour ... Mais quand j'ouvre mon IDE, je me sens toujours condamné, c'est vraiment démotivant. Surtout parce que je connais les nœuds, les listes, les tableaux, les interfaces ect ect mais en plus de les lire sur une page qui y est. Je peux souligner exactement tout ce qui se passe dans un programme, donc annoter un code de pré-échantillon je trouve bien ... mais écrire mon propre code est une autre histoire ..
la source
Réponses:
Vous apprenez à écrire des programmes en écrivant des programmes.
Mais tu dois commencer petit, mec.
De là, commencez à construire ...
et alors...
... etc. Une fois que vous aurez compris les bases du fonctionnement des objets, il sera beaucoup plus facile d'écrire des programmes plus volumineux.
la source
Grande question! Il est important de réaliser que vous avez plusieurs courbes d'apprentissage à gravir. Juste pour ne pas penser que vous apprenez seulement un langage de programmation. Vous faites bien plus que cela.
Vous apprenez ...
Je soupçonne que c'est le point trois où vous vous débattez. Vous apprenez à dire des choses en code (syntaxe) mais vous nous demandez vraiment ce que je dois dire en code. Y a-t-il une bonne et une mauvaise façon de faire les choses?
Je vous suggère de relever un défi. Jetez un œil à ce qui suit comme exercice.
http://en.wikipedia.org/wiki/Eight_queens_puzzle
Maintenant, c'est un défi difficile. Vous devez placer huit reines sur un échiquier afin que chacune des reines soit à l'abri les unes des autres.
En tant qu'apprenant, cela peut être une portée excessive, mais vous pouvez regarder ce problème et l'utiliser pour apprendre à écrire du code.
Voici une stratégie à essayer ...
Reformulez le problème pour qu'il soit bien plus simple que le problème déclaré à résoudre . Oubliez les huit reines. Concentrez-vous sur un seul. Apprenez à écrire le code pour représenter un échiquier en mémoire, placez une seule reine sur ce plateau, puis affichez-le à l'utilisateur à l'écran en texte simple.
Une fois que vous avez fait un coup de couteau à l'étape 1. Placez deux reines de telle sorte qu'elles soient toutes les deux en sécurité.
Enfin, essayez de placer plus de 2 reines sur le plateau afin qu'elles soient toutes en sécurité.
Les étapes ci-dessus sont une variante d'une stratégie de conception appelée raffinement par étapes. C'est un peu old-school en termes de design mais cela vous fera passer d'un écran vide à un code intéressant en un rien de temps.
Il existe d'autres stratégies de conception et de mise en œuvre: la conception pilotée par les tests, la conception orientée objet et les modèles de conception pour n'en nommer que quelques-uns.
Avec le temps, vous ajouterez ces stratégies à l'arsenal et les utiliserez au besoin. Plus vous étudiez et pratiquez de stratégies de conception, plus cela deviendra facile.
Que la source soit avec vous.
la source
Un rapide avant-propos
Apprendre en faisant: connaissances vs savoir-faire
Il y a une énorme différence de connaissances et de savoir-faire. C'est une erreur courante pour les nouveaux apprenants de penser que parce qu'ils peuvent «comprendre» un programme en le lisant, ils comprennent en fait le raisonnement pour que le programme soit écrit tel qu'il est.
Et la seule façon d'arriver à cette deuxième partie est de pratiquer. Asseyez-vous, ouvrez un éditeur de texte, une ligne de commande et allez-y.
Programmation dans le petit
Il est probable (et attendu) qu'à ce stade, votre capacité à comprendre comment plusieurs composants logiciels complexes interagissent entre eux est limitée. Et c'est en fait une bonne chose, car cela vous oblige à partir des bases. Ne sautez pas le pistolet et avancez au bon rythme: commencez par de petits exercices pour de petites tâches.
Pour être honnête, je n'ai jamais été convaincu que commencer à apprendre la programmation avec Java est la voie à suivre (j'avais l'habitude d'enseigner la programmation pour vivre à l'université, et je fais toujours des cours particuliers à l'occasion). Il est en soi trop complexe pour vous permettre de démarrer, et la plupart des livres Java sembleront assez intimidants. Néanmoins, cela peut sûrement être fait (au moins pour certains domaines de cette connaissance globale que nous attendons des programmeurs), tant que vous vous limitez à apprendre étape par étape.
Livres
Comme vous êtes sur Java, et si vous avez besoin d'un livre Java décent, je recommanderais:
Je ne fais que mentionner cela car je ne sais pas ce que vous utilisez en classe. Il y a des tonnes d'autres livres. Certains sont bons. Certains paralyseront les étudiants pendant des années.
Votre processus d'étude
Le workflow de base
À partir de maintenant, je vous conseille de suivre ce processus en 2 étapes pour tous les exercices et exemples de code que vous avez vus en classe:
En cas de défaillance
Si vous échouez et sentez que vous devez jeter un œil au livre, votre échec est susceptible d'être:
La première cause est probablement celle à laquelle vous faites face le plus souvent. La seconde est anecdotique. Les deux sont traités par une pratique récurrente.
Chaque fois que vous ne parvenez pas à mettre en œuvre l'un de ces premiers exemples, consultez à nouveau le livre, puis fermez-le à nouveau. Ne codez pas en regardant le livre. Je vous conseillerais même de supprimer l'intégralité de votre solution et de recommencer. La répétition est une partie ennuyeuse mais importante du processus d'apprentissage.
Ne prenez pas cela à la légère. Chaque fois que vous ressentez l'envie de vous dire "ouais, ok, je sais ça" ou "j'y suis à 90%, c'est presque aussi bien que fait" et que vous souhaitez passer à une autre section, combattre cette envie et recommencer. Il est très difficile d'avoir l'honnêteté de vous admettre que vous n'avez pas bien compris un concept.
Note latérale: Je considère comme un grand mauvais service que la plupart des programmes scolaires tentent maintenant de "démarrer" les cours de programmation en simplifiant trop les choses et en fournissant des outils trop avancés pour les élèves: le but n'est pas de vous rendre la vie misérable ou d'apprendre trop. par cœur des choses qui plus tard dans votre carrière seront automatisées par vos outils et dont vous vous souviendrez même parfois à peine. C'est pour vous apprendre tous les morceaux qui flottent.
En cas de succès: allez au-delà!
Si vous réussissez à mettre en œuvre votre exercice, ne passez pas nécessairement directement au suivant. Essayez de voir ce que vous pouvez faire pour l'améliorer. Pouvez-vous modifier la sortie demandée? Ajouter une petite fonctionnalité? Une option? Essayez, car vous êtes maintenant dans cette zone amusante où vous avez passé la principale difficulté, et ces petites exigences auto-imposées sont plus susceptibles de garder votre moral.
Mais n'allez pas trop loin: vous ne passez pas de l'impression de l'alphabet et de son inversion à sa soudaine apparition en diagonale à l'écran avec un dégradé de couleurs. Faites de petits pas. L'apprentissage est un processus long et itératif, et vous devez aborder les problèmes avec des niveaux de difficulté croissants (par exemple, voyez comment je pense habituellement à expliquer la récursivité ).
C'est juste un apprentissage - une comparaison
Votre problème n'est pas du tout lié à la programmation. C'est le même problème que des milliers de personnes rencontrent lorsqu'elles essaient d'apprendre les mathématiques.
Si vous leur posez un problème, ils ne voient pas comment trouver leur chemin vers la solution. Cependant, si vous écrivez la solution pour eux, la plupart la comprendront et penseront "sacrément, c'était si simple!". Pourtant, vous leur donnerez un problème similaire avec différentes mesures et hypothèses et ils ne parviendront pas à le résoudre: ils n'ont pas compris la logique derrière cela, et ils ont besoin de pratique pour être en mesure de le faire eux-mêmes.
Notez que c'est un problème commun avec les mathématiques, mais à mon avis, vous le voyez dans des tonnes d'autres domaines où il y a une certaine logique requise: apprentissage du solfege, grammaire du langage, physique, etc ... Et ce n'est pas dû à une capacité "naturelle" pour comprendre ces choses: cela se résume à la pratique (que ce soit dans ce domaine ou dans d'autres qui amènent l'individu à saisir plus facilement les concepts dans ce domaine).
Il n'y a aucune raison pour laquelle vous ne pouvez pas apprendre à écrire du code. Vous avez juste envie d'essayer jusqu'à ce que vous atteigniez ce "ah AH!" / Moment d'Eureka. Passez ensuite au problème suivant, plus difficile.
Ceux-ci peuvent également aider (plus tard):
la source
Je sais que ce n'est pas la réponse que vous allez vouloir entendre, mais: Écrivez plus de code!
Décortiquez plus précisément le code que vous comprenez. Cela m'aide souvent à le «traduire» en anglais ordinaire (car je suis un débutant relatif).
N'ayez pas peur de réfléchir à votre idée d'écrire d'abord un morceau de code (c'est-à-dire "Je veux déclarer une variable ici, parcourir ce segment, etc."), et ensuite chercher pièce par pièce comment faire ces différents segments.
N'oubliez pas que le codage est moins comme un exercice de mémorisation et comme trouver un moyen de construire quelque chose à partir de blocs de construction. Tout comme l'apprentissage d'une véritable langue étrangère, la compréhension passe avant tout, c'est un bon signe que vous êtes bien sur votre chemin.
Ayez simplement la foi que plus vous écrivez et lisez du code, plus cela aura du sens.
la source
Comme d'autres l'ont dit, c'est un cas où vous devez pratiquer, pratiquer, pratiquer.
Écrivez un tas de petits programmes qui résolvent un seul problème
Parfois, la partie la plus difficile consiste à proposer quelque chose qui mérite d'être programmé. Si vous le pouvez, essayez de travailler sur un sujet avec lequel vous pensez avoir du mal - comme les cours, l'héritage, etc. Quelques idées qui me viennent à l'esprit:
GetArea
. Maintenant, faites en sorte que les classes Triangle et Rectangle héritent de Polygon et assurez-vous qu'elles implémentent GetArea. Continuez ainsi pour les polygones d'ordre supérieur (pentagone, hexagone, etc.).* Le but du code golf est de faire la tâche fournie en utilisant le moins de caractères, d'octets ou de toute autre mesure indiquée dans la question. Si vous lisez certaines des réponses, vous appréciez rapidement la façon intelligente dont les gens résolvent ces problèmes. Ne vous concentrez pas sur la résolution du problème dans le moins d'octets! Les personnes qui publient sur le golf de code sont des programmeurs très expérimentés. Mais, certaines des questions proposent des tâches faciles en elles-mêmes.
Quelques exemples de codes de golf amusants:
Structure de base pour résoudre un problème:
Beaucoup d'entre eux vous donnent une bonne idée de ce à quoi devrait ressembler une fonction. Étant donné X, faites Y, et le résultat devrait être Z:
Pour apprendre les bases et se familiariser avec une langue, le modèle ci-dessus est suffisant. Un modèle plus orienté objet serait:
Si cela peut vous aider, notez-le également sur papier. Parlez-vous à travers le processus de la façon dont vous , en tant qu'être humain, résoudrait ce problème. Exemple: étant donné les nombres i, j et k, affichez-les par ordre décroissant. En tant que personne, c'est facile à résoudre. La partie difficile consiste à traduire vos idées en instructions ligne par ligne afin qu'un ordinateur puisse les résoudre.
Essayez également de proposer vos propres idées. Cela peut être difficile, mais même le plus simple des programmes peut vous apprendre quelque chose que vous ne saviez pas. Le but est de vous forer avec les bases, jusqu'à ce qu'elles deviennent une seconde nature.
la source
Vous n'irez nulle part en lisant simplement le code; vous devez écrire du code. Écrivez simplement le code. Ne vous inquiétez pas si le code que vous écrivez est de la merde; tout le monde a écrit du code de merde. Certaines personnes en vivent. Personne ne commence à écrire du bon code et je suis d'avis qu'en apprenant, il est presque nécessaire d'écrire du mauvais code car ce n'est qu'alors que la différence entre le bon et le mauvais code devient vraiment apparente.
Il est difficile d'apprécier la différence entre le bon et le mauvais code lors de la lecture de deux blocs de code qui font la même chose, mais lorsque vous avez écrit un script et que vous obtenez quelqu'un de bien informé pour le réviser et fournir des commentaires, la différence devient souvent beaucoup plus apparente car vous pouvez l'appliquer directement à ce que vous savez.
La programmation n'est pas quelque chose que vous pouvez apprendre par mémorisation par cœur; ce n'est pas comme vos tables de multiplication ou vos dates dans l'histoire. La programmation est une compétence pratique qui nécessite une pratique constante pour rester forte. Apprendre la programmation sans écrire de code, c'est comme apprendre à nager en lisant un livre.
la source
Cette question a déjà de très bonnes réponses, mais il y a quelques réflexions que je n'ai pas encore vues.
Apprendre un langage de programmation, c'est un peu comme apprendre un «vrai» langage: c'est toujours beaucoup plus facile à lire qu'à écrire, que ce soit une seule phrase, un article scientifique ou un livre. Lors de la lecture, beaucoup de choses peuvent être déterminées uniquement à partir du contexte, en comprenant le texte ou le code pendant que vous le lisez. Lorsque vous voyez un mot que vous ne connaissez pas, vous connaissez peut-être un autre mot avec la même racine; lorsque vous voyez une méthode, le nom de la méthode vous donne une bonne idée de ce qu'elle fait. Lors de l'écriture, vous devez vous souvenir non seulement de la syntaxe, mais aussi des mots réels à utiliser. Et c'est la même chose pour la programmation.
Comme d'autres l'ont dit, vous ne pouvez pas apprendre à écrire des programmes uniquement à partir de programmes de lecture .
Commencer petit. Recherchez un didacticiel Java et effectuez toutes les unités l'une après l'autre. Et lorsque vous êtes suffisamment confiant, choisissez un petit projet pour tester vos compétences, peut-être un jeu simple que vous connaissez bien qui ne nécessite pas trop d'interaction avec l'interface graphique. Lorsque vous avez décidé, ne vous contentez pas d'ouvrir votre Eclipse et de regarder la «page blanche». Créez un storyboard. Vous n'avez pas à dessiner des diagrammes UML élaborés, pensez simplement à la façon dont certains aspects du programme pourraient être résolus - comment l'histoire ou votre argument se déroule, pour ainsi dire. Et lors de l'écriture du code, commencez par un brouillon. J'écris généralement beaucoup de commentaires, décrivant ce que le programme doit faire, dans quel ordre, puis je commence à remplir le code du programme.
la source
Comme d'autres le disent, il vous suffit de vous entraîner à écrire du code. Pour que cela soit satisfaisant, vous devez vous mettre au défi de résoudre une sorte de problème, qu'il s'agisse d'imprimer des messages prédéfinis, de créer une calculatrice interactive simple ou de résoudre une tâche spécifique.
Si vous manquez d'inspiration, Project Euler a une pléthore d'exercices de mathématiques / programmation de difficulté croissante. Ils vous donnent des objectifs clairs et stimulants à atteindre et devraient vous aider à obtenir des programmes de conception plus confortables.
la source
Je pensais juste que j'interviendrais sur ce sujet parce qu'il touche vraiment près de chez nous.
Vous avez juste besoin de commencer à coder. Ne vous méprenez pas, la lecture est excellente, mais ce qui vous donne vraiment que la connaissance du codage de travail est en fait la construction de quelque chose. J'ai appris plus d'un stage d'été unique que l'année précédente en lisant à ce sujet.
Je dois également ajouter que vous ne devez pas simplement commencer à coder à l'aveugle . Faites-vous un projet. Vous avez besoin d'une sorte de direction pour vous mettre afin que vous sachiez ce que vous voulez faire. Vous serez surpris de voir combien vous apprendrez rapidement. Si vous ouvrez simplement un IDE et commencez à créer de simples exemples de bonjour, ce sentiment démotivant vous envahira rapidement. Trouvez quelque chose avec un peu de profondeur et avant de le savoir, vous allez l'étendre.
la source