Article View: de.comp.lang.c++
Article #1784Re: Umstieg von Quick C auf C++ etc.
From: Dietmar Kuehl
Date: Fri, 08 Mar 1996 16:10
Date: Fri, 08 Mar 1996 16:10
83 lines
5330 bytes
5330 bytes
Hi,
Michael.Burgard@munich.netsurf.de wrote:
: kann mir jemand sagen, ob ein Umstieg von Quick C 2.00 (hab da nur
: manchmal ein bischen "rumprogrammiert", kenns aber nun schon recht
: gut, d.h fast so gut wie jede Funktion und auch vom Prinzip habe ich C
: verstanden) auf zum Beispiel C++ leicht ist, oder man schon umlernen
: muss? Sind die alten grundlegenden Funktionen wie z.B. printf(),
: scanf() etc. noch da oder heissen die in C++ anders.
Ich weiss nicht, in wie weit sich Quick C von ISO C unterscheidet, aber
ich vermute nicht wesentlich (ich kenne Quick C nicht). Der Umstieg von
C nach C++ ist je nachdem, wie man es sieht, von problemlos bis
kompliziert: Will man weiter eigentlich C programmieren, aber einen
C++ Compiler benutzen, dann gibt es kaum was zu beachten. Es gibt in
C++ halt einen Satz zusaetzlicher Schluesselwoerter, die es in C nicht
gab, z.B. 'class', 'public', 'typename',... Ausserdem gibt es kleinere
Aenderungen (z.B. Character-Literal haben in C den Typ 'int' und in C++
den Typ 'char'; das macht sich, wenn man keine C++ Features benutzt,
nur bei 'sizeof()' bemerkbar). Insbesondere ist die Standard C Library
(z.B. mit 'printf()' und Co.) auch Teil des (zukuenftigen) C++
Standards.
Das ist aber nicht der "Kick". Davon programmiert man NICHT C++ und
schon garnicht objekt-orientiert. Wenn man tatsaechlich C++
programmieren will, dann hat man einen langen, steinigen Weg vor sich.
Da waere man (IMHO) besser dran, wenn man vorher NICHT gelernt haette C
zu programmieren... Auf den ersten Blick sieht C++ so aus wie C und man
kann in der Tat alle Beispiele aus dem ANSI K&R mit einem Standard
konformen C++ Compiler uebersetzen und erhaelt sogar die selben
Resultate. Aber C++ ist anderes. Es ist eine andere Sprache mit anderen
Techniken und anderen Ideen. Insbesondere ist C++ um Laengen
komplizierter als C. Dafuer gewinnt man Unterstuetzung bei
objekt-orientiertem Programmieren. Allerdings darf man nicht denken,
dass man objekt-orientiert programmiert nur weil man C++ oder in C++
eine 'class' benutzt! Wenn man aber tatsaechlich objekt-orientiert
(oder generisch, dafuer gibt es in C++ auch Unterstuetzung, siehe etwa
STL) programmiert, dann nimmt einem C++ eine ganze Menge Arbeit ab.
Die Datenkapselung, in C++ durch Klassen ('class' oder 'struct')
modeliert, verhindert, dass man sich dazu verleiten laesst, auf
Repraesentationsdetails zuzugreifen (das ist in grossen, nicht
objekt-orientierten Projekten eine nicht-triviales Problem).
Gleichzeitig kann man Klassen so schreiben, dass man ihr Verhalten
modifizieren kann (durch dynamische Polymorphie, d.h. virtuelle
Funktionen, oder statische Polymorphie, d.h. Templates). Darueber
hinaus kann man Klassen, mittels ueberladbaren Funktionen und
Operatoren, so implementieren, dass ihre Benutzung "natuerlich" ist
(man kann die selben Features missbrauchen, um eine "unnatuerliche"
Benutzung zu erzwingen). Das alles (und nochmehr; C++ hat noch eine
Reihe von signifikanten Features, die ich nicht erwaehnt habe) macht es
moeglich, grosse Programme in den Griff zu bekommen und Teile davon
auch noch so zu schreiben, dass man sie im naechsten Programm
wiederverwenden kann.
Diese Vorteile gibt es aber halt nicht umsonst. Um sie richtig
einsetzen zu koennen, ist es noetig einen guten Einblick in die Sprache
zu haben. Bevor man fluessig C++ Programme (welche, die man wirklich
C++ Programme nennen kann) entwerfen und schreiben kann, vergeht sicher
ein halbes Jahr, wenn man vorher viel C programmiert hat mehr.
: Welche Version von C++ ist den im Moment die aktuelle, oder welcher
: C-"Dialekt" ist den zur Zeit zu empfehlen?
Der ISO C++ Standard liegt in den letzten Zuegen (derzeit ist gerade
wieder ein ISO C++ Committee Meeting; mal sehen, was sich tolles
aendert...) und man kann im Prinzip das DWP (Draft Working Paper) als
de facto Standard ansehen: Es wird keine entscheidenen Erweiterungen
und Einschraenkungen mehr geben. Lediglich Details werden konsistent
gemacht und Widersprueche aufgeloest. Compiler dafuer gibt es
allerdings noch nicht. Alle C++ Compilerbauer laufen dem derzeit
aktuellen DWP hinterher. Stabile Implementationen der Core-Features
gibt es einige: Da hat man halt nicht "the cutting edge of features",
dafuer was, womit man portable arbeiten kann. In der Beziehung kann man
fast alles nehmen.
Was den 'C-"Dialekt"' angeht, ist ISO C zu empfehlen: Alles andere ist
(per Definition) unportable. Die meisten C Compiler duerften ISO
compatible sein, mindestens dann, wenn man den Schalter auf ISO (bzw.
"ANSI"; da muss es eine grosse Fraktion von Nationalisten geben...)
stellt.
--
dietmar.kuehl@uni-konstanz.de
http://www.informatik.uni-konstanz.de/~kuehl
I am a realistic optimist - that's why I appear to be slightly pessimistic
Technical Details
Message-ID:
<4hpm6d$lev@news.BelWue.DE>Path:
arc1-ca.pugleaf.net!news.belwue.de!uzwil!kuehlReferences:
<4hnjo8$dq1@ccnserv.ccnmuc.net>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!news.belwue.de!uzwil!kuehl From: kuehl@uzwil.informatik.uni-konstanz.de (Dietmar Kuehl) Newsgroups: de.comp.lang.c++ Subject: Re: Umstieg von Quick C auf C++ etc. Date: 8 Mar 1996 16:10:53 GMT Organization: Fakultät für Mathematik und Informatik Message-ID: <4hpm6d$lev@news.BelWue.DE> References: <4hnjo8$dq1@ccnserv.ccnmuc.net> Reply-To: dietmar.kuehl@uni-konstanz.de NNTP-Posting-Host: uzwil.informatik.uni-konstanz.de X-Newsreader: TIN [version 1.2 PL2]