Cocoa/Obj-C vs andere Sprachen/Frameworks

  • Cocoa/Obj-C vs andere Sprachen/Frameworks

    Huhu!

    Mich würde es mal interessieren, was die osxentwicklerforum.de-Community so von anderen Sprachen im Vergleich zu Obj-C/Cocoa hält.

    Ich persönlich kenne nur Java und C# mit .Net und ich muss sagen: Das Programmieren auf dem Mac fühlt sich schon ganz anders an. Alleine schon das Memorymanagement gibt mir schon das Gefühl, dass ich gerade was großes und mächtiges mache und nicht wie in C# den dreckigsten Code hinschludern kann und der Compiler macht einmal piep und wirft mir diese fake .exe an den Kopf. In Java muss man ja wenigstens noch die Exceptions werfen. Aber die .jar die am Ende raus kommt gibt mir immer noch das Gefühl, dass das ganze Spielchen nichts Halbes und nichts Ganzes ist.

    WIe seht Ihr das?
  • Ich finde diese Sprachdiskussionen müßig. Da werden häufig Äpfel mit Bananen verglichen und hinterher hat sowieso jeder Recht. Objective-C hat einerseits sehr tolle Konzepte, die ich auch gerne in Java hätte. Andereseits gibt's da aber auch immer noch diese C-Erbschaft (structs, typedefs, Präprozessor), die mir nicht so gefällt. Auf der anderen Seite hat auch Java einige Konzepte (Typprüfung beim Casten, Namensräume / Pakete, Annotations), die ich in Objective-C gerne hätte und es wäre auch schön, wenn auch Objective-C Exceptions so stringent wie Java einsetzte.

    Für beide Sprachen haben sich aber Vorgehensweisen, Methoden und Muster entwickelt, die das Fehlen einiger Eigenschaften und Konzepte kompensieren. Cocoa ist voll von diesen Mustern, was, neben der Speicherverwaltung, für Umsteiger ein hartes Brot ist. Wenn Du aber diese Muster verinnerlicht hast, kannst Du damit sehr schönen, eleganten und lesbaren Programmecode sxhreiben. Bei Java gibt es diese Muster nicht von Haus aus und Du musst Dir die im Laufe der Zeit selbst entwickeln. Wenn Du den Anspruch auf guten, wiederverwendbaren Code hast, ist das auch nicht gerade frisches Weißbrot in Hühnerbrühe ;)
    „Meine Komplikation hatte eine Komplikation.“
  • Ich finde es eigentlich Schade, daß überhaupt Hochsprachen entwickelt wurden. Das Assembler Programmieren damals war die lustigste Zeit. Und wenn man sich überlegt wie schnell ein heutiger Computer wäre, wenn alles komplett in Assembler programmiert wäre...

    Gruß

    Claus

    P.S. Bitte nicht so ernst nehmen, aber es war schon eine schöne Zeit damals in den Anfängen, als man noch bei jedem Bit wußte wozu es da ist und wofür man es braucht...
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:

    Ich finde es eigentlich Schade, daß überhaupt Hochsprachen entwickelt wurden. Das Assembler Programmieren damals war die lustigste Zeit. Und wenn man sich überlegt wie schnell ein heutiger Computer wäre, wenn alles komplett in Assembler programmiert wäre...

    Gruß

    Claus

    P.S. Bitte nicht so ernst nehmen, aber es war schon eine schöne Zeit damals in den Anfängen, als man noch bei jedem Bit wußte wozu es da ist und wofür man es braucht...

    x86 Assembler hat sich ja nicht wirklich geändert seit den Zeiten, als man noch Assembler verwenden musste, um schnelle Programme zu bekommen. Ist halt noch etwas erweitert wurden. Aber es gibt noch genug Menschen, die x86 Assembler beherrschen und nutzen. Nur ist die Notwendigkeit nicht mehr so gegeben. Compiler erzeugen heutzutage teilweise besseren und schnelleren Code. Der Arbeitsaufwand ist ja auch deutlich geringer mit einer Hochsprache. Bei Cocoa wird sich doch sicher auch keiner beschweren, dass das System einem so viel abnimmt und man nicht alles selber machen muss. Jedoch hilft es denke ich immer ungemein, zumindest so grob zu wissen, wie alles darunter funktioniert und abläuft, und eben welche (der wichtigeren) Bits wofür gebraucht werden.
    C++
  • um mal zum thema zurückzukommen.
    meiner meinung nach ist c# die schönste aller programmier sprachen. sie hat alle wichtigen features die mir bisher so unter gekommen sind.
    wenn man jetzt zB c# mal mit java vergleicht, hat c# (als beispiel) delegates und structs, die es in java nicht gibt und dadurch das leben unglaublich schwer machen.

    objc. hat diese features auch alle, allerdings sind manche konstrukte sehr abenteuerlich aufgrund des c mitschleppens. natürlich hat man dadurch wieder andere vorteile, aber wenn wir jetzt rein bei der benutzbarkeit bleiben ist c# einfach überlegen.
    in objc muss man einfach sehr oft viele sachen per hand machen und das nervt. es gibt einige features nicht die moderne sprachen einfach haben, wie wirklich vernünftige zugriffs kapselung und namensräume. ausserdem will ich mich nicht darum kümmern dateien einzubinden und methoden bekannt zu geben, die reihenfolge sollte wurst sein und einfach funktionieren.
    ich will nicht eine extra kategorie anlegen und immer meine privaten methoden reinschreiben nur damit ich die auch am ende der datei haben kann. bei größeren klassen lohnt sich das ja, bei kleineren aber nicht wirklich und dann schreib ich die methoden einfach hin und damit wird der code unleserlicher und vor allem uneinheitlich. ich will nicht properties mit 3 schritten implementieren, es sollte reichen die einmal im header bekannt zu geben und dann muss das funktionieren.

    ich würde gerne die von objc bekannte benennung der parameter in c# sehen, damit der code lesbarer wird.

    objc ist allerdings direkt nach c# die zweit beste. hat wie gesagt ein par schönheitsprobleme, gewinnt aber wieder durch unglaublich gute frameworks, compilierten code und paradoxer weise ist auch die c anbindung ein vorteil (fluch und segen halt).

    meiner meinung nach sollte apple eine von grund auf neu entwickelte sprache schreiben (so wie es microsoft mit c# getan hat), mit einheitlicher syntax aber allen features die objc so hat, dies wäre vermutlich die beste und würde es für eine lange zeit bleiben. natürlich würde wieder das problem der anbindung von c libs kommen, aber das kann man mit java und c# auch, nicht so elegant aber geht, umschiffen.


    ich find objc und c# beide super, aber wenn ich die wahl hätte würde ich momentan wohl c# nehmen, sofern die frameworks entsprechend toll wären wie bei objc. ich mag die paradigmen von objc aber ich muss auch ne menge code mehr schreiben als notwendig wäre.
  • ramo schrieb:

    Assembler war super, da haben Anwendungen noch zu 100% das getan was der Programmierer wollte, Objective C finde ich aber einen wirklich sehr guten Ersatz für 99,9% der heute geforderten Anwendungen.

    Du kannst ja mischen. Objective-C++ mit C++ mit C mit Assembler mit Fortran. Geht alles super. Für jede Aufgabe die richtige Sprache ;)
    Und genau das geht dann mit C# oder Java eben nicht mehr so schön. Ich hatte einmal (unter Windows) überlegt, mit C# anzufangen. Weil ich mir damals dann aber eigene Wrapper für 99% aller von mir benötigten Libs schreiben hätte müssen, hab ichs bleiben gelassen. Wenn ich mir Wrapper für Libs schreiben will, dann mach ich das in Python. Das geht da, soweit ich weiss zumindest, noch einfacher als in C# und von der Sprache her ist Python ja sowieso fast allem überlegen :P
    C++
  • Vor allem gibt es Gross- und Kleinschreibung bei Obj-C.
    In unserer Sprache übrigens auch!

    *SCNR*

    meno schrieb:

    um mal zum thema zurückzukommen.
    meiner meinung nach ist c# die schönste aller programmier sprachen. sie hat alle wichtigen features die mir bisher so unter gekommen sind.
    wenn man jetzt zB c# mal mit java vergleicht, hat c# (als beispiel) delegates und structs, die es in java nicht gibt und dadurch das leben unglaublich schwer machen........
    malloc: *** vm_allocate(size=1665622016) failed (error code=3)
  • Jens schrieb:

    Vor allem gibt es Gross- und Kleinschreibung bei Obj-C.
    In unserer Sprache übrigens auch!

    *SCNR*

    meno schrieb:

    um mal zum thema zurückzukommen.
    meiner meinung nach ist c# die schönste aller programmier sprachen. sie hat alle wichtigen features die mir bisher so unter gekommen sind.
    wenn man jetzt zB c# mal mit java vergleicht, hat c# (als beispiel) delegates und structs, die es in java nicht gibt und dadurch das leben unglaublich schwer machen........


    wennIchSoSchreibenWuerdeWaereDasAuchBerechtigt
  • Thallius schrieb:

    Ich finde es eigentlich Schade, daß überhaupt Hochsprachen entwickelt wurden. Das Assembler Programmieren damals war die lustigste Zeit. Und wenn man sich überlegt wie schnell ein heutiger Computer wäre, wenn alles komplett in Assembler programmiert wäre...

    Mein erster Computer [1] hatte nicht mal einen Assembler :)

    Da konnte man die Adresse und Daten auf Kippschaltern einstellen und auf einen Knopf drücken. Dann wurde das Byte an der angegebenen Adresse in den Speicher geschrieben. Und den Assembler hat man selbst gemacht, indem man in die Befehlsliste geguckt hat. Da der Rechner gerade mal 1024 Byte Speicher hatte, war das tatsächlich von Hand machbar :)

    Thallius schrieb:

    P.S. Bitte nicht so ernst nehmen, aber es war schon eine schöne Zeit damals in den Anfängen, als man noch bei jedem Bit wußte wozu es da ist und wofür man es braucht...

    Da hat man die Bits sogar noch gespürt (an den Fingern).

    -- hns

    [1]: de.wikipedia.org/wiki/National…C/MP#Einplatinen-Computer