8
votes

Programmes de diagrammer

J'ai tendance à être un penseur visuel. Donc, si je peux imaginer le flux de données via un programme, je peux comprendre ce qui se passe mieux que si je lisais une histoire de texte (pseudo code) de ce qui se passe.

existe-t-il un moyen de représenter visuellement la manière dont les variables et les objets circulent et sont modifiés par des fonctions? De préférence quelque chose qui fonctionne à la petite échelle, à l'intérieur d'une fonction individuelle et une plus grande échelle du programme dans son ensemble.

Par exemple, les classes d'anglais utilisées pour enseigner le diagramme de phrase. Les ingénieurs électriques ont des diagrammes de circuit. Y a-t-il un équivalent en informatique?


2 commentaires

Idée très intéressante; Vous voudrez peut-être examiner UML, car il existe des diagrammes qui présentent le flux de programme. Pour descendre à cette granularité, bien que, bien que, bien intéressante, pourrait être irréalisable pour toutes les applications les plus simples, car il y a tellement de chemins différents, les variables peuvent prendre en fonction de ... tout le reste qui se passe dans le code.


Il n'y a pas une manière , mais il y en a beaucoup, des organigrammes de la vieille école (flux de contrôle et flux de données) à UML. Vous êtes plus susceptible de trouver la littérature sous «Ingénierie logicielle» que sous «Informatique» dans votre librairie préférée.


4 Réponses :


3
votes

J'ai tendance à être un penseur visuel aussi. Souvent, lorsque j'essaie de travailler à travers un projet ou que je ne trouve pas l'erreur dans mon code, je le reprends aux diagrammes de blocs.

Ceci peut devenir désordonné avec de grands programmes, mais vous pouvez en quelque sorte "marcher" un morceau de données à travers le diagramme et voir ce qui se passe.


0 commentaires

9
votes

Je suis un haskelleur, alors je vais parler pour pure programmation fonctionnelle. La première chose qui vient à mon esprit est diagrammes de commutation . Ceux-ci peuvent être utilisés pour décrire comment les fonctions et les structures interagissent les unes avec les autres; Cependant, ils définissent plutôt les invariants / les lois que le comportement.

Une autre chose utile de savoir quand réfléchir à l'évaluation du calcul de Lambda (ou des langues de niveau supérieur basées sur celui-ci) sont des graphiques d'expression, tels qu'ils sont utilisés dans réduction graphique . Ils vous ont laissé voir la structure de votre expression, y compris le partage. Bien sûr, cela n'a aucun sens aussi longtemps que le code est pur, c'est-à-dire aucune mutation.

Un troisième type de diagramme, utile pour visualiser comment les données passent bien que les fonctions sont différentes de diagrammes de flux de données, comme ceux utilisés pour flèches (qui peut également être utilisée pour des fonctions normales aussi, car (->) est une flèche) ou SICP " Diagrammes Henderson ". Celles-ci montrent comment les fonctions individuelles sont "branchées". Une autre perspective à ce sujet sont les diagrammes utilisés pour dessiner le traitement des flux / tuyaux et le style de filtre, tels que Diagrammes de marbre , qui se concentre davantage sur une notion de temps (et, par opposition à des diagrammes fléchés, représentent des valeurs individuelles).


0 commentaires

4
votes

Il existe certaines solutions automatisées. Tous deux montrent que vous êtes dans la mémoire de l'ordinateur à chaque étape du calcul.

Python a le Tutor Python qui est entièrement en ligne.

 Tutor Python Sample.

Pour Haskell, voir GHC-VIS . Celui-ci nécessite une installation.

 échantillon


0 commentaires

0
votes

B Clay Shannon mentionné les diagrammes UML, donc je vais prendre le gant. UML Diagrammes existe depuis assez de temps en temps, est un outil reconnu parmi la communauté en développement SO et sont faciles à utiliser et à comprendre.

Je vais mentionner les 2 diagrammes que j'ai tendance à utiliser le plus:

  1. Les diagrammes de classe - dans OO Solutions, qui utilisent l'API et l'abstraction, il peut être facile de se perdre parmi toutes les différentes classes. Un diagramme de classe est une représentation visuelle d'une solution OO pouvant être rendue concise ou complexe en fonction de nos besoins. Spécialisé dans Java, je peux recommander le Plugin d'objet pour l'Eclipse IDE - Il est léger et facile à utiliser : Entrez la description de l'image ici
  2. Diagrammes de séquence - Permettez-nous de documenter les séquences d'appel entre les fonctions / méthodes. Pensez à une pile d'appels graphiques. Outil très fort pour suivre une transaction complexe dans de grands projets. Spécialisée dans Java, il convient de mentionner que objetAid a payé le support pour SDS. Un bon plugin Eclipse gratuit pour SDS est Modelgoon :

    Ceci est juste un très court sommaire de diagrammes UML. La plupart des applications UML permettent aujourd'hui d'ingénierie inverse des diagrammes du code existant et de la génération de codes des diagrammes.

    Cela signifie que vous pouvez documenter le code hérité avec UML et utiliser UML pendant la phase de conception d'une fonctionnalité, à partir duquel le code peut être généré lors de la mise en route sur la mise en œuvre de la fonctionnalité.

    Liens supplémentaires:


0 commentaires