Objective-C vs. C++ und C?



  • Fragedersprache schrieb:

    Ist Objective-C auf Mac-OS X eigentlich die dominierende Programmiersprache oder ist hier C++ stärker vertreten?

    Und wie sieht's auf dem iPhone aus?

    Unter OS X ist Objective-C weiter verbreitet da vorallem die Cocoa Bindings für C++ noch "relativ neu" sind. Die Masse an Legacy Code ist Objective-C

    Ähnliches gilt auch fürs iPhone - Objective-C ist halt die native Sprache und die Libraries sind für Objective-C designed, du kannst zwar auch C++ oder sonstwas verwenden, aber an der einen oder anderen Ecke wirst du dich stossen...

    Objective-C ist aber eine furchtbar haessliche Sprache, da es naemlich 2 Sprachen in einer sind, mit komplett unterschiedlicher Syntax. Natürlich hat es auch nette Ideen, keine Frage, aber das gesamtgefühl ist furchtbar...



  • Numbus schrieb:

    ;fricky schrieb:

    nee, es gehört noch ein laufzeitsystem dazu, für diese dynamik, die du ja schon erwähnt hast. das objektsystem von obj-c ist völlig dynamisch und message-basiert, während es in c++ ja zu 99% statisch ist (bis auf wenige ausnahmen wie 'typeid' und 'dynamic_cast') und alles der compiler erledigt.
    btw, objective-C 2.0 hat auch einen garbage collector

    Also ist objective-C besser als C++?
    Nur, warum hat es sich dann nicht gegenüber C++ durchgesetzt?

    Und welche der beiden Sprachen ist moderner?
    AFAIK gab's C++ vor Objektive-C, ist das richtig?

    C++ fing iirc 1979 an und Objective-C 1980. Macht also nicht so viel Unterschied aus. Vermutlich wussten beide Entwickler am Anfang voneinander. Moderner kann man auch nicht wirklich sagen, da beide eben andere Ansätze verfolgen. C++ orientiert sich bei der Objektorientierung eben eher an Simula und bietet aber neben der Objektorientierung noch zahlreiche andere Sprachfeature, wie Exceptions, Operatorüberladung, Templates etc.

    Objective-C bringt dagegen nur das Objektsystem (seit Version 2.0 aber auch einen GC).

    Besser ist sowieso relativ und ignoriere am besten ;fricky.



  • ;fricky schrieb:

    C++ sollte ein besseres C werden

    Das ist ja auch gelungen. 😃
    War aber nicht so schwer. Nein, es sollte kein besseres C werden, sondern es sollte gut werden. Das ist ein viel höherer Anspruch. Auch der ist erfüllt.



  • Auch das ist subjektiv. Ebenso wie die Häßlichkeit von ObjC. Hauptsache wir akzeptieren alle, dass Java Müll ist.



  • rüdiger schrieb:

    Besser ist sowieso relativ und ignoriere am besten ;fricky.

    von mir aus. aber nicht das hier ignorieren: http://pierre.chachatelier.fr/programmation/fichiers/cpp-objc-en.pdf
    ^^ vergleich c++/obj-c
    🙂



  • also ich find die syntax von objective-c auch hässlich, die sieht einfach nur zusammengewürfelt aus. Wie wenn es ein Freak geschrieben hätte, der in C einmal Objektorientierung nutzen wollte 😉 .



  • player4245 schrieb:

    also ich find die syntax von objective-c auch hässlich, die sieht einfach nur zusammengewürfelt aus. Wie wenn es ein Freak geschrieben hätte, der in C einmal Objektorientierung nutzen wollte

    es sind nun mal 2 verschiedene syntaxen, etwa wie C und sein präprozessor (daher wohl auch rüdis falsche annahme, objective-C wär nur ein präprozzi). das wird aber, glaub ich, nicht so schlimm sein, als dass es sich dem menschlichen verstand entziehen würde. es gibt üblere syntaxen, z.b. eine programmiersprache (weiter verbreitet als objective-C übrigens), die so verzwickt ist, dass deren compiler oft nicht den vollen sprachumfang beherrschen *fg*
    🙂



  • der präprozessor erledigt in den beiden Sprachen ja nur oberflächliche Aufgaben, aber diese schlimme Syntax mit den ganzen @ Zeichen ist ja schön im ganzen Code verteilt, das macht die Sprache nämlich so schrecklich.

    P.S. ich habe deine Anspielung auf C++ bemerkt. Musst du eigentlich in jedem deiner Posts so was schreiben? Wenn dir die Sprache nicht gefällt dann ignorier sie doch einfach. Sorry aber das nervt schon etwas.



  • player4245 schrieb:

    der präprozessor erledigt in den beiden Sprachen ja nur oberflächliche Aufgaben, aber diese schlimme Syntax mit den ganzen @ Zeichen ist ja schön im ganzen Code verteilt, das macht die Sprache nämlich so schrecklich.

    P.S. ich habe deine Anspielung auf C++ bemerkt. Musst du eigentlich in jedem deiner Posts so was schreiben? Wenn dir die Sprache nicht gefällt dann ignorier sie doch einfach. Sorry aber das nervt schon etwas.

    Lies doch deinen eigenen Beitrag nochmal 😉



  • tut mir leid ich komm nicht drauf sag du mir was nicht stimmt.



  • player4245 schrieb:

    Wenn dir die Sprache nicht gefällt dann ignorier sie doch einfach.



  • ;fricky schrieb:

    player4245 schrieb:

    also ich find die syntax von objective-c auch hässlich, die sieht einfach nur zusammengewürfelt aus. Wie wenn es ein Freak geschrieben hätte, der in C einmal Objektorientierung nutzen wollte

    es sind nun mal 2 verschiedene syntaxen, etwa wie C und sein präprozessor (daher wohl auch rüdis falsche annahme, objective-C wär nur ein präprozzi)

    Hab das korrigiert. Meinte natürlich, wie eine Präprozzisprache. Man kann ja sogar Objective-C programmieren, in dem man einfach das dahinterliegende C-Interface benutzt (ist aber Compilerabhängig). Dann hat man auch keine komische Syntax:

    http://paste.lisp.org/display/37105
    http://www.google.com/codesearch/p?hl=en#t4cUIrRdV2U/gnu/mingw/gcc-2.95.3-20010723-src.tar.gz|FL01zNkJ3_0/libobjc/sendmsg.c&q=sel_get_any_uid
    ...



  • player4245 schrieb:

    P.S. ich habe deine Anspielung auf C++ bemerkt. Musst du eigentlich in jedem deiner Posts so was schreiben? Wenn dir die Sprache nicht gefällt dann ignorier sie doch einfach.

    wieso? das war doch eine recht passende antwort auf deinen beitrag, von wegen grausame syntax und so. syntax ist doch am anfang immer gewöhnungsbedürftig. in einer programmiersprache akzeptierst du hässliche syntax, weil du dich daran gewöhnt hast (und findest sie vielleicht nicht mehr hässlich), bei der anderen lehnst du sie ab, weil du die sprache noch nie benutzt hast. kein problem, so denken viele.
    🙂



  • Zu C / C++ gibt es uebrigens einen netten FAQ-Eintrag: http://www.c-plusplus.net/forum/viewtopic-var-t-is-41471-and-postdays-is-0-and-postorder-is-asc-and-start-is-0.html

    Bedenke auch, dass es zu C++ viel mehr Infos, Bibliotheken, Ressourcen etc. im gegensatz zu ObjC gibt. Du hast nicht mal einen eigenen Syntax-Highlighter in diesem Forum fuer ObjC 😃



  • @;fricky: Wenn ich dir ein Bild zeigen würde und du würdest mir sagen es ist hässlich, dann könntest du deine Meinung auch nicht richtig begründen.
    Geschmack ist eben etwas das man nicht begründen kann. Und so ist es auch mit dieser Syntax. Mir gefällt die einfach nicht, weil sie nicht miteinander harmoniert (schon allein wegen der ganzen @ Zeichen, die findest du sonst nirgends in C).
    Naja davon abgesehen fristet ObjC, wie mein Vorposter bereits erwähnte, eher ein Nischendasein, zumindest unter den Populärsten Plattformen.



  • Hoodoo schrieb:

    Bedenke auch, dass es zu C++ viel mehr Infos, Bibliotheken, Ressourcen etc. im gegensatz zu ObjC gibt.

    Naja; viele c++ librarys sind aber wirklich schrecklich. Die haben auch nicht viel mit c++ zu tun. zB GUI Frameworks:
    MFC - äh zum kotzen aus sicht von ästetischen c++
    QT - Die brauchen für ihre Slot Signal konzept einen eigenen preprocessor
    wxWidgets - Das mit dem Eventtables ist auch nur begrenzt mit wirklichen c++ zu vergleichen.
    Namespaces haben die alle nicht! Und die Interoperabilität mit std-library ist auch begrenzt.
    Gtkmm ist die einzige c++ige GUI library für c++ (bis auf 2-3 unklarheiten beim Speichermanagement; aber das ist ok)

    Bei Objective-c habe ich als GUI Appkit, was sich perfekt in die Grundlagen der Sprache wie NSObject und Foundatione einpasst. Das ist so perfekt, dass man die Übergänge oft garnicht bemerkt.

    Wenn man halbfertige und absolut miserable librarys einrechnet gibt es für c++ von der gesamtfunkionalität sicherlich 20 mal mehr als für Obj-C. Wenn man sich aber auf gute Librarys die man gerne benutzt beschränkt (also Perfektionist) hat man für c++ nur noch grob 2-3 mal so viel (wobei davon ein grosser Teil davon die hervorragende boost lib ist).

    Bei Objective-C sind viele Librarys einfach total schmerzfrei. Ich will ein mp3 abspielen? Nehme ich einfach QTkit (Quicktime; nicht QT) und geht. Bei c++ ist es sehr viel komplizierte auszuwählen was man will. Das hängt zB sehr vom Betriebsystem und GUIlibrary und ähnlichen ab. Da ist die gnadenlose Plattformabhängigkeit von Obj-C eine Berfreiung und Erhöhung der Produktivität.

    Das mit dem Mehr infos ist auch so eine Sache. Es ist viel scheiße wie <iostream.h> da und Objective-C ist so viel simpler, dass man gar keine so umfangreiche Anleitung wie bei c++ braucht. Aber versuch mal einen nicht c++-Programmierer virtuelle Vererbung zu erklähren. Der hält die für bekloppt. :xmas1:



  • player4245 schrieb:

    @;fricky: Wenn ich dir ein Bild zeigen würde und du würdest mir sagen es ist hässlich, dann könntest du deine Meinung auch nicht richtig begründen.
    Geschmack ist eben etwas das man nicht begründen kann.

    Als Kunststudent muss ich dir mal leider sagen dass das Blödsinn ist, es gibt natürlich jede menge objektive merkmale die ein bild "schön" erscheinen lassen, schwierig wird es nur mit kunst aus anderen kulturen. Gleiches gilt im gewissen Maß übrigens auch für Musik 😮

    Und so ist es auch mit dieser Syntax. Mir gefällt die einfach nicht, weil sie nicht miteinander harmoniert (schon allein wegen der ganzen @ Zeichen, die findest du sonst nirgends in C).
    Naja davon abgesehen fristet ObjC, wie mein Vorposter bereits erwähnte, eher ein Nischendasein, zumindest unter den Populärsten Plattformen.

    In der Regel benutzt man eine Programmiersprache nicht, weil einem die Anordnung verschiedener Zeichen auf dem Bildschirm ästhetisch zusagt. Allerdings scheinst du eh nicht viel Plan von Obj-C zu haben, ein @ findest du in der regel maximal an 2 Stellen in einer Quelldatei, nämlich am anfang und am ende einer protocol/interface/implementation definition. Aber wild gestreute * oder # in C Quelltexten scheinen dir ja nich zu so mißfallen.
    Zum nischendasein hab ich nichts hinzuzufügen, außer 100.000 deployten apps, von der vielen hervorragenden OS X Software ganz zu schweigen. :xmas2:



  • keinbenutzer schrieb:

    Und so ist es auch mit dieser Syntax. Mir gefällt die einfach nicht, weil sie nicht miteinander harmoniert (schon allein wegen der ganzen @ Zeichen, die findest du sonst nirgends in C).
    Naja davon abgesehen fristet ObjC, wie mein Vorposter bereits erwähnte, eher ein Nischendasein, zumindest unter den Populärsten Plattformen.

    In der Regel benutzt man eine Programmiersprache nicht, weil einem die Anordnung verschiedener Zeichen auf dem Bildschirm ästhetisch zusagt. Allerdings scheinst du eh nicht viel Plan von Obj-C zu haben, ein @ findest du in der regel maximal an 2 Stellen in einer Quelldatei, nämlich am anfang und am ende einer protocol/interface/implementation definition. Aber wild gestreute * oder # in C Quelltexten scheinen dir ja nich zu so mißfallen.

    Du scheinst auch nicht viel Plan von Obj-C zu haben, wenn du noch nie was von @property und @synthesiz gehört hast.



  • Man muss ja nicht jeden 2.0 Scheiss mitmachen. Aber ansonsten "gut gebrüllt Löwe"...



  • blard schrieb:

    Aber versuch mal einen nicht c++-Programmierer virtuelle Vererbung zu erklähren. Der hält die für bekloppt. :xmas1:

    Mag sein. Aber versuch mal dem selben Programmierer zu erzählen, daß Pluto ein Hund ist und daher einen Schwanz hat und zugleich eine Comicfigur ist und daher einen Erfinder/Autor hat. Am besten noch dazu, daß sein Alter je nach Blickwinkel unterschiedlich ist (als Erfindung 79 Jahre). Der sagt Dir, das kann man nur mit viel if/goto programmieren.


Anmelden zum Antworten