Swift

  • gritsch schrieb:

    ich frag mich aber warum apple als eines der größten vorteile die 4-fache geschwindigkeit zu obj-c nennt (zeitkritische parts macht man ja eh nicht in obj-c wenn das der flaschenhals ist).

    Wo die den wohl rausgeholt haben?

    Wobei sich ja der Faktor 4 auf den Vergleich Swift vs. Python bezieht. Swift zu Objective-C liegt er bei nur 1,3. Vermutlich haben die am Dispatching geschraubt, was ja bei einem Complex object sort nicht unerheblich ins Gewicht fallen dürfte.
    „Meine Komplikation hatte eine Komplikation.“
  • Amin Negm-Awad schrieb:

    Bei dieser ganzen Diskussion: Wer hatte denn schon einmal einen Typfehler zur Laufzeit? Eine Instanz falscher Klasse im Array? Mir passiert irgendwie so etwas nie.


    Nur als Folge eines Speicherproblems: Wenn an der Stelle des Objekts vor dem Hinzufügen zu einem Array das ursprüngliche Objekt freigegeben wurde und zufällig ein anderes dort Platz genommen hat. Ist aber eigentlich kein Typfehler sondern ein Folgefehler, insofern gebe ich Dir Recht.

    schönen Gruß

    Gandhi
  • gandhi schrieb:

    Amin Negm-Awad schrieb:

    Bei dieser ganzen Diskussion: Wer hatte denn schon einmal einen Typfehler zur Laufzeit? Eine Instanz falscher Klasse im Array? Mir passiert irgendwie so etwas nie.


    Nur als Folge eines Speicherproblems: Wenn an der Stelle des Objekts vor dem Hinzufügen zu einem Array das ursprüngliche Objekt freigegeben wurde und zufällig ein anderes dort Platz genommen hat. Ist aber eigentlich kein Typfehler sondern ein Folgefehler, insofern gebe ich Dir Recht.

    schönen Gruß

    Gandhi
    Ebendt(tm)

    Mich erinnert das an die Typsicherheitspanik von Java- und C++-Programmierern (aka Pippimädchen). Meist tut es dann doch irgendwann weh. Und dann kommst in die Tretmühle von richtiger Typisierung von Generics, anständige Fehlermeldungen bei Typisierungsfehlern usw. usf. Es macht eine einfache und praktisch ungefährliche Sache kompliziert und theoretisch ungefährlich.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Chris schrieb:

    Auf der Xcode Mailingliste hört sich das nicht nach wegschmeissen an. prod.lists.apple.com/archives/…rs/2014/Jun/msg00024.html
    Ausserdem hängen in der vorhandenen Software jede Menge Investitionen. Ich glaub nicht dass MS ihr Office neu schreibt bloss weil es kein ObjC mehr gibt.

    Chris

    Aus dem Link:
    -Chris

    Ich sage es mal so: Selbstzitate sind doof. :-]
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • macmoonshine schrieb:

    gritsch schrieb:

    ich frag mich aber warum apple als eines der größten vorteile die 4-fache geschwindigkeit zu obj-c nennt (zeitkritische parts macht man ja eh nicht in obj-c wenn das der flaschenhals ist).

    Wo die den wohl rausgeholt haben?

    Wobei sich ja der Faktor 4 auf den Vergleich Swift vs. Python bezieht. Swift zu Objective-C liegt er bei nur 1,3. Vermutlich haben die am Dispatching geschraubt, was ja bei einem Complex object sort nicht unerheblich ins Gewicht fallen dürfte.
    Genau, der Unterschied war gering. Und wenn man sieht, dass die nicht so ganz alltägliche Beispiele gewählt haben, dann dürfte man fast sicher davon ausgehen, dass die Beispiele gewählt haben, bei denen Swift wirklich einen Vorteil hat. 1,3 ist also wohl der Best-Case. Dann bin ich eher gespannt, ob 1,0 der Average-Case ist. Was haben wir alles für Performanceversprechungen bei GC bekommen …

    Vielleicht bezieht sich swift ja nicht auf die Ausführungsgeschwindigkeit, sondern auf die Lebensdauer. Affwaade.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • macmoonshine schrieb:

    Amin Negm-Awad schrieb:

    Na, ja, diegibt es eben offensichtlich nicht. Aber bei const hätte man doch leicht den Eindruck., dass const var … ginge.

    Wobei ja eine konstante Variable oder variable Konstante irgendwie etwas Widersprüchliches hat. ;)
    Na, ja, in C ja irgendwie nicht. Mag so ein weiterer Grund gewesen sein, C loswerden zu wollen. Bloß: Wenn juckt so etwas? Dafür lerne ich keine neue Programmiersprache. Für die bessere Behandlung von Closures aber schon, :)
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:

    macmoonshine schrieb:

    gritsch schrieb:

    ich frag mich aber warum apple als eines der größten vorteile die 4-fache geschwindigkeit zu obj-c nennt (zeitkritische parts macht man ja eh nicht in obj-c wenn das der flaschenhals ist).

    Wo die den wohl rausgeholt haben?

    Wobei sich ja der Faktor 4 auf den Vergleich Swift vs. Python bezieht. Swift zu Objective-C liegt er bei nur 1,3. Vermutlich haben die am Dispatching geschraubt, was ja bei einem Complex object sort nicht unerheblich ins Gewicht fallen dürfte.
    Genau, der Unterschied war gering. Und wenn man sieht, dass die nicht so ganz alltägliche Beispiele gewählt haben, dann dürfte man fast sicher davon ausgehen, dass die Beispiele gewählt haben, bei denen Swift wirklich einen Vorteil hat. 1,3 ist also wohl der Best-Case. Dann bin ich eher gespannt, ob 1,0 der Average-Case ist. Was haben wir alles für Performanceversprechungen bei GC bekommen …

    Vielleicht bezieht sich swift ja nicht auf die Ausführungsgeschwindigkeit, sondern auf die Lebensdauer. Affwaade.

    Wahrscheinlich gibt es genau aus diesem Grund die Generics: Damit kann man sicherlich den Dispatching-Aufwand beim Sortieren oder Suchen erheblich minimieren. Im Alltag spielt das wahrscheinlich keine so entscheidende Rolle.

    Aber der Vortrag an dieser Stelle war schon geschickt gemacht. Beim Hörer bleibt erstmal nur der angebliche Faktor 4 hängen. Das nächste Mal vergleichen sie mit Shell-Skripten (ohne sort(1)), um einen Faktor 200 rauszuholen. :D
    „Meine Komplikation hatte eine Komplikation.“
  • manoh schrieb:

    hns schrieb:

    (jedesmal wenn ich Linux-Sourcen studieren und verstehen muss kommt mir das Grausen wegen der Unübersichtlichkeit - obwohl dauernd kernel-Objekte erzeugt werden und Methoden aufgerufen)


    Opensource-Code ist kostenlos und zum Teil nicht einfach zu lesen bzw. man muss sich reinarbeiten. Das ist halt so.
    Es gibt sehr viel Open-Source-Code in Objective-C und der ist sehr leicht zu lesen. D.h. es liegt nicht an Open vs. Closed. Sondern an der Programmiersprache :)
  • Amin Negm-Awad schrieb:

    gandhi schrieb:

    Amin Negm-Awad schrieb:

    Bei dieser ganzen Diskussion: Wer hatte denn schon einmal einen Typfehler zur Laufzeit? Eine Instanz falscher Klasse im Array? Mir passiert irgendwie so etwas nie.


    Nur als Folge eines Speicherproblems: Wenn an der Stelle des Objekts vor dem Hinzufügen zu einem Array das ursprüngliche Objekt freigegeben wurde und zufällig ein anderes dort Platz genommen hat. Ist aber eigentlich kein Typfehler sondern ein Folgefehler, insofern gebe ich Dir Recht.

    schönen Gruß

    Gandhi
    Ebendt(tm)

    Mich erinnert das an die Typsicherheitspanik von Java- und C++-Programmierern (aka Pippimädchen). Meist tut es dann doch irgendwann weh. Und dann kommst in die Tretmühle von richtiger Typisierung von Generics, anständige Fehlermeldungen bei Typisierungsfehlern usw. usf. Es macht eine einfache und praktisch ungefährliche Sache kompliziert und theoretisch ungefährlich.

    Och, ich hatte schon öfter Typfehler in Python oder JavaScript. Wenn ich einen generischen Algorithmus habe, nach einem Jahr nicht mehr dran denke, was der genaues macht, und bei einer der vom Algorithmus unterstützten Klassen eine Methode entferne compiliert in C++ mein Programm nichtmehr, mit genauem Hinweis auf den Grund -- in Python bekomm ich zur Laufzeit eine Exception, während ich in Objective-C "irgendwas" bekomme.
    C++
  • hns schrieb:

    ...gekürzt...
    Es gibt sehr viel Open-Source-Code in Objective-C und der ist sehr leicht zu lesen. D.h. es liegt nicht an Open vs. Closed. Sondern an der Programmiersprache :)


    Closed-Code lassen wir mal ausser acht. Da möchte man zum Teil gar ned wissen, wie das programmiert wurde bzw. womit/mit welchen Tools.

    Aber leserlich und nachvollziehbar zu programmieren mag nicht jeder, obwohl es eigentlich sehr wichtig ist. Das hängt meiner Ansicht nach nicht von der Prog.-Sprache ab, sondern an der Person selber. Natürlich ist es einfacher, wenn eine Sprache einem dazu unterstützt bzw. dazu zwingt.

    Naja, Meinungen zu leserlichen und nachvollziehbaren Code gibt es sicher einige und jeder hat seine eigene...
  • Denkt ihr denn Apple wird sich von objective-c trennen weil ich weiß jetzt nicht ob ich jetzt nicht lieber mit Swift anfangen soll oder bei objective c bleiben soll was eindeutig schöner ist und mehr Spaß macht :)
  • apple877 schrieb:

    Denkt ihr denn Apple wird sich von objective-c trennen weil ich weiß jetzt nicht ob ich jetzt nicht lieber mit Swift anfangen soll oder bei objective c bleiben soll was eindeutig schöner ist und mehr Spaß macht :)

    Wow, was für ein Satz.
    Also, ich bin da ganz parteiisch. ;) Ich hab mit Objective-C programmieren gelernt, daher.... <3 Objective-C <3 :) Aber wie das schon jemand geschrieben hat (ich glaube, es war macmoonshine), ist es egal welche Sprache du zum Programmieren-Lernen lernst. Weil, wenn du die Programmierlogik verstanden hast, kannst du auch andere Sprachen mit kleinen Aufwand erlernen.
  • Ja das stimmt schon aber ich find diese Syntax so unaufgeräumt von Swift ohne klammern wo meiner Meinung nach der Schönheit halber einfach eine hingehört, ohne semikolon und ohne header. Ich mag das mittlerweile gar nicht mehr alles in eine Datei zu schreiben das wirkt dann alles so überfüllt und das gefällt mir einfach irgendwie nicht so ganz :/
  • zerm schrieb:

    Amin Negm-Awad schrieb:

    gandhi schrieb:

    Amin Negm-Awad schrieb:

    Bei dieser ganzen Diskussion: Wer hatte denn schon einmal einen Typfehler zur Laufzeit? Eine Instanz falscher Klasse im Array? Mir passiert irgendwie so etwas nie.


    Nur als Folge eines Speicherproblems: Wenn an der Stelle des Objekts vor dem Hinzufügen zu einem Array das ursprüngliche Objekt freigegeben wurde und zufällig ein anderes dort Platz genommen hat. Ist aber eigentlich kein Typfehler sondern ein Folgefehler, insofern gebe ich Dir Recht.

    schönen Gruß

    Gandhi
    Ebendt(tm)

    Mich erinnert das an die Typsicherheitspanik von Java- und C++-Programmierern (aka Pippimädchen). Meist tut es dann doch irgendwann weh. Und dann kommst in die Tretmühle von richtiger Typisierung von Generics, anständige Fehlermeldungen bei Typisierungsfehlern usw. usf. Es macht eine einfache und praktisch ungefährliche Sache kompliziert und theoretisch ungefährlich.

    Och, ich hatte schon öfter Typfehler in Python oder JavaScript. Wenn ich einen generischen Algorithmus habe, nach einem Jahr nicht mehr dran denke, was der genaues macht, und bei einer der vom Algorithmus unterstützten Klassen eine Methode entferne compiliert in C++ mein Programm nichtmehr, mit genauem Hinweis auf den Grund -- in Python bekomm ich zur Laufzeit eine Exception, während ich in Objective-C "irgendwas" bekomme.
    Und was ist der Unterschied zwischen Compile-Time-Fehler und Laufzeitfehler während der Entwicklung? 2 Minuten? Du wirst mehr Zeit mit der "Bearbeitung" von Templates verbracht haben.

    Ich schrieb nicht umsonst "in production". Ob ich den Fehler nach einem cmd-R ein paar Sekunden später erhalte, ist mir so etwas von gleichgültig.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • apple877 schrieb:

    Ja das stimmt schon aber ich find diese Syntax so unaufgeräumt von Swift ohne klammern wo meiner Meinung nach der Schönheit halber einfach eine hingehört, ohne semikolon und ohne header. Ich mag das mittlerweile gar nicht mehr alles in eine Datei zu schreiben das wirkt dann alles so überfüllt und das gefällt mir einfach irgendwie nicht so ganz :/


    Dann mach halt Objective-C (weiter)!