Grundlagen der Programmierung mit C/C++

Und ggf. gibt es hier noch einen weiteren Textabschnitt, der im mobilen Bereich aber nicht zu sehen ist. 
 

Grundlagen der Programmierung mit C/C++

Zumindest hier in Deutschland dominieren die JIT Sprachen Java und C# die Ausbildung, und die Ausbildung sollte immer kürzer werden. So sind C und C++ fast aus der Lehre verschwunden, und es wird schwerer Nachwuchs zu finden. Das trifft aber auch auf andere native Programmiersprachen zu. Und das ist tragisch, da diese das Rückgrat der modernen Welt sind, und eigentlich auf jedem elektronischen Gerät ein Aufkleber "C/C++ inside" sein müsste. Und auch Zeitschriften vermitteln, dass Sprachen wie JavaScript und Python cooler sind. Studien belegen, dass C und C++ nicht nur viel performanter sind, sondern auch ressourcenschonender. Vor dem Hintergrund von mobilen Geräten mit Akkus, aber auch dem Energiehunger der Rechenzentren, ein wichtiger Aspekt. So sagte Herb Sutter, ein führender Microsoft Architekt, vor einigen Jahren auf der BUILD, dass Microsoft C# und .net liebt, aber auf C++ aufgebaut ist. Auf das Raunen im Publikum ergänzte er, dass die ganze IT auf C und C++ setzt. Nur unsere Fachschulen und Universitäten haben das noch nicht verstanden. Damit verliert Deutschland Wettbewerbsfähigkeit, gehen uns die talentierten Nachwuchskräfte aus. In Deutschland stehen tausende unnötige Server in  Rechenzentren, weil Verantwortliche auf Java, C# und andere Sprachen gesetzt haben. Oder weil der Nachwuchs fehlt. 

So habe ich schon 2004 geschrieben: 
Als Softwareentwickler können wir jede Illusion erzeugen, aber wir schreiben ja "nur" Software, leider denken das viele. Die hohe Quote gescheiterter Projekte ist doch ein Ausdruck, dass Softwareentwicklung kein simpler Vorgang ist, und dass diese Quote trotz ständig verbesserter Entwicklungswerkzeuge und -methoden weiter gewachsen ist, bestätigt dieses. Softwareentwicklung wird immer komplexer, das Niveau steigt an. Hier kann man Stephen Jay Gould wirklich bemühen, der in einer Abhandlung untersucht hat, warum in den 30iger Jahren die Quote der Schläger beim Baseball schlechter wurde. Er erkannte, dass es nicht daran lag, dass die Schläger schlechter wurden, sondern die Werfer ihrer Leistungen verbesserten, also das Gesamtsystem auf eine höhere qualitative Stufe kam. Das zeigt aber eine Rückkopplung, und damit verbunden eine Zunahme an Qualität/Komplexität. So bestätigt Gould auf seine Weise, was wir in der Softwareentwicklung alle wissen, die Anforderungen, die an uns gestellt werden, nehmen drastisch zu, Softwareentwicklung wird noch komplexer.

 

Nun gibt es sicherlich mehrere verschiedene Komplexitätsbegriffe, aber glücklicherweise sind in den letzten Jahren die Grenzen zwischen den Wissenschaften immer mehr gefallen. Wenn Sie also Gould im Zusammenhang mit der Komplexität der Natur als zulässige Meinung, besonders in dem von Ihnen verwendeten extremen Zusammenhang ("Stephen Jay Gould, der mathematisch (statistisch), dies zumindest für die Evolution widerlegt hat: Der Trend sind simple Lebensformen, je komplexer die Lebensform, desto mehr findet man sie am Rand der Glockenkurve.“), sehen (also die Bakterie, auf Grund der Artenvielfalt und Anzahl als komplexestes Lebewesen), dieses aber nicht auf die Softwareentwicklung ausdehnen, weil es nicht passt, ist das eigentlich schade. 
Aber versuchen wir es doch einmal mit Gould zu sehen. Erhöhen wir die Komplexität eines Gesamtsystems, in dem wir einzelne Bestandteile in ihrer Qualität/ Komplexität reduzieren? Das würde, bezogen auf das Baseballbeispiel von Gould bedeuten, man hätte die Schläger kleiner machen müssen, und hätte dadurch die Trefferquote reduziert. Aber so war es nicht, die Qualität der Werfer hat sich verbessert. Ich denke, den einzigen Schluss, den man daraus auf die Softwareentwicklung ableiten kann, ist es, die Qualität der Entwickler zu erhöhen. 
Was versucht man aber in der Softwareentwicklung? Man reduziert die Komplexität der Entwicklungssysteme und feiert dieses sogar noch als Erfolg, weil dadurch noch mehr "Schläger" im Baseball auftauchen, noch mehr daneben schlagen, aber in der Summe aller "Schläger" mehr Bälle treffen. Manchmal hilft es uns wirklich, die Softwareentwicklung mit ganz normalen Augen zu sehen, um zu erkennen, ob dieser Weg der richtige sein kann.

 

Mir geht es nur darum, zu zeigen, dass die größte Anforderung, vor der wir stehen, die Qualifikation ist. Jede Diskussion über neue Technologien und Sprachen lenkt davon ab. Durch den Goldrausch der neunziger Jahre ist die Anzahl der Programmierer schneller gewachsen, als es gut ist. Und da wir eigentlich nur mit Modellen arbeiten, die scheinbar keinen physischen Gesetzmäßigkeiten gehorchen, glauben die meisten, sie können Häuser entwerfen. Wenn jetzt Entwicklungswerkzeuge zum Nulltarif angeboten werden, Open Source = kostenlos- Verständnis (ich weiß, dass das nicht so ist) um sich greift und Unternehmen, die damit Geld verdienen, angegriffen werden, so dass die Software eigentlich nichts mehr wert ist, kürzen die meisten Unternehmen aber ihre Etats für die Qualifikation. 

 

Und die Universitäten, die bisher überlastet waren, orientieren sich mittlerweile auch eher an Hypes, und nicht an gesunder Substanz, aber das beste sind die "schnellen Brüter", wo die IHK in wenigen Monaten Programmierer ausbildet. Für C++ stelle ich die These auf, dass 80% der Entwickler die Möglichkeiten der Sprache nicht ausnutzen, und dieses muss uns nachdenklich machen.
 

Auch scheint mit Java und C# die Historie zu verschwinden. Kann man die Grundlagen der Programmierung bis zu Euklids Algorithmus ins Jahr 300 vor Christus zurückverfolgen, scheint es fast, als in den 90iger Jahren eine neue Zeitrechnung gegonnen hat. Alles davor war veraltet. Freie sprachübergreifende Standards wurden erst genutzt und dann später durch reine sprachabhängigere Lösungen ersetzt. Schon damals wurden Fake- News im Marketing über andere Sprachen verbreitet. Dazu kamen explodierende Anzahlen an IT- Studenten (hier in Deutschland eine Verdopplung in manchen Jahren) und die Forderung der Wirtschaft, die Ausbildungszeiten zu verkürzen. Das Märchen vom schnell ausgebildeten und austauschbaren Programmierer verbreitete sich. Das alles ging auf Kosten der Qualität der Ausbildung und der Grundlagen. So war es dann nicht ungewöhnlich, dass Studenten am Anfang des 1. Semesters überrascht gefragt haben: "Was, wir lernen hier programmieren?". Ich erinnere mich an meine erste Vorlesung vor 10 Jahren. Es war eine Spezialwoche in der Semestervorbereitung. Auf der Fahrt erhielt ich die Nachricht, dass die Studenten auf Beschluss der Mehrheit der Professoren keine ECTS-Punkte bekommen würden. C++ passe nicht in das Ausbildungsprofil dieser Fachhochschule, die sich selber als grüne Fachhochschule versteht. So war es auch eine der ersten Fragen: "Wieviele Punkte bekommen wir?" Als ich am 2. Tag zum Hörsaal kam, war ich sicher, dass von den 63 Studenten keiner mehr kommen würde. Es war schließlich wertlos geworden. Und ich stand sprachlos im Saal, als nicht einer gefehlt hat. Ich war überracht, als ich 2 Jahre wieder einen Anruf bekam. Auf die Frage, ob ich wieder eine Vorlesung halten könnte, entgegnete ich: "Wieso, es passt doch nicht in das Profil?". Die Antwort überraschte mich, Studenten hatten in der Fachhochschule angefragt, und wieder nahmen mehr teil, als geplant. So bin ich auch heute überzeugt, mit diesem Angebot Interesse zu wecken.


Durch diese verfehlte Ausbildung wird es immer schwerer Nachwuchs zu gewinnen, der heue nativ programmieren kann. Dabei steigen unsere Probleme. Die IT und das Internet verbrauchen jedes Jahr 6 - 10% mehr Strom, der CO2- Fußabdruck des Internets ist schon doppelt so groß wie der weltweite Flugverkehr. Mit Scriptsprachen und JIT- Compilern wird aber ein vielfaches an elektrischer Energie verbraucht. Die IT wird auf der einen Seite zum Problem selber, und sie kann es lösen. Bessere Software, schnellere und effizientere Algorithmen, die Nutzung moderner und leistungsfähiger, hochoptimierender nativer Compiler und hier natürlich in vorderster Linie mit C/C++. Da sind nicht nur die Projekte CLang und GNU, Hersteller wie Microsoft und Embarcadero, gefragt, aktuellste und leistungsfähige Compiler zu entwickeln, wir brauchen auch die Leute, die diese dann einsetzen. Die sich nicht mit Mittelmaß zufriedengeben. Und das aus dem Mittelstand heraus, dem Rückgrat unser Wirtschaft.


Aus diesen Überlegungen ist die Idee zu diesem neuen Mammut- Projekt geboren. Der ersten unabhängigen und kostenlosen Lehrveranstaltung in Semesterform, für Studierende, Lernende an den Schulen, aber auch gestandene Programmierer(innen), die sich weiterbilden wollen. Von den Grundlagen der Programmierung, zu C und C++, bis hin zu Softwareentwurf und neuen Standards. Offen und kompetent.


Einige von Euch haben ja gewusst, dass ich schon lange nachgedacht habe, sollte ich ein neues Buch schreiben, oder eine virtuelle Lehrveranstaltung (Vorlesung) für die Programmierung mit C/C++ halten. Ich wollte nicht nur immer wieder Fehler in der Ausbildung kritisieren, sondern selber etwas ändern. Das habe ich in meinem Elternhaus gelernt, nicht auf andere zeigen sonder zu erst fragen, was kann ich ändern. In Gesprächen im Freundeskreis, mit Kundeninnen und Kunden, mit vielen Geschäftspartner haben wir oft diskutiert, welche Fehler es in der Ausbildung gibt, und wie wir an den notwendigen Nachwuchs bekommen. Zu wenige Studenten können heute native programmieren und nur wenige schauen noch über den Tellerrand. Wurden früher in der Vorlesung verschiedene Programmiersprachen behandelt, fokusiert man es heute auf eine einzige. Wenn man dann mit Lehrende redet, oder in Artikeln sucht, findet man die Antwort: "Die Qualität der Lehrnenden wäre schlechter geworden!". Vielleicht ist es im Zeitalter von Google, Facebook und WhatsApp wirklich so, aber ich habe in diesen Diskussionen immer wieder gesagt, dass wir alle es ändern können. Das fängt schon mit den eigenen Kindern an und Arbeitsgemeinschaften an der Schule, sicher aber auch in dem man Blogs schreibt oder anders an die Öffentlichkeit geht. Jeder von uns hat Möglichkeiten etwas zu tun. 


Nun, es wird langsam konkreter. Corona hat unser Leben verändert, ein bisschen entschleunigt und mehr virtuell gemacht. Wir wurden getrennt und sind doch enger zusammengerutscht. So habe ich mehr Zeit in Berlin und der Ausbau des Videoraums, die Investitionen in Kameras, Streamingsoftware und Mikrofone macht mich unabhängiger. So kann ich unsere Kunden effizienter betreuen und wir haben ja auch mit einem Video- Kanal im letzten Jahr begonnen. Und so habe ich mich jetzt entschlossen, dieses Abenteuer "Lehrveranstaltung" zu beginnen. Ein bisschen weiche Knie habe ich schon. Wer mich kennt, weiß, dass ich wenig Probleme habe, auch in großen Räumen zu sprechen, auch dass ich schon erfolgreich Vorlesungen in Hörsälen gegeben habe. Und daher habe ich auch die Begeisterung der Studierenden erlebt, Programmierung mit C/C++ zu lernen und sich einzubringen. Auch diese positiven Erfahrungen haben mich in dem Entschluss bestärkt.


So entsteht etwas wirklich neues. Das Projekt wird Monate dauern, ich werde es in Semesterform organisieren, und es ist eine unabhängige, komplett virtuelle Lehrveranstaltung für Programmierung. Und es wird nicht nach einem Semester vorbei sein. Meines Wissens hat es das so noch nicht gegeben, zumindest nicht in Deutschland. Hier tun sich leider viele Lehrkräfte in Schulen und Universitäten schwerer mit der neuen virtuellen Welt, und sicher fehlt in einigen Bereichen auch immer noch das Geld. Und auch wenn ich es mit dem Namen "adecc Scholar" als Angebot meiner Firma adecc Systemhaus GmbH etikettiere, das ganze wird auch noch kostenlos für alle Teilnehmer angeboten. Für mich ist es wie gemeinnützige Arbeit. Ich möchte mich damit bei allen bedanken, die mir auf meinem Weg zum "C++ Professional" geholfen haben, mich beeinflußt und gefordert haben. Und ich nutze hierfür die Ressourcen meiner Firma. 


Viele mit denen ich in der Vorbereitung gesprochen habe, halten mich für total verrückt. "Was willst Du wirklich erreichen?" wurde ich gefragt. Kostenlos, und dieser Zeitaufwand. So haben viele gesagt "Du verdienst damit nichts, warum gibst Du Dein Wissen kostenlos weiter?" Zum einen ist auch heute Programmierung und C++ noch mein Hobby und meine Leidenschaft. Vor vielen Jahren sagte eine Kollegin mal, das Programmierer täglich spielen. Als ich fragte, welches Spiel, antworte sie lächelnd: "Es ist so eine Art Text- Adventure!" Es ist gut, wenn man dieses dann zu seinem Beruf macht. Aber ich lerne selber immer noch neues, im IT Bereich ist das Lernen nie abgeschlossen. Deshalb ist es so schlimm, wenn Firmen in der Weiterbildung glauben Kosten sparen zu müssen. Außerdem kann ich natürlich die Technik und Ressourcen in der adecc nutzen, mein Vorteil. 


Zum anderen möchte ich so auch etwas zurückgeben, ich hatte es geschrieben. Denn auch mein Weg ist gekennzeichnet von vielen, die mich geformt und ausgebildet haben. Meine Eltern und meine Brüder, sie haben meine Werte geformt, mir Freude am Lernen vermittelt und meine Leidenschaft nie erstickt, und hier liegt auch der Ursprung für meinen Weg in die IT. Nach dem ursprünglichen Ziel Architektur zu studieren, wurde meine Leidenschaft für Computer und Programmieren entfacht. Meine Trainer im Sport, die mir Leistungswillen und Ergeiz vermittelt haben. Meine Lehrerinnen und Lehrer an der Schule, und später im Internat in Schwerin. Einige hätten es fast geschafft, mir die Freude am Lernen zu nehmen, aber am Ende ging es gut. Und die Professorinnen und Professoren, an alle Lehrenden an der Universität in Rostock. Natürlich Professor Gerhard und Professor Hartmann in der Informatik, oder Professor Maeß der meinen Blick auf Algorithmen begründet hat. Später meine Arbeitskollegen und Freunde, mit denen ich manche Probleme lösen musste. Unser Wissen ist immer die Summe von vorherigem Wissen. Und dieses möchte ich jetzt teilen. Und Wissen sollte auch kein Stock sein, der an Börsen gehandelt wird. 

 
Deshalb möchte ich ab Oktober Nägel mit Köpfen machen, und die virtuelle Lehrveranstaltung wirklich beginnen. Ich habe seit Wochen an den Vorbereitungen gearbeitet und selber wieder altes Wissen aufgefrischt. Ich weiß noch nicht, wie ich alles hinbekomme, zum Beispiel Übungen machen kann, und die wichtigste Frage ist natürlich, ob überhaupt Teilnehmer da sein werden. Wir werden sehen. Wenn ich nicht anfange, werde ich es auch nicht wissen. Ich habe bewusst Twitch.tv als Plattform gewählt, einfach weil junge Leute eher da sind. Dazu einen Discord- Server für die Koordination und Kommunikation. Ich habe mich also gegen Teams und Zoom entschieden. Ich werde es dann später alle Videos über einen Youtube- Channel zusammenfassen, da die Twitch- Videos nur 2 Wochen stehen bleiben. Wir erweitern noch mal den Videoraum, eine neue Kamera gibt mehr Möglichkeiten, eine bessere Aufteilung und Perspektive im Raum. Wir haben auch noch mal die notwendige Software aktualisiert. 
Dabei richtet sich diese Veranstaltung natürlich nicht nur an die Studierenden, auch wenn ich sie immer wieder als Vorlesung bezeichne, und mich an die Semesterzeiten halt. Aber da wir unabhängig sind, gibt es keine Punkte, wir werden am Ende für echte Teilnahme aber Zertifikate ausstellen. Wir wollen auch Schülerinnen und Schüler erreichen, und alle Arbeitenden, die sich weiterbilden worden. Vielleicht haben einige Programmieren nur nebenbei gelernt, und wollen ein besseres Fundament. Andere wollen Wissen auffrischen. Vielleicht seit ihr ja auch neugierig, und schaut vorbei, oder teilt dieses mit Eurem Freundeskreis oder Kolleginnen und Kollegen. Ich würde mich freuen.

Kommentar verfassen

* These fields are required

Kommentare

Keine Kommentare

Über den Autor


Über den Autor

Volker Hillmann

CEO, Developer, Germany, Berlin
Volker Hillmann geboren 1965, ist studierter Diplom-Mathematiker mit dem Schwerpunkt Datenbanken und Datensicherheit. Er programmiert seit 1988 in C. Nach ersten Berührungen auf einer Unix- Maschine mit Turbo C 1.5 auf PCs. So lernte er 1991 auch C++ kennen und programmiert seit dem in unterschiedlichen Bereichen mit C++. Nach einigen Erfahrungen im Versicherungs- und Bankenwesen gründete er im Jahr 2000 die adecc Systemhaus GmbH, dessen geschäftsführender Gesellschaft er bis heute ist. Darüber ist er MVP bei embarcadero Deutschland.

More posts by this author