Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Das mag sein, das Objective-C objekorientierter ist. Aber wenn ich den C-Tor Manuell aufrufen muss? Das empfinde ich als große schwäche. Denn der Sinn von ctor und dtor ist es doch grad das ein Objekt fertig benutzbar konstruiert wird und auch wieder ordnungsgemäß zerstört wird. Wenn man das Manuell machen muss, kann man das schnell vergessen.Zitat
Also, C'- und D'toren sind nichts, was durch die OO erzwungen wird. in Objective-C muss ich beispielswiese den C'tor manuell aufrufen, ich kann es also vergessen (zumindest theoretisch) und Objective-C ist IMHO "objektorientierter", als z.B. C++.
Quellcode |
|
1 2 |
let map funktion [] = [] map funktion (head::tail) = (funktion head :: map funktion tail) |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 |
template <typename T, typename F> std::list<T> map (std::list<T> const & list, F f) { std::list<T> result; for (std::list<T>::const_iterator it=list.begin(); it!=list.end(); ++it) result.push_back (f(*it)); return result; } |
Najo das mag halt sein. Aber auch hier hat das absolut nichts mit diesem Thema zu tun. Die Typisierung von C und auch C++ hat hier etwas mit der CPU-Architektur zu tun. C wurde als Sprache konzipiert die sehr CPU nah sein sollte. Und da C die Basis von C++ ist, hat sich das eben durchgezogen.Zitat
Viele funktionale Sprachen sind statisch typisiert, wie z.B. SML, O'Caml, ... . Bieten aber ein tolles Type-Inference-System. Sowas, wie in Java oder C++ ist doch schon fast eine Zumutung.
Besser könnt ich es auch nicht ausdrücken. Und ich kann mich hier auch nur wieder einmal wiederholen. Es geht hier ja nicht darum welche Sprach nun eine bessere Syntax hat oder welche Sprache die Prinzipien von OO beser umsetzt. Das war nicht Thema dieses Threads. Die Sprache ist nicht OO. Sie ist das Werckzeug das ich benutzen kann um OO zu programmieren. Und wenn einem eine Sprache nicht gefällt dann sollte man sich eine andere suchen.Zitat
Ich kann mir vorstellen, dass sich ein Teil dieser Diskussion daraus ergibt, dass sich C++ (leider) durchgesetzt hat. Das bietet natürlich eine grosse Angriffsfläche gegen die meistbenutzte Sprache, die OO erlaubt.
Zitat
Ja. Allerdings gibts das "Design by Contract", wo die "sich selbst testende Klasse" ein wesentlicher Gesichstpunkt ist.
Zitat
Die Begriffe "OO" und "Skriptsprache" haben für mich nichts miteinander zu tun, es gibt alle 4 Kombinationsmöglichkeiten.
Zitat
Aber wenn ich den C-Tor Manuell aufrufen muss? Das empfinde ich als große schwäche.
Zitat
Man kann sich über die Syntax einer Sprache streiten. Sicher das obere Beispiel ist kürzer, aber für mich 0% verständlich, da ich die Sprache nicht kenne. Ob ein Code leserlich ist hängt nicht zu 100% von der Syntax ab, sondern es hängt zu 80% davon ab, wie gut man die Sprache kennt. Und der vergleich der Syntax der Sprachen hat zu 0% was mit diesem Thema zu tun. Ich könnt hier jetzt auch Perl reinwerfen und sagen, das ist mist.
Zitat
Najo das mag halt sein. Aber auch hier hat das absolut nichts mit diesem Thema zu tun. Die Typisierung von C und auch C++ hat hier etwas mit der CPU-Architektur zu tun. C wurde als Sprache konzipiert die sehr CPU nah sein sollte. Und da C die Basis von C++ ist, hat sich das eben durchgezogen.
Zitat
Bei Variablen die zugleich eine Zahl oder auch ein String sein können, ist einfach nur störend.
Zitat
Und wenn ich so ein Dynamisches Ding haben will, dann kann ich mir so eines auch mit Sprachen wie z.B. C++ bauen
Zitat
Wie das ganze nun aber dargestellt wird hängt wiederum von der Syntax ab und hat rein gar nichts mit OO zu tun.
Zitat
Und wenn einem eine Sprache nicht gefällt dann sollte man sich eine andere suchen.
Es ist sicher sehr vorteilhaft wenn der Compiler einem einiges an Arbeit abnimmt. Dadurch kann man weniger Fehler machen, da der Compiler (wenn korrekt Implementiert) an jedem Symbol logisch vorgeht. Was man von einem Menschen nich behaupten kann.Zitat
Natürlich wurde von mir vorrausgesetzt, das man beide Sprachen kann. Und dann würde man ganz schnell feststellen, das die Synthax nur die Hälfte der Wahrheit ist. Auch die Vorgehensweise, die das in beinahe allen funktionalen Sprachen vorhandenen Pattern Matchings (hat nichts mit RegEx zu tun), macht den Code viel übersichtlicher und klarer.
Akzeptiert. Nur eine Sache. Es ist zwar ein Standard von C/C++ das man auch immer den Typ mit angeben muss und wenn man ihn nicht angibt immer ein Ineger genommen wird. Aber man kann mit einem Compiler Feature in etwa das selbe machen wie in SML. Solange man einer Variable direkt einen Wert zuweist kann der Compiler auch erkennen um welchen Typ es sich handelt. Also z.B.Zitat
Falsch verstanden. SML ist genau so statisch Typisiert, wie C und C++ und bietet beinahe die selben Typen an. Der Unterschied ist, das ich beinahe nirgendwo Typen angeben muss, da die Sprache (wie bei funktionalen Sprachen üblich, ist eben eine Sache des Paradigmas) die Typen prinzipiel selbst herleitet. Explizite Typangaben sind so gut, wie nie notwendig.
C-/C++-Quelltext |
|
1 2 3 |
var1 = 0; // integer var2 = 1.0; // double var3 = 1.0f; // float |
VB ist nur einer der Übeltäter ;DZitat
Das klingt nach erfahrungen mit VB. Es geht aber nicht um schwache oder starke Typisierung, sondern um dynamische oder statische Typisierung.
Also ein Auto kann nur als Auto verwendet werden, nicht als Zahl oder String. Das es sich um ein Auto handelt steht bei dynamisch typisierten Sprachen allerdings erst zur Laufzeit fest.
Hmm....sicherlich intern ist und bleibt es Statisch. Aber von aussen verhält sich ein solches Objekt wie ein dynamischer Typ. Das geht schon. Ist zwar was aufwand, aber machbar. Schnell ist der Typ natürlich auch nicht. Da man intern immer Konvertieren muss. Je nachdem was grad verlangt wird.Zitat
Nö. Das kannste in Objective-C und auch in Scriptsprachen, wie PHP (AFAIK erst ab Version 5), aber nicht in C++. Das ist absolut statisch.
Gute frage Eine absolute super Sprache wird es nie geben. Das ist mal sicher. Man muss sich halt raussuchen womit man gut umgehen kann.Zitat
Ja, aber finde mal eine gute Sprache, die dennoch praxisrelevant eingesetzt werden kann. Meine Favoriten sind JMatch und Scala, da beide auf Java-VMs lauffähigen Code generieren.
Werbeanzeige