Passé Si les instructions Tableaux, boucles… Et maintenant?


9

J'ai abandonné la programmation il y a un peu plus d'un an quand j'ai continué à frapper ce mur. Je revisite le sujet car je veux créer une application Android de base. Mais je pense que mes connaissances limitées ne suffiront pas.

Voici mon problème.

J'ai lu quelques livres et regardé des didacticiels vidéo sur C # / Java, suivi des exemples, puis terminé le livre. En fin de compte, ils semblent toujours me laisser perplexe quant à ce que je dois faire ensuite.

Quel moyen, ils vous enseignent à partir de votre application de base "bonjour le monde" jusqu'aux ifs et aux tableaux, puis s'attendent apparemment à ce que vous sachiez comment sortir dans le monde du codage et créer quoi que ce soit.

Est-ce que j'ai râté quelque chose? Je sais que ce sont les éléments constitutifs de tous les programmes, mais les livres que je lis ne me montrent jamais vraiment quoi faire ensuite.

La réponse facile, je suppose, serait de «commencer à coder», mais où? J'ai lu "Head First Java" par exemple; jusqu'à la partie où ils vous disent de prendre tout ce que vous avez appris et de créer un jeu de course de chiens ....

"essayez de ne pas tricher et de regarder le code source fourni, vous devriez être en mesure de le faire maintenant" _ ce n'est pas une citation exacte mais en gros c'est ce qu'on m'a dit .......

Il y a une demi-heure, ils expliquaient juste comment faire des tableaux, puis sans aucune théorie, je suis censé créer un jeu de travail?

La raison pour laquelle je pose cette question est parce que je crains que ce soit tout ce que je suis censé savoir pour au moins commencer à coder, mais j'ai l'impression d'avoir reçu une petite boîte à outils et qu'on m'a dit de construire un gratte-ciel.

Merci pour tout conseil


"Jeu de courses de chiens" pourrait signifier beaucoup de choses. Pour commencer, cela implique-t-il même des graphiques? Tant que ce que vous créez n'implique aucun graphique, je pense que cela convient parfaitement à un débutant. Peut-être plutôt le pendu juste pour éviter de penser aux images ...
jhocking

Il est tout à fait possible de construire un gratte-ciel avec cette petite boîte à outils - les gros programmes ne sont que des collections organisées de BEAUCOUP de petits morceaux. Vous ne pourrez pas MAINTENANT , cependant - vous devez commencer par construire un nichoir et remonter. Comme l'a dit jhocking, n'essayez pas encore de faire quoi que ce soit avec les graphiques - il y a une bonne raison pour laquelle les éléments de départ sont toujours basés sur du texte non formaté.
Loren Pechtel

Réponses:


10

Quel moyen, ils vous apprennent à partir de votre application de base "bonjour le monde" jusqu'aux if et aux tableaux, puis attendent apparemment que vous sachiez comment sortir dans le monde du codage et créer quoi que ce soit.

Est-ce que j'ai râté quelque chose? Je sais que ce sont les éléments constitutifs de tous les programmes, mais les livres que je lis ne me montrent jamais vraiment quoi faire ensuite.

En fait non. Ils ne le sont pas. Les éléments constitutifs de tous les programmes sont l'abstraction et la réutilisation. Beaucoup de langages de programmation n'ont même pas de tableaux ou de ifs ou de boucles.

Il existe d'excellents livres qui vous apprennent à programmer par opposition au fonctionnement d'un langage de programmation particulier, qui semble être les livres que vous avez lus.

Comment concevoir des programmes aka HtDP est un tel livre. Il vous apprend bien à concevoir des programmes. Et il le fait en vous donnant des recettes à suivre pour analyser les problèmes, les résoudre, les transformer en algorithmes et plus loin en programmes de travail.

Notez que "recette" est fondamentalement un autre mot pour "programme", donc en d'autres termes, le livre vous apprend des programmes pour les humains à exécuter dans leur tête afin de générer des programmes à exécuter par des ordinateurs. À quel point cela est cool? :-)

Les auteurs travaillent actuellement sur un projet de deuxième édition de HtDP , que vous voudrez peut-être lire à la place de la première édition. Le matériel sur la programmation impérative a été supprimé et va être couvert dans le deuxième volume non encore écrit How to Design Components , mais vous pouvez lire ces chapitres manquants de la première édition.

Notez que HtDP ne suppose aucune connaissance en programmation et s'adresse aux élèves du secondaire. Mais ne vous laissez pas arrêter: cela signifie simplement que vous serez probablement en mesure de terminer certains des premiers chapitres plus rapidement, mais je ne pense pas que vous vous ennuierez.

Les abstractions concrètes sont également une bonne lecture le long de veines similaires. Comme HtDP, il ne suppose aucune connaissance en programmation.

Un autre livre que vous pourriez entendre mentionné est Structure et interprétation des programmes informatiques aka SICP. C'est l'un des meilleurs livres de programmation jamais écrit, et encore une fois, il ne suppose aucune connaissance en programmation.

Il est cependant conçu pour compléter les débutants qui étudient au MIT . Ainsi, alors qu'il ne suppose aucune connaissance de programmation, il ne suppose pas mal de domaine des connaissances, par exemple dans les domaines du génie électrique, la physique et les mathématiques. Remarque: ceux-ci n'ont rien à voir avec les concepts enseignés, ils sont juste nécessaires pour comprendre les exercices et les exemples . Il serait donc préférable de lire d'abord HtDP ou Concrete Abstractions, puis de lire SICP.


1
Je n'ai jamais entendu parler d'un langage de programmation sans une ifdéclaration ou une sorte de loop: Il ne serait pas complet sans eux.
Rétablir Monica - M. Schröder

@Martin Schröder: Il existe des langages de programmation sans loopinstructions et ils sont Turing complets.
Giorgio

@Giorgio: Par exemple? AFAIK vous avez besoin d' une sorte de boucle / goto.
Rétablir Monica - M. Schröder

2
@ MartinSchröder: Lambda Calculus est Turing-complete (en fait, c'est le langage pour lequel ce terme a été inventé), et il n'a que l'abstraction et l'application de fonction. Il n'a même pas de récursivité, vous devez encoder cela en utilisant un combinateur de points fixes! D'un autre côté: il existe de nombreux langages de programmation qui ne sont pas Turing-complete, comme SQL (avant 2003), ou plus subtilement, C (Turing-completeness nécessite un stockage infini, mais C garantit que vous pouvez prendre l'adresse de n'importe quoi et le stocker dans une variable de taille finie).
Jörg W Mittag

2
@ MartinSchröder: Ou, autre chose: il existe des langages de programmation où la simple compilation du programme peut forcer le compilateur à résoudre des problèmes difficiles. En C #, vous pouvez coder des problèmes 3-SAT en tant que problèmes de résolution de surcharge et obliger le compilateur à les résoudre, et dans Haskell, vous pouvez réellement coder des problèmes équivalents au problème de halte dans le système de types et faire en sorte que le compilateur les résolve. Vous semblez penser que les "langages de programmation" sont des langages impératifs mais il existe de nombreux langages non impératifs qui peuvent représenter des calculs complexes.
Eric Lippert

5

Eh bien, vous n'êtes pas dans une situation unique. La plupart des livres les livres pour débutants en langage de programmation ont tendance à se concentrer davantage sur les blocs de construction de base du langage et c'est une bonne chose. Cependant, comme cela vous est arrivé, à la fin, nous nous retrouvons dans une situation où nous avons appris toutes les constructions que la langue a à offrir mais ne pouvons pas les appliquer pour résoudre certains problèmes pratiques. En bref, l'écart entre les exemples textuels et les programmes pratiques ne peut être comblé que lorsque vous essayez de jouer avec le code (comme Telastyn) l'a dit. Voici ce que je fais généralement en apprenant de nouvelles choses:

  1. Tout en apprenant du livre, essayez de trouver des scénarios de la vie réelle où un exemple de code / technique dans le livre peut être appliqué.
  2. Essayez de mélanger les programmes d'exemple donnés dans le livre pour faire quelque chose de plus grand et compliqué. Après cela, essayez de minimiser le code et d'écrire un code différent qui donne le même résultat.
  3. Google pour des projets pratiques pour la langue considérée.
  4. Une fois que vous êtes sûr d'avoir appris l'élément de base du langage, essayez un cadre de votre choix. Pour la première fois, choisissez quelque chose qui a une courbe d'apprentissage plus facile.
  5. Recherchez un projet existant et essayez d'étudier sa conception.
  6. Optez pour des livres avancés qui vous apprennent des choses plus avancées sur la conception d'applications comme les modèles d'application, la conception et la mise en œuvre OO, etc.

En fin de compte, il s'agit de pratique et de recherche qui vous aideront à améliorer vos compétences en programmation et, en fin de compte, à faire de vous un architecte de nombreux gratte-ciel.


2

Voir ceci pour C #. C'est très complet: http://www.programmersheaven.com/ebooks/csharp_ebook.pdf Je l'ai utilisé moi-même, il y a à peine six mois. J'utilise le compilateur #Develop avec lui pour les exemples. Je ne peux pas vous aider beaucoup avec Java car je ne l'ai presque jamais utilisé.

Quand vient le temps de programmer, beaucoup de gens ne réalisent pas que vous utilisez généralement un SDK ou un framework supplémentaire pour ce que vous concevez. Ne vous attendez donc pas à passer immédiatement de Java ou C # à la programmation téléphonique, car vous aurez probablement besoin d'un bon cadre intermédiaire, et les courbes d'apprentissage pour celles-ci peuvent être tout aussi ennuyeuses que les courbes d'apprentissage pour les langages de programmation eux-mêmes. Bien que le didacticiel C # que j'ai publié ne couvre que C #, de nombreux concepts qu'il couvre sont vus dans d'autres langages orientés objet, comme Java.

Edit: Le scénario que vous décrivez est, malheureusement, l'itinéraire suivi par de nombreux didacticiels. Vous n'avez pas à suivre un tel tutoriel, et si cela fonctionne contre la façon dont vous apprenez, il est probablement préférable d'essayer d'en choisir un autre (je n'en connais pas, mais Google le fait probablement). Mais juste pour être sûr, vérifiez si l'auteur de ce livre que vous décrivez a expliqué le code ligne par ligne. Ne vous inquiétez pas de votre intelligence, seul un prodige peut passer directement d'un livre à un jeu de travail. N'oubliez pas que les didacticiels ne sont en aucun cas la mesure standard de la capacité, alors optez pour ce qui vous apprend le mieux et ne vous découragez pas!


Excellente réponse, et j'aimerais ajouter que vous devez décider d'un projet que vous souhaitez entreprendre. Google comment résoudre les problèmes que présente le projet. Vous apprendrez beaucoup en recherchant de meilleures façons de résoudre les problèmes auxquels vous êtes confronté.
Mortalapeman

1

Oui, cela devrait être suffisant pour créer des programmes super basiques. À ce stade, vous essayez de créer un programme légèrement plus complexe que ce que les livres vous ont fait. Lorsque vous avez besoin de faire quelque chose de spécifique et que vous ne savez pas comment, même avec un peu de travail, vous recherchez sur Internet ou demandez à un enseignant / mentor. Cela conduira à des fonctionnalités plus avancées (et assez souvent à une impasse puisque vous avez choisi sans le savoir quelque chose de bien plus complexe que ce que vous pouvez faire).

Aucun livre ne vous apprendra comment résoudre des problèmes.

Aucun livre ne va expliquer comment concevoir des programmes - cela vient avec la pratique. Aucun livre ne vous apprendra à faire une application non triviale - il y a juste trop de nuances; vous apprendrez à construire cette implémentation et non des choses comme ça.

La meilleure façon d'apprendre à ce stade est de barboter. Pour jouer avec le code pour créer quelque chose. Tout comme les artistes commencent souvent à gribouiller de petits morceaux qui deviennent progressivement plus sophistiqués et plus beaux, les programmeurs ont besoin de cette progression exploratoire.


1
"Aucun livre ne va expliquer comment concevoir des programmes" - Les auteurs de Comment concevoir des programmes pourraient ne pas être d'accord :-)
Jörg W Mittag

1
@ JörgWMittag: Ils auront quelques techniques communes et des démonstrations de programmes typiques, mais tout ce qui n'est pas trivial va nécessiter un grand degré de jugement humain appris, qui à partir de 2013, ne peut toujours pas être mécanisé.
whatsisname

1

Je ne me souviens pas vraiment si j'ai utilisé un livre pour entrer dans la programmation, mais je suppose qu'à cette époque, il s'agissait davantage d'un manuel de référence de syntaxe que d'un livre de didacticiel. Il m'a appris ce que le langage de programmation pouvait faire, mais pas comment construire une vraie application avec lui.

Heureusement, il y avait quelques exemples dans le livre que j'avais l'habitude de taper (oui, aucun exemple de code source téléchargeable à ce moment-là), puis j'ai essayé de comprendre comment cela fonctionnait. Ce n'est pas la façon optimale d'apprendre la programmation, mais pour moi c'était amusant à l'époque.

Ce que je recommanderais, c'est que vous vous fixiez un objectif comme " Je veux construire une application Javascript qui dessine un cercle rebondissant ", puis utilisez vos connaissances déjà acquises pour démarrer et rechercher tout le reste dans la langue SDK / documentation et / ou ici sur SO.

C'est l'approche que j'utilise lorsque j'essaie de sauter dans une nouvelle langue et d'apprendre mes premiers pas. La plupart des livres que j'ai lus ces derniers jours n'étaient pas satisfaits car j'avais le même sentiment de manquer quelque chose d'important . Mais heureusement, nous avons les internets maintenant, donc quelle que soit la langue que vous souhaitez apprendre, vous pouvez trouver un exemple de code source sur Internet et l'utiliser pour continuer votre apprentissage.

edit Bien sûr, quelques livres plus généraux vous apprenant comment concevoir une application ou quel processus (SCRUM, XP, V-Modell) suivre est un bon ajout à la connaissance pure du langage.


1

Je suis d'accord avec Jörg que vous devriez également lire quelques livres généraux sur les concepts de programmation plutôt que d'apprendre trop de détails sur une langue particulière à ce stade. En ce qui concerne le livre Comment concevoir des programmes , il est utilisé comme référence dans ce cours , ce qui pourrait vous intéresser.

Sinon, un autre outil que d'autres n'ont pas mentionné est de parler beaucoup avec d'autres développeurs . Je me souviens que pour moi, l'un des moyens les plus efficaces d'apprendre à programmer était de passer de nombreuses heures à discuter avec des collègues ou d'autres programmeurs des aspects de la programmation, des langages de programmation, des techniques ou des problèmes concrets auxquels j'étais confronté à ce moment particulier. La transmission orale des connaissances peut encore être l'un des moyens les plus efficaces pour acquérir de nouvelles compétences.


+1. Je connais des gens qui vont à des conférences sans aller à une seule conversation. Ils y vont juste pour traîner dans les couloirs et discuter des problèmes avec des inconnus, juste pour avoir un point de vue différent.
Jörg W Mittag

0

Je suggérerais de trouver des projets open source et de les transformer en bacs à sable personnels. Modifiez les comportements existants, ajoutez de nouveaux comportements et supprimez-en également. Jouez, mettez en œuvre vos propres idées et "et si j'essayais cela".

Je ne vous conseille pas de convertir quelqu'un d'autre projet open source et de le revendiquer.

Je dis regarder d'autres projets de travail comme un moyen de vous apprendre à passer aux prochaines étapes. Il existe de nombreux sites disponibles avec du code opensource à télécharger. Voici quelques-uns qui me viennent à l'esprit: CodePlex CodeProject


-5

C'est la vie des codeurs. Vous ne connaissez pas une technologie, mais vous développez un «monde bonjour» et vous devenez un expert. Dans les entreprises (la vraie vie), c'est comme ça que ça marche. Bonne chance


2
Ce n'est pas une réponse très utile.
svick
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.