Moderne Entwicklungsumgebungen am Beispiel von.net

Moderne Entwicklungsumgebungen am Beispiel von .NET Prof. Dr. Walter F. Tichy Dipl.-Inform. Korbinian Molitorisz Ma. Sc. Ali Jannesari IPD Tichy – Leh...
Author: Ursula Pfaff
1 downloads 3 Views 1MB Size
Moderne Entwicklungsumgebungen am Beispiel von .NET Prof. Dr. Walter F. Tichy Dipl.-Inform. Korbinian Molitorisz Ma. Sc. Ali Jannesari IPD Tichy – Lehrstuhl für Programmiersysteme

KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)

Agenda Vorstellung - Wer sind wir? Organisation der Vorlesung Was ist .NET? Lernziele der Vorlesung Literaturempfehlung

2

Einführung

Wer sind wir und wo finden Sie uns? Anschrift Karlsruher Institut für Technologie (KIT) Institut für Programmstrukturen und Datenorganisation (IPD) Am Fasanengarten 5 76131 Karlsruhe

Walter Tichy [email protected]

Sekretariat Ruth Ghafari, Geb. 50.34, Raum 368, Tel. 608 - 4 3934

Webseite http://www.ipd.uka.de/Tichy/index.php

Ruth Ghafari [email protected]

3

Einführung

Wer sind wir und wo finden Sie uns? Mitarbeiter am Lehrstuhl Tichy seit 2003 2003 – 2009: Studentische Tätigkeit im ESCde Supporteinrichtung in Kooperation mit Microsoft Technischer Supporter, später Teamleiter

Seit 2009: Doktorand im Bereich paralleler Systeme

Korbinian Molitorisz Entwurfsmustergestützte Parallelisierung [email protected] bestehender Softwaresysteme Leiter der .NET-Multicore-Gruppe http://www.tinyURL.com/dotNETMulticore Forschungsgruppe auf Basis von .NET mit aktuell 6 Mitgliedern Betreuungskonzept für Studien-/Diplomarbeiten

Kontakt Gebäude 50.34, Zimmer 370, Tel. 608 - 4 7155 4

Einführung

Wer sind wir und wo finden Sie uns? Mitarbeiter am Lehrstuhl Tichy seit 2005 2005 – 2010: Doktorand im Bereich paralleler Systeme Programmanalysen und Fehlererkennung Wettlauferkennung in parallelen Programmen Open-Source Werkzeug Helgrind+

Seit 2010: Post-Doktorand im Bereich Zuverlässigkeit paralleler Programme Forschungsgruppe Zuverlässigkeitsanalyse und Testen paralleler Programme Abstraktion bei Fehlersuche Automatische Fehlerbeseitigung Unit-Testing bei Parallele Programmen

Betreuungskonzept für Studien-/Diplomarbeiten

Kontakt Gebäude 50.34, Zimmer 343, Tel. 608 - 4 4064 5

Einführung

Ali Jannesari [email protected]

Wer sind wir und wo finden Sie uns?

6

Einführung

Wer sind wir und wo finden Sie uns?

7

Einführung

Die .NET-Multicore-Gruppe

8

Einführung

Organisation der Vorlesung Die Vorlesung besteht aus 21 Kapiteln und unterteilt sich in folgende Bereiche: Einführung Die Grammatik von C# (Symbole, Ausdrücke, Anweisungen, …) Das Typsystem (Wert-/Referenztypen, Klassen, Schnittstellen, …) Die Infrastruktur der CLR (Ausnahmen, Speicherverwaltung, Reflection, …)

Die Folien sowie der Link zur Mailingliste sind auf der Kurswebseite gelistet Wir bieten in diesem Semester auch eine Praxisübung an Im Anschluss an die .NET-Vorlesung Geb. 50.34, R. 356 Freiwillige Veranstaltung zur Vertiefung und Diskussion mit anderen Studenten 9

Einführung

Was ist .NET? Hannes Preishuber: „Wenn man Hundert Menschen befragt, .NET in zwei Sätzen zu erklären wird man sicher vielerlei interessante Antworten erhalten. Es lässt sich einfach nicht mit wenigen Worten formulieren! Mit .NET hat Microsoft eine komplett neue Strategie geschaffen, die sowohl Produkte als auch Technologien oder Programmiersprachen beinhaltet.“

10

Einführung

Was ist .NET? Microsofts Marketing-Abteilung sagt: „Microsoft .NET ist Software, welche Menschen, Informationen, Geräte und Systeme verbindet. Es stellt Microsofts Strategie dar, Webservicebasierte Schnittstellen auf der gesamten IT-Plattform verfügbar zu machen und manifestiert sich in: einem einheitlichen Programmiermodell für die Softwareentwicklung Werkzeugen wie Visual Studio, um integrierte und benutzerfreundliche Applikationen für eine Vielzahl von verschiedenen Endgeräten zu entwickeln einer Reihe von Serverprodukten als Basis für alle Anwendungen mit Webservices Client-Software welche auf vielfältige Art und Weise den Menschen mit den Systemen verbindet“

.NET is the Microsoft Web services strategy to connect information, people, systems, and devices through software. 11

Einführung

Was ist .NET? Definitionen .NET ['dɔtnɛt] ist eine Implementierung des Common Language Infrastructure-Standards (CLI) für Windows durch den Softwarehersteller Microsoft. Sie besteht aus einer Laufzeitumgebung und Klassenbibliotheken, die gemeinsam eine Basis für Softwareentwicklung bieten. Die CLI (Common Language Infrastructure) ist ein ISO/IEC/ECMA Standard, der eine virtuelle Maschine beschreibt, bestehend u.a. aus einem Typsystem, einem Instruktionssatz und einem Laufzeitsystem.

Ziel Die sprach- und plattformneutrale Anwendungsentwicklung

12

Einführung

Implementierungen des CLI-Standards .NET (Microsoft) Varianten von Windows

.NET Compact Framework (Microsoft) Windows CE auf x86, MIPS, SH4 und ARM

MONO (Novel/Ximian, quelloffen) Unix/Linux, Mac OS X, Windows

Portable.NET (Southern Storm Software, quelloffen) Unix/Linux, Mac OS X

Rotor (Microsoft, quelloffen) Windows, früher auch BSD

13

Einführung

Nachteile der CLI gegenüber nativen Programmen

Die Ausführungsgeschwindigkeit hängt von der eingesetzten virtuellen Maschine ab Spezialinstruktionen des Prozessors (z.B. MMX, SSE) werden nicht immer genutzt (Aber wenn, dann automatisch!) Wichtig: Kann auch schneller sein als ein natives Programm

Virtuelle Maschine unterstützt nur das OOProgrammierparadigma Mitunter höherer Ressourcenbedarf – aber auch das Gegenteil kann der Fall sein Programmiersprache ↔ Zwischensprache – wird jetzt jede Sprache „oo-ifiziert“?

Hardware-/betriebssystemnahe Programmierung 14

Einführung

Nachteile der CLI gegenüber Java Virtuelle Maschine nicht so weit (weniger Plattformen) und tief (häufig nur Version 1.1 / 2.0) unterstützt Im praktischen Einsatz greift man doch meistens auf die Implementierung „.NET“ von MS zurück – echte Alternativen wären wünschenswert Damit „weniger plattformunabhängig“

Optimierer der virtuellen Maschine z.T. noch etwas ineffizienter „Schlechtes Image“ von Microsoft im akademischen Umfeld → geringe Verbreitung 15

Einführung

Warum trotzdem CLI? Weiterentwicklung der Konzepte von Java Wie in Java Virtuelle Maschine mit Laufzeitübersetzer Durchgängige Objektorientierung Sicherheitskonzepte etc.

Darüber hinaus Selbstdefinierte Werttypen Delegierer etc.

Hoher Verbreitungsgrad in der Wirtschaft Flexibilität: Mehrere Programmiersprachen zulässig, C#, Basic, C++ von MS Interoperabilität der Programme, Bibliotheken nur 1x schreiben 16

Einführung

gut geeignet, um die Konzepte moderner Entwicklungsumgebungen zu erläutern

trotzdem praxisrelevant!

Was kann man in dieser Vorlesung nicht lernen?

Programmieren Dies ist kein C#-Anfängerkurs. Die API wird auch nicht erklärt.

Werkzeuge bedienen Es wird nicht gezeigt, wo man bei Visual Studio klicken muss, damit …

Profi-Hacker-Kniffe Wir stellen keine coolen Funktions-Hintertürchen in der WindowsAPI vor. Wir zeigen keine Programmiertricks, mit denen man C#Programme doppelt so schnell macht. 17

Einführung

Was ist das Lernziel dieser Vorlesung? Am Beispiel der CLI kann man viele Konzepte von modernen Programmierplattformen kennen lernen, die vergleichbar auch für viele andere Plattformen gelten. Diese Konzepte zu vermitteln ist das Ziel. Dieses Wissen… sollte länger nützlich sein, als wenige Jahre (API-Wissen). sollte Sie in die Lage versetzen, treffende Prognosen über das relative Laufzeitverhalten eines Programms oder über andere (zukünftige) Programmierplattformen zu machen. sollte Ihnen einen ausreichenden Überblick über die notwendigen Techniken geben, um selbst solche Plattformen entwickeln zu können.

18

Einführung

Was kann man in dieser Vorlesung nicht lernen?

Programmieren Dies ist kein C#-Anfängerkurs. Die API wird auch nicht erklärt.

Werkzeuge bedienen Es wird nicht gezeigt, wo man bei Visual Studio klicken muss, damit … Diesen Punkt muss man also relativieren: Ihr solltet hinterher in der Lage sein, euch diese Profi-Hacker-Kniffe Tricks (mit dem Grundlagenwissen über die CLI) selber ausdenken zu Wir stellen keine coolen Funktions-Hintertürchen in können! der Windows-

API vor. Wir zeigen keine Programmiertricks, mit denen man C#Programme doppelt so schnell macht. 19

Einführung

Inhalt der Vorlesung

Hochsprachkonzepte am Beispiel von C# Warum ist C#, wie es ist, z.B. Wie funktioniert die Namensauflösung? Wie funktioniert Delegation? Warum gibt es keine Vererbung bei Werttypen?

Was ist der (konzeptuelle) Unterschied zu Java?

Techniken für virtuelle Ausführungsumgebungen am Beispiel der CLR, z.B. Wie funktioniert ein Freispeichersammler? Wie funktionieren Sicherheitsmechanismen?

20

Einführung

Literatur

Primär: Standard ECMA-334, C# Language Specification, 4th edition (June 2006), http://www.ecma-international.org/publications/standards/Ecma-334.htm

Vollständig, präzise, kostenlos, >550 Seiten Tipp fürs Lernen: ein ausgedrucktes Exemplar gibt es in der Informatik-Bibliothek

Unbedingt zu empfehlen: Richter, Jeffrey, „CLR via C#“, 3. aktualisierte Auflage, 2010, MSPress, 36 €

21

Einführung

Software Tipp: mit dem System „spielen“, um Verständnis für die Mechanismen zu entwickeln Visual Studio 2010 Professional mit MSDN-Library (APIDokumentation) für Studenten der Fakultät kostenlos (MSDN-AA) über ELMS-Zugang unter: http://msdn40.e-academy.com/micror_info/

Bei Fragen rund um .NET: http://www.microsoft.com/germany/msdn/hotline/default.mspx

22

Einführung