• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Einige Blicke in fremde Welten dürft Ihr nun bestaunen und darüber abstimmen, welche davon Euch am meisten gefällt: hier geht es lang für Euer Voting --> Klick

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

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.
Im ersteren Fall kann five auch nichts anderes als 5 sein, da let eine Konstante definiert :-)

Swift ist ansonsten ganz nett und bringt viele Dinge mit, die man so von JavaScript, Python oder Ruby kennt.
 
Ich empfehle direkt mit C anzufangen. C ist sehr einfach und knapp gehalten, daher kann es sehr schell lernen und kriegt ein gutes Gefühl. Die Sprache führt einen nicht an der Hand mit Sachen die "automagisch" passieren, was zuerst abschreckend klingen mag, aber es ist gut. Dabei ist C von den Features her viel kleiner als C++ oder Objective C, daher ist es auch besser geeignet für Anfänger.

Der Nachteil von C ist aber auch dass man viele Features eben nicht eingebaut hat. Es gibt inzwischen für so ziemlich alles Bibliotheken, aber wenn man soweit ist dass man Bibliotheken braucht kann man aber auch anfangen auf eine neuere Sprache umzusteigen. Bis du soweit bist wirst du auch ungefähr ein Gefühl dafür haben was du machen willst und was dir besser gefällt. Und wenn du Objective-C lernen willst ist C praktisch Pflicht, den Objective-C ist eine Erweiterung und echte Obermenge von C.

Hier ist eine gute Liste an Literatur; ich habe selber die ersten beiden Bücher gelesen und kann sie ohne Einschränkung weiterempfehlen.
http://fabiensanglard.net/c/
Wenn du die Bücher nicht unbedingt kaufen willst solltest du sie in jeder Uni Bibliothek finden können. Oder "im Internet" wenn du verstehst ;) Die Bücher sind allerdings ziemlich alt, es hat sich seit damals noch einiges in C getan, das kannst du dann woanders nachlese. Die Informationen in den Büchern bleiben aber weiterhin gültig.
 
  • Like
Reaktionen: FantasticMacs
Da hast du glaube ich etwas falsch verstanden. LLVM kompiliert in nativen ARM Code. Schneller geht's also nicht. Es ist also relativ egal, welche Sprache du verwendest, sofern du in nativen Code kompilieren kannst.
Falsch. Der Ars Technica Artikel oben erklärt warum zum Beispiel Fortran unter bestimmten Umständen lange Zeit schneller war als C und wie man in C mit dem "restrict" Schlüsselwort Optimierungen wie in Fortran ermöglichen kann. Dabei werden beide Sprachen zu nativem Maschinencode kompiliert.

Die Syntax einer Sprache ist eigentlich unwichtig. Syntax kann man lernen, aber wie die Sprache im Inneren funktioniert ist der eigentlich Knackpunkt. Das Fortran Beispiel zeigt wie die unterschiedliche Handhabung eines Sprachfeatures wie Arrays den Compiler dazu zwingt unterschiedlichen Maschinencode zu erzeugen. In Fortran kann der Compiler bestimmte Schlussfolgerungen ziehen und entsprechend optimieren, aber in C darf er das nicht und muss entsprechend sicheren aber langsameren Code erzeugen.

Und das ist das was für Swift interessant sein wird: wie gut kann der vom Compiler erzeugte Code sein. Es bringt nicht viel wenn die Syntax schön flexibel ist, aber der Compiler dafür eine Abscheulichkeit erzeugen muss die aufpasst dass der Programmierer keinen Unsinn geschrieben hat. Das wird sich erst mit der Zeit zeigen wenn brauchbare Benchmarks verfügbar sind. Vielleicht ist Swift wirklich sehr schnell, vielleicht auch nicht, aber das können wir nicht einfach aus dem verwendeten Compiler ablesen.

EDIT: und woher hast du eigentlich dass C# zu nativem Maschinencode auf OS X kompiliert wird? Ich sehe nur dass das auf iOS der Fall ist, aber nicht bei OS X. Das Interface mag vielleicht natives Cocoa sein, aber das sagt nichts über den Kern des Programms aus, und das ist der eigentlich interessante Teil.
 
  • Like
Reaktionen: Skyee
Ich empfehle jedem, der heute anfaengt programmieren zu lernen, das mit Phyton zu machen. Die Sprache ist sehr einfach, es gibt fuer alles und jedes Bibiliotheken, um schnelle zu Ergebnissen zu kommen und man kann gut OOP-Grundlagen erlernen.
 
  • Like
Reaktionen: simmac und z3ro
Ich empfehle jedem, der heute anfaengt programmieren zu lernen, das mit Phyton zu machen. Die Sprache ist sehr einfach, es gibt fuer alles und jedes Bibiliotheken, um schnelle zu Ergebnissen zu kommen und man kann gut OOP-Grundlagen erlernen.

Das kann ich nur so unterschreiben. Python begeistert mich in vieler Hinsicht. Vor allem die Einfachheit und die schnelle Einarbeitung. Man kommt schnell zu anschaulichen Ergebnissen. Außerdem zwingt Python den Programmierer sauber einzurücken. Kann gerade am Anfang nicht schädlich sein.
Für einen Anfänger sehe ich Python als Perfekt an. Außerdem gibt es dort auch schon viele fertige Klassen etc.
 
Das wichtigste hierbei ist, das es zum einen anderen Weg geben wird als Swift zu nutzen. Objektive-C wird sterben. Das ist leider die Wahrheit.
 
Dass sie auch C ersetzen wollen, kann ich momentan noch nicht ganz glauben.
 
Schöner Artikel. Erinnert mich an viele, die ca. '90-'95 'rum über C und dann später C++ geschrieben wurden - war damals auch eine völlig unnötige Entwicklung, schliesslich gab es Fortan. Und Millionen Zeilen an Code in Bibiliotheken, die man ja hinter den Kulissen doch wieder in Fortran übersetzte, wenn man C programmierte.

Schauen wir mal in fünf Jahren in diesen thread :-)
 
  • Like
Reaktionen: z3ro
Fortran wurde für numerische und wissenschaftliche Berechnungen entwickelt (Formula Translation). C entstand speziell für die Entwicklung und Portierung von Unix. Der Einsatzzweck ist völlig unterschiedlich und die Sprachen sind darum keine Konkurrenten.

Objective-C brilliert bei Anwendungen und Frameworks, da bestehender (Framework-) Code zur Laufzeit durch Categories verändert werden kann ohne den Quellcode zu haben und ohne Subklassen bilden zu müssen.

Swift eröffnet keine neuen Anwendungsfelder. Abgesehen vom Run-Evaluate-Print-Loop (REPL), der die Playgrounds ermöglicht und auch mit anderen Sprachen machbar wäre. Swift benutzt die Application-Frameworks Cocoa und Cocoa-Touch, die in Objective-C geschrieben sind, und wäre ohne Objective-C vollkommen nutzlos. Swift konkurriert mit Objective-C im Bereich der Anwendungs-Programmierung, also in einem Teilbereich der Anwendungsfälle von Objective-C, die da wären: Application-Frameworks und Anwendungs-Entwicklung.
 
Fortran wurde für numerische und wissenschaftliche Berechnungen entwickelt (Formula Translation). C entstand speziell für die Entwicklung und Portierung von Unix. Der Einsatzzweck ist völlig unterschiedlich und die Sprachen sind darum keine Konkurrenten.

Das mag der historische Hintergrund sein, praktisch ist das allerdings ohne Belang: C/C++ hat Fortran in allen Bereichen der numerischen/wissenschaftlichen Programmierung ersetzt. Diese Abgrenzung hat nur so lange funktioniert, wie Unix ein Nischensystem für "Kleincomputer" war. Und die Sprachen waren Konkurrenten! Gegen Fortran vs. C war Microsoft vs. Apple Kindergeburtstag.

Wie gesagt: Schauen wir uns mal in fünf Jahren an, wozu ObjC und wozu Swift eingesetzt wird.

Swift konkurriert mit Objective-C im Bereich der Anwendungs-Programmierung, also in einem Teilbereich der Anwendungsfälle von Objective-C, die da wären: Application-Frameworks und Anwendungs-Entwicklung.

D.h. du unterstellst, dass man mit Swift keine Frameworks entwickeln kann? Glaub' ich nicht.