• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

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

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
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.
 

HiPhish

Bismarckapfel
Registriert
06.04.10
Beiträge
77
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

HiPhish

Bismarckapfel
Registriert
06.04.10
Beiträge
77
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

Scotch

Bittenfelder Apfel
Registriert
02.12.08
Beiträge
8.060
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

b1rdhous3

Golden Delicious
Registriert
04.06.14
Beiträge
7
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.
 

msteffenma

Weigelts Zinszahler (Rotfranch)
Registriert
03.01.08
Beiträge
252
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.
 

simmac

Melrose
Registriert
22.03.11
Beiträge
2.482
Dass sie auch C ersetzen wollen, kann ich momentan noch nicht ganz glauben.
 

Scotch

Bittenfelder Apfel
Registriert
02.12.08
Beiträge
8.060
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

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
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.
 

Scotch

Bittenfelder Apfel
Registriert
02.12.08
Beiträge
8.060
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.