PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Werkzeuge um Algorithmen zu visualisieren ...


Watson007
2010-05-10, 22:31:02
wollte mal wissen, ob Ihr für die Programmierung irgendwelche grafischen Hilfsmittel benutzt, um komplexe Algorithmen zu visualisieren?

Mir ist kürzlich nur wieder klar geworden das mir zu häufig der Algorithmus erst beim Programmieren richtig klar wird...

Sven77
2010-05-10, 22:32:54
Um einen Algorithmus verständlich zu machen? Pseudo-Code ist für mich die beste Art komplexe Algorithmen zu verstehen, aber das meinst du wahrscheinlich nicht.. grafisch ist sowas meist schwer, evt. durch Knoten-diagramme

Watson007
2010-05-10, 22:54:11
Um einen Algorithmus verständlich zu machen?

ja, genau... ich sollte wahrscheinlich noch methodischer vorgehen, um den richtigen Algorithmus herauszufinden....

Monger
2010-05-10, 22:58:22
Ich habe immer einen Notizblock am Arbeitsplatz liegen, damit ich da Zeugs drauf kritzeln kann! :ugly:

Mein Problem ist: ich kenne keine grafischen Tools, die so leichtgewichtig wären, dass man mal schnell in fünf Minuten irgendwas komplexes skizzieren kann. Eigentlich bräuchte man für sowas ein digitales Whiteboard - aber sowas haben wir leider nicht. Es gibt ja auch Tools, woraus man z.B. aus einem Codeausschnitt ein NS Diagramm schustert - aber ich finde, wirklich besser lesbar als Pseudocode ist das danach trotzdem nicht.

Gnafoo
2010-05-11, 00:11:42
Joa der gute alte Notizblock ist auch eines meiner Lieblings-Tools beim Programmieren.

BAGZZlash
2010-05-11, 08:08:16
Ich benutze auch Blatt und Stift, unverzichtbare Hilfsmittel beim Programmieren. Um fremde (d.h. nicht selbst entwickelte) Algorithmen zu verstehen hilft mir am besten Pseudocode. Irgendwelche Baumdiagramme oder so verwirren mich eher.

Tiamat
2010-05-11, 19:47:42
Es gibt da das berühmte Nassi-Shneiderman-Diagramm.
Ansonsten bieten sich einige Dinger der UML an.
Aktivitätsdiagramme, Flussdiagramme und die unbeliebteren Sequenzdiagramme ^^ oder auch Zustandsdiagramme.

Probier es aus, schaden kann es nicht..

Ansonsten natürlich der bereits erwähnte Notizblock :-)

Marscel
2010-05-11, 22:19:59
Processing: http://processing.org/

Hat mir bei sehr vielen Dingen mühsames Vorstellen oder Debuggen erspart. Sehr einfach, mal eben eine customized 2D/3D Visualisierung zu realisieren.

Watson007
2010-05-12, 00:48:16
Processing: http://processing.org/

Hat mir bei sehr vielen Dingen mühsames Vorstellen oder Debuggen erspart. Sehr einfach, mal eben eine customized 2D/3D Visualisierung zu realisieren.

hm interessant.... muss ich noch ausführlich testen, danke.

Falls es jemand noch nicht kennt, den Snippet Compiler

http://www.sliver.com/dotnet/SnippetCompiler/

passt aber nicht ganz ins Thema, weil es dabei nur darum geht Code allgemein zu testen ohne ein Projekt anzulegen, also nicht unbedingt Visualisierung...

Gast
2010-05-12, 15:26:42
AGG http://user.cs.tu-berlin.de/~gragra/agg/down.html

Trap
2010-05-12, 20:30:45
Algorithmen hab ich bisher nur über ihre Wirkung auf Datenstrukturen visualisiert gesehen. Man braucht also eine Visualisierung der Datenstruktur und eine Ebene zwischen Algorithmus und Datenstruktur die alle Änderungen abfängt und visualisiert.

Was wahrscheinlich auch ganz praktisch ist, wenn man Java verwendet: http://www.lambdacs.com/debugger/
Damit kann man den kompletten Ablauf des Algorithmus im Detail angucken ohne sich mit Breakpoints oder Stepping abzumühen.

Watson007
2011-05-02, 19:08:56
gibt es da eigentlich noch weitere Möglichkeiten?

airbag
2011-05-02, 19:13:05
Es gibt da das berühmte Nassi-Shneiderman-Diagramm.
Ansonsten bieten sich einige Dinger der UML an.

Ich finde aber dass die Dinger ein bisschen umständlich zu machen sind. Sprich es dauert einfach zu lange und ein gescheites Tool gibt es auch nicht dafür.

Also bleibt einem nur Papier und Stift übrig.

Pinoccio
2011-05-02, 19:15:23
Was wahrscheinlich auch ganz praktisch ist, wenn man Java verwendet: http://www.lambdacs.com/debugger/
Damit kann man den kompletten Ablauf des Algorithmus im Detail angucken ohne sich mit Breakpoints oder Stepping abzumühen.Danke für den Link.

mfg

Watson007
2011-05-02, 19:26:32
Processing kann standardmäßig keine Scrollbalken, wie es scheint.

Hätte nicht gedacht das ich so schnell an Begrenzungen stosse...

Marscel
2011-05-02, 20:01:19
Processing kann standardmäßig keine Scrollbalken, wie es scheint.

Maus- oder Tastaturevents zum Bewegen nehmen und die Kamera neu setzen bzw. das Bild neu zeichnen.

Watson007
2011-05-02, 20:42:39
Maus- oder Tastaturevents zum Bewegen nehmen und die Kamera neu setzen bzw. das Bild neu zeichnen.

ist mir im Moment zu aufwendig. Dann wird halt der Maßstab kleiner gesetzt...

dieses AGG, hat sonst noch jemand getestet? Taugt das etwas?

Watson007
2011-05-04, 10:26:23
AGG http://user.cs.tu-berlin.de/~gragra/agg/down.html

puh, das sieht verdammt schwierig aus. Kennt jemand ein Tutorial dazu?

Watson007
2014-08-23, 14:54:33
gibt es mittlerweile neue Werkzeuge dazu?

dieses AGG habe ich immer noch nicht erfolgreich getestet, sieht mir aber auch eher nach einem Transformationstool für Datenstrukturen aus.

lambdacs scheint nicht mehr online zu sein

Monger
2014-08-23, 16:10:48
Ich glaub, am Grundproblem hat sich nix geändert. Mir sind keine neuen Tools bekannt.

Das Problem ist: sofern es nicht eine automatische 1:1 Übersetzung von Code in Visualisierung gibt, ist die Grafik schneller veraltet als der Code. Außerdem will man sich ja oft das Problem verdeutlichen BEVOR man es geschrieben hat.

Viele Algorithmen sind statisch auch äußerst schwer zu verstehen, zur Laufzeit dagegen relativ einfach. Nicht umsonst steppen viele Entwickler gerne per Debugger ihren Code durch. Mit TDD kommt man da oft schneller ans Ziel, und anders als irgendwelche Diagramme ist der Test hintendran keine Wegwerfware.

Wir haben bei uns auf Arbeit etliche Whiteboards rumstehen. Die werden mehrfach pro Tag beschrieben, und sofort wieder gewischt. In bestimmten Fällen machen wir mal ein Foto davon, und heften das Foto irgendwo hin bis es vielleicht eines Tages mal in Powerpoint als offizielles Dokument gespeichert wird. Ist aber die absolute Ausnahme.