.
|
|
| Autor | Beitrag |
|---|---|
|
025 28.02.2001, 19:16 CPlusPlus |
Ja, es gibt eine internationale Bestellmöglichkeit...
|
|
Profil || Suche |
|
026 28.02.2001, 19:51 Buy-Menu-Man |
Hi!
Also ich glaub nicht, dass es das in nächster Zeit geben wird! Ach ja...das hab ich ja noch fragen wollen:
cu -- |
|
Profil || Suche |
|
027 28.02.2001, 22:31 Another1 |
na klar wird es die geben .. die sprachen werden immer mehr zu Moddellierungsprachen werden da es immer weniger auf optimierung der geschwindigkeit ankommen wird. Das ist das gleiche wie es schon immer war ASM->Fortran->->C->C++->ToBeContinued??
Another1 ...relaxing..atm =) |
|
Profil || Suche |
|
028 01.03.2001, 09:13 Kriz |
C#'s Zugriff auf Instanzen ist aus meiner Sicht eine rein evolutionäre Sache:
struct A
x = test . a_1 . irgendwas; Ich bin der Meinung, daß man auch OHNE Zeiger hervorragend arbeiten kann, auch wenn ich mich an dieses Fehlerrelikt gewöhnt habe. Die drei Call-Techniken Call-By-Value, Call-By-Reference und Call-By-Pointer sind irgendwie zuviel. Wenn ich ohne Kopien in Funktionen arbeiten möchte, reicht ein simples Call-By-Reference, da brauche ich nicht unbedingt ein Call-By-Pointer. Mittlerweile sehe ich keine Vorteile mehr mit den Zeigern zu arbeiten. Und ein "Geschwindigkeitsvorteil" der Zeiger sehe ich angesichts bei der Leistungsfähigkeit moderner PC's auch nicht mehr. Hier heißt es mal wieder: Abwarten und Bier trinken... Cu --K:R-I)Z++ |
|
Profil || Suche |
|
029 01.03.2001, 15:42 DarKnight |
Wenn ich ehrlich bin....In meinen Programmen verwende ich nie Zeiger. Vielleicht ist es ja schlechter Programmierstil..aber Instanzen erscheinen mir logischer und der Code ist ohne Zeiger besser lesbar. --void CHudSayText :: EnsureTextFitsInOneLineAndWrapIfHaveTo( int line ) -- Aja? |
|
Profil || Suche |
|
030 01.03.2001, 15:46 Prefect |
Nun ja, ich denke schon, dass es einen Unterschied macht, ob man Pointer verwendet oder ein Sub-Objekt direkt in eine Struktur einbettet. Meiner Meinung nach war übrigens Call by Reference eine schlechte Idee, bzw. die gute Idee dahinter wurde mißbraucht. In Einzelfällen - besonders beim Übergeben einer fetten Struktur an eine Funktion die diese eigentlich nur lesen will - ist die Call by Reference-Methode logisch und einsichtig. Leider wird sie so mißbraucht, dass manchmal nicht klar wird, ob ein Objekt jetzt als Pointer oder direkte Value angesehen werden soll. Ähnliches wird passieren, wenn es kein -> mehr gibt. Es macht nämlich durchaus einen großen Unterschied wie Daten angeordnet sind, und das ist nicht ein Hirngespinst von mir. Einer der Programmierer von Age of Empires II hatte einen Artikel auf Gamasutra, in der er die Optimierungen in Age2 beschrieb. In einigen Fällen konnten sie Algorithmen auf ein vielfaches Beschleunigen, indem sie einfach das Datenlayout änderten.
---
Klar dass das den Anwendern nicht paßt. Interessanterweise argumentieren so aber gerade die Firmen, die sich die Zufriedenheit der Kunden so hoch auf die Fahnen geschrieben haben... Es gibt keine, aber auch GAR KEINE Ausrede dafür, keine Optimierungen zu machen. Punkt. Hier möchte ich auch noch was zu den tollen Features wie automatisches Recycling (Java & C#) anfügen. Diese tolle "Feature" ist absoluter nonsense für ernsthafte Anwendungen, ganz besonders Serveranwendungen. Es ist doch logischj, dass der Verwaltungsaufwand für ein solches Feature enorm ist - es zeigt nur schlecht Programmierpraxis auf (nämlich das Löschen von nicht benötigten Speicherbereichen zu unterlassen). Wenn irgendjemand mir jetzt mit Memoryleaks kommt, so möge er doch folgendes Entwicklungsszenario überdenken: Warum nimmt man nicht einfach Standard-Speicherreservierungsalgorithmen her (new/delete, malloc()/free()), und für Debugbuilds wird eine spezielle Erweiterung eingesetzt, die eine Art Recycling unterstützt, aber eine Fehler-(Debug)meldung ausgibt, wenn Recycling tatsächlich nötig wäre. Auf diese Weise können robuste UND effektive Programme geschrieben werden.
cu,
Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
031 01.03.2001, 16:19 DarKnight |
Okay. Wenn ich jetzt Spiele wie AoE, HL oder B&W programmieren würde wär das ja was anderes. Im Moment habe ich noch keine Probleme mit der Grösse von parametern in Funktionen! =)
void CHudSayText :: EnsureTextFitsInOneLineAndWrapIfHaveTo( int line ) -- Aja? |
|
Profil || Suche |
|
032 14.03.2001, 23:11 *RED*FirE |
zeiger sind nicht praktischer sie sind einfach notwendig denn mit ihnen kannst du zb in einer funktion die variable in main ändern
#include <iostream.h> void swap(int *x, int *y); int main()
cout << "Main. Vor Vertauschung, x: " << x << " y: " << y << "\n";
void swap (int *px, int *py)
cout << "Swap. Vor Vertauschung, *px: " << *px << " *py: " << *py << "\n"; temp = *px;
cout << "Swap. Nach Vertauschung, *px: " << *px << " *py: " << *py << "\n"; } dies ist ein ausführbares programm -- |
|
Profil || Suche |
|
033 18.03.2001, 17:41 Prefect |
int a,b;
cu,
Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
034 18.03.2001, 19:53 Buy-Menu-Man |
Für das Swap Ding brauchst du doch keine Zeiger! -- |
|
Profil || Suche |
|
035 18.03.2001, 23:33 Kriz |
LOL @ RedFire Zeiger haben nur einen Vorteil, der aber günstig ist (und aus der Zeit der speicherarmen PC's stammt): a) Sie benötigen (heute) nur genau ein 32-Bit Integer-Segment Speicherplatz für die Adresse. Das wird allerdings erst dann interessant, wenn man Datentypen benutzt, die >= 32 Bit sind bzw. 16 Bit auf älteren Zeigersystemen. Ein Byte per Zeiger zu übergeben ist sinnlos (vom char* mal abgesehen)...
@Prefect: Gut durchdacht :-) Cu --K:R-I)Z++ |
|
Profil || Suche |
|
036 19.03.2001, 00:05 [PE]Spinator |
@Perfect: Kannst du das mal erläutern ;) --This post was written using Opera 7.0 (http://www.opera.com) |
|
Profil || Suche |
|
037 19.03.2001, 16:25 *RED*FirE |
ach so das wusste ich noch nicht
|
|
Profil || Suche |
|
038 19.03.2001, 17:21 Kriz |
@Spinator: Pass uff :) Prefects Algorithmus zum Wertetausch ist der schnellste, den man in C/C++ realisieren kann, da er auf prozessorgestütze Abläufe basiert (will sagen, daß es hierfür bereits maschinensprachige Befehle im Prozessor gibt). Das, was Prefect euch sagen will, ist Grundlagen der Informatik *ggg*: Zum Bleistift nehmen wir diese zwei Werte: a = 1010 (dezimal = 10)
In C/C++ existiert der Operator ^ (XOR-Operator = Exklusives Oder bzw. Ausschließendes Oder). XOR gehört zu den Bool'schen Operatoren und unterliegt der Bool'schen Algebra. Das nur nebenbei... Die XOR-Operation auf zwei bool'sche Ausdrücke bewirkt folgendes: 0 xor 0 = 0
Der erste von Prefects Befehlen lautet: a ^= b;
1010
2. Befehl: b ^= a; --> b = b^a; --> b = 0110 ^ 1100 0110
3. Befehl: a ^= b; --> a = a^b; --> a = 1100 ^ 1010 1100
a = 0110
Das ist der ganze Zauber... Mit Tauschen per Variablen geht's zwar auch, aber es ist langsamer. Der XOR-Operator wird als Bestandteil des Prozessorkerns direkt ausgeführt und zwar etliche Male schneller als irgendwie anders! Cu --K:R-I)Z++ |
|
Profil || Suche |
|
039 19.03.2001, 18:47 Buy-Menu-Man |
WOW.........ziemlich ausführlich erklärt! -- |
|
Profil || Suche |
|
040 19.03.2001, 18:48 [PE]Spinator |
Goil, danke für die ausführliche Erklärung... Ich dachte ^ == Hoch :) --This post was written using Opera 7.0 (http://www.opera.com) |
|
Profil || Suche |
|
041 19.03.2001, 20:39 DarKnight |
Hehe....so ist das in Basic! =) Ob es auch in anderen Sprachen so ist wiess ich nicht... Wenn du ne Funktion die mathematisch "Hochrechnet" brauchst, kann ich dir eine geben! =)) Brauchst du net aber ich hab mal aus Jux und Dollerei (weil ich net wusste, dass es es schon eine gibt) eine programmiert (ganz easy). Naja bis mich dann der gute Kriz -- *ggg* -- darauf hingewiesen hat, dass es schon eine gibt! Naja...war das jetzt interessant???? egal..... =)
void CHudSayText :: EnsureTextFitsInOneLineAndWrapIfHaveTo( int line ) -- Aja? |
|
Profil || Suche |
|
042 19.03.2001, 20:56 Prefect |
Hehe... das mit dem XOR-Swap ist so ein kleiner Spaß aus der Assemblerprogrammierung (bei der beim i386 leider recht wenig Register vorhanden sind).
/me geht testen. [edit]
Mit folgendem Ergebnis:
cu,
Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
043 20.03.2001, 13:10 Buy-Menu-Man |
Tja....beim ersten ist es langsamer!
|
|
Profil || Suche |
|
044 20.03.2001, 19:48 Prefect |
Nicht sicher... es könnte mit der Optimierung von GCC zusammenhängen, oder aber mit Programmen, die im Hintergrund laufen... cu,
Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
045 20.03.2001, 20:22 DarKnight |
Das Ergebnis ist generell zu knapp um gute Schlüsse zu ziehen. Also ist es scheissegal was man macht. Ob man nun so Swapt oder mit BITs. =) Naja kommt bestimmt aber auch auf den Compiler an. --void CHudSayText :: EnsureTextFitsInOneLineAndWrapIfHaveTo( int line ) -- Aja? |
|
Profil || Suche |
|
046 21.03.2001, 11:42 Xave |
Wollt ihr wissen, warum MS C# gemacht hat?
Auf die Frage ob es was besser geben wird als C++... Ja
VisualStudio.Net -> Naja grafisch angepasst am Whistler (oder neuerdings XP)
|
|
Profil || Suche |
|
047 21.03.2001, 22:58 Kriz |
Net ganz, Xave. SUN hat MS nur verboten, Java ohne deren Wissen zu erweitern... Dafür haben die Jungs von MS von SUN gerichtlich was auf den Rüssel bekommen... Natürlich darf MS Java weiter benutzen, sonst dürfte der IE ja keine Java Applets ausführen. Wenn SUN dies verboten hätte, würde es für Windows auch kein Java geben, denn dann hätte MS bestimmt gesagt: "Nee nee, nix windowsbasierter Java-Interpreter für's SDK..." Cu --K:R-I)Z++ |
|
Profil || Suche |
|
048 25.03.2001, 21:34 Zeeke |
Hallo ihr, die ihr die Kinder der Sonne seit!! lol
Ciao -- |
|
Profil || Suche |
|
049 25.03.2001, 22:12 DarKnight |
Bei mir ist auch noch nix da..... =) --void CHudSayText :: EnsureTextFitsInOneLineAndWrapIfHaveTo( int line ) -- Aja? |
|
Profil || Suche |
|

