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.