Mein geliebtes LabVIEW,
es war Liebe auf den ersten Blick: mit der Maus einen Draht ziehen, 2 Assistenten aus dem „Express“ Abschnitt auf das Blockdiagramm geworfen und das Ding pfeift – echt. Ich war fix und weg. Und die Möglichkeiten am Frontpanel – sieht echt professionell aus – was man halt so als Anfänger als professionell empfindet. Nein, wirklich toll und das Beste: auch die Kunden sind begeistert.
Ohne Ironie und doppeltem Boden: klar, die anderen haben auch nachgezogen, aber am Frontpanel ist LabVIEW Spitze. Klar, das habe ich auch nicht alles alleine zusammengebracht z.B.: 12000 Stricherln in einem Graph und das Ganze noch mit einem Bild hinterlegt, das habe ich nur mit der Hilfe von Jens hingekriegt.
Aber auch beim Blockdiagramm bleibt einem (wenn man sich nicht daran gewöhnt) der Mund offen: parallele Prozesse – kein Problem, ein Stück C-Code einbauen – auch kein Problem (wenn man keine Unterprogramme braucht), einen Batzen m-Code einbauen … na ja, na gut „geht meistens“. Via POP Protokoll etwas holen – keine wirkliche Mühe. Bilder verarbeiten – ein Vergnügen (im Unterschied zu vielen Bildzerarbeitungs Softwareklumpen). Eine Regelung aufbauen – eine Sache von Minuten. Ein Worddokument mit den Resultaten einer Berechnung schreiben – geht wirklich – echt toll. Eine DLL auch in FORTRAN schreiben und einbinden – kein Problem … äh na ja, wie übergebe ich den da was? Eine Motion Applikation – programmiert in kurzer Zeit.
Summa summarum: eine Sprache mit einem tollen Enduserinterface und einer riesigen Palette der Ausdrucksmöglichkeiten für den Programmierer oder Entwickler.
Aber schauen wir ein bisschen genauer: man kann unendlich viel einstellen, beispielsweise bei einem Motion Interface. Doku …. was ist das? Es werden funktionierende Einstellungen überliefert, was das alles bedeutet weiß auch nicht der Support.
An dieser Stelle eine Lanze für den Support, die Zeiten sind wirklich vorbei, wo ich beim Support richtig brutal falsche Anweisungen bekommen habe (Original Zitat „Lesen von einem Indikator ist nicht möglich“). Entweder warnen die Supportleute sich nun gegenseitig wenn ich drohe, oder sie sind viel besser geworden. Ich denke, die zweite Möglichkeit trifft zu.
Wenden wir uns kurz einem sehr kurzen Thema zu: der Dokumentation. Das Thema ist wirklich kurz, außer dem LabVIEW Einführungshefterl (das sich als Einführung nicht eignet – siehe „dynamische Event Registrierung“, ein typisches Beispiel was ein Neuling nach 80 Seiten Einführung dringend braucht)… nix. Ja ich weiß, da gibt es ein Help, das nicht einmal mit den original Bezeichnungen der NI VI`s manchmal etwas anfangen kann. Ja, es gibt den Example Finder, der echt gut ist. Ja, es gibt die NI Homepage zum Suchen. Lauter Bröckerln von Information, da ein bisschen, dort eine Seite, hier ein kryptischer Verweis auf ein Beispiele in LV 5.0. Ich schreibe selber Manual und sage öfter zum Kunden RTFM. So, das habe ich mir vom NI Support nicht sagen lassen wollen. Ich habe oft gefragt „wo steht das“ und „wo kann ich das nachlesen“ – in 92,7738% aller Fälle SCHWEIGEN. Bitte ich gebe zu, dass der Support noch geheime Suchmöglichkeiten hat, na gut, die sollen auch ein süßes Geheimnis haben. Dezent aber bestimmt darf ich auf das GRATIS Compilerpaket Watcom oder Intel FORTRAN verweisen: 1000 Seite Doku ist da das Mindeste und das noch bei einem Gratiscompiler. Klar, niemand ließt so was am Stück (willkommen in der Klapsmühle) aber nachschauen will ich, ob das was ich mir da zusammengeschustert habe immer funktioniert oder nur manchmal.
Darf ich auch an die (echt) zahlreichen NI Dokus verweisen, die nur aus dem Titel und dem ausführlichen (!) Copyright-Bereich bestehen! Alleine das Suchen der Doku(reste) ist ein Abenteuer: „C:ProgrammeNational Instruments“ und dann mit Suchen nach *.PDF
Es gibt aber auch wahre Doku-Diamanten: das Regelungs-Manual hat eine tolle Einführung, hat Praxis Tipps und einen ausführlichen Dokumentationsteil der VI`s, aber dann finde ich schon nichts mehr außer dem Vision Manual. Ah ja, das DAQmx Manual ist auch super aber manchmal echt schwer zu lesen. Klar, niemand schreibt gerne Manuals, da gibt es eine Untersuchung, dass eine Seite Manual der Softwarefirma 300 bis 800EUR kostet – und was kostet uns das Herumsuchen? Auch kann ich nicht davon ausgehen, dass es immer einen Jens, Lucki, i2dx oder IchSelbst gibt, der mir aus der Patsche hilft.
Lustig fand ich auch nach der Einführung der MathScriptNode die Aussage meines NI Betreuers „das ist eher für Universitäten“ – ich (Gottfried) darf es auch hochdeutsch formulierter „nix verwenden, noch very buggy“
Auch Geliebte entwickeln sich, warum aber gerade in Richtung OOP frage ich. Na, wenn’s den Entwicklern gefällt möchte ich sagen. Aber sollte nicht unser Nutzen im Vordergrund stehen? Nein, das ist selbstsüchtig von mir und die Herrn (und Damen?) Entwickler müssen sich ja auch irgendwo verwirklichen. Außerdem ist OOP die Lösung aller Softwareprobleme (siehe Publikationen aus den 80er Jahren des vorigen Jahrhunderts) und manche glauben das noch immer.
Wer mir zu viel gelobt wird, ist der Example Finder, ich gebe ja zu, dass da vieles, was so den täglichen Gebrauch von LabVIEW erträglich macht, mit einem Beispiel „erklärt“ wird. Ich finde nur, das ist eine faule Ausrede dafür, kein Handbuch schreiben zu müssen. Und ich kenne das von mir – ich verwende ein Example, aber verstanden habe ich das am Anfang nicht. Ich denke nur an meine Anfänge zurück wie ich staunend vor einem Blockdiagramm „gestanden“ bin wo ein Indikator einfach ohne Draht war. Außerdem sind manche Beispiele im ExampleFinder sehr elegant gelöst, so elegant, dass (ich verwende LV seit 2004 mit wirklichem Gewinn) ich noch immer nicht begreife wie das Ding funktioniert – siehe „Grab and Attribute Setup.vi“. Aus Österreichisch nennt man so was überkandierlt, was übersetzt etwa „zu zuckrig“ bedeuten könnte.
Vielleicht noch ein Schlaglicht auf die Fehlermeldungen: Code -9876453098670876 ist nicht wirklich sprechend, aber es gibt ja auch einen Text dazu. Es gibt aber Fehlermeldungen von LV Modulen wie „Parameter Error“, die - ähh sagen wir- Deutlichkeit vermissen. Diese Fehlermeldung hat ja ein LV Programmierer einmal eingebaut – warum (verdammt noch einmal) hat er nicht dokumentiert unter welchen Umständen diese Fehlermeldung ausgegeben wird. Ich stelle nicht in Abrede, dass es ein „Parameter Error“ ist, aber warum (verflucht noch einmal) soll ich probieren welcher, wenn es den Programmierer nur ein bisschen Zeit gekostet hätte es niederzuschreiben.
Ähnliches (remote debug) mit meinem „Failed to connect to remote application“,
http://www.LabVIEWforum.de/remote-debug-t12106.html
das hat ja jemand da hineinprogrammiert. Jetzt sucht Ihr, der Support und natürlich ich herum und probieren, nur weil da jemand zu bequem war hinzuschreiben unter welchen Umständen der Text ausgegeben wird. Genauso der remote Debug Port – na klar, nach einigem Suchen 3680, dann gibt es das Gerücht (NI Support) es müssen auch die „VISA com Ports“ offen sein, meine Frage welche sind das ….. Schweigen. Auch gibt es das Gerücht, es müssten ALLE über 1000 offen sein … darf das wahr sein?
Mein besonderer Liebling der Application Builder
Ja besonders angetan bin ich vor allem vom Application Builder. Der „Build Status“ bringt einen Neuling in den Irrenturm: der Fortschrittsbalken saust nur so dahin und so etwa bei 99% macht er halt, nicht um zu verschnaufen nein, dort bleibt er 20 Minuten oder länger. Der Höhepunkt kommt und kommt und kommt und kommt und kommt nicht. Man bemüht den ProcessViewer um zu schauen ob der Computer noch lebt, untersucht die Netzversorgung nein, das Ding braucht einfach so lange, wahrscheinlich um die Lizenzbedingungen in Koreanisch dazuzulinken.
Besonders aufbauend ist hier auch, dass wenn man einen Installer für eine NI-nackte Maschine produzieren möchte, für den Bediener geheim ist, was denn da für Laufzeitsysteme dazuzugeben sind – ich möchte nicht wissen wie viele hunderttausend Stunden Entwicklerzeit da schon weltweit drauf gegangen sind und die Bezeichnungen sagen nicht einmal mir nach 5 Jahren alle etwas. Na muss ich jetzt, wenn ich den COM Port verwende, VISA dazulinken (es gibt eh nur 4 verschiedene Runtime Packages die mit VISA beginnen) oder nicht? Was bitte ist ein „Compliance Package“ die Hilfe verweist auf IVI – aha na ja dann… Oder die „Variable Engine“ – help – „NI Variable Engine“, jetzt ist alles klar und unmissverständlich. Na brauch ich das auf der nackten Maschine? Es ist ja wohl ein Scherz, dass es eingeführte Praxis ist, das man einen gerade gebauten Installer auf einer virtuellen Maschine ausprobieren muss um draufzukommen, ob man alles eingepackt hat.
Erotisch ist auch das gierige Verlangen des Application Builders nach CDs oder DVDs. Schön dass vorher bekannt gegeben wird was man denn nun in Kürze in den DVD Schlitz stecken soll, alleine nur das Verlangen nach der DVD1 ist ziemlich eindeutig, ansonsten werden DVDs verlangt, die es einfach nicht gibt – hier kommt auch die Erotik ins Spiel – man weiß einfach nicht woran man ist und muss probieren…. wie in der Wirklichkeit, prickelnd und aufregend.
Ich denke auch, es ist ein großer Fehler DER Application Builder zu sagen, das kann nicht sein, das Ding ist launisch und manchmal mag es nicht – na gut, soll vorkommen. Aber dass es bei mehrfach dasselbe Linken unterschiedliche DVDs will oder hintereinander dieselbe DVD jedes Mal obwohl das Caching eingeschaltet ist ….. Na ja, das können nur die Entwickler erklären und das ist nicht sicher.
Gestern – keine Übertreibung, ist tatsächlich passiert, verlangt sie (?) die Vision DVD obwohl in der ganzen Applikation kein einziger Modul davon vorkommt. Ich wundere mich nicht mehr.
Die Doku zum Application Builder ist sehr LabVIEW-like: nix wirkliches gibt’s nicht, hie und da ein Gerücht, eine 2 Seiten Einführung auf der ni.com Homepage und sonst das bekannte Gefühl aus einem Computerspiel: vielleicht so oder so oder ganz wo anders…. Nur so als Beispiel, der Linker für den Gratiscopiler Watcom C hat ca 300 Seiten.
Ein ehrliches Liebesresümee: das Positive überwiegt bei weitem, das (von mir als) negativ Empfundene stört aber trotzdem. Man kann mit LabVIEW schnell und präsentabel programmieren, man kann vereinheitlicht auf Hardware zugreifen, man kann sich auf die verschiedensten Weisen ausdrücken – echt toll.
Und wenn es klemmt – es gibt ja noch das Forum
Gottfried
PS.: werde ich jetzt gelyncht?