Backtrack My «Education» [fermé]


13

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?


Je ne suis pas clair sur votre question. Donc, lorsque vous avez décidé de commencer la programmation, était-ce pour obtenir un nouvel emploi ou simplement pour accomplir certaines tâches d'administration dans votre travail ou simplement pour le plaisir? J'ai besoin de comprendre d'où vous venez afin de comprendre pourquoi vous regrettez d'avoir commencé de cette façon et quel est le problème de vous retenir? Je n'aime pas faire d'hypothèses.

@JamesDrinkard: C'était juste pour le plaisir d'apprendre! Je ne fais pas ça pour gagner ma vie.
Dynamic

Quel est votre parcours? Connaissez-vous la science? Math? Ingénierie? Travail du bois? :-) Quel type de programmation vous intéresse? Sans ces détails, il est difficile de donner une réponse utile. Ne regrettez pas non plus d'avoir sauté - c'est super!
Guy Sirton

@GuySirton: Je suis un lycéen. Je n'ai vraiment aucune raison de programmer, je le fais!
Dynamic

Réponses:


21

Je ferais ceci:

Chemin A: la méthode semi-typique

  1. 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.

  2. Obtenez un livre sur les structures de données dans cette langue.

  3. Obtenez un livre sur les algorithmes dans cette langue.

  4. 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)

  1. Obtenez le livre "Code"

  2. Obtenez le langage de programmation C de K&R

  3. 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.


Merci! Souhaitez-vous avoir des livres en ligne gratuits à lire? A part ça, c'est une réponse incroyable!
Dynamic

5
+ 1 pour la structure et l'interprétation de la programmation informatique (SICP), il peut être trouvé en ligne ici: mitpress.mit.edu/sicp
NWS

Connaissant Perl, Python me donnera-t-il beaucoup de mal à m'habituer?
Dynamic

1
Après Perl, la plupart des langues vont être un peu une transition difficile. Python est assez facile car il y a essentiellement 1 façon de faire 1 chose plutôt que 50 façons de faire 1 chose comme il y en a en Perl. Le gros truc pour Python est de déterminer quelle version du langage utiliser: 2.7 ou 3.x. J'utiliserais le didacticiel que vous choisiriez et j'irais à partir de là. Une fois que vous êtes meilleur, vous pouvez vous adapter à l'autre au fur et à mesure que les projets avancent.
World Engineer

1
@kevincline: En fait, après avoir fait certains des exercices Python, cela me donne des tonnes de problèmes. À mon humble avis, certaines des choses qui sont extrêmement simples en Perl, sont difficiles (euh) en Python.
Dynamic


1

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.


Si je dis que je veux apprendre une langue qui m'aidera dans le développement Web, mais que je peux encore faire beaucoup plus, que recommanderiez-vous?
Dynamic

-1

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.

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.