Weiter Zurück Inhalt

6. tkmatrix intern

6.1 Anfang

Das Programm wurde zuerst auf AMIGA 500 (!) 1MB 8MHz (kein HD) geschrieben und getestet. Ich habe nur Standard IN/OUT Funktionen aus C++ Bibliothek benutzt (Version 1.0). Das Programm war damit nicht komfortabel aber das Quellcode kann auf jedes System, was C++ hat, portiert werden. (Was auf Amiga läuft, läuft überall) .Diese erste Version kann ich mit Quellcode jeden zur Verfügung stellen. Ich habe verzichtet, das Programm auf Amiga weiter zu entwickeln und habe weiter unter Windows gearbeitet. Leider kann ich hier nicht von einen Vorschritt sagen, oft ist das das Gegenteil. Ich habe sehr mühsam eine Oberfläche gebastelt und das Programm ist rasch um 20-fache am Größe gewachsen. So ist die Matrix 2.0 (für Win 3.1) entstanden. Es ist ein Public Domain Programm. Grundcharakteristika: (Negativ + Positiv)

Naher habe ich mit Windows 95 gearbeitet (sich gequält). 80% der Anstrengung ging in die GUI Entwicklung.

Matrix 3.0 Die Neuheiten:

Die beide Versionen sind kostenlos auf meiner Homepage runterzuladen

Ende 1997 habe ich Linux entdeckt. Der Anfang war schwierig aber inzwischen bin ich davon total begeistert. Die Entwicklung unter Win95 habe ich aufgeben und beschränke mich nur noch auf Bugsentfernen. Ich müßte noch ein ganzes Sätzungprogramm dazu schreiben und unter Linux habe ich doch Latex. Ich habe auch keine Lust noch weitere Windows95 feel& look (schnick & schnack) zu interpretieren. Zumindest, weil es nie auf Anhieb funktioniert und man sich unheimlich ärgern muß.

Ende 1998 habe ich entlich Zeit gefunden die graphische Benutzeroberflächer für den Programm auf XWindows Systeme zu schreiben. Statt weiter in C++ zu programmieren beschloß ich die GUI in Tk/Tcl zu schreiben und die ganze Mathe als eine Tcl Biblothek zu kappseln. Die Resultate waren sehr gut, die Entwicklung mit tk was sehr schnell und angenehm. Dagegen sind Visual C++ oder Visual Basic reine Quellerei und sollten durch UNO oder sonst was verboten werden.

Ein paar statistische Daten. Die ich bei der Entwicklung gesammelt habe Zeit in Stunden, LOC = Line of Code

tcl Biblothek (927 LOC)- Design 3 ,Kodierung 11.5, Tests 9

Tk Oberfläche (2550 LOC) - Design 2 ,Kodierung 41, Tests 7

Dokumentation- 10

Gesamtaufwand (nur tk Version) , ohne Reserch, Internetsurfen und Support 70.5 Stunden

6.2 Weiterentwicklung des Programms

Die Entwicklung könnte sich in verschiedene Richtungen bewegen

Mit Englischen Version schaffe ich es nicht. Deutsch ist bereits meine 2. Sprache. Ich zähle auf eure Hilfe. Werden Sie zum Entwickler.

Ich suche Hilfe: In dieser früheren Phase sind Bugsreports besonders wichtig. Ich werde mich freuen, wenn irgendjemand ein Fehler entdeckt. Wenn irgendjemand sich über Rechtschreib- und Gramatikfehler aufregt, kann er die korrigierte sgml Dokumentation Quelle an mich zurückschicken. Ich möchte das Programm vorallen auch inhaltlich (mathematisch) erweitern, leider sind meine Kenntnisse, was lineare Algebra angeht, hier zu Ende. Vorschläge zu dieser Erweiterung (Algorithmen) sind willkommen.

6.3 Grenzen des Programm; Fehler

Ab Version 0.4 benutzt tkmatrix für Bruchrechnungen die Biblithek gmp (GNU multiple precision arithmetic library). Die Länge der Zahlen ist nur mit dem Speicherplatz des Komputers begrentzt. Man kann aber den Programm mit dem allten Modul kompilieren (siehe Datei rational.h) Dabei gilt Für jedes Bruch werden 3 long integer benutzt (für Ganzzahl, Nenner und Zähler). Die Zahlen Überläufe werden erkannt.

Ich habe das auf allen Aufgaben, die ich bekommen könnte getestet. Es funktionierte wie erhofft. Das heißt es aber nicht, daß das Programm alle möglichen Aufgaben gut lösen kann. Das kann kein Programmierer garantieren. (Verifikation des Codes ist nur theoretisch möglich und darum kann es keine völlig korrekte Programme geben) Deswegen kann es vorkommen, daß sinnlose Ergebnisse ausgegeben werden . Der Komputerabsturz kann wegen Endlosschleifen auch passieren. (Nicht gleich den Programmierer verfluchen) Die Algorithmen können auch (wo passiert das nicht) beim ungewöhnlichen Input Matrizen nicht richtige Ergebnisse liefern oder sogar nicht terminieren.(Aufpassen beim Eckenfindung)

I Ich nehme keine Verantwortung für Schaden, die das Programm anrichten könnte.

Funktionierte etwas bei deiner Maschine nicht. Laß mich davon wissen. Eine genaue Beschreibung von Fehlfunktionen und frühere Eingaben (Inputs) werden die Fehlersuche erleichtern und sogar erst möglich gemacht.

6.4 Programminterna

Der Kern des Programms wurde von über 2 Jahren geschrieben und nur für eigene Benutzung bedacht. Irgendwann habe ich die Mathe I Klausur bestanden aber das Programm entwickelte ich weiter. Inzwischen hat der Code ein paar Compiler und 3 Systeme (Amiga, Win95, Linux) beschäftigt.

Daraus ergeben sich zwei Sachen. Erstmals der Code ist manchmal erstaunlich ungleich in Programmiertechnikniveau (von Unbeholfen zum Überreif, mit ein paar Tricks um miese Compiler auszutricksen). Zweitens es hat sich bewahrt.

Es ist alles in C++ geschrieben. Ich habe versucht nur in gutem Still und zukunftbezogen zu Programmieren. Das Klassendesign habe ich schon 2 mal mit großen Aufwand geändert. Zu diesem Zeit benutzt es nur gute Object Orientiete Techniken;),da wo es nötig ist. Alles ist schön in Klassen geordnet mit Is-A und Has-A (templates) Beziehungen. Ich benutzte Standart Template Library und habe das Code mit Hilfe von Templates klein und verständlich gehalten. Fehlerbehandlung wird mit Hilfe von Fehlerklassen erledigt

das Code ist geteilt auf Dateien

Compilieren mit gcc

Meine Version von gcc hatte ein paar Probleme mit solchen nicht trivialen Sachen wie Templates und Fehlerklassen (keine parametrisierte Templates) und keine Fehlerklassen mit dynamischen Komponenten waren möglich.

Das Programm ist unter GNU Lizenz geschrieben. Du kannst es für nicht kommerzielle Zwecke benutzen, verändern, aber du kannst kein Pfennie damit verdienen. (Programmierer leben nur von der Behebung der Schäden, die durch ihre Programme entstanden sind)

Werden Sie zum Mitentwickler: Wenn Sie etwas unlogisch, schwer Begreiflich, oder einfach etwas für verbesserungsbedürtig, im Programm halten, lassen Sie mich davon wissen.

Das Programm darf nicht verkauft und auch anders kommerziell verbreitet werden.

Ich nehme keine Verantwortung für die Schaden, die das Programm verursachenkönnte.

6.5 Tcl Bibliothek matrixtcl.so

Tkmatrix is kein back-end zu Programm matrix im engen Sinne. Ich habe eine Tcl Biblothek geschaffen, die von Tk/Tcl geladen wird. Tcl/Tk wird so neue Funktion matrixtcl bekommen

Benutzung von matizen von tcl wird objektorientiert entworfen. matrixtcl wird zu einen Behälter (Konteiner) für matrix Objekte. Man kann entweder Operationnen auf dem Konteiner selbst oder auf die Matrix-Objekte vornehmen.

Operationen auf dem Behälter

Operationen auf Matrizen Funktionen die Schnittstellen zu anderen Programmen unterstützen sollen. Protokol und Matrixergebnis setzten.

6.6 Zu Dokumentation

Diese Dokumentation wurde mit sgml-tools ertellt. Man kann sie in verschiedene Formate transferieren. Am besten sieht es aber als Latex Datei. Übersetzt mit Kommando sgml2latex -a -g -p matrix.sgml zu Post Script. So sind alle mathematische Zeichen ersichtlicht. Für Html Transformation mußte ich die Datei /usr/lib/sgml-tools/rep/html/mapping und general verändern. Sonst würde man überhaupt keine mathematische Zeichen sehen oder sie sich zudenken können.

Der mathematische Teil habe ich im Latex übergearbeitet und als mathe1.pdf und mathe1.ps zu verfügung gestellt.

6.7 Author

Zur Zeit studiere ich Wirtschaftsinformatik an der UGH Essen. Das Programm habe ich noch im 1. Semester des Studium angefangen. Primär um c++ zu lernen. Nacher habe ich immer neue techniken im Programm benutzt, so daß es jetzt ziemlich komplieziert und voll von akademieschen Spinnereien ist.

Einen Wirtschaftsinformatiker unterscheidet man von einem Informatiker, danach daß Informatiker immer Computer einsetzten, Wirtschaftsinformatiker nur sinnvoll.

Artur Trzewik mail@xdobry.de

Homepage www.xdobry/tkmatrix


Weiter Zurück Inhalt