Programmieren: Wahl der Programmiersprache: Objektorientierte Sprachen
Aus Wikibooks
Objektorientierte Programmiersprachen haben den Vorteil, Methoden und Attribute zu Objekten zu kapseln, was im Gegensatz zu prozeduralen Programmiersprachen zu einer höheren Wiederverwendbarkeit der Objekte sowie einer Verringerung der Redundanz führt.
Inhaltsverzeichnis |
[Bearbeiten] C++
Die Sprache C++ baut auf der Sprache C auf und ist eine Obermenge von ANSI-C. Die ersten C++-Compiler erzeugten zunächst C-Code, der dann einem C-Compiler übergeben wurde. In C++ ist es weiterhin möglich (wenn auch nicht empfehlenswert), prozedural zu programmieren. C++ ist dennoch eine andere Programmiersprache als C, so dass sich nicht alle C-Programme mit einem C++-Compiler übersetzen lassen. Es ist allerdings möglich, Programme so zu schreiben, dass sie sich mit einem C- als auch mit einem C++-Compiler übersetzen lassen und das Resultat in beiden Fällen das gleiche ist.
C++ ist eine sehr weit verbreitete Programmiersprache, die sich für fast alle Programmieraufgaben eignet und eine hohe Effizienz aufweist. Nachteilig wirkt sich aus, dass C++ keine völlig neu konzipierte Sprache ist und einiges an "Ballast" aus C übernommen hat. Außerdem sind Programme nur bedingt portabel, da der Standard viele Möglichkeiten moderner Systeme nicht abdeckt.
C++ hat einen immensen Sprachumfang, der weit über eine reine Objektorientierte Sprache hinausgeht und deshalb nur von wenigen vollständig beherrscht wird. Sowohl die Syntax, als auch die Semantik sind sehr komplex. C++ erlaubt dem Programmierer an vielen Stellen, Dinge zu tun, die zu fehlerhaftem Programmcode führen können, weshalb er extrem diszipliniert arbeiten muß. C++ richtet sich klar an professionelle Programmierer und stellt vergleichsweise hohe Ansprüche an Anfänger.
[Bearbeiten] Java
Eine weitere verbreitete Programmiersprache stellt Java der Firma Sun Microsystems dar. Ein Vorteil dieser Sprache besteht darin, dass Java-Programme prinzipiell ohne Änderung auf allen unterstützten Betriebssystemen lauffähig sind. Der Java-Quellcode wird vom Compiler zunächst in einen maschinenunabhängigen Zwischencode (den sog. Bytecode) übersetzt. Auf dem Zielrechner wird der Bytecode dann von einer Laufzeitumgebung (der Java Virtual Machine) in den Maschinencode der konkreten Plattform übersetzt und ausgeführt. Inzwischen sind für die meisten verfügbaren Betriebssysteme und Rechnerarchitekturen passende Laufzeitumgebungen verfügbar.
Den Durchbruch erlebte Java, als sich Netscape entschied, die Sprache in ihren Webbrowser Netscape Navigator zu integrieren. Dadurch wurde es möglich, in HTML-Seiten integrierte Programme, so genannte Applets, direkt vom Webbrowser ausführen zu lassen.
Java ist eine vollkommen neu entwickelte Sprache, die sich syntaktisch stark an C++ orientiert, dabei aber auf vieles verzichtet, was C++ schwer beherrschbar macht - andererseits aber auch manches vermissen lässt, was erfahrene C++ Programmierer liebgewonnen haben.
Die Stärken von Java sind die Plattformunabhängigkeit, die automatische Speicherverwaltung, sowie der große Umfang der mitgelieferten Klassenbibliotheken.
Für Anfänger hat Java den Vorteil, dass Sprachkonstrukte vergleichsweise restriktiver zu formulieren sind, daher weniger kryptisch, also unlesbarer für den Anfänger erscheinen. Unabhängig aller Programmiersprachen werden in einem professionellem Umfeld an die Programmierer Anweisungen gegeben, wie der erstellte Sourcecode wartbar, sauber und übersichtlich formuliert werden soll. Diese sogenannten Coding-Style-Guides sind für Java meist einfacher gehalten, da die Sprache bereits einige Konstrukte aufweist, die den Programmierer generell zu diesen Zielen führt. Im privaten Umfeld, in dem solche Coding-Style-Guides nicht vorgegeben werden, ist vom privaten Hobby-Programmierer eine entsprechend höhere Disziplin aufzubringen, um vergleichbaren Sourcecode zu erzeugen. Durch Java kann er durchaus zu einem disziplinierterem Arbeiten dieser Art angeleitet werden. Diese für einen qualitativ hochwertigen, lesbareren, wartbareren Sourcecode aufzubringende Disziplin erfordert in C und C++ höhere Ansprüche, da man dort weniger Einschränkungen in der Art zu formulieren hat. Oft wird dies bei Java als Vorteil für den Anfänger und als Nachteil für den fortgeschrittenen Programmierer dargestellt.
[Bearbeiten] C#
Das .NET-Framework ist Microsofts Antwort auf das von Sun entwickelte Java. Die verbreitetste .NET-Sprache ist C#, daneben gibt es auch eine erweiterte Form von Visual Basic namens Visual Basic .NET. Auch bei .NET kommt eine Virtual Machine (VM) mit Garbage Collector (GC) zum Einsatz, allerdings stellt Microsoft diese Laufzeitumgebung nur für MS-Windows bereit. Alternativ ist die quelloffene, freie Implementation, "Mono" vorhanden, die auch auf anderen Betriebsystemen (z.B. GNU/Linux, BSD und Mac-OSX) läuft. C# ist Java relativ ähnlich, verfügt aber über einige weitergehende Sprachkonstrukte, die Microsoft anderen Programmiersprachen, wie z.B. C++ oder Delphi nachempfunden hat.
[Bearbeiten] Status Java/.NET Framework
Microsoft sieht neuerdings das Internet als zentralen Bestandteil der Computertechnik und integriert diese Technik in viele Produkte auch ohne daß Benutzer dies durch offensichtliche Hinweise bemerken. Diese zentrale Strategie wurde durch den Boom des Internets in den 90er Jahren ausgelöst, den Microsoft "verschlafen" hatte. Diesen Boom dominiert bis heute die Sprache Java mit Ihrer systemunabhängigen Plattform. Derzeit ist Java auf vielen verschiedenen Systemen verfügbar.
Das .NET Framework wurde von der ISO teilweise standardisiert. Einige für Anwendungen wichtige Komponenten wurden jedoch nicht in der Standardisierung berücksichtigt wie z.B. die Bibliotheken für grafische Oberflächen. Microsoft bietet dafür mit seinen "Windows.Form"-Bibliotheken eine Anbindung an die MS-Windows-Oberfläche. Das alternative Mono-Projekt ist dabei diese Bibliotheken zu reimplementieren. Alternativ lässt sich das Gimp-Tool-Kit (gtk) über gtk# sowohl unter MS-Windows als auch unter anderen Betriebssystemen benutzen.
Java wurde für ca. 9 Jahre in Produkten von Microsoft (mehr schlecht als recht) integriert und entsprechend vom Java Hersteller SUN lizenziert. Im Jahr 2004 sind die Lizenzverträge mit SUN ausgelaufen und wurden nicht wieder erneuert. Zwei Jahre zuvor hat Microsoft das .NET Framework als direkten Konkurrent zu Java freigegeben.
Die Hauptunterschiede zu Java definieren sich in der Laufzeitkomponente und in der Sprachenvielfalt. Wer sich die sogenannten Namespaces (dies sind die Namensgebungen der einzelnen Bibliotheken innerhalb des Frameworks) durchsieht wird durchaus auch vom Namen her Parallelen zu Java ziehen können. Das .NET Framework ist keine Entwicklung eines neuartigen Konzepts, sondern die Zusammenfassung vieler guter Fremdkonzepte in einer neuen Lösung.
Java-Programme werden im Allgemeinen nur in einer einzigen Sprache geschrieben: Java. Im Gegensatz dazu ist das .NET Framework von Grund auf sprachübergreifend ausgelegt. Neben der Sprache C# gibt es alte Bekannte wie C++, Visual Basic, Cobol, Perl, Python, oder sogar auch Java.
In der .NET Laufzeitumgebung wird ähnlich verfahren. Die Programme kommen ebenfalls in einer Art Bytecode daher, der sich hier jedoch Common Intermediate Language (CIL) nennt. Jedoch werden die benötigten Programmteile (Ausführbare Dateien und Bibliotheken) bereits vor der Ausführung durch die Common Language Runtime (CLR) in reine Maschinensprache übersetzt und erst dann ausgeführt. Dabei wird die Maschinensprache entsprechend dem Prozessor optimiert. Das Ergebnis ist ein schnelles Laufzeitverhalten, das in einigen wenigen Bereichen sogar an Maschinenkompilierte C++ Programme heranreichen kann. Ein weiterer Unterschied ist, daß die Bibliotheken des Frameworks selbst bereits als vorkompilierte Version auf dem Rechner vorhanden sind und damit nicht beim Programmstart neu kompiliert werden.
[Bearbeiten] Smalltalk
Smalltalk wurde in den 70er Jahren am Xerox-PARC entwickelt. Das System konnte sich Anfangs nicht so recht auf Desktop-Rechnern durchsetzen, da die Home-Computer damals nicht die entsprechenden Resourcen aufwiesen. In die Industrie hat es aber auf jeden Fall seinen Weg gefunden. Mittlerweile erfreut sich Smalltalk steigender Beliebtheit auf Desktop-Rechnern, was wohl auch auf die steigende Beliebtheit von dynamischen Skriptsprachen zurückzuführen ist.
Die grundlegende Implementierung basiert auf einer VM, wie z.B. auch Java. Allerdings gibt es auch Smalltalk-Compiler und auf der anderen Seite auch Smalltalk-Interpreter.
Smalltalk ist sehr einfach zu erlernen, die Programmtexte sind auch einfach zu lesen. Smalltalk unterscheidet sich aber doch extrem von Sprachen wie C, Java oder gar PHP.
Der Vorteil für den Anfänger ist der, das er nicht erst lernen muß, wie er ein Programm erstellt, welches irgendwelche Ausgaben tätigt um eigene Experimente zu erstellen. In Smalltalk kann er gleich mit dem erlernen der eigentlichen Sprache loslegen. Dabei wird er von einer modernen IDE unterstützt, die fester Bestandteil eigentlich jeder Smalltalk-Implementierung ist. Zudem entfällt das Handbuchlesen, da die Dokumentation fester Bestandteil der IDE ist und jede Komponente direkt ihre Dokumentation enthält. Zudem kann sich der Anfänger die Quelltexte jeder Komponente ansehen, wozu auch die IDE gehört.
Da Smalltalk ein offenes System ist, bietet es auch dem Programmierer die Möglichkeit, das System zu ändern. Damit besteht die Möglichkeit, eigene Ideen ohne große Mühen direkt auszuprobieren.
Nachteilig an Smalltalk ist, das es, im Gegensatz zu Sprachen wie C oder Java, nicht ganz so populär ist, wodurch es teilweise an Zusatzdokumentation hapert. Mit ein bißchen Erfahrung lassen sich aber Lösungen aus z.B. Java in Smalltalk doch relativ einfach anpassen und übernehmen.

