Galileo Computing <openbook>
Galileo Computing - Programming the Net
Galileo Computing - Programming the Net


C# von Eric Gunnerson
Die neue Sprache für Microsofts .NET-Plattform
C# - Zum Katalog
gp Kapitel 1 Einleitung
  gp 1.1 Wozu eine weitere Sprache?
  gp 1.2 Die Entwicklungsziele bei C#

Kapitel 1 Einleitung


1.1 Wozu eine weitere Sprache?  downtop

Sie fragen sich bestimmt auch, »Warum noch eine Sprache? Warum nicht weiterhin C++ nutzen?« (oder VB oder Java oder welche Sprache auch immer Sie bevorzugen). Zumindest werden Sie sich das gefragt haben, bevor Sie das Buch kauften.

Programmiersprachen können auf gewisse Weise mit Elektrowerkzeugen verglichen werden. Jedes Werkzeug ist für einen bestimmten Zweck besonders geeignet. Ich könnte beispielsweise ein Brett mit Hilfe einer Fräse kürzen, es wäre jedoch sehr viel einfacher, eine Säge zu benutzen. Genauso könnte ich mit Hilfe einer Programmiersprache wie LISP ein Computerspiel mit aufwendiger Grafikanimation schreiben, mit C++ wäre es aber wahrscheinlich einfacher.

C# (ausgesprochen »C sharp«) ist die systemeigene Sprache für die .NET Common Language Runtime. C# wurde entworfen, um sich nahtlos in die .NET-Laufzeitumgebung einzufügen. Sie können (und sollten dies gelegentlich auch) Code entweder in Visual C++ oder Visual Basic schreiben, in den meisten Fällen ist C# jedoch geeigneter. Da die Common Language Runtime einen Kernpunkt für viele Funktionen von C# darstellt, wird diese Laufzeitumgebung in Kapitel 2, Die .NET-Laufzeitumgebung, näher vorgestellt – vor allem diejenigen Elemente, die für die Sprache C# von besonderer Bedeutung sind.


Galileo Computing

1.2 Die Entwicklungsziele bei C#  downtop

Die erste Veröffentlichung von C++ sorgte für einige Aufregung. Hier wurde eine Programmiersprache zum Erstellen objektorientierter Software angeboten, bei der C-Programmierer ihr bereits vorhandenes Wissen und ihre Software weiter nutzen und ausbauen konnten. C++ ist nicht so objektorientiert wie beispielsweise Eiffel, stellte aber dennoch genügend objektorientierte Funktionen bereit, um große Vorteile zu bieten.

Mit C# verhält es sich ähnlich. In Kombination mit der .NET Common Language Runtime kann diese Sprache für die Entwicklung komponentenorientierter Software eingesetzt werden, ohne dass die Programmierer ihr Potenzial im Hinblick auf C-, C++- oder COM-Code ungenutzt lassen müssen.

C# wurde für die Entwicklung robuster, langlebiger Komponenten konzipiert, mit denen Situationen des wirklichen Lebens bewältigt werden können.


Galileo Computing

1.2.1 Komponentensoftware  downtop

Die .NET Common Language Runtime ist eine komponentenbasierte Umgebung, daher ist es wohl keine Überraschung, dass C# die Komponentenerstellung vereinfacht. Es ist eine Programmiersprache, die sich auf Komponenten konzentriert, d. h., alle Objekte werden als Komponenten geschrieben, und die Komponenten bilden den Mittelpunkt aller Geschehnisse.

Die komponentenbezogenen Konzepte, beispielsweise Eigenschaften, Methoden und Ereignisse, stellen die Kernelemente der Sprache und der zugrunde liegenden Laufzeitumgebung dar. Deklarative Informationen (die Attribute) können auf Komponenten angewendet werden, um anderen Bestandteilen des Systems Entwurfszeit- und Laufzeitinformationen zu einer Komponente zu liefern. Die Dokumentation kann innerhalb der Komponente geschrieben und in XML exportiert werden.

C#-Objekte erfordern weder Header- oder IDL-Dateien noch Typbibliotheken. Die in C# erstellten Komponenten sind vollständig selbstbeschreibend und können ohne Registrierung eingesetzt werden.

C# wird bei der Komponentenerstellung von der .NET-Laufzeitumgebung und dem .NET-Framework unterstützt, die zusammen ein einheitliches Typensystem bereitstellen, bei dem jedes Element als Objekt behandelt werden kann, ohne dass – wie bei rein objektorientierten Systemen wie z. B. Smalltalk – Leistungseinbußen hingenommen werden müssen.


Galileo Computing

1.2.2 Robuste und langlebige Software  downtop

In der komponentenbasierten Welt ist die Entwicklung von robuster und langlebiger Software ein sehr wichtiger Aspekt. Webserver können monatelang ohne einen außerplanmäßigen Neustart ausgeführt werden, und jeder weiß, dass nicht geplante Neustarts nichts Wünschenswertes sind.

Mit der Speicherbereinigung wird dem Programmierer die Last der Speicherverwaltung abgenommen. Dem Problem der Versionssteuerung für Komponenten wird durch die Definition einer entsprechenden Semantik und die Möglichkeit zur Trennung von Schnittstelle und Implementierung begegnet. Numerische Operationen können auf einen möglichen Überlauf geprüft werden und Arrays unterstützen die Bereichsprüfung.

C# bietet eine einfache, sichere und intuitive Umgebung. Die Fehlerbehandlung wird hierbei ebenfalls berücksichtigt: Eine Ausnahmebehandlung ist in der gesamten Umgebung verfügbar. Die Sprache ist typensicher und bietet dem Programmierer Schutz vor nicht initialisierten Variablen, unsicheren Typumwandlungen und weiteren häufig auftretenden Programmierfehlern.


Galileo Computing

1.2.3 Software für das wirkliche Leben  toptop

Softwareentwicklung ist keine einfache Sache. Die Software kann in den seltensten Fällen von Grund auf neu entwickelt werden. Worauf es ankommt, sind eine annehmbare Leistung, die Integration mit vorhandenem Code sowie ein gutes Kosten-Nutzen-Verhältnis. Eine gut entworfene Umgebung nützt nichts, wenn sie im wirklichen Leben nicht standhalten kann.

C# weist die Vorteile einer eleganten und einheitlichen Umgebung auf und bietet dennoch Zugriff auf weniger »anständige« Funktionen (beispielsweise Zeiger), wenn diese benötigt werden.

Mit C# gehen die Investitionen in vorhandenen Code nicht einfach verloren. Vorhandene COM-Objekte können wie .NET-Objekte eingesetzt werden. Mit der .NET Common Language Runtime erscheinen dem vorhandenen COM-basierten Code die Objekte in der Laufzeitumgebung wie COM-Objekte. Systemeigener C-Code in DLL-Dateien kann über den C#-Code aufgerufen werden.

C# bietet Lowlevelzugriff, falls erforderlich. Kleine schlanke Objekte können einem Stack zugewiesen werden und dennoch Bestandteil der einheitlichen Umgebung sein. Lowlevelzugriff wird über den so genannten unsafe-Modus gewährt, bei dem der Einsatz von Zeigern möglich ist, wenn die Leistung eine besonders große Rolle spielt oder Zeiger für vorhandene DLLs benötigt werden.

C# baut auf C++ auf, daher wird sich jeder C++-Programmierer schnell in dieser Sprache wohl fühlen. C# ist schnell erlernbar und führt zu höherer Produktivität ohne Leistungseinbußen.

Darüber hinaus setzt C# auf die Stärken der .NET Common Language Runtime, die umfangreiche Bibliotheksunterstützung für allgemeine Programmieraufgaben und anwendungsspezifische Aufgaben bietet. Die .NET-Laufzeitumgebung, die Frameworks und die verschiedenen Programmiersprachen werden in der Visual Studio-Umgebung zu einem Universalpaket für den .NET-Programmierer zusammengefasst.






1    Die Speicherverwaltung von C++ ist nicht wirklich schwierig, in Bezug auf die Komponenten kann es jedoch einige knifflige Situationen geben. Das Hauptproblem bei der Speicherverwaltung liegt darin, dass Zeit und Mühe investiert werden müssen. Mit der Speicherbereinigung ist es nicht länger erforderlich, Zeit auf die Codierung und Prüfung zu verwenden, um Speicherlecks zu vermeiden. Auf diese Weise kann sich der Programmierer auf die Programmlogik konzentrieren.

2    Normalerweise. In einigen Fällen ist dies in der Praxis etwas schwieriger umzusetzen.

3    Visual C++ wurde mit so genannten »verwalteten Erweiterungen« ausgestattet, die das Erstellen von .NET-Komponenten ermöglichen. Weitere Informationen zu diesen Erweiterungen finden Sie in der Microsoft-Website.

   

Select * from SQL Server 2000




Copyright © Galileo Press GmbH 2001 - 2002
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, fon: 0228.42150.0, fax 0228.42150.77, info@galileo-press.de