Hallo
Eigentlich müsste meine Frage „Was ist die beste
Programmiersprache?“ heißen, aber ich habe bereits viele
Foren-Einträge zu dieser Frage gelesen, die alle aussagen, das
C++ die beste ist.
Was ist die beste Handwerkszeug?
Kommt auf das Handwerk an.
In diesem Falle geht es um ein Progrämmchen, das sich wohl am ehesten in die Reihe von 3d-Spielen einordnen lässt.
(Muss ich aber, da ich eine recht performanceabhängige
Anwendung mit grafik und netzwerk schreiben möchte)
Was denn so? Welche Oberfläche möchtest Du nehmen?
WinAPI, GTK+, QT4.5?
als grundbaustein möchte ich opengl und openal verwenden.
Einige Dinge, die in python einfach sooo GENAIL sind, z.B. die
__getslice__()-Methode, die man in jede Klasse einbauen kann,
mit der man selber aus Klassen komfortabel zu bedienende
Arrays bauen kann.
Was soll das machen? Ein praktisches Beispiel für
mein Verständnis?
mit array[3:5] kriegt man ein neues Array aus Objekt 3 und bis ausschlisslich 5 des alten. insbesondere, wenn man nicht mit nummern sondern z.B. mit strings adressiert (was man ja durch selbst zusammengebaute listen durchaus kann) kann einem diese Funktion sehr helfen. es verkürzt einfach den Programmaufbau ungemein, wenn man statt array.getSlice(3,5) einfach array[3:5] oder statt array.getitem(4) einfach array[4].
Mit den __get*__ und __set*__ kann man eben selbst die schreibweise von arrays nutzen.
Über die Veraltung wusste ich nichts, in 2.6 war es ja noch verwendbar.
Ich vermute mal, daß man das in C++ mit
Operatorüberladung von [] oder (,) machen würde
gerade mal im ansatz ausprobiert, der slicing-zugriff ist schwierig, aber machbar, wenn auch sinnlos da man ein array schlecht zuweisen kann
die zuweisung auf ein array oder gar auf einen teil eines arrays kann man mit der gewohnten schreibweise scheinbar „a[7:9] = 12,56“ nicht realisieren, da man auch mit operatorüberladung keine möglichkeit hat, herasuzufinden ob werte des arrays gefragt sind oder auf ein array zugegriffen werden soll.
Und wie man in c++ ordentlich die Funktion des python
lambda-keywords benutzt kann ich auch nicht finden.
Um was zu machen? Beispiel?
schnell mini-funktionen anlegen.
so die recht sinnlose variante:
>>> g = lambda x: x**2
>>>
>>> print g(8)
64
so verwende ich es oft:
>>> asdAction = lambda: runAsd(Event(„MenuClick“),„euro“)
>>> menu.newlabel(„asd“, func=asdAction)
also im prinzip funktionspointer, die parameter enthalten
Ganz extrem ärgert mich natürlich, in c++ an vorherige
Variablendefinition gebunden zu sein, aber das scheint ja
voraussetzung für einigermaßen schnellen Programmablauf zu
sein.
Nee, nicht nur. Das ist auch die Voraussetzung für
die Vermeidung einer enormen Anzahl von Fehlern
während der Implementierungsphase.
Damit hatte ich noch NIE Probleme.
Ich weiss doch, welche Variable was enthält.
Und dynamische Dictionaries (in einem Array mit Strings
indexieren) scheint es ja auch nicht von Haus aus zu geben.
Doch, derzeit gibt es die Gnu-C+±’HashMap’, die
ist schon ganz gut (in bzw )
Da kann man sowas machen:
…
#include
typedef stdext::hash_map StdHash;
…
StdHash hash;
hash[„irgendeinwort“] ++;
hash[„irgendeinandreswort“] ++;
…
Und demnächst gibt es einen sog. TR1-Hash (kommt
gerade heraus, http://en.wikipedia.org/wiki/Unordered_map )
aaah! cool!
na das ist doch shon mal eine gute nachricht.
denn sowas verwende ich sehr oft.
C++ ist schwierig zu erlernen, ins-
besondere die STL erfordert einige Erfahrung.
Lernen - No Problem! vor ein paar Jahren hab ich damit schon recht große Sachen geproggt.
Mir geht es um das Programmieren selber. Ich mag einfach nicht 1000 zusätzliche Zeilen tippen, die sich die Programmiersprache auch selber denken kann (was voraussetz das die Programmiersprache einen so logischen aufbau hast das sie nicht raten muss sondern man genau weiss was sie sich denken wird)
Daher jetzt die Frage:
Gibt es eine Programmiersprache, in der man Code so einfach
code vereinfachen kann wie z.B. in python, DIE ABER GENAU SO
SCHNELL IST WIE C++?
Zum Beispiel könntest Du 3D-Vektoren bauen und
ihre Operatoren überladen, dann sähen typische
3D-Operationen in Deinem Quelltext etwa so aus:
// bvn, vm and vx0 are 3D
vectors
…
COORD3 vx = bvn ^ vm; // cross product, normal to plane
between …
double cosg = vx0 * vx; // cos angle between normal and
reference vector
double omega = acos(cosg);
…
Hier ist COORD3 eine Klasse und die Operatoren ‚*‘ und ‚^‘
wurden überladen (liefern Kreuzprodukt bzw. Skalarprodukt).
Sieht praktisch aus. spartbestimmt ne menge tipparbeit wenn ich immer nur an bestimmte daten eines vektors will…
Eine Variante wäre noch „D“ oder vielleicht Lua.
D scheint ja jetzt erst mal C-ähnlich zu sein.
Lua und Python scheint kein großer Unterschied zu sein, bloss lua fängt seine arrays bei 1 an und des is müll.
(jaja andre würden mich für den satz umbringen aber allgemein is lua schneller und python kann mehr, naja whatever ich will mehr können)
Naja, zusammenfassend ist also deine Meinung, C++ kann das alle auch und dehalb sollte ich also c++ verwenden, ja?
Vielen Dank für deine Mühen!
Gruß Lomex