|
|
|
|
|
|
|
|
| Inhalt | Seite 1 | Seite 2 | Seite 3 | Seite 4 | Seite 5 |
Leider knnen selbst Autoren von Fachzeitschriften die verschiedenen Basicarten nicht auseinander halten.
Visual Basic (VB):
1991 erschienen, vereinfachte die Softwareentwicklung unter Windows revolutionr und war das erste System das Komponentenbasierte Softwareentwicklung ermglichte. Viele VB Veteranen sind seit Version 1.0 dabei und waren vllig verblfft von der Einfachheit mit der unter VB Programme entwickelt werden konnten. Die Konzepte der IDE (Integrated Development Environment) finden sich heute in allen modernen IDEs.
Mit VB werden richtige Windowsprogramme und COM - Komponenten entwickelt. Es ist sozusagen der groe Bruder.
Visual Basic for Applications (VBA):
VBA ist als Makroprogrammiersprache zuerst in Excel 5.0 entstanden. Im Laufe der Zeit hat MS alle Applikationen mit VBA als Makrosprache ausgestattet. Auch andere Hersteller knnen VBA lizenzieren und damit ihre eigenen Applikationen um eine Makrosprache erweitern. Dazu mu eine Applikation ein Objektmodell offen legen, mit dem der VBA Programmierer etwas machen kann. Mittels VBA knnen die MS-Office Programme komplett ferngesteuert werden. Viele Alltagsaufgaben im Bro knnen automatisiert werden.
VBA ist VB sehr hnlich, wird jedoch nicht in Maschinencode kompiliert sondern in einem Office - Dokument gespeichert und zur Laufzeit interpretiert. Quellcode kann oft 1:1 von VB nach VBA bernommen werden und umgekehrt. Leider sind aber einige Sachen nicht kompatibel und keiner wei wieso. Formulare die mit VB erzeugt wurden, knnen nicht in VBA Forms kopiert werden. VBA nutzt seinen eigenen Formular Editor. Einige Funktionen heien anders.
Wer VBA programmieren will mu sich vor allem mit dem Objektmodell der zugrunde liegenden Anwendung (Word, Excel, Outlook, ....) beschftigen. Dabei hilft vor allem der Makrorekorder, den die meisten Officeanwendungen haben.
In jedem MS-Office Dokument knnen Makros enthalten sein, die beim ffnen des Dokumentes ausgefhrt werden. Das ist an sich erst mal eine sehr ntzliche Funktion, aber inzwischen haben Virenprogrammierer diese Eigenschaft ausgenutzt und in solche Office Dokumenten Vieren eingebaut, die durch ffnen des Office Dokumentes aktiviert werden. Seit Office 98 gibt es den so genannten Makrovirenschutz, der beim ffnen eines Dokumentes fragt, ob die Makros dieses Dokumentes aktiviert werden sollen. Wenn sie nicht zuverlssig wissen, wo das Dokument herkommt, dann erstmal die Makros abschalten. Seit Office 2000 gibt es die Mglichkeit Makros zu signieren und damit als vertrauenswrdig zu kennzeichnen. Dadurch wird die Verteilung in Firmennetzen sicherer.
Tipp: Ihr habt ein verseuchtes Dokument und wollt es sauber kriegen.
Mein erstes Programm, mit dem ich richtiges Geld verdiente war in Winword Basic 2.0 geschrieben, einem Vorlufer von VBA.
Visual Basic Script (VBS):
Der kleine Bruder von VB ist der Liebling der Administratoren. Mit der Windows Scripting Host (WSH) kam auch VB-Script als Sprache zu den Anwendern. Die WSH unterstzt brigens nicht nur VBS sondern auch Java Script (JS) und theoretisch jede andere Scriptsprache, die das ActiveX-Scripting Interface implementiert.
VBS Dateien werden als Text gespeichert und immer interpretiert. VBS kennt keine Datentypen, alle Variabeln sind vom Typ Variant (dem Allesfresser, gibt's auch unter VB und VBA).
Mit VBS ist es mglich COM Komponenten zu instanziieren. Diese Eigenschaft macht VBS zum einen so einfach und zum anderen so gefhrlich. Unter einer normalen Windows Installation gibt eine Vielzahl von COM Komponenten (kleine Programme, die nach dem Baukastenprinzip Funktionen zur Verfgung stellen), die umfangreichen zugriff auf den Computer ermglichen. ber WMI kann zum Beispiel ein Computer administriert werden.
Der Code ist immer noch eine Art Basic. Quellcode kann mit leichten nderungen von VB nach VBS bernommen werden. Oberflchenelemente gibt es nicht.
Der "I Love You" Virus war als Attachement an eine e-mail angehngt. Durch ffnen wurde die VBS Datei aktiviert und konnte ber die Programmierschnittstelle die Outlook fr VBA zur Verfgung stellt, hunderte von e-mails automatisch ber Outlook versenden. Da ist aber nicht die Scriptsprache VBS schuld. Mit Java Script htte man genau das gleiche machen knnen. Die Schuldfrage ist hier sehr schwierig. Unter Profis ist es durchaus blich VB - Scripte per Mail auszutauschen. Leider wissen unerfahrene Anwender nicht um die Gefahren und so htte Outlook wohl das Ausfhren solcher Scripte nicht gestatten sollen.
Hier gilt wie berall: Mehr Funktionalitt bietet Hackern mehr Angriffsflche. Wirklich problematisch wird es erst beim Thema ActiveX (siehe unten).
VB ist ein Zwitter. Whrend der Entwurfszeit (beim programmieren und debuggen) ist VB ein Interpreter. Ist man mit seinem Programm fertig, dann wird das Programm kompiliert, wie Programme in anderen Sprachen auch. Die meisten modernen Basic Dialekte (z.B. Powerbasic) kompilieren den Quellcode.
PS:
Das Zwitterverhalten hat einen Riesenvorteil: das Debugging geht viel schneller
und ist irre komfortabel. So schn debuggt habe ich noch nie. Unter VB7 wird
das nicht mehr ganz so schn. Whrend des Debuggens kann man den Quelltext
ndern, Variabelndeklarationen einfgen und die auszufhrende Quelltextzeile
ndern.
Bis zur Version 4.0 wurde VB Code zu so genannten P-Code kompiliert, dieser P-Code wurde dann zur Laufzeit interpretiert. Was ist P-Code? P-Code ist eine spezielle abstraktere, komprimierte Form von Machinencode, der zur Laufzeit interpretiert wird. Na kommt das bekannt vor?. Java Byte Code, aber ohne die Geschwindigkeitsnachteile, da auf Intel und Windows optimiert. Durch P-Code wurden VB Programme kleiner und nur unwesentlich langsamer.
Die VB'ler wurden fortan immer gehnselt, das sie ja keine richtigen Programme erzeugen knnten, sondern nur interpretierten Code und der ist ja, wie man seit Heimcomputerzeiten wei, langsam. Also erhrte M$ in der Version 5 die VB - Entwickler und seitdem kann man mit VB originalen Machinencode erzeugen. ber diesen Intel Assemblercode wird dann noch mal der gleiche Code - Optimierer gejagt, der auch in MS VC++ eingesetzt wird.
Dazu mssen wir uns einmal anschauen, wie moderne Windows Applikationen geschrieben werden. Kein Entwickler programmiert heutzutage alles selbst, da wrde man niemals fertig werden. Es gibt eine Vielzahl von Komponenten (COM) fr die hbschen bunten Oberflchen, fr Datenbanken (ADO), fr die Administratin (WMI), fr TCP (Winsock), fr alles.............
Es ist billiger eine Komponente zu kaufen, als einige Tage in die Entwicklung zu stecken (ein Tag kostet zwischen 500,- bis 1500,- Euro), eine Komponente fr professionelle Bildverarbeitung ca. 1000,- Euro. Die Kunst besteht also darin, diese Vielzahl von Komponenten sinnvoll miteinander zu Verbinden.
Hier ein Beispiel Setup einer Datenbankapplikation, die mit VB geschrieben wurde:
| Name | Gre | Beschreibung |
| VB6DE.DLL | 123 KB | nternationale Ressourcen fr Visual Basic-Umgebung |
| msvbvm60.dll | 1.356 KB | Visual Basic Runtime |
| MDAC_TYP.EXE | 7.699 KB | MS Data Access Components. Installiert ADO, RDO und OLEDB. |
| Vsflex6.ocx | 364 KB | Tabellensteuerelement |
| MSCC2DE.DLL | 63 KB | MS Standard Windows Steuerelemente |
| mscomct2.ocx | 687 KB | Microsoft Common Controls 2 ActiveX Control DLL |
| MSCMCDE.DLL | 155 KB | MS Standard Windows Steuerelemente |
| MSCOMCTL.OCX | 1.038 KB | Windows Common Controls ActiveX Control DLL |
| STDFTDE.DLL | 7 KB | Formatierungsobjekte fr Standarddaten |
| msstdfmt.dll | 116 KB | Microsoft Standard Data Formating Object DLL |
| msderun.dll | 133 KB | Data Environment Designer (Datenzugriff) |
| DSExplorer.exe | 612 KB | Das eigentliche Programm |
Das sind 11.741 KB Bibliotheken und nur 612 KB (ca. 5%) VB Maschinen - Code. Alle modernen Programmiersprachen verwenden Bibliotheken, MDAC ist die Standardzugriffsbibliothek fr Datenbanken unter Windows.
Der Code ruft also nur Funktionen aus anderen Bibliotheken auf. Um ein performantes Programm zu schreiben mu man zum einen die Bibliotheken kennen und zum anderen die anderen Bottlenecks (Flaschenhlse) vermeiden. Fr ein klassisches Informationssystem mit Datenbank stellt sich oft die Datenbank oder das Netzwerk als Flaschenhals heraus. Da kann man dann mit der Programmiersprache auch nicht viel machen.
letzte Aktualisierung: [ ]
e-mail: Marcel Gnoth