Seminar Programmiersprachen 26.06.2010 C++ Sigita Andrulyte
Überblick 1 Grundlagen C++ 99 Bottles C++ Erfinder: Bjarne Stroustrup Interview 2
Was bedeutet C++? 1 A) Der Name hat keine besondere Bedeutung Grundlagen C++ 1 A) Der Name hat keine besondere Bedeutung B) Der Name ist eine Kombination aus C und dem Inkrementor ++ C) Der Name steht für C plus objektorientierten Konzepten D) Der Name steht für C plus, also ein besseres C (wie eine Eins plus eine bessere Schulnote ist eine Eins)
Was bedeutet C++? 1 FALSCH: Grundlagen C++ 1 FALSCH: C) Der Name steht für C plus objektorientierten Konzepten D) Der Name steht für C plus, also ein besseres C (wie eine Eins plus eine bessere Schulnote ist eine Eins) RICHTIG: B) Der Name ist eine Kombination aus C und dem Inkrementor ++
Was ist C++? Grundlagen C++ 1 C++ ist eine universelle Programmiersprache, die vorzugsweise zur Systemprogrammierung dient. Ist ein besseres C (nach B.Stroustrup) Unterstützt Datentransaktion Unterstützt objektorientiertes Programmieren und Unterstützt genetisches Programmieren.
Unterschiede zwischen C und C++? Grundlagen C++ 1 C ist: Leistungsfähig: effizient, schnell, logisch, strukturiert C++: verbesserte C Erwartungen sind immer größer OO C++ ist Erweiterung von C Sollte man mit C oder C++ anfangen?
Unterschiede zwischen Obj - C und C++? Grundlagen C++ 1 Obj C: BOOL= YES oder BOOL= NO Kommentare: /* . . . */ und // Attribute und Methoden 7
Welche Normen hat C++? Grundlagen C++ 1 ISO/IEC 14882 Informationstechnik – Programmiersprachen Die Norm beschreibt die objektorientierte Variante der Programmiersprache C. Implementierung Stand. Bibliotheken
Welche Normen hat C++? 1 ISO/IEC 10514-2 Erweiterung zu Modula Grundlagen C++ 1 ISO/IEC 10514-2 Erweiterung zu Modula ISO/IEC 10514-3 Objekt orientiertes Modula
Vorteile von C++ 1 Vorteile von C++ Grundlagen C++ 1 Vorteile von C++ Ermöglicht schnelle und maschinennahe Implementierungen Gut geeignet für Simulationen, Suchverfahren, Kompressionsverfahren, zeitkritische Anwendungen Für umfangreiche Projekte geeignet Sehr weite Verbreitung
Nachteile von C++ 1 Probleme: Teilweise veraltet Grundlagen C++ 1 Probleme: Teilweise veraltet Standardbibliothek weniger mächtig als bei Java Kaum ein Compiler erfüllt die komplette Umsetzung der ISO – Norm C++ ist relativ schwierig zu erlernen (längere Einarbeitungszeit nötig) Dennoch: weit verbreitet, besonders bei wissenschaftlichen Anwendungen
C++ Aplications 1 NASA NOKIA Siemens Games: Doom III Adobe Systems Grundlagen C++ 1 NASA NOKIA Siemens Games: Doom III Adobe Systems Ericsson Apple Amazon.com IBM IPod
Objekte Grundlagen C++ 1 Ein Software-Objekt ist ein Bündel aus Attributen und darauf bezogenen Methoden. Fahrrad – Objekt Attribute – Farbe, Größe, momentane Geschwindigkeit Methoden – fährt leichter 13
Objektlebenszyklus Grundlagen C++ 1 Der Lebenszyklus eines C++ Objektes besteht aus den Abschnitten Erzeugung Benutzung Zerstörung 14
Objektlebenszyklus 1 Erzeugung Grundlagen C++ 1 Erzeugung Das Erzeugen eines Objektes erfogt durch Aufruf des Konstruktors (kurz ctor) des Objektes. Benutzung Ein Objekt wird benutzt, indem eine seiner Methoden aufgerufen wird 15
Objektlebenszyklus 1 Zerstörung Grundlagen C++ 1 Zerstörung Wird ein Objekt nicht mehr benötigt, so sollte es zerstört werden, damit es keinen Speicherplatz mehr verbraucht. Bei der Zerstörung eines Objektes wird automatisch sein Destruktor (kurz dtor) aufgerufen. 16
Vererbung 1 Klasse Verschiedene Arten Grundlagen C++ 1 Klasse Verschiedene Arten Die Klassen Montainbikes, Rennräder und Hollandräder erben von der Klasse Fahrräder gemeinsame Eigenschaften und fügen zusätzliche hinzu. 17
Vererbung 1 Allgemein gilt: Grundlagen C++ 1 Allgemein gilt: Klassen können definiert werden in Abhängigkeit von anderen Klassen: "A ist eine Art von B". In diesem Fall ist B die Basisklasse von A. Eine Klasse kann auch von mehreren Klassen erben: A ist eine Art von B und C (Mehrfachvererbung). Jede Klasse erbt die (öffentlichen) Attribute und Methoden ihrer Basisklasse(n). Jedoch können jeder Klasse eigene Variablen und Methoden hinzugefügt werden. 18
Entwicklungsumgebungen Grundlagen C++ 1 Windows: Microsoft Visual C++ Borland C++ CYGwin (Linux-artige Umgebung für Windows) Linux/Unix: GCC (GNU C Compiler) G++ (GNU C++ Compiler)
99 Bottles Grundlagen C++ 1 99 Bottles 2
99 Bottles Grundlagen C++ 1 99 Bottles 2
99 Bottles Grundlagen C++ 1 99 Bottles 2 22
99 Bottles Ausgabe 1 2 Grundlagen C++ 3 bottles of beer on the wall. Take one down, pass it around, 2 bottles of beer on the wall. 2 bottles of beer on the wall, 2 bottles of beer, 1 bottle of beer on the wall. 1 bottle of beer on the wall, 1 bottle of beer, 0 bottles of beer on the wall. 0 bottles of beer on the wall, 0 bottles of beer, Go to the store and buy some more, 99 bottles of beer on the wall. Grundlagen C++ 1 99 Bottles 2
Bjarne Stroustrup 1 2 3 Grace Murray Hopper Award. Grundlagen C++ 1 99 Bottles 2 C++ Erfinder 3 11. Juni 1950 in Århus, Dänemark Doktorgrad in Informatik (1979) von der Universität Cambridge, England 1979-2002 Leiter der AT&T Lab’s Large-scale Programming Research Abteilung, 1979-2002 Manager bei der Bell Labs 1993 erhielt er für seine Arbeit um C++ den Grace Murray Hopper Award.
Bjarne Stroustrup Grundlagen C++ 1 99 Bottles 2 C++ Erfinder 3 Derzeit: College of Engineering – Lehrstuhl für Informatik, Texas A&M University Mitglied U.S. National Academy of Engineering Buch: Die C++ Programmiersprache (1987-2000) – das Buch wurde in 18 Sprachen übersetzt Mehr als 100 akademische Artikel veröffentlicht Er spielte eine aktive Rolle beim Erstellen des ANSI/ISO – Standards für C++
Warum C++? Grundlagen C++ 1 Simula – „die allerdings in der Praxis recht langsam bei der Ausführung ist“ BCPL – „die zwar sehr schnell ist, aber sich für große Projekte nicht eignete“ 99 Bottles 2 C++ Erfinder 3 Interview 4 26
Sicherheit ist nicht Softwarethema! Grundlagen C++ 1 ”Zunächst einmal ist Sicherheit ein Systemthema” Perfekte Code Zugriff auf Ihre gespeicherte Daten „Zweitens ist Sicherheit ein Abwägen zwischen Kosten und Vorteilen“ Perfekte Sicherheit: nicht zu erreichen ”Böse Buben” 99 Bottles 2 C++ Erfinder 3 Interview 4
Sicherheit ist nicht Softwarethema! Grundlagen C++ 1 ”Aber was ist mit Programmiersprachen und Programmiertechniken?” Fehler: Jede einzelne Zeile muss sicher sein Code wird mit unsystematischen Tests überhäuft Code: hässlich, umfangreicher, langsam Hardware/Software Code: einfach, effizient schreiben 99 Bottles 2 C++ Erfinder 3 Interview 4
Muss man nicht C können um mit C++ anzufangen? Grundlagen C++ 1 ”Leider wird in vielen Kursen zunächst C unterrichtet, aber das ist nicht mehr zwingend der Fall” Manche wechseln von C nach C++ OOP 99 Bottles 2 C++ Erfinder 3 Interview 4
Werden wir C++ 2.0 sehen? 1 2 3 4 ”Ich weiß es nicht” Grundlagen C++ 1 99 Bottles 2 ”Ich weiß es nicht” Das von Grund auf neu entwickelt wurde Das Beste von C++ enthält Das Schlechteste weglässt C++0x Standardbibliotheken, neue Sprachfeatures 100% kompatibel zu C++ 98 C++ Erfinder 3 Interview 4
Werden wir C++ 2.0 sehen? 1 2 3 4 C++0x: Grundlagen C++ 1 99 Bottles 2 C++0x: Unterstützung von modernen Maschinenarchitekturen und Nebenläufigkeit Bessere Unterstützung der genetischen Programmierung Viele ”kleine” Spracherweiterungen Neue Standardbibliotheken: Reguläre Ausdrücke C++ Standards Committee C++ Erfinder 3 Interview 4
Warum hat er keine andere Sprachen erstellt? Grundlagen C++ 1 99 Bottles 2 ”Welches Problem würde die neue Sprache lösen?” ”Für wen würde sie die Probleme lösen?” „Was dramatisch Neues könnte angeboten werden?“ „Könnte die neue Sprache effektiv verbreitet werden?“ C++ Erfinder 3 Interview 4
Lehren Grundlagen C++ 1 99 Bottles 2 Einführung in die Programmierung für C++ ”Das ist mein erstes Buch für Anfänger” AT&T Änderung Forschung im Informatikbereich Mehr als 1.200 Anfänger in Programmieren unterrichtet Gute Grundlage für das weitere Lernen C++ Erfinder 3 Interview 4
Wie ist Ihre Meinung zu Codebeispielen in Lehrbüchern? Grundlagen C++ 1 99 Bottles 2 ”Ich bevorzuge Beispiele, die in so wenig Zeilen wie möglich eine Idee darstellen.” Programmfragmente sind unvollständig Alle Codebeispiele in kompilierbarer Form Keine hübschen künstlichen Beispiele Beispiele ohne den Missbrauch von Tieren C++ Erfinder 3 Interview 4
Teamarbeit 1 2 3 4 Schneller Besser Weiter kommt als alleine Grundlagen C++ 1 99 Bottles 2 Schneller Besser Weiter kommt als alleine Denn 4,8,16 Augen sehen besser C++ Erfinder 3 Interview 4 35
Fazit 1 2 3 4 C++ Sehr weite Verbreitung Maschinennahes Programmieren Grundlagen C++ 1 99 Bottles 2 C++ Sehr weite Verbreitung Maschinennahes Programmieren Für umfangreiche Projekte geeignet C++ Erfinder 3 Interview 4 36
Literatur 1 2 3 4 Grundlagen C++ 99 Bottles Visionäre der Programmierung: Die Sprachen und ihre Schöpfer, Federico Biancuzzi, Shane Warden - 2009 C++ von A bis Z: das umfassende Handbuch, Jürgen Wolf - 2006 Die C++ Programmiersprache, Bjarne Stroustrup - 2000 C++: Programmieren mit einfachen Beispielen; leicht, klar, sofort, Dirk Louis - 2006 C++: der leichte Einstieg, Peter Wollschlaeger – 2003 http://chachatelier.fr/programmation/fichiers/cpp-objc-en.pdf C++ Erfinder 3 Interview 4
C++ Danke für Ihre Aufmerksamkeit! 1 2 3 4 Grundlagen C++ 99 Bottles C++ Erfinder 3 Interview 4