C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Einführung in C(++) für Benutzer anderer Sprachen?
Goto page Previous  1, 2, 3, 4  Next
 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Stefan Ram
Guest





PostPosted: Tue Aug 29, 2006 2:30 am    Post subject: Re: Einfuehrung in C(++) für Benutzer anderer Sprachen? Reply with quote



Daniel Albuschat <daniel (AT) happy (DOT) viming.de> writes:
Quote:
Als Grund dahinter vermute ich als Folgenden: double statt float zu

Noch ein Nachtrag zu meinem vorherigen Artikel von eben:

Der normale Typ von Gleitkommawerten in C++ ist »double«, wie
das folgende Programm zeigt:

#include <iostream>
#include <ostream>

char const * const type( double const d ){ return "double"; }
char const * const type( float const f ){ return "float"; }

int main(){ ::std::cout << type( 1.0 )<< '\n'; }

Ausgabe:

double

Insbesondere wollte ich mich gegen Lehrgänge aussprechen, die
dies falsch so darstellen, als würde "float" diese Rolle zukommen.
Back to top
Stefan Ram
Guest





PostPosted: Tue Aug 29, 2006 2:52 am    Post subject: Re: Einfuehrung in C(++) für Benutzer anderer Sprachen? Reply with quote



Tibor Pausz <pausz (AT) stud (DOT) uni-frankfurt.de> writes:
Quote:
Als Grund dahinter vermute ich als Folgenden: double statt float zu
benutzen hat auf heutiger Architektur keinerlei Nachteile gegenüber
float,
Das ist aber eine ziemlich gewagte Behauptung, da sie extrem von
verwendeten Compiler/Prozessor abhängig ist. Extrembeispiel dürfte Cell
BE sein, da beträgt der Unterschied ca. Faktor 10.

Der "Unterschied" zweier Zahlen ist nach meinem
Sprachverständnis ihre Differenz.

Dazu paßt aber nicht Dein Gebrauch des Wortes "Faktor": Er
legt es nahe, daß Du hier nicht von einem "Unterschied",
sondern von einem Verhältnis (einem Quotienten) sprichst.

Das Verhältnis welcher beiden Werte Du meinst, ist mir auch
nicht ganz klar geworden.
Back to top
Elcaro Nosille
Guest





PostPosted: Tue Aug 29, 2006 6:45 am    Post subject: Re: Einfuehrung in C(++) für Benutzer and erer Sprachen? Reply with quote



Quote:
Als Grund dahinter vermute ich als Folgenden: double statt float zu
benutzen hat auf heutiger Architektur keinerlei Nachteile gegenüber
float,

Das ist aber eine ziemlich gewagte Behauptung, da sie extrem von
verwendeten Compiler/Prozessor abhängig ist. Extrembeispiel dürfte
Cell BE sein, da beträgt der Unterschied ca. Faktor 10.

Ja und? Das ist nur eine der wenigen Ausnahmen von der Regel.
Und wer so eine CPU programmiert wird sicher kein C/C++-Anfänger
sein.
Back to top
Elcaro Nosille
Guest





PostPosted: Tue Aug 29, 2006 6:50 am    Post subject: Re: Einfuehrung in C(++) für Benutzer and erer Sprachen? Reply with quote

Quote:
Der Knaller sind ja Argumente wie:
* Als Standardtyp für Gleitkommawerte sollte "double" eingeführt werden
(und nicht "float").

Als Grund dahinter vermute ich als Folgenden: double statt float zu
benutzen hat auf heutiger Architektur keinerlei Nachteile gegenüber
float, jedoch den immensen Vorteil der Genauigkeit.

Klar, aber wenn man eine Menge doubles speichert kann das schon auf
den Speicher-Verbauch gehen.

Quote:
* Der Text sollte eine weitgehend an den Standard angelehnte Terminologie
(z.B.: „Objekt“ als “region of storage ”) verwenden.

Zu dem Thema "Standard-Vernarrtheit" habe ich allerdings auch noch
etwas zu sagen. Ich kenne Programmierer, die seit *vielen* Jahren
mit MS Visual C++ programmieren und MFC (und damit auch wirklich
den C++ Teil vom MSVC++ und nicht nur C) verwenden, aber *keinerlei*
Ahnung von std::vector, std::string, <algorithm>, Iteratoren, Templates,
etc. pp.

Ja und?

Quote:
... Ich finde, man sollte von der Sprache, die man benutzt,
wenigstens ein gewisses Grundwissen besitzen, und da zähle
ich bei C++ die oben genannten Dinge hinzu.

Willst Du damit die Wichtigkeit deiner eigenen Werte in Sachen Program-
mierung bestätigen? Andere Menschen haben eben andere Werte und andere
Entwickler andere Prioritäten; ich find es ein wenig vermessen da so
willkürlich die eigenen Maßstäbe anzulegen.
Back to top
Tibor Pausz
Guest





PostPosted: Tue Aug 29, 2006 11:25 am    Post subject: Re: Einführung in C(++) für Benut zer anderer Sprachen? Reply with quote

Ernst Sauer wrote:

Quote:
Rezensionen interessieren mich nur am Rande, ich gehe in die
Bücheri und schaue mir die Bücher genau an.

Die Problematik ans Schildts Büchern ist die, daß sie viele Fehler
enthalten. Um es zu konkretisieren, sie entsprechen in vielen Punkten
nicht der ISO-Norm.
Back to top
Daniel Albuschat
Guest





PostPosted: Tue Aug 29, 2006 11:42 am    Post subject: Re: Einfuehrung in C(++) für Benutzer ander er Sprachen? Reply with quote

Stefan Ram wrote:
Quote:
Daniel Albuschat <daniel (AT) happy (DOT) viming.de> writes:

Nunja, dieses Argument ist vielleicht etwas übertrieben. Natürlich
sollte ein Buch nicht Objekte und Klassen vermischen, aber wenn es
Objekte als "Instanz einer Klasse" beschreibt, reicht das (besonders für
einen Anfänger) allemal aus.

Die Erklärung, daß Objekte Exemplare von Klassen sind, steht
so in der Spezifikation der Programmiersprache Java. In C und
C++ sind Objekte Speicherbereiche.

Das ist die technische Umsetzung.
Im Konzept jedoch sind Objekte "Exemplare", wie du es passend
ausgedrückt hast, einer Klasse. Das ist bei Java und C++ gleich.
Und auch in Java liegen Objekte in Speicherbereichen. Ich sehe da
nirgends einen Widerspruch.

Quote:
Jemanden, der C++ lernen will, dies an Hand der Begriffe einer
anderen Programmiersprache (Java) zu vermitteln, wird
erfahrungsgemäß früher oder später zu begrifflichen
Inkonsistenzen führen.

Denen muss sich jemand sowieso stellen. Es gibt ein mal die
generellen Begrifflichkeiten aus der allgemeinen OOP-Sprache und ein mal
die speziellen Begriffe, die für eine Programmiersprache verwendet wird.
Ich rede z.B. auch gerne von Methoden, obwohl man in C++ lieber
"Member/Mitgliedsfunktionen" hört.

Quote:
Aus ähnlichen Gründen ist es auch
komplizierter zu lügen als die Wahrheit zu sagen: Man muß dann
andere Begriffe auch noch umbiegen, damit sie dazu passen, und
verheddert sich irgendwann einmal.

Sehe ich hier nicht. Hier geht es um einen Begriff, der im Konzept
und in der Umsetzung zwei leicht verschiedene Bedeutungen hat.

Quote:
Ich schlage also vor, die Begriffe von C++ zu verwenden, weil
das letzlich einfacher ist.

Ein Vorschlag zu unterbreiten ist etwas anderes als zu behaupten, das
Buch sei schlecht, wenn es dem Vorschlag nicht folgt :-)

MfG,
Daniel
Back to top
Stefan Ram
Guest





PostPosted: Tue Aug 29, 2006 6:17 pm    Post subject: Re: Einfuehrung in C(++) für Benutzer anderer Sprachen? Reply with quote

Daniel Albuschat <daniel (AT) happy (DOT) viming.de> writes:
Quote:
Im Konzept jedoch sind Objekte "Exemplare", wie du es passend
ausgedrückt hast, einer Klasse.

In der Spezifikation steht:

»An object is a region of storage. (...)
An object has a type«

ISO/IEC 14882:2003(E), 1.8

So wird in C++ beispielsweise bei Eintritt in den Block
»{ int i; }« ein int-Objekt erzeugt. Das hat nichts mit
Klassen zu tun.

Das Erlernen einer Programmiersprache bedeutet auch das
Erlernen ihrer spezifischen Terminologie.

Quote:
Und auch in Java liegen Objekte in Speicherbereichen.

Das, was man in C++ ein "object" nennt, heißt in Java
"variable".

»Variables are typed storage locations.«

The Java-language specification 3, chapter 1
Back to top
Elcaro Nosille
Guest





PostPosted: Tue Aug 29, 2006 8:10 pm    Post subject: Re: Einführung in C(++) für Benut zer anderer Sprachen? Reply with quote

Quote:
Entscheide dich.
Entweder C oder C++. Es gibt kein C(++) und auch kein C/C++.

Au weia!
Es geht ihm um das Leesen von Code, nicht um das Schreiben; also
sind unterschiedliche Methodiken der Entwicklung unerheblich.

Traurige Einstellung.

Wieso das denn? Wenn er nur Code lesen will, dann ist die jeweilige
Sprach-Idiomatik völlig unerheblich.
Back to top
Stefan Reuther
Guest





PostPosted: Tue Aug 29, 2006 9:11 pm    Post subject: Re: Einführung in C(++) für Benut zer anderer Sprachen? Reply with quote

Elcaro Nosille wrote:
Quote:
Es geht ihm um das Leesen von Code, nicht um das Schreiben; also
sind unterschiedliche Methodiken der Entwicklung unerheblich.

Traurige Einstellung.

Wieso das denn? Wenn er nur Code lesen will, dann ist die jeweilige
Sprach-Idiomatik völlig unerheblich.

Nein. Für's "Lesen von C/C++ Code" so allgemein ist es schon von
Vorteil, ohne Kommentare in Konstrukte wie
for (iterator i = x.begin(); i != x.end(); ++i)
oder
class X {
X(const X&);
void operator=(const X&);
public:
// ...
};
Sinn reindeuten zu können ("häh? Wieso ist X::X(const X&) nirgends
definiert?").

Die korrekte Ausrede ist, dass der OP nur APIs lesen will, die er in
Python einbindet, und die Wahrscheinlichkeit, auf ein C++-API zu stoßen,
immer noch lächerlich gering ist (eben weil C der kleinste gemeinsame
Nenner für Aufrufschnittstellen ist).


Stefan
Back to top
Stefan Reuther
Guest





PostPosted: Tue Aug 29, 2006 9:26 pm    Post subject: Re: Einfuehrung in C(++) für Benutzer ander er Sprachen? Reply with quote

Stefan Ram wrote:
Quote:
Daniel Albuschat <daniel (AT) happy (DOT) viming.de> writes:
Im Konzept jedoch sind Objekte "Exemplare", wie du es passend
ausgedrückt hast, einer Klasse.

In der Spezifikation steht:

»An object is a region of storage. (...)
An object has a type«

ISO/IEC 14882:2003(E), 1.8

So wird in C++ beispielsweise bei Eintritt in den Block
»{ int i; }« ein int-Objekt erzeugt. Das hat nichts mit
Klassen zu tun.

Es wird ein Exemplar des Datentyps 'int' erzeugt.

Der Aspekt 'An object is a region of storage' ist für einen Einführungs-
Kurs definitiv nicht wichtig. Damit wird nur klargestellt, dass eben
Objekte irgendwelche zusammenhängenden Speicherbereiche belegen (da
könnte genausogut 'An object occupies a region of storage' stehen, ohne,
dass sich an der Bedeutung was ernsthaft ändert). Denn die Bytes
0x0804012C bis 0x08040148 sind eben erst dann ein sinnvolles Objekt,
wenn ich da was reinkonstruiert habe. Und selbst dann interessiert mich
meistens nicht, dass das die Bytes 0x0804012C ff. sind, sondern nur,
dass das Objekt z.B. den Namen 'fred' trägt.

In Java ist das deswegen nicht relevant, weil du da nicht an die
Repräsentation des Objekts rankommst, selbst, wenn du wölltest.

Die Eigenschaft 'region of storage' wird für placement-new, malloc und
mit memset/memcpy bearbeitete PODs wichtig. Aber das gehört alles nicht
in einen Einführungskurs.

Quote:
Und auch in Java liegen Objekte in Speicherbereichen.

Das, was man in C++ ein "object" nennt, heißt in Java
"variable".

»Variables are typed storage locations.«

Klasseninstanzen würde ich sowohl in C++, als auch in Java als Objekte
bezeichnen.


Stefan
Back to top
Ernst Sauer
Guest





PostPosted: Tue Aug 29, 2006 9:49 pm    Post subject: Re: Einführung in C(++) für Benutzer anderer Sprachen? Reply with quote

kanze wrote:
Quote:
Ernst Sauer wrote:
Tibor Pausz wrote:

vor allem weil darin recht konkrete Beispiele zu finden
sind, auch größere.

Sind sie aber korrekt? Die C Bücher von Schildt haben noch
schlechteren Ruf als die C++ Bücher. Frag mal in comp.lang.c
nach.

Mir sind in dem Buch "C-Befehlsbibliothek" keine nennenswerte
Fehler aufgefallen. Die Beispiele aus dem Buch, die ich benutzt
habe, wurden von meinem Compiler einwandfrei übersetzt,
Auch bin ich mit dem Buch sehr gut und schnell vorangekommen,
was will man mehr.
Insofern verblüfft mich die herbe Kritik

Quote:
Er kennt leider weder C noch C++.

etwas.

Mit Gruß
Ernst Sauer
Back to top
Stefan Ram
Guest





PostPosted: Tue Aug 29, 2006 11:06 pm    Post subject: Re: Einfuehrung in C(++) für Benutzer anderer Sprachen? Reply with quote

Stefan Reuther <stefan.news (AT) arcor (DOT) de> writes:
Quote:
So wird in C++ beispielsweise bei Eintritt in den Block
»{ int i; }« ein int-Objekt erzeugt. Das hat nichts mit
Klassen zu tun.
Es wird ein Exemplar des Datentyps 'int' erzeugt.

Diese Verwendung dieser Begriffe ("Exemplar" für ein
int-Objekt, "Examplar eines primitiven Datentyps") erscheint
mir unüblich zu sein. Daß sie nicht durch die C++-Norm gedeckt
ist, erklärte ich ja bereits.

Quote:
Der Aspekt 'An object is a region of storage' ist für einen
Einführungs- Kurs definitiv nicht wichtig.

Es handelt sich um die Definition des Begriffs "object".

Quote:
Damit wird nur klargestellt, dass eben Objekte irgendwelche
zusammenhängenden Speicherbereiche belegen (da könnte
genausogut 'An object occupies a region of storage' stehen,
ohne, dass sich an der Bedeutung was ernsthaft ändert).

Es wird erklärt, was ein "object" ist, also was das Wort
"object" bedeutet.

Quote:
Denn die Bytes 0x0804012C bis 0x08040148 sind eben erst dann
ein sinnvolles Objekt, wenn ich da was reinkonstruiert habe.

Das steht so nicht in der Norm.

Quote:
Und selbst dann interessiert mich meistens nicht, dass das die
Bytes 0x0804012C ff. sind, sondern nur, dass das Objekt z.B.
den Namen 'fred' trägt.

Objekte müssen weder in C++ noch in Java überhaupt einen Namen
haben. (Insbesondere in Java haben sie nie einen Namen, oder
höchstens indirekt über Namen von variablen mit einer Referenz
auf ein Objekt.)

Die Frage bestimmter Bytewerte hat nun mit der Klärung des
Begriffs "object" auch nicht mehr viel zu tun.

Quote:
In Java ist das deswegen nicht relevant, weil du da nicht an die
Repräsentation des Objekts rankommst, selbst, wenn du wölltest.

In Java ist /was/ nicht relevant?

Wie ich schon schrieb, gibt es dort diesen Begriff ebenfalls,
nur daß er in Java "variable" genannt wird.

Quote:
Die Eigenschaft 'region of storage' wird für placement-new,
malloc und mit memset/memcpy bearbeitete PODs wichtig. Aber das
gehört alles nicht in einen Einführungskurs.

Es geht hier nicht um irgendeine Eigenschaft, sondern um die
Definition des Begriffs "object" in der C++-Norm.

In einem Einführungskurs will man natürlich erklären, daß
im Block »{ int c; }« »c« der Name eines int-Objektes ist, oder
daß im Block »{ int c; int & d = c; }« »d« und »c« Namen für
dasselbe Objekt sind.

Quote:
Klasseninstanzen würde ich sowohl in C++, als auch in Java als
Objekte bezeichnen.

Für Exemplare einer Klasse gibt es ja in beiden Sprachen
bereits das Wort "Exemplar". In Java gibt es übrigens außerdem
noch Objekte, die keine Exemplare einer Klasse sind.
Back to top
Stefan Reuther
Guest





PostPosted: Wed Aug 30, 2006 2:20 am    Post subject: Re: Einfuehrung in C(++) für Benutzer and erer Sprachen? Reply with quote

Stefan Ram wrote:
Quote:
Stefan Reuther <stefan.news (AT) arcor (DOT) de> writes:
So wird in C++ beispielsweise bei Eintritt in den Block
»{ int i; }« ein int-Objekt erzeugt. Das hat nichts mit
Klassen zu tun.

Es wird ein Exemplar des Datentyps 'int' erzeugt.

Diese Verwendung dieser Begriffe ("Exemplar" für ein
int-Objekt, "Examplar eines primitiven Datentyps") erscheint
mir unüblich zu sein.

Ist sie auch. Aber ansonsten besteht in C++ nun mal kein Unterschied in
den Verwendungsmöglichkeiten von 'int' und 'MyClass'. Genauso, wie ich
Instanzen / Exemplare / Objekte einer Klasse anlegen kann, kann ich auch
Instanzen / Exemplare / Objekte eines fundamentalen Typs anlegen.

Quote:
Daß sie nicht durch die C++-Norm gedeckt ist, erklärte ich ja bereits.

Es wäre mir neu, dass die Norm verbietet, eine Instanz bzw. ein Objekt
des Typs 'int' als Exemplar zu bezeichnen.

Quote:
Der Aspekt 'An object is a region of storage' ist für einen
Einführungs- Kurs definitiv nicht wichtig.

Es handelt sich um die Definition des Begriffs "object".

Es handelt sich um einen Sprachstandard, der festlegt, wie Programme der
Sprache C++ auf realen Maschinen umgesetzt werden. Der muss das selbst-
verständlich so definieren.

Für jemanden, der erst zu programmieren anfängt, ist das vollkommen
unerheblich. Und für 90% der Fortgeschrittenen auch. Für die sind die
anderen Eigenschaften eines 'object' wichtig: man konstruiert es,
verwendet es (typkorrekt, bitteschön), zerstört es. Ob der Compiler das
dann in einer 'region of storage' oder im Kühlschrank ablegt, ist dafür
vollkommen zweitrangig.

Jemandem, der Word lernen will, erklärt man ja auch nicht, wie FAT
funktioniert, nur damit er den Datei-Dialog anwenden kann.

Quote:
Denn die Bytes 0x0804012C bis 0x08040148 sind eben erst dann
ein sinnvolles Objekt, wenn ich da was reinkonstruiert habe.

Das steht so nicht in der Norm.

3.8p1:
# The lifetime of an object is a runtime property of the object. The
# lifetime of an object of type T begins when:
# — storage with the proper alignment and size for type T is obtained,
# and
# — if T is a class type with a nontrivial constructor (12.1), the
# constructor call has completed.

Wenn die Lebenszeit des Objektes noch nicht begonnen hat, ist es nach
meinem Dafürhalten noch kein Objekt. Und auf jeden Fall kein sinnvolles
solches.

Quote:
Und selbst dann interessiert mich meistens nicht, dass das die
Bytes 0x0804012C ff. sind, sondern nur, dass das Objekt z.B.
den Namen 'fred' trägt.

Objekte müssen weder in C++ noch in Java überhaupt einen Namen
haben.

Das habe ich auch nicht behauptet.

Quote:
Die Frage bestimmter Bytewerte hat nun mit der Klärung des
Begriffs "object" auch nicht mehr viel zu tun.

Sag ich doch. Nur dass die 'region of storage' eben genau die Bytewerte
sind.

Quote:
In Java ist das deswegen nicht relevant, weil du da nicht an die
Repräsentation des Objekts rankommst, selbst, wenn du wölltest.

In Java ist /was/ nicht relevant?

Dass ein Objekt eine 'region of storage' ist. In Java kommst du an den
'storage' nicht ran. Also ist vollkommen egal, ob die Members eines
java.lang.String in einem zusammenhängenden Speicherbereich liegen oder
nicht, weil ein Java-Programm keinen Unterschied feststellen kann. In
C++ ist das nicht egal, weil man ja mittels Cast + memcpy die Repräsen-
tation auslesen können wollen kann.

Quote:
Wie ich schon schrieb, gibt es dort diesen Begriff ebenfalls,
nur daß er in Java "variable" genannt wird.

Woran machst du fest, dass es "dieser Begriff" ist, wo er doch anders
heißt und was anderes bedeutet? In C++ ist alles, was man so anlegt, ein
Objekt - alle Variablen, alle Heap-Objekte. In Java kann eine Variable
niemals einen Klassentyp haben. Das kann gar nicht das gleiche sein.


Stefan
Back to top
Stefan Ram
Guest





PostPosted: Wed Aug 30, 2006 3:09 am    Post subject: Re: Einfuehrung in C(++) für Benutzer anderer Sprachen? Reply with quote

Stefan Reuther <stefan.news (AT) arcor (DOT) de> writes:
Quote:
Genauso, wie ich
Instanzen / Exemplare / Objekte einer Klasse anlegen kann, kann ich auch
Instanzen / Exemplare / Objekte eines fundamentalen Typs anlegen.

Die C++-Norm spricht hier von "Objekten".

Quote:
Es wäre mir neu, dass die Norm verbietet, eine Instanz bzw. ein Objekt
des Typs 'int' als Exemplar zu bezeichnen.

Sie tut es selber nicht.

Quote:
Für jemanden, der erst zu programmieren anfängt, ist das vollkommen
unerheblich. Und für 90% der Fortgeschrittenen auch. Für die sind die
anderen Eigenschaften eines 'object' wichtig: man konstruiert es,
verwendet es (typkorrekt, bitteschön), zerstört es. Ob der Compiler das
dann in einer 'region of storage' oder im Kühlschrank ablegt, ist dafür
vollkommen zweitrangig.

Das habe ich bereits in dem Posting, auf das Du gerade
antwortest, widerlegt.

Quote:
Jemandem, der Word lernen will, erklärt man ja auch nicht, wie FAT
funktioniert, nur damit er den Datei-Dialog anwenden kann.

Dieser Vergleich paßt hier nicht. Es ist eher damit
vergleichbar, daß man Begriffe wie "Format" oder "Zeichen"
erklärt.

Quote:
Denn die Bytes 0x0804012C bis 0x08040148 sind eben erst dann
ein sinnvolles Objekt, wenn ich da was reinkonstruiert habe.
Das steht so nicht in der Norm.
3.8p1:
# The lifetime of an object is a runtime property of the object. The
# lifetime of an object of type T begins when:
# - storage with the proper alignment and size for type T is obtained,
# and
# - if T is a class type with a nontrivial constructor (12.1), the
# constructor call has completed.

Eben! Die Konstruktion wird nur für Exemplare von /Klassen/
verlangt. Danke für die Unterstützung meiner Sichtweise.

Quote:
Wenn die Lebenszeit des Objektes noch nicht begonnen hat, ist
es nach meinem Dafürhalten noch kein Objekt.

Das hat auch niemand bestritten.

Quote:
Die Frage bestimmter Bytewerte hat nun mit der Klärung des
Begriffs "object" auch nicht mehr viel zu tun.
Sag ich doch. Nur dass die 'region of storage' eben genau die
Bytewerte sind.

Du darfst den Speicher nicht mit seinem Inhalt verwechseln:

Ein Byte/wert/ ist beispielsweise 0x07.

Ein Byte/speicher/ ist ein System, das zu einem Zeitpunkt
genau einen Byte/wert/ enthält, aber zu einem anderen
Zeitpunkt einen anderen Bytewert enthalten kann.

Das ist wie mit Wein und einer Weinflasche: Der Speicher ist
die Flasche, der Wein ist der Inhalt. Aber man kann deswegen
trotzdem nicht nicht sagen, daß die Flasche der Wein sei. Sie
/enthält/ den Wein.

Durch die Typisierung wird Speicher in den
Sprachspezifikationen auch meist auf einer höheren Schicht
behandelt: Speicher enthält dort in der Regel keine
"Bytewerte", sondern Werte eines bestimmten Typs, z.B.
int-Werte, im Falle eines int-Objekts.

Daher gehen Deine Angriffe gegen die Betrachtung der "Frage
bestimmter Bytewerte" ins Leere. Derzeit will hier niemand
weiter über bestimmte Bytewerte sprechen.

Quote:
In Java ist /was/ nicht relevant?
Dass ein Objekt eine 'region of storage' ist.

Es geht hierbei doch um ein fundamentales Konzept
zustandsbasierter Sprachen, nämlich den zeitlich
veränderlichen Wertspeicher. Z.B. Speicher für eine int-Zahl.
In C++ nennt sich der "object", in Java "variable".

Die Vorstellung, dies sei für Anfänger in zustandsbasierten
Sprachen unerheblich, ist natürlich unzutreffend.

Quote:
Wie ich schon schrieb, gibt es dort diesen Begriff ebenfalls,
nur daß er in Java "variable" genannt wird.
Woran machst du fest, dass es "dieser Begriff" ist, wo er doch
anders heißt und was anderes bedeutet?

Das hatte ich doch hier nun gerade gepostet.

Ich wiederhole es nun noch einmal:

Vergleiche doch einmal die beiden folgenden Auszüge aus
den Spezifikationen und denke Dir dabei die Worte "object"
und "variable" durch "..." ersetzt:

»An object is a region of storage. (...)
An object has a type«

ISO/IEC 14882:2003(E), 1.8

»Variables are typed storage locations.«

The Java-language specification 3, chapter 1
Back to top
kanze
Guest





PostPosted: Wed Aug 30, 2006 2:33 pm    Post subject: Re: Einführung in C(++) für Benutzer anderer Sprachen? Reply with quote

Ernst Sauer wrote:
Quote:
kanze wrote:
Ernst Sauer wrote:
Tibor Pausz wrote:

vor allem weil darin recht konkrete Beispiele zu finden
sind, auch größere.

Sind sie aber korrekt? Die C Bücher von Schildt haben noch
schlechteren Ruf als die C++ Bücher. Frag mal in comp.lang.c
nach.

Mir sind in dem Buch "C-Befehlsbibliothek" keine nennenswerte
Fehler aufgefallen.

Ich weiß nicht, von welchem Buch auf Englisch
"C-Befehlsbibliothek" übersetzt wurde. Damit kann ich nicht
genaue Beispiele nennen. Wie gesagt aber hat man immer sehr
grobe Fehler gefunden.

Quote:
Die Beispiele aus dem Buch, die ich benutzt habe, wurden von
meinem Compiler einwandfrei übersetzt,

Was längst nicht sagt, dass die korrekt sind. Vielleicht hast du
sogar denselben Compiler als er benutzt.

Quote:
Auch bin ich mit dem Buch sehr gut und schnell vorangekommen,
was will man mehr.

Aber hast du richtig gutes C gelernt?

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Back to top
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Goto page Previous  1, 2, 3, 4  Next
Page 2 of 4

 
 


Powered by phpBB © 2001, 2006 phpBB Group