 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Tibor Pausz Guest
|
Posted: Sun Jan 14, 2007 1:52 am Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Stefan Ram schrieb:
| Quote: | Das Statische ist ja im allgemeinen auch schneller (zur Laufzeit).
|
Es ist vorallem sicherer, da Typfehler meist schon zum Compilezeitpunkt
abgefangen werden. Ich sehe da kein Widerspruch zu OOP, eher ist das ein
Thema von strenger Typisierung vs. lascher Typisierung. |
|
| Back to top |
|
 |
Michael Piefel Guest
|
Posted: Mon Jan 15, 2007 12:26 pm Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Am Sat, 13 Jan 2007 17:55:41 +0000 schrieb Stefan Ram:
| Quote: | Der Begriff »objektorientierte Programmierung« wurde 1967 von
Alan Kay geprägt
|
Bei allem Respekt, aber das ist Unfug. Alan Kay mag sich für den Erfinder
von allem Möglichen halten, er mag Konzepte entwickelt und Dinge benannt
haben, aber wenn heutzutage knapp 100% der Informatiker OOP mit ein paar
anderen Begriffen (wie Klasse oder Polymorphie) in Verbindung bringen,
dann ist das jetzt halt OOP. Kay muss sich dann einen neuen Namen
ausdenken.
--
|=| Michael Piefel
|=| Humboldt-Universität zu Berlin |
|
| Back to top |
|
 |
Jürgen Herz Guest
|
Posted: Mon Jan 15, 2007 5:14 pm Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Stefan Ram wrote:
| Quote: | Jürgen Herz <juergen (AT) jherz (DOT) redirectme.net> writes:
Mein Satz war vielleicht nur etwas hingeworfen, was ich sagen
wollte ist, daß sich das Buch eher auf die Objektorientierte
Programmierung als auf die Sprache beziehen sollte. Also nicht
wie eine Klasse codiert und abgeleitet wird, sondern wann und
warum.
Vielleicht hast Du doch noch eine konkrete Empfehlung für mich.
Tatsächlich wird so etwas in Büchern zum Entwurf behandelt,
wobei auch Entwurfsmuster vorkommen. Da gibt es etwa das Buch
»Applying UML and Patterns« von Craig Larman, das aber
Beispiele mit Java behandelt.
Allerdings ist weder Java noch C++ eine objektorientierte
Programmiersprache - in beiden Sprachen stehen ja weder
numerische Literale noch Blöcke für Objekte, wie in
objektorientierten Programmiersprachen.
|
Passt objektbasiert dann besser?
| Quote: | Wenn Du also objektorientierte Programmierung erlernen willst,
dann wäre Smalltalk oder Squeak geiegnet.
Klassen gehören übrigens nicht zur objektorientierten
Programmierung - bis vor kurzem gab es in JavaScript zwar
Objekte, aber keine Klassen, und auch noch andere Sprachen mit
Objekten kommen enthalten keine Klassen.
Das soll nicht heißen, daß C++ für bestimmte Anwendungen
schlecht geeignet wäre. Nur soll man eben nicht glauben, daß
man mit dieser Sprache objektorientiert programmieren würde.
|
Na das ist ja auch mal interessant zu lesen.
In der Tat wäre "richtige" objektorientierte Programmierung interessant und
Smalltalk interessiert mich schon lange. Aber mein Ziel ist C++ (weil es in
der Arbeitswelt sehr verbreitet ist). Allerdings eben nicht nur als ein C
mit den tollen Kommentarzeichen (//), sondern mit dem was C++ ausmacht und
zwar sinnvoll eingesetzt.
Ob das nun objektorientiert ist oder nicht, ist mir dann erst mal schnurz.
Gruß,
Jürgen |
|
| Back to top |
|
 |
Jürgen Herz Guest
|
Posted: Mon Jan 15, 2007 5:52 pm Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Hallo!
Im Laufe dieses Threads habe ich ja jetzt gelernt, daß C++ und
Objektorientierung nicht unbedingt zusammenpassen.
Ich bedanke mich soweit mal für eure bisherigen Empfehlungen (auch die für
ein Uni-Skript) und werde sie im Buchladen auch alle ansehen.
Allerdings versuche ich es jetzt nochmal etwas anders und frage nach einem
Buch zum praktischen Einsatz von C++. Also meine Kernfrage etwas
umformuliert: Wie arbeite ich mit C++ am Besten und wende das was in C++
gegenüber C anders ist am Besten an? Das "Beste" ist sicherlich eine
strittige Frage, aber deshalb frage ich ja in einer Usegroup und nicht nur
einen einzelnen.
Grüße,
Jürgen |
|
| Back to top |
|
 |
Stefan Ram Guest
|
Posted: Tue Jan 16, 2007 8:30 am Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Jürgen Herz <juergen (AT) jherz (DOT) redirectme.net> writes:
| Quote: | Passt objektbasiert dann besser?
|
Der Begriff ist auch nicht ganz klar definiert. Wenn man die Erklärung
»A somehow limited version of object-oriented programming«
http://en.wikipedia.org/wiki/Object-based_programming
verwendet, dann wäre es tatsächlich passender. |
|
| Back to top |
|
 |
Markus Wichmann Guest
|
Posted: Tue Jan 16, 2007 10:25 pm Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Jürgen Herz schrieb:
| Quote: |
Passt objektbasiert dann besser?
|
Ich würde nicht sagen, dass C++ nicht Objekt-orientiert ist. Ich würde
eher sagen, dass C++ nicht /streng/ Objekt-orientiert ist: C++ kann noch
mehr als das. Zum Beispiel eben einfache Datentypen wie int. Natürlich
muss man auch sehen, dass man z.B. unter Microsoft.NET Sachen machen
kann wie "5.ToStr()", aber wenn man das nicht kann, dreht sich die Welt
auch noch in Frieden weiter.
Und nebenbei stellst du mit Objekt-basiert C++ auf die gleiche Stufe wie
Visual Basic, und _da_ liegt dann doch ein gewaltiger Unterschied
dazwischen: Visual Basic ist Objekt-basiert, weil man keine eigenen
Klassen definieren kann. Man kann das natürlich herunterreden (Manche
Programmierer nennen es nur objektbasiert, weil es nicht alle Konzepte
der objektorientierten Programmierung beherrscht.) So ähnlich stand es
in irgendeinem Basic-Buch. "nicht alle Konzepte". Ich würde eher sagen
"so gut wie kein Konzept". Es geht ja nix, wenn man keine eigenen
Klassen machen, dann geht keine Vererbung, von Interfaces ganz zu
schweigen, und über abstrakte Klassen und so rede ich erst gar nicht.
Das einzige, was geht, ist das Übernehmen von vorgefertigten Objekten
aus dem Hause M$.
HTH,
Markus
P.S.: Was irgendein Typ 1967 dachte, was objektorientiert ist,
interessiert mich 2007, also 40 Jahre später, nicht mehr wirklich, zumal
seine Thesen schon seit Längerem überholt sind. Primitive Datentypen
machen nunmal C++ aus. Ohne geht es gar nicht: Irgendwo brauche ich
nunmal eine _Zahl_ ohne Klasse drumrum.
--
Was haben eigentlich alle gegen Beamte? Die tun doch nichts.
Homepage: http://wichi.wi.funpic.de (momentan noch etwas trocken)
Root-Zertifikat: http://wichi.wi.funpic.de/certs/ca/ca.crt
Mail-Zertifikat: http://wichi.wi.funpic.de/certs/gmx/cert.pem |
|
| Back to top |
|
 |
Andre Weihe Guest
|
Posted: Tue Jan 16, 2007 11:20 pm Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Jürgen Herz wrote:
| Quote: | Hallo!
Im Laufe dieses Threads habe ich ja jetzt gelernt, daß C++ und
Objektorientierung nicht unbedingt zusammenpassen.
|
Pfff, Evangelisten der "reinen" OO-Lehre..
C++ war schon immer eine hybride Sprache, was wohl mit ein Grund war
warum sie sich in der Praxis behaupten konnte.
Selbst in einer Sprache die keine OO-Mittel anbietet kann man OO
programmieren wenn man will (was nicht heißen soll, das es unbedingt
Sinn macht).
| Quote: | Ich bedanke mich soweit mal für eure bisherigen Empfehlungen (auch die für
ein Uni-Skript) und werde sie im Buchladen auch alle ansehen.
Allerdings versuche ich es jetzt nochmal etwas anders und frage nach einem
Buch zum praktischen Einsatz von C++. Also meine Kernfrage etwas
umformuliert: Wie arbeite ich mit C++ am Besten und wende das was in C++
gegenüber C anders ist am Besten an? Das "Beste" ist sicherlich eine
strittige Frage, aber deshalb frage ich ja in einer Usegroup und nicht nur
einen einzelnen.
|
Empfehlungen aus meinem Bücherregal zu C++:
Bruce Eckel: Thinking in C++ Band 1+2
<http://mindview.net/Books/TICPP/ThinkingInCPP2e.html>
Einführung aber auch Anleitung zum guten Umgang mit C++.
Auch mit Hinweisen vom Autor wie er meint wie gutes OO-Design mit C++
aussehen sollte.
Kostenlos von der Webseite downloadbar oder gedruckt im Buchhandel.
Scott Meyer: Effektiv C++ programmieren / Mehr Effektiv C++
programmieren
<http://www.amazon.de/Effektiv-C%2B%2B-programmieren-Scott-Meyers/dp/3827322979/sr=1-1/qid=1168958438/ref=sr_1_1/028-3413279-2866101?ie=UTF8&s=books>
<http://www.amazon.de/Effektiv-programmieren-Verbesserung-Programme-Entwürfe/dp/3827312752/sr=1-2/qid=1168958438/ref=sr_1_2/028-3413279-2866101?ie=UTF8&s=books>
Klassiker zur besseren Programmierung und Entwurf mit C++.
John Lakos: Large Scale C++ Software Design
<http://www.amazon.com/Large-Scale-Software-Design-John-Lakos/dp/0201633620/sr=1-1/qid=1168958995/ref=pd_bbs_sr_1/104-6099889-8628701?ie=UTF8&s=books>
Dickes Buch (könnte dichter geschrieben sein) das einige Punkte
enthält die heute mit modernen Compilern obsolet und einiges was eh´
jeder gute Entwickler so machen sollte wie dort beschrieben oder was
wirklich nur in ganz großen Projekten volle Wirkung zeigt.
Enthält aber auch immer noch viele Wahrheiten und Best Practices, auch
in Designfragen.
(Nicht-)Empfehlungen nicht aus meinem Bücheregal zu C++:
Andrei Alexandrescu: Modernes C++ Design. Generische Programmierung
und Entwurfsmuster angewendet.
<http://www.amazon.de/Modernes-Generische-Programmierung-Entwurfsmuster-angewendet/dp/3826613473/ref=pd_sim_b_2/028-3413279-2866101>
Ich hab´s nicht (gelesen), aber scheint die Bibel in Sachen Benutzung
von Templates und generischer Programmierung zu sein.
Nichts für Anfänger allerdings.
Was ich noch empfehlen wollte weil "Algorithmen" bei mir im Regal
steht und ich es mir schon immer kaufen wollte:
Robert Sedgewick: Algorithmen in C++
<http://www.amazon.de/Algorithmen-C%2B%2B-Teil-Robert-Sedgewick/dp/3827370264/sr=1-3/qid=1168958633/ref=sr_1_3/028-3413279-2866101?ie=UTF8&s=books>
Nach Lesen der Leser-Rezensionen spar ich mir das Buch.
Objektorientierung und effektiven Gebrauch von C++ wird man darin wohl
eher nicht finden.
In "Algorithmen in Java" sollen die Programmbeispiele doch echt auch
mal Objekte benutzen.
Mal sehen ob/wann/was uns ein/in "Algortihmen in C#" erwartet SCNR
Empfehlungen zu OO aus meinem Bücherregal:
Grady Booch: Objektorientierte Analyse und Design
<http://www.amazon.de/Objektorientierte-Analyse-Design-praktischen-Anwendungsbeispielen/dp/3893196730/sr=1-3/qid=1168965990/ref=sr_1_3/028-3413279-2866101?ie=UTF8&s=books>
Standardwerk. Wurde ja im Thread schon erwähnt.
Enthält Beispiele in C++ (tss, tss eine Koryphäe wie Booch benutzt für
Beispiele nicht Simula oder Smalltalk, wie kann er nur SCNR²).
Leider auch sehr dick und nicht unbedingt Anfängerfreundlich.
Bernd Oestereich: Analyse und Design mit UML 2.1
(meine olle Version heißt noch "Objektorientierte Softwareentwicklung"
<http://www.amazon.de/Analyse-Design-mit-UML-2-1/dp/3486579266/sr=1-1/qid=1168966792/ref=sr_1_1/028-3413279-2866101?ie=UTF8&s=books>
Ich halte es für eine sehr gute Einführung in OO-Analyse und Design.
Einige Rezensenten bei Amazon scheinen da anderer Meinung zu sein.
Wie bei allen Büchern am besten selber erst mal reingucken.
Meilir Page-Jones: Fundamentals of Object-Oriented Design in UML
<http://www.amazon.com/Fundamentals-Object-Oriented-Design-Meilir-Page-Jones/dp/020169946X/sr=1-5/qid=1168967270/ref=sr_1_5/104-6099889-8628701?ie=UTF8&s=books>
Einführung in OO-Design.
Mehr Grundlagen und weniger UML als bei Oestereich.
Ich denke es führt sehr gut in OO ein wenn man Englisch kann und sich
nicht an Pseudocode stört (hier und da wird auch auf
Eigenheiten/Besonderheiten von konkreten Programmiersprachen
eingegangen).
HTH
André
--
"With Fortran and the languages that followed, programmers finally had
the tools they needed to get into really serious trouble."
- http://www.americanscientist.org/Issues/Comsci03/03-03Hayes.html |
|
| Back to top |
|
 |
Georg Maaß Guest
|
Posted: Wed Jan 17, 2007 4:15 am Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Markus Wichmann wrote:
| Quote: | P.S.: Was irgendein Typ 1967 dachte, was objektorientiert ist,
interessiert mich 2007, also 40 Jahre später, nicht mehr wirklich, zumal
seine Thesen schon seit Längerem überholt sind. Primitive Datentypen
machen nunmal C++ aus. Ohne geht es gar nicht: Irgendwo brauche ich
nunmal eine _Zahl_ ohne Klasse drumrum.
|
Wo bitte hast Du in einem Computer auch nur eine einzige Zahl? Ich sehe
keine Zahlen, sondern Bitmuster. Stelle mal die Zahl 1/3 ohne ein Objekt
im Computer korrekt dar. Rechne damit ohne Rundungsfehler. In JavaScript
sind alles mehr oder wenige Objekte. Was kein Objekt ist, wird oft
automatisch in ein Hüllobjekt verpackt.
1 .toString();
Wie sieht die 1 im Speicher aus? Genau wie ein int in C++ auch. Trotzdem
kann ich selbst auf das numerische Literal Number-Methoden anwenden. Das
stünde auch C++ gut an, wenn es zu den primitiven Typen auch
entsprechende implizite Klassen gäbe, von denen man erben kann, um
semantische oder geringfügig funktionale Varianten der Primitive zu
schaffen. Ich denke dabei z.B. an Maßzahlen, die einfach Zahlen sind mit
Cast-Opeatoren zu anderen Zahlen, in denen dann die Skalierung geregelt ist.
Da ist durchaus noch Entwicklungspotential für die Sprache. |
|
| Back to top |
|
 |
Tibor Pausz Guest
|
Posted: Wed Jan 17, 2007 4:10 pm Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Andre Weihe schrieb:
| Quote: | Was ich noch empfehlen wollte weil "Algorithmen" bei mir im Regal
steht und ich es mir schon immer kaufen wollte:
Robert Sedgewick: Algorithmen in C++
|
Zum Thema Algorithmen gibt es zwei wirklich empfehlenswerte Bücher: "The
Art of Computer Programming, D. E. Knuth" und "Algorithms, Thomas H.
Cormen". Sedgewick ist leider arg dürftig, egal ich welcher Sprache die
Problemlösungen formuliert sind, da kann man in der Regel gleich eine
fertige Bibliothek benutzen. |
|
| Back to top |
|
 |
Bob Hairgrove Guest
|
Posted: Wed Jan 17, 2007 8:14 pm Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
On Wed, 17 Jan 2007 11:10:52 +0100, Tibor Pausz
<pausz (AT) stud (DOT) uni-frankfurt.de> wrote:
| Quote: | Andre Weihe schrieb:
Was ich noch empfehlen wollte weil "Algorithmen" bei mir im Regal
steht und ich es mir schon immer kaufen wollte:
Robert Sedgewick: Algorithmen in C++
Zum Thema Algorithmen gibt es zwei wirklich empfehlenswerte Bücher:
"The |
| Quote: | Art of Computer Programming, D. E. Knuth" und "Algorithms, Thomas H.
Cormen". Sedgewick ist leider arg dürftig, egal ich welcher Sprache
die |
| Quote: | Problemlösungen formuliert sind, da kann man in der Regel gleich eine
fertige Bibliothek benutzen.
|
Niklaus Wirth: "Algorithmen und Datenstrukturen" (3. Ausgabe 1983,
B.G. Teubner/Stuttgart) wäre noch zu erwähnen. Da es aber in 1975 (1.
Ausgabe) geschrieben wurde, gibt es natürlich keine Beispiele in C++
(und übrigens auch nicht bei Donald Knuth).
--
Bob Hairgrove
NoSpamPlease (AT) Home (DOT) com |
|
| Back to top |
|
 |
Stefan Ram Guest
|
Posted: Wed Jan 17, 2007 9:35 pm Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Georg Maaß <georg (AT) bioshop (DOT) de> writes:
| Quote: | Wo bitte hast Du in einem Computer auch nur eine einzige Zahl?
|
Dann kann man fragen, wo man überhaupt jemals ein Zahl »hat«.
Wenn man »2« auf einen Zettel schreibt, ist da ja auch keine
Zahl, sondern nur Tinte.
| Quote: | Stelle mal die Zahl 1/3 ohne ein Objekt im Computer korrekt dar.
|
Diese Zahl kann man beispielsweise durch das Bitmuster
1
darstellen (wenn man einen Code verwendet, in dem das
Bitmuster »1« für die Zahl 1/3 steht.)
| Quote: | Rechne damit ohne Rundungsfehler.
|
Das kann man auf einem Computer soweit implementieren,
wie es Menschen auch ohne Computer machen können. |
|
| Back to top |
|
 |
Markus Wichmann Guest
|
Posted: Wed Jan 17, 2007 11:15 pm Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Georg Maaß schrieb:
| Quote: | Markus Wichmann wrote:
P.S.: Was irgendein Typ 1967 dachte, was objektorientiert ist,
interessiert mich 2007, also 40 Jahre später, nicht mehr wirklich, zumal
seine Thesen schon seit Längerem überholt sind. Primitive Datentypen
machen nunmal C++ aus. Ohne geht es gar nicht: Irgendwo brauche ich
nunmal eine _Zahl_ ohne Klasse drumrum.
Wo bitte hast Du in einem Computer auch nur eine einzige Zahl? Ich sehe
keine Zahlen, sondern Bitmuster.
|
Bitmuster dürften irgendwie das gleiche sein, wie Zahlen da Bitmuster
zusammengesetzt Zahlen im Dualzahlsystem ergeben. Das kann man leicht
nach Hexadezimal umwandeln. Und mir davon vorhalten zu wollen, es
handele sich nicht um Zahlen... naja, die Mathematiker wird's freuen.
| Quote: | Stelle mal die Zahl 1/3 ohne ein Objekt
im Computer korrekt dar.
|
Bitte nicht über die Nomenklatur gehen und mich aus dem Hinterhalt
erschießen. Ich schrub etwas von _Klasse_, nicht Objekt. Objekt hat
nämlich in C (und damit wohl auch in C++, auch wenn ich gerade den
Standard nicht zur Hand habe) die Definition, ein in sich
abgeschlossener Teilbereich des Speichers zu sein (AFAIK). Und das geht
in nun wirklich leicht: Ein Drittel ist der Quotient aus 1 und 3 also
kann man ganz leicht im Speicher eine unendlich genaue Abbildung von
einem Drittel machen:
0b0000000100000011
Und ich definiere, dass von dieser Zahl das erste Byte den Zähler und
das zweite den Nenner benennt. Also geht diese Darstellung nur auf
Rechnern, die für ein Byte acht Bit veranschlagen.
| Quote: | Rechne damit ohne Rundungsfehler.
|
Klar, bei jedem Zugriff neu berechnen. Per FPU. Ist zwar alles andere
als perfomant, sollte aber seinen Job tun (sofern man mannsgenug ist,
einen Teil seiner Arbeit an Intel abzutreten).
| Quote: | In JavaScript
sind alles mehr oder wenige Objekte. Was kein Objekt ist, wird oft
automatisch in ein Hüllobjekt verpackt.
|
Und das hat mit C++ genau wieviel zu tun?
| Quote: | 1 .toString();
Wie sieht die 1 im Speicher aus? Genau wie ein int in C++ auch.
|
Nicht unbedingt: wie sieht eine Instanz von
class Integer
{
private: int* data;
public:
Integer()
{
this.data = new int;
}
Integer(int x)
{
this.data = new int;
*(this.data) = x;
}
Integer(Integer& x)
{
this.data = new int;
*(this.data) = *(x.data);
}
std::string ToStr()
{
std::string buffer;
sprintf(buffer.c_str(), "%i", *(this.data));
return buffer;
}
~Integer()
{
delete this.data;
}
Integer& operator=(Integer& x)
{
*(this.data) = *(x.data);
}
Integer& operator=(int x)
{
*(this.data) = x;
}
}
im Speicher aus?
| Quote: | Trotzdem
kann ich selbst auf das numerische Literal Number-Methoden anwenden. Das
stünde auch C++ gut an, wenn es zu den primitiven Typen auch
entsprechende implizite Klassen gäbe, von denen man erben kann, um
semantische oder geringfügig funktionale Varianten der Primitive zu
schaffen.
|
Das gibt es in C++ nicht, aber man kann es sich doch selbst basteln.
| Quote: | Ich denke dabei z.B. an Maßzahlen, die einfach Zahlen sind mit
Cast-Opeatoren zu anderen Zahlen, in denen dann die Skalierung geregelt ist.
|
Jedem das seine: Implementiere es doch einfach.
| Quote: | Da ist durchaus noch Entwicklungspotential für die Sprache.
|
Dann schreibe eine neue Sprache, nenne sie meinetwegen C+=2 - aber
erwarte nicht, das irgendjemand sie benutzt.
Alle Fragen geklärt?
Tschö,
Markus
--
Was haben eigentlich alle gegen Beamte? Die tun doch nichts.
Homepage: http://wichi.wi.funpic.de (momentan noch etwas trocken)
Root-Zertifikat: http://wichi.wi.funpic.de/certs/ca/ca.crt
Mail-Zertifikat: http://wichi.wi.funpic.de/certs/gmx/cert.pem |
|
| Back to top |
|
 |
Stefan Reuther Guest
|
Posted: Wed Jan 17, 2007 11:40 pm Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Georg Maaß wrote:
| Quote: | Markus Wichmann wrote:
P.S.: Was irgendein Typ 1967 dachte, was objektorientiert ist,
interessiert mich 2007, also 40 Jahre später, nicht mehr wirklich, zumal
seine Thesen schon seit Längerem überholt sind. Primitive Datentypen
machen nunmal C++ aus. Ohne geht es gar nicht: Irgendwo brauche ich
nunmal eine _Zahl_ ohne Klasse drumrum.
Wo bitte hast Du in einem Computer auch nur eine einzige Zahl? Ich sehe
keine Zahlen, sondern Bitmuster. Stelle mal die Zahl 1/3 ohne ein Objekt
im Computer korrekt dar. Rechne damit ohne Rundungsfehler. In JavaScript
sind alles mehr oder wenige Objekte. Was kein Objekt ist, wird oft
automatisch in ein Hüllobjekt verpackt.
1 .toString();
Wie sieht die 1 im Speicher aus? Genau wie ein int in C++ auch. Trotzdem
kann ich selbst auf das numerische Literal Number-Methoden anwenden.
|
Du haust hier zwei Dinge durcheinander.
Da wäre einmal das 'int'-Objekt. Sein natürlicher Lebensraum ist unter
anderem das Prozessor-Register, in dem er aufgrund seiner geringen
Komplexität (eben einfach nur eine Zahl) bequem Platz findet.
Konzeptionell wäre es nicht mal schwierig, darauf Methoden anzuwenden.
C++ gibt dir aber eben keine Möglichkeiten, welche zu definieren, so
dass du dich mit den vordefinierten Operatoren begnügen musst.
Dann wäre da noch das, was Java 'Integer' nennt. Das enthält neben der
Nutzinformation "Zahl" noch irgendwelche Typinformationen (üblicherweise
vtbl-Zeiger). Damit findet es z.B. nicht mehr in einem Prozessorregister
Platz, und ist damit gerade mal halb so effizient wie ein nackiger
'int'. So eine Klasse gibt es in Standard-C++ nicht vordefiniert, das
lässt sich aber in Nullkommanix nachholen.
Die OOP-Puristen verteufeln nun 'int', weil das kein late binding
unterstützt, und weil man ja in die Repräsentation reinkucken kann, und
das ist pfui-bäh. Nur, wird mein Programm *irgendwie* besser, wenn ich
anstatt mit ganzen Zahlen rumzurechnen irgendwelche opaken Objekte durch
die Gegend schiebe?
Natürlich könnte jetzt jemand kontern und sagen: du kannst aber deine
Integer nicht durch eine Bignum-Klasse ersetzen. Natürlich kann ich das
nicht, wenn ich 'int' direkt hingeschrieben habe. Aber ich kann meinen
Code problemlos über den Datentyp parametrisieren. Entweder (the Java
way) über eine Factory-Klasse bzw. eine abstrakte Number-Klasse, oder
(the C++ way) über ein Template. Der C++-Weg ist sogar im Allgemeinen
schneller, weil eben wieder direkt die rechenfreudigen ints in die
Prozessorregister gepackt werden.
C++ zwingt mich halt nicht, alles als Objekt zu implementieren. Und es
zwingt mich schon gar nicht, late binding zu verwenden, wo ich es nicht
brauche.
Alles als Objekt ist eh Quatsch. Man schaue sich mal die "Klasse"
java.lang.Math an.
| Quote: | Das stünde auch C++ gut an, wenn es zu den primitiven Typen auch
entsprechende implizite Klassen gäbe, von denen man erben kann, um
semantische oder geringfügig funktionale Varianten der Primitive zu
schaffen. Ich denke dabei z.B. an Maßzahlen, die einfach Zahlen sind mit
Cast-Opeatoren zu anderen Zahlen, in denen dann die Skalierung geregelt
ist.
|
Das kannst du prinzipiell alles heute schon haben. Für SI-Einheiten
hatte ich z.B. vor Jahren mal was gepostet:
<8ra4q4$t1s$1 (AT) kastor (DOT) inf.tu-dresden.de>.
Du bekommst kein Autoboxing im Sinne dass beim Aufruf der Funktion
'foo(const AbstractNumber&)' mit 'foo(1)' ein Objekt der passenden
AbstractNumber-Kindklasse angelegt wird. Und das ist auch gut so (denn
Autoboxing in Java ist, wie üblich, Compilermagie, und es ist nicht
möglich, z.B. dateiweit alle 'int's automatisch in 'MyRangeCheckedInt'
verpacken zu lassen).
Stefan |
|
| Back to top |
|
 |
Stefan Ram Guest
|
Posted: Thu Jan 18, 2007 12:27 am Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Newsgroups: de.comp.lang.iso-c++,de.comp.lang.misc
Followup-To: de.comp.lang.misc
Markus Wichmann <nullplan (AT) gmx (DOT) net> writes:
| Quote: | Ich denke dabei z.B. an Maßzahlen, die einfach Zahlen sind mit
Cast-Opeatoren zu anderen Zahlen, in denen dann die Skalierung
geregelt ist.
Jedem das seine: Implementiere es doch einfach.
Da ist durchaus noch Entwicklungspotential für die Sprache.
Dann schreibe eine neue Sprache, nenne sie meinetwegen C+=2 -
aber erwarte nicht, das irgendjemand sie benutzt.
|
Einheiten gibt es ja in Fortress, das unter BSD-Lizenz
verwendet werden kann.
http://en.wikipedia.org/wiki/Fortress_programming_language
»Measurements in the same unit can be compared, added,
subtracted, multiplied and divided. Measurements in
different units can be multiplied and divided. For
example, we can write the following variable declaration:
v : R m/s =( 3 meters + 4 meters )/ 5 seconds«
2.10 Dimensions and Units
http://research.sun.com/projects/plrg/fortress.pdf
Newsgroups: de.comp.lang.iso-c++,de.comp.lang.misc
Followup-To: de.comp.lang.misc |
|
| Back to top |
|
 |
Jürgen Herz Guest
|
Posted: Thu Jan 18, 2007 7:26 pm Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Andre Weihe wrote:
| Quote: | Im Laufe dieses Threads habe ich ja jetzt gelernt, daß C++ und
Objektorientierung nicht unbedingt zusammenpassen.
Pfff, Evangelisten der "reinen" OO-Lehre..
C++ war schon immer eine hybride Sprache, was wohl mit ein Grund war
warum sie sich in der Praxis behaupten konnte.
Selbst in einer Sprache die keine OO-Mittel anbietet kann man OO
programmieren wenn man will (was nicht heißen soll, das es unbedingt
Sinn macht).
|
Auch gut, ich kann da wirklich selbst nichts dazu sagen. Erstens weil es mir
momentan eher wurscht ist was OO genau ist. Und zweitens weil ich eben
nichtmal weiß wie man C++ sinnvoll nutzen kann. Zumindest letzteres wird
sich ja hoffentlich bald ändern.
| Quote: | Ich bedanke mich soweit mal für eure bisherigen Empfehlungen (auch die für
ein Uni-Skript) und werde sie im Buchladen auch alle ansehen.
Allerdings versuche ich es jetzt nochmal etwas anders und frage nach einem
Buch zum praktischen Einsatz von C++. Also meine Kernfrage etwas
umformuliert: Wie arbeite ich mit C++ am Besten und wende das was in C++
gegenüber C anders ist am Besten an? Das "Beste" ist sicherlich eine
strittige Frage, aber deshalb frage ich ja in einer Usegroup und nicht nur
einen einzelnen.
Empfehlungen aus meinem Bücherregal zu C++:
[...]
|
Herzlichen Danke, André. Das ist doch mal eine Aussage und eine interessante
Auswahl. Ob ich mit den einzelnen Titeln glücklich werde/würde ist freilich
was anderes, aber mit der Liste lässt sich arbeiten.
Gruß,
Jürgen |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|