30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

2 1. Ziel und Inhalt dieses Buchs<br />

versucht, <strong>Softwareentwicklung</strong> gleich anhand e<strong>in</strong>er objektorientierten Sprache<br />

zu lehren. Das Argument für diese Vorgehensweise kl<strong>in</strong>gt auf den ersten<br />

Blick sehr schlüssig: OO-Sprachen wurden entwickelt, weil den Menschen die<br />

OO-Denkweise besser liegt als die imperative. Also stellen OO-Sprachen, im<br />

Vergleich zu imperativen Sprachen, e<strong>in</strong>e deutliche Verbesserung dar und s<strong>in</strong>d<br />

deswegen auch leichter zu erlernen.<br />

Leider wurden bei diesem Argument e<strong>in</strong> paar Kle<strong>in</strong>igkeiten übersehen:<br />

Erstens haben Problemlösungen, egal ob mit OO-Sprachen oder mit imperativen<br />

Sprachen, immer e<strong>in</strong>en imperativen Anteil. Man muss ja e<strong>in</strong>em Computer<br />

“genau sagen, was er tun soll”, zum<strong>in</strong>dest im Kle<strong>in</strong>en. Das geht ohne<br />

Verständnis für die <strong>in</strong>terne Arbeitsweise nicht wirklich. Zweitens existiert<br />

sehr wohl e<strong>in</strong> Unterschied zwischen der saloppen Denkweise von Menschen<br />

und den absolut exakten Formulierungen, die e<strong>in</strong>er Programmiersprache zugrunde<br />

liegen. Drittens wurden OO-Sprachen über lange Zeit h<strong>in</strong>weg immer<br />

weiterentwickelt, um noch eleganter und besser e<strong>in</strong>setzbar zu se<strong>in</strong>. Dementsprechend<br />

fanden viele Konstrukte <strong>in</strong> OO-Sprachen E<strong>in</strong>gang, die erst dann<br />

zu verstehen s<strong>in</strong>d, wenn man die notwendige Erfahrung hat, um deren S<strong>in</strong>n<br />

nachvollziehen zu können.<br />

Wählt man also für die ersten Schritte <strong>in</strong> der <strong>Softwareentwicklung</strong> gleich<br />

e<strong>in</strong>e OO-Sprache, so ist man gezwungen, e<strong>in</strong>ige Interna zu begreifen, obwohl<br />

das notwendige Handwerkszeug und die notwendige Erfahrung dazu fehlen.<br />

Me<strong>in</strong>e Beobachtungen von C ++ Neul<strong>in</strong>gen zeigen folgendes Bild:<br />

• Die meisten Entwickler, die zuvor entweder C oder e<strong>in</strong>e andere imperative<br />

Sprache beherrschen, f<strong>in</strong>den sehr schnell Gefallen an C ++, da sie endlich<br />

e<strong>in</strong> Problem elegant lösen können. Es ist mit der nötigen Erfahrung bei<br />

richtiger Anwendung des OO-Ansatzes (und nur dann!) möglich, Probleme<br />

elegant <strong>in</strong> kle<strong>in</strong>e, <strong>in</strong> sich abgeschlossene Teilprobleme zu zerlegen.<br />

Damit kann man sich immer um das Wesentliche des entsprechenden Teilproblems<br />

kümmern, ohne durchgehend das große Ganze akribisch im Auge<br />

behalten zu müssen. Natürlich geht dies nur, nachdem das große Ganze<br />

e<strong>in</strong>mal vernünftig auf höherer Abstraktionsebene entworfen wurde.<br />

• Fast alle Entwickler, die C ++ (oder auch Java) als E<strong>in</strong>stiegssprache lernen,<br />

ohne zuvor mit e<strong>in</strong>er imperativen Sprache gearbeitet zu haben, f<strong>in</strong>den C ++<br />

unglaublich kompliziert und sehen den Wald vor lauter Bäumen nicht mehr.<br />

Das liegt daran, dass sie vor vielen Problemen, die durch das OO-Konzept<br />

gelöst werden, überhaupt noch nie gestanden s<strong>in</strong>d! Wie soll man auch e<strong>in</strong>e<br />

Problemlösung verstehen und den damit verbundenen Overhead gerne <strong>in</strong><br />

Kauf nehmen, wenn man das Problem nicht kennt bzw. nicht verstanden<br />

hat?<br />

Lesern, die trotz dieser Argumente ke<strong>in</strong>e Lust haben, zuerst C zu lernen,<br />

sondern sich gleich C ++ aneignen wollen, möchte ich zum<strong>in</strong>dest die beiliegende<br />

elektronische Version von <strong>Softwareentwicklung</strong> <strong>in</strong> C als Nachschlagewerk<br />

für Zwischendurch empfehlen. Es schadet <strong>in</strong> jedem Fall nicht, wenn man

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!