Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?

Swift 3: Offizielle Preview mit zahlreichen Änderungen

Nachdem im vergangenen Monat bereits kurzzeitig eine vermeintliche Preview von Swift 3 bei GitHub aufgetaucht war, folgte mit der gestrigen WWDC-Keynote von Apple die offizielle Veröffentlichung der aktualisierten Programmiersprache. Mit Swift 3 werden zahlreiche Änderungen vorgenommen, die nahezu jeden Quelltext betreffen werden.

Viele C-typische Schreibweisen wurden entfernt und auch Objective-C-typische Eigenheiten stärker aus Swift herausgelöst. Damit ist grundsätzlich immer noch die Kombination von Swift 3 und Objective-C in einem Projekt möglich, doch erfordert dies zukünftig eine genauere oder andere Formulierung, um Verwirrungen mit anderen Sprachen zu vermeiden.


Nachfolgend einige der wesentlichen Änderungen, die mit Swift 3 erfolgen und sehr wahrscheinlich Änderungen am Quelltext erforderlich machen:

  • Namensänderungen im Framework auf Grundlage neuer API-Regeln
  • Statt C-Schleifen nur noch Python/Ruby-ähnliche Schleifen
  • Kurzoperatoren ++ / -- entfernt
  • Rekursive Array-Funktionen (Currying Functions) geändert
  • Attribut-Parameter analog zu Funktionsparameter mit : statt =
  • inout bei Funktionsparametern an anderer Stelle
  • var bei Funktionsparametern nicht mehr erlaubt

Darüber hinaus gibt es aber auch viele Erweiterungen, darunter:
  • Generics mit Type-Alias
  • Mehrere Bedingungen in switch-case-Konstrukten
  • Konvertierung von Objective-C-Konstanten als Enums
  • Konvertierung von Objective-C-Typen als Generics

Weiterführende Links:

Kommentare

gritsch14.06.16 10:18
"nan" ist ja auch viel verständlicher als "NaN" (welches wohl in jeder anderen Programmiersprache verwendet wird)...

https://de.wikipedia.org/wiki/NaN

wer denkt sich bloß solch einen mist für Swift aus?
0
dan@mac
dan@mac14.06.16 10:42
gritsch
wer denkt sich bloß solch einen mist für Swift aus?
Ja schade, dass du nicht an Swift beteiligt bist, sonst wäre die Welt noch in Ordnung.
0
gritsch14.06.16 10:46
dan@mac
gritsch
wer denkt sich bloß solch einen mist für Swift aus?
Ja schade, dass du nicht an Swift beteiligt bist, sonst wäre die Welt noch in Ordnung.

Zumindest wäre NaN noch NaN und nicht nan! (ich könnte mich ja beteiligen, aber solange ich nicht entscheiden kann nützt der Welt das nichts... )
0
PaulMuadDib14.06.16 11:32
Swift ist dein persönliches Feindbild, oder?
0
gritsch14.06.16 11:40
PaulMuadDib
Swift ist dein persönliches Feindbild, oder?

Nö, ich schau mir nur die Entwicklung an, muss aber immer wieder den Kopf schütteln wenn ich sowas sehe. Warum muss es "nan" sein wenn die ganze Entwicklerwelt NaN verwendet und auch swift bisher NaN verwendet hat. Da muss wohl jemand einen krankhaften Drang haben alles "kaputtzuoptimieren"...
0
Raziel114.06.16 12:24
nimm doch einfach an der Entwicklung teil? ist ja immerhin openSource. Könnte ja sein das die ganzen Entwickler etc sich was dabei gedacht haben...
0
gritsch14.06.16 12:37
Raziel1
nimm doch einfach an der Entwicklung teil? ist ja immerhin openSource. Könnte ja sein das die ganzen Entwickler etc sich was dabei gedacht haben...

Das problem ist dass "die ganzen entwickler" teilnehmen und denken können was sie wollen. entschieden wird dann bei apple und das von einem ganz kleinen personenkreis und wenn da einer meint dass nan sich schneller tippt als NaN dann wird das auf biegen und brechen durchgesetzt. Egal ob es sinnvoll oder eher doch komplett sinnlos oder gar schädlich ist!
0
Weia
Weia14.06.16 15:24
PaulMuadDib
Swift ist dein persönliches Feindbild, oder?
An Swift kann man ja aber eigentlich auch nur verzweifeln …
“I don’t care” is such an easy lie. (The Warning, “Satisfied”)
0
vadderabraham14.06.16 18:41
Das Ganze hat schon Sinn und Verstand. Das Ding ist, wer nicht bereit ist von gewohnten Schreibweisen abzuweichen, weil er jahrelang OBJC gecoded hat, wird es schwer haben. Die neuen Generationen an Codern und die flexiblen Alt-Coder kratzt es nicht. Man sollte sich also selbst an die Nase fassen und für sich entscheiden ob man auf dem alten Zug bleibt (der irgendwann in Rente geht) oder sich auf den neuen einlässt. Ewig rummosern nützt in erster Linie mal nichts. Apple wird das durchziehen. Mitmachen oder es lassen, mehr Auswahl habt ihr nicht!
0
PaulMuadDib14.06.16 18:59
Weia
An Swift kann man ja aber eigentlich auch nur verzweifeln …
Nö. Ich nicht. Warum auch? Endlich mal was neues.
0
Weia
Weia14.06.16 19:00
vadderabraham
Das Ganze hat schon Sinn und Verstand.
Hat es eben nicht, das ist ja mein Problem. Swift ist ein zusammengewürfelter Gemischtwarenladen aus Syntax-Versatzstücken jüngst angesagter Programmiersprachen ohne jede semantische Konsistenz, weit, weit weg von der konzeptuellen Stringenz von Smalltalk.

Und wie man auf einem Unix-System ohne C auskommen soll, ist mir auch ein Rätsel.

Gegen Neues als solches habe ich überhaupt nix. Es sollte halt gut sein. Mitmachen hingegen finde ich einen geradezu angsteinflößenden Wert …
“I don’t care” is such an easy lie. (The Warning, “Satisfied”)
0
Weia
Weia14.06.16 19:02
PaulMuadDib
Weia
An Swift kann man ja aber eigentlich auch nur verzweifeln …
Nö. Ich nicht. Warum auch? Endlich mal was neues.
Und neu ist gut, weil …?
“I don’t care” is such an easy lie. (The Warning, “Satisfied”)
0
PaulMuadDib14.06.16 20:05
Weil es immer gut ist, sich neues Wissen anzueignen. Im Gegensatz zu dir, denke ich das sich die Entwickler sehr genau was dabei gedacht haben. Mir viel es jedenfalls außerordentlich leicht, damit zurecht zu kommen.
0
Weia
Weia14.06.16 21:30
PaulMuadDib
Im Gegensatz zu dir, denke ich das sich die Entwickler sehr genau was dabei gedacht haben.
Klar haben sie sich was dabei gedacht. Aus meiner Sicht halt leider genau das Falsche.

Drei klare Ziele waren:
  • Leichter Einstieg für Entwickler, die von den augenblicklichen „Modesprachen“ kommen, also viel Syntax von denen übernehmen, egal wie unausgegoren die ist
  • Einschränkung der Sprachmächtigkeit (z.B. keine Zeiger), um auch Dummies zu ermöglichen, Programme zu erstellen, die nicht crashen
  • C loswerden

Mit allen drei Zielvorgaben stimme ich entschieden nicht überein, jedenfalls, wenn Swift Objective-C ersetzen und nicht nur ergänzen soll.
“I don’t care” is such an easy lie. (The Warning, “Satisfied”)
0
PaulMuadDib15.06.16 08:47
Ok. Weia und Swift werden dann wohl nie Freunde
0
aragorn15.06.16 09:41
sehr wahrscheinlich Änderungen am Quelltext erforderlich machen:

Hmm, ein Swift-Projekt hier:

Übersetzung mit Xcode 7: 0 errors, 0 warnings
mit Xcode 8: 358 errors und warnings. Der Migrationsassistent erzeugt teilweise Code, der sich nicht übersetzen lässt.

Also, lasst mal das "sehr wahrscheinlich" weg.
0
gritsch15.06.16 10:04
vadderabraham
Das Ganze hat schon Sinn und Verstand. Das Ding ist, wer nicht bereit ist von gewohnten Schreibweisen abzuweichen, weil er jahrelang OBJC gecoded hat, wird es schwer haben.

Das hat nichts mit Obj-C zu tun denn JEDE verdammte programmiersprache dieser welt verwendet NaN und hat swift bisher ja auch gemacht. Und jetzt muss das plötzlich "nan" werden mit der begründung dass man "nan" schneller tippt als "NaN" oder was?
0
Weia
Weia15.06.16 10:14
gritsch
Und jetzt muss das plötzlich "nan" werden mit der begründung dass man "nan" schneller tippt als "NaN" oder was?
Generell ist ja Swift von dem, was Objective-C-Hasser Geschwätzigkeit nannten, zu dem zurückgekehrt, was Objective-C-Freunde als AbKüFi aus unseligen 8-Zeichen-Dateinamen-Zeiten empfanden.

Jetzt haben wir wieder so Sachen wie var und let. (Ich weiß bis heute nicht, was Letzteres abkürzen soll – kann mir da jemand auf die Sprünge helfen?)
“I don’t care” is such an easy lie. (The Warning, “Satisfied”)
0
gritsch15.06.16 10:24
Ich denke let a = 1; soll für sowas wie "belasse a bei 1;" stehen.
0
PaulMuadDib15.06.16 11:52
Es werde Licht!
0
Weia
Weia16.06.16 00:12
gritsch
Ich denke let a = 1; soll für sowas wie "belasse a bei 1;" stehen.
Ja, das wäre auch mein Erklärungsversuch.

Dann wäre der eine Typ (var, das ja wohl klar variable heißen soll) ein Substantiv, der alternative Typ (let) hingegen ein Verb.

Das und die Tatsache, dass wir darüber rätseln müssen, ist für mich eine Miniatur, die bezeichnend ist für die intellektuelle Stringenz von Swift. ( PaulMuadDib: es sind bloß Namen, schon klar, aber auch da könnte man ja Klarheit walten lassen, und wenn selbst da bereits von den Autoren wirr gedacht wird … )
“I don’t care” is such an easy lie. (The Warning, “Satisfied”)
0
PaulMuadDib16.06.16 08:34
Also ich musste nicht eine Sekunde darüber Rätseln. Im Ernst. Stand ja auch in der Doku. Aber das ich Swift-Kompatibel bin war mir nach einer Stunde, als anfing damit zu beschäftigen, klar.
0
Weia
Weia16.06.16 08:41
PaulMuadDib
Also ich musste nicht eine Sekunde darüber Rätseln. Im Ernst. Stand ja auch in der Doku.
Worüber musstest Du nicht rätseln bzw. was stand in der Doku? Dass let statische Variablen bezeichnet? Ja, das ist mir schon auch klar.

Aber stand da auch die Etymologie? Die ist mein Problem, und die habe ich nirgendwo gefunden. Falls die auch in der Doku steht, wäre ich für einen genauen Verweis dankbar.
“I don’t care” is such an easy lie. (The Warning, “Satisfied”)
0
PaulMuadDib16.06.16 12:01
Du machst Dir irgendwie zu viel Gedanken, über, meiner Meinung nach, nicht so wichtige Dinge.
Keine Ahnung wo das her kommt. Nie drüber nachgedacht.
0
Weia
Weia16.06.16 23:40
PaulMuadDib
Du machst Dir irgendwie zu viel Gedanken, über, meiner Meinung nach, nicht so wichtige Dinge.
Ich gestehe Dir gerne zu, dass wir da unterschiedlich „ticken“ und mir sprachliche Präzision um ihrer selbst willen ein Wert ist, mehr, als das vielleicht pragmatische gerechtfertigt wäre (wie bei der Groß-/Kleinschreibung auch).

Wenn es bei der linguistischen Unschärfe von var vs. let bliebe, könnte ich diesem Deinem Pragmatismus vielleicht zustimmen. Aber es bleibt eben nicht dabei. Diese mangelnde gedankliche Präzision zieht sich durch Swift wie ein roter Faden.

Ein anderes Beispiel:

In der Arithmetik verwenden wir auch im westlichen Kulturkreis die arabische Schreibrichtung von rechts nach links:
y = ax + b 
Das Resultat steht links, die Ausgangssituation rechts.

In der formalen Logik hingegen schreiben wir wie sonst im Westen auch von links nach rechts:
A⊂B ⋀ B⊂C ⇒ A⊂C
Die Ausgangssituation steht links, das Resultat rechts.

Das ist zwar seltsam, aber historisch natürlich gut zu erklären (das arithmetische Kalkül haben wir aus der arabischen Welt übernommen (samt den Ziffern), die formale Logik hingegen aus der griechischen Antike), und da Logik und Arithmetik klar getrennt sind, funktioniert das im Alltag auch ohne große Probleme.

Die „klassischen“ Programmiersprachen (jedenfalls die, die ich kenne) haben allesamt die arithmetisch-arabische Schreibweise übernommen, was angesichts der Tatsache, dass Computer „Rechner“ sind, ja auch Sinn ergibt:
float function(float parameter);
float result = function(parameter);

Swift hingegen bringt das bemerkenswerte Kunststück fertig, die Funktionsdefinition westlich zu schreiben und den resultierenden Funktionsaufruf arabisch:
func function(_ parameter: Float) -> Float
var result = function(parameter)
1. Zeile: Resultat rechts
2. Zeile: Resultat links

Wie zum Teufel kommt man auf eine derart hirnrissige Idee? Hier entwickelt offenkundig jemand ohne jedes linguistisches Gespür eine Programmiersprache.

Ja, klar, man kann auch das irgendwie verdauen und pragmatisch damit umgehen. Nur: warum??? Diese Inkonsistenz ist so komplett unnötig, man hätte es ebenso gut konsistent machen können. Und je mehr derartiger Fehlkonstruktionen aufeinandertreffen, desto wahrscheinlicher wird halt auch, dass es zu Verwirrungen kommt, die nicht dann mehr trivial sind.

Mein Hauptpunkt ist aber: Wenn jemand schon derart unfähig ist, eine konsistente Syntax zu konstruieren, wie wahrscheinlich ist dann, dass die Implementation der Sprache rundum gelingt?
“I don’t care” is such an easy lie. (The Warning, “Satisfied”)
0
PaulMuadDib17.06.16 11:12
Und genau das ist mir völlig Latte. Vielleicht ändert es sich noch. So richtig fertig ist Swift ja nicht.
0
Weia
Weia17.06.16 14:56
PaulMuadDib
Und genau das ist mir völlig Latte.
Dir ist völlig Latte, dass Swift von Leuten fabriziert wird, die offensichtlich Schwierigkeiten mit stringentem Denken haben?

Außerdem, wie merkst Du dir eigentlich Dinge? Ich merke mir Dinge am besten, indem ich sie verstehe. Und das ist schwierig, wenn es nichts zu verstehen gibt.
“I don’t care” is such an easy lie. (The Warning, “Satisfied”)
0
PaulMuadDib19.06.16 08:03
Tja, und während du grübelst warum jetzt unbedingt "let" verwendet wird, habe ich das erste Programm damit geschrieben ...
0
Weia
Weia19.06.16 08:20
PaulMuadDib
Tja, und während du grübelst warum jetzt unbedingt "let" verwendet wird, habe ich das erste Programm damit geschrieben ...
… was aber nicht sehr komplex ist. Und was, wenn Du 3 Jahre an einem sehr komplexen Programm arbeitest und dann feststellen musst, dass sich die Inkonsistenzen von Swift akkumulieren und dieser Komplexität am Ende nicht mehr gewachsen sind?

Kurz: Ich kann nicht verstehen, wie man einer Sprache Vertrauen schenken kann, die gleich auf den ersten Blick nicht konsistent gebaut ist. Dass Du schnell ein kleines Progrämmchen damit zimmern kannst, geschenkt …

Und noch ein zweiter Punkt: Du propagierst die pragmatische Herangehensweise; auf Hardware-Ebene entspräche das einer zusammengepfrimelten Kiste, die aber läuft, wie sie soll.

Wir wissen beide (vermute ich), dass Steve Jobs hingegen darauf bestand, dass selbst Teile der Hardware, die nie jemand zu Gesicht bekommt, ästhetischen Ansprüchen genügen, von denen, die alle sehen, ganz zu schweigen. Das entspräche eher meiner Herangehensweise.

Sicher ist Deine pragmatische Herangehensweise legitim. Nur dass sie hier ausgerechnet von Apple kommt, ist ein eklatanter Bruch mit dem, was Apple ehemals ausgemacht hat.

Ich weiß aus erster Hand, dass Steve Jobs die intellektuelle Brillanz von Objective-C geliebt hat. Insofern kann ich hier mit großer Bestimmtheit den abgenudelten Spruch anbringen: Unter Steve Jobs hätte es Swift so nicht gegeben. :'(

Das mag Dir egal sein, mir ist es halt nicht egal.
“I don’t care” is such an easy lie. (The Warning, “Satisfied”)
0

Kommentieren

Sie müssen sich einloggen, um die News kommentieren zu können.