Swift programming language



  • Interessante neue Entwicklung oder alter Wein in neuen Schläuchen?

    https://developer.apple.com/swift/



  • Halt ein C#/Java für Mac um mit elegantem Code Overflächen zu entwickeln. Gefällt mir auf den ersten Blick besser als Java und C#. Besser als Objective-C ist es allemal, kann sein, dass es sich auf dem Mac durchsetzt.

    C++ macht es momentan noch keine Konkurrenz, weil platformabhängig und weniger Low-level-Kontrolle (Memory-Refcounting, Generics statt Templates, etc.).

    Ob es von den Java-Programmierern angenommen wird, wird sich zeigen, Reflection fehlt und das lässt sich kaum ändern.

    Apple hat im Gegensatz zu Google (Android) eingesehen, dass auf Kleinstgeräten besser native Code mit deterministischen Destruktoren läuft statt Bytecodeinterpretern mit GC.



  • Warum muss jeder Hersteller immer seine eigene Sprache entwickeln? 🙄



  • Ich muss sagen, dass ich selbst als Opensource-Fan und Linux-Benutzer das Apple-Ecosystem zunehmend schmackhafter finde. Da kommt mir Android mit Java wie Steinzeit vor.
    Hoffe, Swift wird es bald auch für andere Plattformen geben.

    Gruß,
    IBV



  • scrontch schrieb:

    Warum muss jeder Hersteller immer seine eigene Sprache entwickeln? 🙄

    Vendor-Lockin?



  • Swift sieht nett aus. Aber so richtig abgrenzen kann es sich nicht von anderen Sprachen. Es ist quasi C# mit ARC (automatic reference counting) statt dem, was man heutzutage unter Garbage Collection versteht. Immerhin werden so die Destruktoren deterministisch aufgerufen.

    Wie das mit den Generics jetzt genau übersetzt wird, weiß ich nicht. Ist damit "zero-cost abstraction" möglich? Also: Läuft das zwangsweise über Laufzeitpolymorhie mit Boxing von Structs für Protocols (so wie für structs in C# bei interfaces) oder gibt's da "echte Compilezeit-Polymorphie", wo spezielle Funktionen zur Compilezeit generiert werden, wobei der Compiler dann Typparameter-abhängige Funktionen direkt aufrufen/inlinen kann? Das wär natürlich cool. Und wenn nicht, frag' ich mich wirklich, wozu sie "yet another language" gebaut haben.

    Wenn jemand hier Swift ausprobieren will, soll er oder sie doch bitte mal versuchen, mit einer "unowned"-Referenz einen baumelnden Zeiger zu bauen. Würde mich interessieren, ob so ein Versuch vom Typsystem bzw Compiler abgefangen werden kann. Das scheint mir nämlich die unsichere Variakte einer Weak-Referenz zu sein.



  • Tyrdal schrieb:

    scrontch schrieb:

    Warum muss jeder Hersteller immer seine eigene Sprache entwickeln? 🙄

    Vendor-Lockin?

    Die Idee kam mir auch. Speziell bei Apple. Ist ja nicht die erste becknackte Sprache die ausserhalb der Apple-Welt kein Mensch verwendet.
    Vielleicht war es mit Objective-C++ zu einfach so zu programmieren dass man den Code dann schnell auf andere Systeme portieren kann?



  • kkaw schrieb:

    bitte mal versuchen, mit einer "unowned"-Referenz einen baumelnden Zeiger zu bauen. Würde mich interessieren, ob so ein Versuch vom Typsystem bzw Compiler abgefangen werden kann. Das scheint mir nämlich die unsichere Variakte einer Weak-Referenz zu sein.

    ...

    Apple schrieb:

    Note also that Swift guarantees your app will crash if you try to access an unowned reference after the instance it references is deallocated. You will never encounter unexpected behavior in this situation. Your app will always crash reliably, although you should, of course, prevent it from doing so.

    Finde ich total ausreichend.
    Und impliziert natürlich auch dass die Sprache solche Fälle nicht grundsätzlich unmöglich machen kann.



  • Der grösste Fehler von Apple ist, die Sprache nicht zu opensourcen.



  • bsd schrieb:

    Der grösste Fehler von Apple ist, die Sprache nicht zu opensourcen.

    Was genau soll das bei Sprachen bedeuten? Meinst Du eine OSS-Veroeffentlichung der Referenzimplementierung des Compilers oder der Standardbibliothek? Ich meine, auch im C++ Umfeld ist nicht jeder Compiler Open Source. Die Sprachspezifikation wird sicherlich oeffentlich erhaeltlich sein.



  • hustbaer schrieb:

    Apple schrieb:

    Note also that Swift guarantees your app will crash if you try to access an unowned reference after the instance it references is deallocated. You will never encounter unexpected behavior in this situation. Your app will always crash reliably, although you should, of course, prevent it from doing so.

    Finde ich total ausreichend.
    Und impliziert natürlich auch dass die Sprache solche Fälle nicht grundsätzlich unmöglich machen kann.

    Ah, das hatte ich übersehen. Danke für das Zitat. Jetzt frag ich mich aber, wie sie dieses Verhalten garantieren wollen und was das für einen Overhead bedeutet. Der Overhead müsste ja kleiner als bei einer Weak-Referenz sein; denn sonst verstehe ich den Sinn von unowned-Referenzen nicht. Aber warum sollte man die jetzt verwenden, wo es doch schon Weak-Referenzen gibt? Der Unterschied bzgl Laufzeitkosten dürfte doch nur ein Tropfen auf 'nem heißen Stein sein. Vielleicht sind's ja untenrum doch nur Weak-Referenzen und der Unterschied ist nur ein semantischer. Man muss die unowned-Dinger ja auch nicht mehr auf nil testen.

    Hmmm ... also rein vom Sprachdesign her, find' ich Rust doch interessanter.



  • Ich bin sehr erstaunt über den Zeitpunkt, an welchem Swift vorgestellt wurde. Objective-C verzeichnet über die grössten Zuwachsraten überhaupt, Performance ist kein Problem, da jeder erfahrene Programmierer damit weiss, wann er in C und wann in Objective-C programmieren muss. Das Thema Memory-Management wurde brauchbar gelöst und es existiert eine riesige, gut dokumentierte Code Base.

    Swift passt hier irgendwie nicht rein. Ich habe die ersten 200 Seiten aus dem veröffentlichten iBook gelesen gestern und ich muss sagen, Swift sieht eher aus wie eine Skriptsprache und nicht wie eine Sprache von strategischer Bedeutung (wie eben etwa Java oder Objective-C). Ich weiss auch nicht, ob die Samples extra komisch gewählt wurden, aber wenn ich Sachen sehe wie hier:

    The Swift Programming Language. schrieb:

    if let name = optionalName {
        greeting = "Hello, \(name)"
    }
    

    Ich finde das nicht wirklich schön. Die Grenzen zwischen Sprache und Library/Framework sind verwischt, was ich persönlich für gefährlich halte wenn man eine neue Sprache designed, welche das gesamte Spektrum abdecken soll. Aber ja, ich werde mir Xcode 6 mal installieren und das alles in Ruhe anschauen, vielleicht ist es ja nicht so schlimm...



  • Ich persönlich finde es gut, dass man so langsam weg von Programmiersprachen kommt, die 1. fehleranfällig 2. Boilerplate-Code erzeugen 3. Sehr gute Konzepte/Errungenschaften, die Jahrzehnte alt sind, teils komplett ignorieren (damit meine ich die aus der funktionalen Programmierung).

    Ne, ich bin kein Fan von C, C++, Java etc.
    Scala, rust, Swift etc., die die Stärken aus der OO- und der funktionalen Welt verbinden, sprechen mich deutlich mehr an.
    Klar, Java 8 bietet nun auch lambda-Ausdrücke, C++11 auch, aber Konzepte, die man im Nachhinein einbaut, wirken halbgar als wenn sie von Anfang an so konzeptioniert sind. Außerdem ist der Punkt "Sicherheit" noch gar nicht damit abgedeckt. Der Punkt Boilerplate-Code auch nur bedingt.

    Grub,
    IBV



  • /rant/ schrieb:

    Swift sieht eher aus wie eine Skriptsprache und nicht wie eine Sprache von strategischer Bedeutung (wie eben etwa Java oder Objective-C).

    Ich weiss nicht, was dich daran stört, wenn es nach Skriptsprache ausschaut, aber Swift wird auf jeden Fall statisch kompiliert, also direkte Nachteile hat das nicht.

    Ich weiss auch nicht, ob die Samples extra komisch gewählt wurden, aber wenn ich Sachen sehe wie hier:
    [quote="The Swift Programming Language."]

    if let name = optionalName {
        greeting = "Hello, \(name)"
    }
    

    Ich finde das nicht wirklich schön. Die Grenzen zwischen Sprache und Library/Framework sind verwischt, was ich persönlich für gefährlich halte wenn man eine neue Sprache designed, welche das gesamte Spektrum abdecken soll.

    Das erste Feature gibt es auch in C++:

    if (std::ifstream in{"file.txt"})
      // in has been sucessfully opened
    

    Das zweite Feature finde ich persönlich wirlich nützlich. Dieses Feature hat sich in Python bereits bewährt und in C++ vermisse ich es andauernd. Mit den iostreams etwas auszugeben ist obermühsam und sehr bloated.



  • https://github.com/trending?l=swift

    Gibt immerhin schon ein paar GitHub-Projekte in Swift wo man sich das Ganze mal ansehen kann. Fehlt nur scheinbar noch Syntax Highlightning dazu.

    Was ich persönlich an Swift mag ist die Tatsache, dass die Syntax nicht mehr an Smalltalk orientiert ist. Keine Ahnung, Objective C sieht einfach komisch aus - wenn man mehr damit arbeitet, siehts sicher "besser für einen aus", aber als "hin und wieder Beschäftigung" siehts komisch aus.

    Ich bin mir aber auch nicht sicher, ob man noch eine Programmiersprache gebraucht hat. Bin auf Herbst gespannt, dann seh ich mir das ganze mal selbst an...



  • Obj-C ist doch sehr ekelig, oder? Wenn die jetzt davon weg wollen, ist das ein Segen für die Apple-Jünger.

    Schade nur, das sie etwas neues gemacht haben. Sie hätten sich z.B. an D oder Xamarin wenden können.

    Die Apple-Jünger werden aber natürlich Swift benutzen. Ich finde es nicht schlimm, wenn sie nicht den Anspruch haben, auf andere Plattformen zu portieren. Es ist aber doch ein Aufwand wieder eine komplett neue Sprache zu lernen.



  • Ich kann nicht wirklich Objective-C, aber ekelhaft find ichs nicht unbedingt. Es ist gewöhnungsbedürftig, aber zumindest irgendwie interessant. Swift gefällt mir auf den ersten Blick nicht so wirklich. Das wirkt wirklich wie eine Scriptsprache, mit der ich vielleicht mal ein 200 Zeilen Script schreibe, aber kein Projekt mit mehreren zehnntausend Zeilen angehen würde.



  • Mechanics schrieb:

    Das wirkt wirklich wie eine Scriptsprache, mit der ich vielleicht mal ein 200 Zeilen Script schreibe, aber kein Projekt mit mehreren zehnntausend Zeilen angehen würde.

    Ahja. Was vermisst du denn an Swift? Gibt es etwas, was man mit Objective-C machen kann, aber nicht mit Swift? Ist Objective-C eleganter? Kompakter? Mächtiger? Performanter? Die Fragen muss man eher gegenteilig beantworten.

    Gruß,
    IBV



  • Vielleicht. Aber ich mag die Syntax einfach nicht, und viel mehr wollte ich damit auch nicht sagen. Ich mags nicht, dass Objective-C gleich schlechtgeredet wird und Swift als etwas ganz tolles neue präsentiert wird, worauf die Welt gewartet hat.



  • Mechanics schrieb:

    Vielleicht. Aber ich mag die Syntax einfach nicht, und viel mehr wollte ich damit auch nicht sagen. Ich mags nicht, dass Objective-C gleich schlechtgeredet wird und Swift als etwas ganz tolles neue präsentiert wird, worauf die Welt gewartet hat.

    Also hast du nichts mit substanz zu sagen.

    Objective-C war schon immer scheiße - das ist nicht ein neuer Trend es "schlecht" zu reden. Wenn man es nicht verwenden müsste, würde es Niemand benutzen.


Log in to reply