Als ich am Freitag die neuste c't in den Händen hielt und den Artikel über Crossplattform- Entwicklungssysteme gelesen habe, war ich überrascht. Ich werde jetzt keine allgemeine Kritik an Zeitschriften folgen lassen. Aber wenn man bedenkt, dass die c't auch von Entscheidungsträgern gelesen wird, denen es leider oft an technologischen Spezialwissen fehlt, die unterschwellige Werbung oder auch das Bashing zu erkennen, ist das schon bedenklich. Und gerade Artikel der c't haben in der Vergangenheit schon als Basis gedient, einen Wechsel von C und C++ hin zu Java oder anderen Sprachen zu untermauern. So kann ich mir auch dieses Mal vorstellen, dass einige Nutzer des C++Builders und von Delphi Probleme bekommen und sich in ihrem Unternehmen rechtfertigen müssen. Denn schließlich steht es ja schwarz auf weiss in der Zeitung, und irgendwie glauben wir immer noch, dass es wahr ist, wenn es gedruckt ist. Und gerade die Mischung von sinnvollen Fakten mit kleinen Seitenhieben erscheint hier immer wieder erfolgreich. So möchte ich auch nur auf einige Punkte eingehen.
In den letzten 10 Jahren ist es zu einem Wandel in der IT gekommen, Programme und Daten bestimmen immer mehr unser tägliches Leben. Und mit der neuen EU- Datenschutzgrundverordnung ist einigen vielleicht auch deutlich geworden, wieviele Daten mittlerweile gespeichert werden. Dazu kommen aber andere Probleme, denn unsere Rechenzentren werden immer größer, und nachwievor spielt hier C++ eine wichtige Rolle. Somit musste sich auch die Sprache in den letzten Jahren anpassen und erweitern. Aber beginnen wir von vorne und stellen uns diese Frage.
Warum muss sich C++ neu erfinden und anpassen?
In den letzten Monaten und Jahren hat es sehr viele Neuigkeiten und Veränderungen in der IT gegeben. Durch die SmartPhones, Tablets und SmartTVs, neue Betriebssysteme und Technologien, wie die Bedienung von Rechnern über Touch oder sogar freie Gesten, ist mehr passiert, wie in den 50 Jahren zuvor. Der IT- Markt ist wieder in Bewegung, neue Firmen tauchen auf, andere versuchen sich zu behaupten. Außerdem spielen die sozialen Netzwerke und das Internet heute eine noch wichtigere Rolle. Dazu kommen Cloud- Dienste und andere Serverleistungen.
Aber unsere Gesellschaft wird damit auch immer abhängiger von einer funktionierenden IT- Infrastruktur. Autos, Bahnen und Flugzeuge werden mit elektronischen Hilfsprogrammen aufgerüstet. Die Eisenbahnen fahren in immer kürzeren Abständen, Fabriken werden durch Computer gesteuert und die Logistik reduziert bisher notwendige Lagerbestände durch zeitgenaue Transporte rund um die Welt. Im Jahr 2012 konnten wir im Fernsehen die erfolgreiche Landung des Marsrover „Curiosity“ mitverfolgen, und nun sehen wir, wie dieser seine Fahrt auf dem Mars besteht. So hat dieser sogar einen eigenen Twitter- Account. Und sehr oft sind diese Systeme mit C oder C++ programmiert.
Und dank der „Cloud“, sozialen Netzwerken wie Facebook und Googles Internetdiensten haben sich riesige Rechenzentren gebildet. Diese funktionieren aber nur, wen sie konstant mit Strom versorgt werden, damit die Rechner laufen und ausreichend gekühlt werden können. Die Stromkosten sind gewaltig, nur fehlt das Bewusstsein in der Bevölkerung für diese Probleme keine Rolle. Einige kennen den Spruch, dass man mit dem Stromverbrauch einer Google- Suchabfrage auch eine Tasse Kaffee kochen könnte. Daher spielen Rechenzentren bei der Strom- und CO2- Bilanz heute eine spürbare Bedeutung, hier in Deutschland werden mehr als 10% des erzeugten Stroms in Serverfarmen verbraucht. Und auch hier zeigt sich, dass effizienter, nativer Code, zum Beispiel in C oder C++ geschrieben, nicht nur Kosten sparen, sondern auch unser Umwelt hilft.
Aber durch die zunehmende Bedeutung der Rechenzentren haben heute Störungen in diesen globale Auswirkung. Wir brauchen also Anwendungen, die nicht nur effizient arbeiten, sondern auch sicher sind. Und die IT- Experten werden zu wichtigen Faktoren in den Strategien der Militärs, die in Angriffen auf diese Infrastrukturen eine große Gefahr sehen, und ihrerseits die des Gegner stören wollen. Als ich dieses vor 5 Jahren das erste Mal geschrieben habe, gab es noch keinen Hacker- Angriff auf unseren Bundestag, und auch die aktive Beeinflussung des USA Wahlkampfs durch staatliche geförderte Hacker lag noch in der weiten Zukunft.
Den meisten bekannten Systemen ist eines gemeinsam, sie sind zumindest teilweise in der Programmiersprache C++, oder in der Untermenge C geschrieben. So sprach Herb Sutter in einem Vortrag davon, dass Microsoft seine eigene Sprache C# liebt, aber letztlich auf C++ gebaut ist. Viele der wichtigen Microsoft Produkte, wie zum Beispiel die Windows- Betriebssysteme, Office, der Internet Explorer, Exchange, MS SQL, aber auch der C#- Compiler selber, sind in C++ geschrieben. Aber auch andere bekannte Systeme wie Unix oder Linux sind sehr eng mit C und C++ verknüpft. Und damit dürfte es kaum ein elektronisches Gerät geben, auf dem nicht ein Aufkleber "C++ inside" stehen könnte, wie es Bjarne Stroustrup vor einiger Zeit mal gesagt hat.
Und auch soziale Netzwerke, wie Facebook, oder Googles Suchdienst mit den riesigen Serverfarmen wären C++ sicher nicht denkbar. So wundert es nicht, dass diese Firmen in der Weiterentwicklung von C++ immer wieder auftauchen.
Diese Programmiersprache, die von Kritikern sehr oft als veraltet oder sogar konzeptionslos bezeichnet wird, scheint so wieder eine größere Rolle zu spielen. Für uns ist es wichtig, das aktive Marketing, dass leider sehr oft im Bashing von C++ endet, von wirklicher und sachlicher Information zu trennen. So wird von einer Auferstehung seit 2011 gesprochen. Tatsächlich war die Programmiersprache C++ nie weg, sie war auch nicht im Verborgenen zu einem Schattendasein verdammt, sondern viele wichtige Systeme wurden und werden auch weiterhin in dieser nativen, leistungsfähigen Sprache geschrieben. Keine andere Sprache bietet die Bandbreite an Möglichkeiten für Architekten und Entwickler, wird durch so viele Werkzeuge unterstützt, und die erstellten Programme sind schneller und ressourcenschonender, als die der gehypten Modesprachen. Gerade der schonende Umgang mit den Ressourcen macht die Sprache so interessant, sei es in Geräten mit geringen Platz, in SmartPhones und Tablets, da hier die Akkus entscheidend für die mögliche Leistung sind, aber auch zunehmend in Serverfarmen, um nennenswert Energie zu sparen und so weniger CO2 zu erzeugen.
Und die Sprache C++ ist auch nicht konzeptionslos. Was stimmt, C++ ist nicht objektorientiert. Sie war nie als solche geplant. Da C eine Untermenge ist, kann man sogar noch vollständig strukturierte Programme schreiben. Und das ist auch gut so. Von Anfang an war die Sprache immer eine multiparadigmen Sprache, unterstützt also neben vielen Elementen der Objektorientierung auch welche aus der Metaprogrammierung und zunehmend auch der funktionalen Entwicklung. Somit ist C++ frei von Dogmen. Dazu kommt die Mehrfachvererbung, und die Möglichkeit eigene Datentypen mit allen Operatoren zu entwerfen, die man in dieser Form in anderen Sprachen meist nicht findet. Dass die Festlegung auf ein Paradigma Nachteile bringt, haben auch Vertreter der „reinen“ Sprachen in den letzten Jahren erkannt. Hier sucht man jetzt nach passenden Ergänzungen, teilweise in dem die eigene Sprache erweitert wird, wie in Java durch Generics und Lambda- Funktionen. Alternativ wird nach einer Kombination mehrere Sprachen gesucht, hier spricht man von polyglotten Programmieren.
Und die Sprache C++ ist auch nicht veraltet. So wurde nach einigen Jahren Abstimmung im ISO- Komitee im September 2011 der neue C++ Standard C++11 verabschiedet. Damit wurde das Ziel, dieses innerhalb der ersten Dekade dieses Jahrhunderts, also bis 2009 abzuschließen, nicht erreicht. Aber das Ergebnis zählt, und so ist es auch ein Zeichen der Qualität der Entwicklung von C++, einmal einen Meilenstein nicht zu erreichen. Wie Bjarne Stroustrup es schrieb, das neue C++ fühlt sich an, wie eine neue Sprache. Dabei wurde auch gleich der Fahrplan für die folgenden Jahre festgelegt. So folgten die Standards C++14 und C++17, und es wird aktiv am nächsten Schritt gearbeitet. Diese neuen Standards brachten sehr viele interessante Eigenschaften, die die Sprache für die Anforderungen der nächsten Jahre rüstet. Aber die Entwickler müssen diese auch annehmen und gegebenenfalls noch einmal auf die Schulbank gehen.
Keine Kommentare
Dieses Seminar richtet sich primär an Einsteiger, die über Programmierkenntnisse, vorzugsweise in C++ verfügen und auf den C++Builder wechseln wollen. Es ist aber auch für Umsteiger von einer wesentlich älteren Version geeignet.
3 Tage
8 Teilnehmer
Dieses Seminar richtet sich an alle Entwickler, die ihre bestehenden Anwendungen vom klassischen C++- Compiler zum neuen, auf Clang basierenden Compiler im C++- Builder umstellen wollen.
3 Tage
8 Teilnehmer
In diesem Seminar erhalten Sie eine kompakte Einführung in die jeweils aktuelle Version des C++Builder (aktuell 10.3.3). Der C++Builder ist ein plattformübergreifendes Entwicklungstool, mit der Sie performante, native Anwendungen für die Zielplattformen Windows (32bit, 64bit), Mac OS (32bit), iOS und Android entwickeln kann.
5 Tage
8 Teilnehmer
Wie der Titel der Schulung sagt, geht es hier um die Entwicklung von nativen Anwendungen für mobile Endgeräte (App) mit dem C++Builder (aktuell 10.3.3).
2 Tage
8 Teilnehmer
Dieser Kurs richtet sich an C++ Entwickler, die den C++Builder nutzen und ihre Kenntnisse vertiefen wollen. Dabei geht es neben der Verwendung der Komponenten und den Eigenschaften der Sprache C++, besonders auch darum, beides vernünftig zu verbinden.
3 Tage
8 Teilnehmer
Dieses Seminar richtet sich an C++ Programmierer, die den Zugriff auf Datenbanken in ihren Anwendungen erweitern wollen. In diesem Seminar werden die wichtigsten Komponenten des C++ Builders für Datenbankzugriff erläutert, aber es wird auch gezeigt, wie sie diese in eine saubere Anwendungsarchitektur integrieren können.
3 Tage
8 Teilnehmer
Dieses Seminar richtet sich an C++ Programmierer, die Erfahrungen mit dem den Datenbankkomponenten des C++ Builders gesammelt haben, und nun skalierbare Datenbankanwendungen entwickeln wollen. In diesem Seminar wird die Bedeutung von ANSI C++ - Schnittstellen zwischen der Businesslogik einer Anwendung und der Datenbank gezeigt.
3 Tage
6 Teilnehmer
Dieser Kurs richtet sich an Softwareentwickler, die die Elemente der Programmiersprache C als Basis für einen späteren Einstieg in die objektorientierte Programmierung mit C++ lernen wollen.
3 Tage
8 Teilnehmer
Dieses Seminar richtigt sich an die Programmierer, die von C nach C++ umsteigen wollen. Es werden die wichtigsten Erweiterungen der Sprache C++, und die Unterschiede zu C ausführlich besprochen.
3 Tage
5 Teilnehmer
Dieses Seminar richtigt sich an die Programmierer, die von C nach C++ umsteigen wollen. Es werden die wichtigsten Erweiterungen der Sprache C++, und die Unterschiede zu C ausführlich besprochen.
5 Tage
8 Teilnehmer
Wir wurden oft gefragt, ob wir eine Schulung "mit allem" machen könnten. Ein größeres Beispiel, beginnend mit einer Idee, daraus eine Architektur entwickeln, und dann unabhängig in C++ implementieren. Die Erweiterungen nur verwenden, ohne das diese unsere Struktur und Architektur bestimmen.Und wenn es geht, auch noch mit Entwicklung eines Zugriffs für mobile Anwendungen verbinden.
5 Tage
8 Teilnehmer
In diesem Seminar lernen Sie, welche Open Source- Tools Sie für Ihre tägliche Arbeit mit dem aktuellen C++ Builder 10.3.2 nutzen können. Dabei geht es um Lösungen zu den Themen Dokumentieren, Metriken, Codeanalyse und Codeverwaltung.
2 Tage
6 Teilnehmer