Quelqu'un pourrait en proposer une feuille de route pour faire bon en programmation?

Je suis un étudiant diplômé de mathématiques discrètes et informatique théorique. Alors que j’ai été exposé à la programmation avant (en C au cours de mon premier cycle il y a de nombreuses années), j’ai jamais réussi à poursuivre assez au sérieux et se familiariser avec le codage. Je ne peux pas même prétendre être out of touch, car cela impliquerait que j’était à l’aise une fois et il a perdu au fil du temps, alors que la vérité est que même à l’époque j’ai juste réussi à effacer le parcours et n’a jamais été aussi dedans, et maintenant j’ai oublié même les rudiments des langues.
Cependant, j’ai une bonne connaissance des algorithmes, structures de données, etc.. Après que tout mon domaine d’intérêt est la complexité et la théorie de codage, donc je comprends les concepts théoriques de base assez bien. Au moins ces concepts d’indépendamment de la langue liées à mes domaines. Je n’ai aucune connaissance de compilateurs, organisation informatique, bases de données et autres sujets non théorique, bien que je ne suis pas opposé à me familiariser avec eux au moins, à un niveau de base.

N’étant ne pas en mesure de programmer efficacement n’est pas seulement gênant étant un étudiant en informatique théorique, mais c’est aussi un handicap parfois lors de la vérification des conjectures empiriquement, simulation de procédés, ou tout simplement mettre en œuvre des algorithmes pourrait aider à comprendre certains problèmes mieux. Dilapidation de loin ma vie école/Collège sans maîtriser la programmation est l’un de mes plus grands regrets dans la vie. J’espère que c’est pas trop tard pour commencer maintenant.

Donc mon objectif à long terme est de devenir suffisamment à l’aise avec la programmation pour mettre en œuvre des algorithmes, effectuer des simulations, travailler avec des graphiques et des parcelles, recueillir des statistiques et ainsi de suite. Je suis particulièrement intéressé par le codage dans le cadre des mathématiques : algèbre computationnelle et théorie des nombres, graph theory, algèbre linéaire, analyse numérique, théorie des jeux, statistiques, générateurs Pseudo-aléatoires, etc.. Je sais que chacun d'entre eux ont leurs propres langues spécialisées ou les paquets, mais je ne veux pas être pigeon-terré dans n’importe quelle application spécifique ; au contraire, je veux des compétences de programmation polyvalents gardant à l’esprit ces tous. Je me vois aussi profitant de codage comme un passe-temps dans le contexte de puzzles, projet Euler ou TopCoder.
Je n’aime pas pour le développement d’applications, logiciels, design web, réseaux, graphiques, piratage ou toute applications du monde réel.

Je suis venu à comprendre que, compte tenu de mes objectifs, Python n’est un bon point de départ, même si je suis aussi intéressé par Haskell par simple curiosité. Je travaille sur « Apprendre Python the Hard Way » par Zed Shaw et ont commencé à essayer les problèmes sur le projet Euler, dont j’ai terminé autour de 40 en quelques jours. Cependant, je ne suis pas satisfait de mes progrès et sentir que je suis stagne, surtout que certains de mes codes prennent beaucoup de temps à courir et cela rend mon dip de l’enthousiasme général. C’est peut-être dû à des algorithmes naïfs, mais aussi en raison d’un manque d’exposition aux autres outils et fonctionnalités et toute la puissance de la langue. Il est difficile d’évaluer mon propre état d’avancement ou de savoir comment procéder.

Alors est-ce que quelqu'un avec plus d’expérience pourrait suggérer une conduite systématique à plus long terme de l’action? Composée de livres, références, problème archives, activités et plans généraux d’autoformation.

Réponse

> Donc mon objectif à long terme est de devenir suffisamment à l’aise avec la programmation pour mettre en œuvre des algorithmes, effectuer des simulations, travailler avec des graphiques et des parcelles, recueillir des statistiques et ainsi de suite.

Compte tenu de vos objectifs particuliers, vous devriez vous concentrer sur l’apprentissage des gens comme Matlab, Mathematica, R, etc., avant de plonger profondément dans les langues d’usage général.

Pensez de programmation comme les moyens de satisfaire votre fin, non pas la fin elle-même. C’est ce que chaque programme de sci bonne maquette va tenter de vous enseigner.

La clé pour se sentir heureux de programmation est d’avoir des rétroactions positives immédiates - vous souhaitez que votre code pour obtenir au plus près de votre nom de domaine de problème possible, plutôt que d’avoir à faire face à toutes les couches intermédiaires.

Aussi longtemps que l’ou les langues que vous apprenez a

  • sauts conditionnels et inconditionnels
  • mécanismes d’abstraction comme les fonctions et modules

Vous pourrez exercer avec constructions que vous trouverez dans les grands langages de programmation. Lorsque vous arrivez finalement sur une langue dominante, vous trouverez que beaucoup d'entre eux simplement permettre de vous traiter avec les domaines un problème différent, et vous avez appris des concepts sera transférables.

Vous voulez toujours apprendre des langues d’usage général?

Très bien. C’est assez bien comment les gens Pick-up n’importe quel langage de programmation

  1. Acheter un livre sur le langage, c'est-à-dire de O'Reilly programmation, ou série de Manning en Action
  2. Passer par le livre, faites quelques exercices du livre.

    À ce stade, vous aurez quelques indices de ce qui ressemble à la langue

  3. Choisir une idée d’application - quelque chose de petit, mais pas si petit comme un hello world

    Exemple serait d’automatiser une partie de votre tâche quotidienne, ou pour améliorer votre site Web avec quelques fonctionnalités, etc.

  4. Décomposez l’application et aboutir à la conception - diagrammes, histoires d’utilisateurs, etc., tout ce qui fonctionne pour vous

    Assurez-vous de qu'avoir une bonne image mentale sur comment fonctionnerait ce soft

  5. Commencer à écrire l’app utiliser votre livre comme référence. Consulter des références supplémentaires, poser des questions en ligne, participer à la liste de diffusion
  6. Lorsque vous avez terminé - vous saurez que la langue, les outils de compilation, et comment il les programmes. Vous pourriez avoir besoin d’écrire un peu plus d’applications pour apprécier plus profondément, mais le processus reste identique
  7. Rincer et répéter pour une autre langue

Utiliser la langue pour votre but, et vous obtiendrez bon à it.


Tags: Programmation informatique, Langages de programmation, Casse-têtes, De programmation Apprendre à programme