2010-12-12 70 views
2

Je me bats avec une idée depuis quelques semaines et je voulais voir si quelqu'un pouvait m'aider ici. La programmation d'aujourd'hui est pleine d'abstractions, et les personnes qui ne comprennent pas les abstractions ne comprennent pas vraiment la raison ou le dessein de construire cette abstraction/couche/cadre et auront du mal dès qu'elles sortiront de la zone de confort . Je me demandais s'il y a une ressource d'apprentissage qui consiste à enseigner la programmation de façon incrémentielle. Cela permettra de comprendre la pile complète.Apprenez et comprenez la pile complète

  1. prendre un petit problème
  2. mettre en œuvre une solution simple
  3. parler de la solution et les dessins utilisés
  4. convertir la solution dans un cadre ou l'utilité d'une sorte
  5. maintenant étendre le problème espacez et répétez à partir de l'étape 2.

De cette façon, lorsque quelqu'un ramasse un cadre/une bibliothèque, il peut facilement visualiser le pr oblems le cadre tente de résoudre, les décisions de conception prises et les raisons de celui-ci.

[Ajout de préciser l'intention]

Sur la base des réponses et des commentaires ci-dessous, je tiens à préciser que je veux aller plus loin la pile. Construire votre propre ORM pour mieux comprendre ORM, il en va de même pour ActiveRecord, conteneur IOC, liaison de données, moteur de modélisation, et l'hôte d'autres magie/colle/plomberie que nous utilisons au jour le jour.

Merci.

+0

a ajouté une réponse avec un exemple de ressource: http://live.visitmix.com/MIX10/Sessions/EX15 – bronze

+0

Le livre de Django suit le modèle que vous avez décrit pour enseigner à propos de Django Python web-framework http://djangobook.com/fr /1.0/ – jfs

Répondre

0

Lire la source. C'est une bonne idée de construire quelque chose que vous voulez comprendre, mais vous pouvez améliorer votre compréhension des concepts de manière significative en regardant comment quelque chose est construit. Ceci est particulièrement vrai pour les pièces d'infrastructure (ORM/DI/Templating) qui vous semblent intéresser.Obtenez le logiciel à construire sur votre machine, attachez un débogueur et tracez à travers le code. C'est assez facile pour C#/Java avec un bon IDE. Pour les langages dynamiques comme Python et Ruby, il faut un bon éditeur et beaucoup de grepping.

Si c'est un bon logiciel, il aura généralement des tests. Les tests sont un excellent endroit pour commencer à creuser dans le code. Ils clarifient généralement l'intention du code, et vous fournissent également un point de départ logique pour décoller les couches et jeter un coup d'œil sous le capot.

1

Voici ce que je recommande: Avoir une brosse avec l'assemblage (juste un livre ou un mois est suffisant). Avoir une bonne critique de C++ (j'espère que ça vous apprendra aussi du C). Maintenant, le monde est à vous. Python est fait en C/C++, l'objet C est assez proche de C++, .NET est en C++ et C#/VB.NET, L'API Windows est orientée pour C.

J'ai choisi C# comme mon langage abstrait de choix après ceci d'ailleurs.

+0

Ceci est discuté dans un épisode de "This Developer's Life": http://thisdeveloperslife.com/post/1361199493/1-0-6-abstraction. C'est le chemin de http://www.charlespetzold.com/ quoique tous les pinceaux courts que je lui recommande depuis de nombreuses années :) J'ai un profond respect pour son génie. – basarat

+1

J'ai commencé à partir de Pascal, puis C, puis ASM, puis à nouveau C (cette fois avec plus de courage) puis C++ et maintenant je passe à PHP + C#. Mais oui, il faut commencer à bas niveau et remonter à travers les couches d'abstraction. – Quamis

+0

Je suis à peu près sûr que si un gars connaît C c'est aussi abstrait qu'il en a besoin. L'assemblage est vraiment utile lorsque vous faites une programmation de micro-contrôleur, mais dans les systèmes d'exploitation modernes, cela n'a pas vraiment d'importance. – basarat

0

Construire un compilateur entièrement fonctionnel à partir de zéro dans un langage système comme C ou C++. Peut-être que ce n'est pas la pile complète, mais c'est une grande partie de celle-ci. C'est quelque chose que je veux faire aussi. Si seulement je pouvais trouver le temps et l'espace.

0

Le meilleur exemple du type de ressources d'apprentissage que je recherche est la session MIX de Rob Eisenberg sur "BUILD YOUR OWN MVVM FRAMEWORK". Il explique pas à pas le modèle et l'applique en même temps, en s'attaquant à un problème à la fois.

http://live.visitmix.com/MIX10/Sessions/EX15

Hope il y a plus là-bas.