Il y a quelque temps, j'ai décidé de commencer la programmation. J'ai vraiment, juste sauté dans une langue (Perl) et je suis parti de là. Ce que je regrette, c'est que je viens de me lancer:
Je n'ai pas appris les bases (si vous les appelez bases).
Je n'ai pas appris l'informatique.
Cette question, je crois, me retient de mon véritable potentiel. Où dois-je "redémarrer"? Y a-t-il des livres, des articles, etc. que je devrais lire? Y a-t-il des sujets qu'un programmeur expérimenté devrait connaître? Qu'est-ce que tu me conseilles?
education
computer-science
experience
Dynamique
la source
la source
Réponses:
Je ferais ceci:
Chemin A: la méthode semi-typique
Apprenez un langage avec une syntaxe plus régularisée comme Java, C # ou Python. Perl est un outil incroyablement utile, mais il est également très très libre quant à la façon dont il vous permet de faire les choses. Les autres langues que j'ai énumérées le sont beaucoup, beaucoup moins.
Obtenez un livre sur les structures de données dans cette langue.
Obtenez un livre sur les algorithmes dans cette langue.
Obtenez du code complet et efficace Java / C # / quelle que soit la version de Python.
Chemin B: le chemin des Lumières de Joel Spolsky (ou la mort, faites votre choix)
Obtenez le livre "Code"
Obtenez le langage de programmation C de K&R
Obtenez la structure et l'interprétation de la programmation informatique
En ce qui concerne la méthode, la méthode 1 vous apprendra la programmation de manière plus régulière. Les concepts de l'informatique dans une certaine mesure (pas encore de théorie de la complexité, croyez-moi) et vous fournir un langage qui est mieux pour travailler dans des projets avec d'autres personnes et pour faire de plus grandes applications.
La méthode 2 est plus hardcore, c'est beaucoup plus une approche fondamentale avec "Code" expliquant les bases, K&R présentant le niveau machine et le SICP introduisant les concepts de niveau supérieur. C'est un chemin beaucoup plus difficile mais plus ciblé.
Dans les deux cas, donnez-vous du temps. Rome n'a pas été construite en un jour et les compétences en programmation ne le sont pas non plus, même si vous êtes un génie. La programmation de Peter Norvig en 10 ans est l'essai habituel vers lequel je pointe les gens.
Addenda:
En ce qui concerne les trucs gratuits disponibles: Python the Hard Way comme indiqué ci-dessous est un bon début, à partir de là, Comment penser comme un informaticien est une suite raisonnable.
Il existe un certain nombre de ressources sur les algorithmes et honnêtement, vous pouvez probablement changer les étapes 3 et 4 sans problème. Gardez à l'esprit que c'est là que les mathématiques commencent vraiment à apparaître, alors n'ayez pas peur de demander de l'aide lorsque vous arrivez à ce stade. Cela semble être un guide gratuit raisonnable .
Il n'y a vraiment pas d'équivalent gratuit cohérent à Code Complete même si Code comme un Pythonista semble assez solide. L'important est de se concentrer sur la lisibilité de votre code une fois que vous avez maîtrisé les fondamentaux. Ce n'est pas "nécessaire" de la même manière que d'avoir toute la syntaxe de votre code correct, mais cela rend la vie beaucoup plus facile une fois que vous avez dépassé les petits programmes ou que vous travaillez sur quelque chose sur une longue période.
Vous trouverez peut-être que je me suis principalement concentré sur Python, c'est parce que c'est le plus simple des trois pour trouver des trucs gratuits bien écrits. Je pense que les tutoriels Java d'Oracle sont bien, mais ils sont un peu secs et pas parfaits pour les débutants. C # se trouve dans une situation similaire bien que ni l'un ni l'autre ne souffre d'un manque de documentation.
Aussi, votre première plaisanterie / jeu de mots CS: vous voulez "refactoriser" votre éducation, pas Backtrack.
la source
Je dirais viser à apprendre Python à la dure ; c'est une bonne approche. Allez de là; cela prendra assez de temps pour vous donner le temps de trouver d'autres ressources.
À mon avis, le «chemin B» mentionné dans une autre réponse n'est pas approprié à ce stade.
la source
Eh bien, j'ai commencé pour la même raison car j'avais quelques connaissances sur le matériel et j'étais intrigué par la programmation. J'aime apprendre de nouvelles choses.
J'ai commencé avec des fichiers DOS Batch, puis QuickBasic, puis Visual Basic, VBA, MASM, avec Access pour le travail de base de données avant de décrocher mon premier emploi. Pour moi, c'était le meilleur chemin, commencer simplement et ensuite construire à partir de là.
Je dirais décider de ce que vous aimez le plus dans la programmation et suivre cette voie, les scripts, le développement Web, la programmation Windows, etc ... Si vous ne savez pas, alors commencez à travailler avec certains langages pour voir ce que vous aimez. Vous aurez cependant besoin de temps. Il faut environ 5 ans pour devenir vraiment bon avec un langage comme Java ou peut-être C ++, à mon humble avis.
En tant que langage pour aider à apprendre le développement Web, JavaScript est certainement, PHP est populaire et Python, mais c'est IMHO. On suppose que vous connaîtrez ou apprendrez HTML / CSS. J'ai vraiment sous-estimé le javascript, même si je l'utilise depuis 2001. J'ai fait la même chose avec CSS et je ne pensais pas que c'était important. J'ai également changé d'avis à ce sujet.
Lorsque j'essaie de déterminer une tendance, je vais sur http://www.indeed.com et je clique sur le lien des tendances dans la partie supérieure gauche de la page. Ensuite, j'ai mis des mots clés comme PHP et Python et je vois ceux qui sont supprimés pour les postes réels qui sont sur Internet.
C'est dans une perspective de carrière et basé sur ce qui m'apporte le plus de valeur pour les clients (employeurs). Pas seulement dans une perspective d'apprentissage.
la source
Apprenez-en plus sur les algorithmes dans leur forme la plus élémentaire, oubliez les langues pendant un certain temps. Trier les vecteurs, les mots, etc. Freepascal est un langage agréable pour commencer avec ces choses, j'aime Perl mais avec tous ses raccourcis et ses trucs sympas, vous négligerez souvent l'algorithme inhérent au programme.
la source