• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Wir haben den Frühjahrsputz beendet, Ihr auch? Welches Foto zu dem Thema hat Euch dann am Besten gefallen? Hier geht es lang zur Abstimmung --> Klick

Magazin Swift: Apple veröffentlicht kostenloses E-Book über neue Programmiersprache

Martin Wendel

Redakteur & Moderator
AT Administration
AT Moderation
AT Redaktion
Registriert
06.04.08
Beiträge
45.142
Eine der großen Überraschungen am gestrigen Abend war die Vorstellung von Swift, einer neuen Programmiersprache für die Entwicklung von Apps unter OS X und iOS. Bei Swift handelt es sich wie bei Objective-C um eine objektorientierte Programmiersprache, jedoch wurde sie im Vergleich dazu um einiges an Ballast befreit, was eine schnellere, sauberere und effizientere Entwicklung ermöglichen soll. Um den Entwicklern die neue Programmiersprache näher zu bringen, hat Apple im iBookstore ein kostenloses E-Book veröffentlicht: “The Swift Programming Language”.[prbreak][/prbreak]

Das englischsprachige E-Book umfasst 500 Seiten und ist lediglich 1,5 Megabyte groß. Zur Nutzung wird ein iOS-Gerät mit iBooks 1.5 und iOS 4.3.3 oder neuer oder ein Mac mit iBooks 1.0 und OS X 10.9 oder neuer benötigt. Abschließend noch die Beschreibung aus dem iBookstore:

Swift is a new programming language for creating iOS and OS X apps. Swift builds on the best of C and Objective-C, without the constraints of C compatibility. Swift adopts safe programming patterns and adds modern features to make programming easier, more flexible, and more fun. Swift’s clean slate, backed by the mature and much-loved Cocoa and Cocoa Touch frameworks, is an opportunity to reimagine how software development works.

This book provides:
- A tour of the language.
- A detailed guide delving into each language feature.
- A formal reference for the language.

cover.225x225-75.jpg
Mit dem Kauf oder Download über Links in diesem Artikel unterstützt Du Apfeltalk mit einem kleinen Teil des unveränderten Kaufpreises. Um mehr über die Refinanzierung von Apfeltalk zu erfahren, klicke bitte hier.
 
  • Like
Reaktionen: ImpCaligula

vcr80

Gestreifter Böhmischer Borsdorfer
Registriert
06.11.08
Beiträge
3.396
Ich werd mich da wohl irgendwann mal drüber stürzen, sobald ich wieder Zeit hab. Vielleicht ist Swift ja für einen PHP-Programmierer besser verständlich...
 

Tobias Scholze

Apfeltalk Entwicker
AT Redaktion
Registriert
15.07.09
Beiträge
1.581
Bin gespannt bis man ganze Konstrukte von view models und co findet.
Spannend mal ganz frisch bei einer neuen, sich durchsetzenden Sprache dabei zu sein.

Grüße, Tobi
 

Suppenelse

Jonagold
Registriert
13.08.08
Beiträge
21
Ich würde das ganze tatsächlich am liebsten zum Anlass zu nehmen, mich endlich mal daran zu versuchen und eine eigene App zu programmieren. Aber wenn ich es seinerzeit richtig verstanden habe, kostet das ganze jährliche Gebühren. (100 Dollar pro Jahr? Ich find's gerade nicht mehr.) Für einen absoluten Gelegenheits-Programmierer also leider völlig uninteressant.

Oder habe ich da was falsch verstanden...?
 

Scotch

Bittenfelder Apfel
Registriert
02.12.08
Beiträge
8.055

robiv8

Oberösterreichischer Brünerling
Registriert
12.12.07
Beiträge
720
Als Neue Programmiersprache würde ich das jetzt nicht unbedingt nennen. Da es ja aus C und Objektiv-C besteht ist das auch die Vorraussetzung das man es benutzen kann.
@Suppenelse
Die 100$ bzw. ca.75€ Jährlich sind nur nötig falls du es auch Veröffentlichen willst. Erstellen und Virtuell testen kannst auch ohne Entwickler Account.
 

nightdriver

Carola
Registriert
09.08.08
Beiträge
113
Weiß jemand ob man auf Mavericks Swift bzw. das neue Xcode benutzen kann? Ein Update ist bei mir nicht verfügbar.
 

robiv8

Oberösterreichischer Brünerling
Registriert
12.12.07
Beiträge
720
Wäre ja unlogisch wenn nicht denke ich! ;)
 
Zuletzt bearbeitet:

Suppenelse

Jonagold
Registriert
13.08.08
Beiträge
21
@Suppenelse
Die 100$ bzw. ca.75€ Jährlich sind nur nötig falls du es auch Veröffentlichen willst. Erstellen und Virtuell testen kannst auch ohne Entwickler Account.

Naja - an die große Masse denke ich gewiss nicht, aber veröffentlichen wär schon praktisch. Wundert mich tatsächlich, dass es eine jährliche Gebühr kostet, eine App (an deren Verkauf Apple ja mitverdient) im Store verfügbar zu halten.
 

hillepille

Melrose
Registriert
19.07.09
Beiträge
2.508
Ich werd mich da wohl irgendwann mal drüber stürzen, .... Vielleicht ist Swift ja für einen PHP-Programmierer besser verständlich...

Mir gehts ähnlich, ich habe aber heute schon mal etwas mit Swift rumgespielt. Erinnert mich eher an Javascript als an PHP. Als PHPEntwickler habe ich den ersten richtigen Objective-C Einstieg auch erst beim dritten Anlauf gefunden. Swift sieht auf den ersten Blick verstaendlicher aus, wobei ich die reine Programmiersprache meine, die Verknüpfung zum UI kann ich nicht einschaetzen.
 

soramac

deaktivierter Benutzer
Registriert
08.08.12
Beiträge
2.367
Swift is nur in Xcode 6 erhalten, welches derzeit sich nur in der Beta befindet.
 

HiPhish

Bismarckapfel
Registriert
06.04.10
Beiträge
77
Was mich vor allem interessiert ist wie offen die Sprache sein soll. Es gibt bisher keine öffentliche Sprachspezifikationen und keine Dokumentationstools, was aber auch verständlich ist wenn die Sprache und die Technologie noch in Entwicklung sind (steht im Buch am Ende unter Trademarks). Mich interessiert das vor allem für die Zukunft: wenn ich Swift lerne werde ich auch portable Swift Programme für Linux und Windows schreiben können? Im Moment ist das ja dank GNUStep für Objective-C mit Cocoa möglich (es wird nicht alle Cocoa API unterstützt, aber die wichtigsten Sachen). Oder werde ich praktisch an Apple's Geräte gefesselt sein?

Ich habe bisher erst den halben Language Guide gelesen, und zumindest die Syntax gefällt mir schon mal. Die Frage ist noch wie es von der Performance her aussieht. Eine kompilierte Sprache mit einer interpretierten Skriptsprache wie Python zu vergleichen ist witzlos, und performancekritische Operationen in Objective-C soll man eh in C schreiben. Wie würde aber der Vergleich zum Beispiel mit C++ ausfallen? In C kann ich auch schöne "Tricks" mit Enumeratoren anstellen:
Code:
enum objects {PLAYER, ENEMY, POWER_UP, GOAL, NUMBER_OF_OBJECTS};
enum dimensions {X, Y, Z, NUMBER_OF_DIMENSIONS};

double object_positions[NUMBER_OF_OBJECTS * NUMBER_OF_DIMENSIONS] = {
    [PLAYER   * NUMBER_OF_OBJECTS + X] = 00.0,
    [PLAYER   * NUMBER_OF_OBJECTS + Y] = 00.0,
    [PLAYER   * NUMBER_OF_OBJECTS + Z] = 00.0,

    [ENEMY    * NUMBER_OF_OBJECTS + X] = 05.0,
    [ENEMY    * NUMBER_OF_OBJECTS + Y] = 13.0,
    [ENEMY    * NUMBER_OF_OBJECTS + Z] = 00.0,

    [POWER_UP * NUMBER_OF_OBJECTS + X] = 00.0,
    [POWER_UP * NUMBER_OF_OBJECTS + Y] = 50.0,
    [POWER_UP * NUMBER_OF_OBJECTS + Z] = 01.5,
};
Das ist jetzt nicht unbedingt der schönste Code, aber es ist blitzschnell: auf ein Element eines Arrays kann sehr schnell zugegriffen werden (es ist bloß Zeigerarithmetik) und weil die Koordinaten in Folge im Speicher liegen profitiert man von der Cache Line Beschleunigung. C ist eine der schnellsten höheren Programmiersprachen (vielleicht sogar die schnellste, das weiß ich nicht). Die Frage ist, werde ich so guten Code auch in Swift schreiben können? Und wenn nicht, wie gut ist die Schnittstelle zu C?

Das wird sich alles noch mit der Zeit zeigen. Ich werde mir auf jeden Fall das Buch durchlesen, eine weitere Sprache zu kennen kann nicht schaden, und dann abwarten wie sich die Sache entwickelt.

PS: das da oben kann man noch ein wenig verschönern wenn man den Präprozessor verwendet:
Code:
// Ein Praeprozessor Macro
#define OBJECT_COORDINATE(object, coordinate) (object * NUMBER_OF_OBJECTS + coordinate)

// Zugriff auf die X-Koordinate des Spielers, um 1 erhoehen:
object_positions[OBJECT_COORDINATE(PLAYER, X)] += 01.0;
Außerdem kann man auch kürzere Namen wählen anstatt sie voll auszuschreiben.
 
Zuletzt bearbeitet:

z3ro

Damasonrenette
Registriert
11.06.13
Beiträge
486
Als Neue Programmiersprache würde ich das jetzt nicht unbedingt nennen. Da es ja aus C und Objektiv-C besteht ist das auch die Vorraussetzung das man es benutzen kann.

Äääähhh, nein?

Ich würde das ganze tatsächlich am liebsten zum Anlass zu nehmen, mich endlich mal daran zu versuchen und eine eigene App zu programmieren. Aber wenn ich es seinerzeit richtig verstanden habe, kostet das ganze jährliche Gebühren. (100 Dollar pro Jahr? Ich find's gerade nicht mehr.) Für einen absoluten Gelegenheits-Programmierer also leider völlig uninteressant.
Oder habe ich da was falsch verstanden...?

Die Beta von Xcode 6 steht zurzeit nur zahlenden Entwicklern zur Verfügung. Sobald Xcode 6 im App Store verfügbar wird, kannst du dir das aber laden und natürlich auch ohne Entwickler Account mit Swift experimentieren - sobald die App in den Store soll, wird eine Zahlung aber fällig.
 

Skyee

Damasonrenette
Registriert
25.01.09
Beiträge
490
Sieht für mich sehr nach JavaScript aus. "var" und "let" gibt es zumindest schon relativ lange in JavaScript und die Art wie man Arrays erstellt und vieles andere ist auch sehr ähnlich zu JavaScript.

Vielleicht noch als Hinweis:
Apple hat eine eigene Seite für Swift erstellt https://developer.apple.com/swift/
 

z3ro

Damasonrenette
Registriert
11.06.13
Beiträge
486
In einem anderen Forum wurde es als Python mit { } bezeichnet.
 

Maytek

Riesenboiken
Registriert
13.10.11
Beiträge
288
Aber wenn ich es seinerzeit richtig verstanden habe, kostet das ganze jährliche Gebühren. (100 Dollar pro Jahr? Ich find's gerade nicht mehr.) Für einen absoluten Gelegenheits-Programmierer also leider völlig uninteressant.
Programmiere auch nur gelegentlich, konnte mit meiner ersten App aber gleich die Gebühren locker wieder rausholen. Also es kann sich schon lohnen.
 

HiPhish

Bismarckapfel
Registriert
06.04.10
Beiträge
77
Das ist auch Absicht und wurde schon mehrmals unterstrichen. Im Buch ist es sehr gut erklärt: Swift braucht nur so viel Informationen dass alles eindeutig ist. Vergleichen wir mal eine Definition in C und und Swift:
Code:
// C (und Objective-C oder C++)
int five = 5;

// Swift
let five = 5
// oder ohne Wertzuweisung
var six: Int
// ein spezielles Int
let seven: UInt8 = 7
Im ersteren Fall haben wir bereits einen Wert und five kann nichts anderes als ein Int sein (welche Art von Int genau ist unwichtig und der Implementierung überlassen). Im zweiten Fall hat der Compiler keine Ahnung was für ein Type six sein könnte, deshalb müssen wir es explizit angeben. Im dritten Fall wäre wollen wir exakte Kontrolle, und da machen wir es wie in C und geben den exakten Typ an, der nicht vom Compiler entschieden wird.

Ein wirklich extremes Beispiel ist im Buch unter Closures gezeigt. Der Code
Code:
reversed = sort(names, { (s1: String, s2: String) -> Bool in
    return s1 > s2
    })
lässt sich kürzen zu
Code:
reversed = sort(names, >)

Ich vermute was im Hintergrund passiert ist dass der Compiler gerade mal genug Informationen hat dass er den Rest zweifelsfrei herleiten kann und daraus dann den nativen Code generiert. Man muss bedenken dass C aus den 70ern stammt, und Objective-C und C++ aus den 80ern; damals waren die Compiler nicht so mächtig wie heute und die Sprachen wurden so entworfen dass es für die Compiler Bauer leichter war wenn alles ausgeschrieben wurde. Wenn explizit dasteht dass five ein int ist, dann muss der Compiler nur prüfen ob "5" ein passender Wert ist, er muss nicht erst herausfinden was "5" überhaupt sein könnte.

Was Swift tut ist nicht unbedingt neu, C++ 11 zum Beispiel ist auch in der Lage mit dem "auto" Schlüsselwort den Typen einer Variable selbst herauszufinden, und viele Optimierungsaufgaben, wie das Schlüsselwort "inline", können heute einfach vom Compiler automatisch und besser gemacht werden als von einem Menschen. Swift hat bloß die Gelegenheit genutzt eine neue Sprache zu sein und keine "Altlasten" mittragen zu müssen.
Code:
// C++ 11: der genaue Rückgabetyp von sizeof ist von der Implementierung abhängig
auto someSize = sizeof(someVar);
 
  • Like
Reaktionen: mapete und z3ro