Fermer le menu
 

Quatre ans de développement pour Swift

Mickaël Bazoge | | 07:32 |  76

Swift a été la surprise du chef durant le keynote de la WWDC. Personne n'avait vu venir cette annonce : un nouveau langage de programmation, présenté comme un « Objective-C sans le C » et surtout, comme le sésame pour développer des applications destinées à iOS et OS X (lire : Swift, un langage conçu par Apple pour Apple). On a à peine effleuré la surface de ce langage, et déjà on en sent tout le potentiel — les développeurs intéressés pourront se jeter sur le livre numérique gratuit mis à disposition par Apple, ainsi bien entendu que sur la beta de Xcode 6. Un des premiers développements a d'ailleurs été… un clone de Flappy Bird dont on trouvera le code source sur GitHub.

Swift n'est cependant pas sorti du chapeau magique de Craig Federighi. Chris Lattner, en poste chez Apple depuis 2005 où il a occupé plusieurs postes, supervise désormais le département Developer Tools, en charge de Xcode. Il est le créateur de l'infrastructure du compilateur LLVM.

Sur son blog, il donne quelques précisions sur Swift, dont il a commencé le développement en juillet 2010. Lattner a implémenté la structure basique du langage. À l'époque, bien peu de gens chez Apple avaient eu vent de l'existence de ce projet; cela a changé début 2011, où une équipe de plus en plus importante est venue renforcer les effectifs. En juillet dernier, le développement de Swift est devenu un sujet majeur pour le groupe Apple Developer Tools.

Chris Lattner

Swift s'est inspiré de plusieurs langages dont l'Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, et bien d'autres encore. Lattner explique que le travail de dogfooding (période de test en interne) a été particulièrement important afin de livrer un produit aussi propre que possible. Les équipes de Xcode ainsi que celle de LLDB (à l'origine du débuggueur du même nom) sont également saluées pour leur « travail phénoménal ». Il espère rendre la programmation plus abordable et plus « fun ».

Catégories: 
Tags : 

Les derniers dossiers

Ailleurs sur le Web


76 Commentaires Signaler un abus dans les commentaires

avatar Le gros dave 05/06/2014 - 07:39 via iGeneration pour iPad

Excellent !

avatar Bardyl 05/06/2014 - 07:53

Flappy Bird, pas Angry Bird non ? ;-)

avatar Mickaël Bazoge macG 05/06/2014 - 14:44 (edité)

Oui effectivement ;)


avatar CBi 05/06/2014 - 07:56 via iGeneration pour iOS

Deuxième post et déjà il y a un lecteur de MacG pour échanger des noms d'oiseau avec la rédaction...

avatar zarghol 05/06/2014 - 07:57 via iGeneration pour iOS

Pas de doute avec ce langage ça va être fun ! :D déjà testé et hâte de développer des applications entières avec ! :)

avatar melvyn71 05/06/2014 - 07:58 via iGeneration pour iOS

Pour un débutant en prog (amateur) il peut être intéresser de coder dans langage ? (Sachant que je n'ai pas fait de C/C

avatar oomu 05/06/2014 - 08:45

Il est toujours intéressant de programmer

Swift a une syntaxe moderne et la quasi-totalité des fonctionnalitées attendues dans un langage actuel. C'est donc très formateur.

Et Xcode playground vous aidera à apprendre vite. C'est un outil précieux. On peut déjà l'utiliser pour se familiariser

Xcode 6 est encore bêta, vivement qu'il soit prêt.

-
Vous devriez apprendre C, c'est la fondation de pratiquement toute l'informatique moderne. Il est aisé de sauter ensuite sur n'importe quel autre langage similaire.

-
Swift, objective c, JavaScript, Java, ruby, c#, c++ etc sont des langages objets : apprenez les concepts de la programmation objet, ça vous rendra compréhensible tous ces langages d'un coup.

-
Les langages reposent tous sur des concepts de programmation (fonctions, objets, boucles, closures, variables, allocation auto ou non, compilé, pseudo-compilé, interpreté, fonctionnels, etc)
Si vous apprenez les concepts de programmation, le reste n'est que détail de syntaxe.

--
Le plus dur n'est pas le langage mais les "frameworks" : les collections de classes et fonctions prêtes à l'emploi qui forment une plateforme de programmation. C'est ce que sont java entreprise ou Cocoa ou .net. Il faut retenir beaucoup de choses pour être productif ou bien connaître sa documentation.

Cocoa d'Apple est particulièrement marié à Xcode. Xcode n'est pas qu'un éditeur de texte: il est l'outil qui met en scène les concepts derrière Cocoa.

--
Resteront quelques langages un peu exotiques comme Lisp ou Haskell, mais y a pas d'urgence... Et les grands anciens tels Fortran (indéboulonnable)

-
La syntaxe dite C est très très très très courante. Même PHP, JavaScript ou Java ont leur syntaxe inspirée de C
Et c'est pas un accident si on retrouve la lettre C dans c#, objective-c ou c++

avatar Norandy 05/06/2014 - 08:56 via iGeneration pour iOS

@oomu :
Merci beaucoup pour ces précieux conseils. J'avais commencé le C mais avait arrêté après les pointeurs (siteduzero). Je vais m'y remettre de suite !

avatar oomu 05/06/2014 - 11:07

Les pointeurs, c'est une gymnastique qui peut paraitre abscons au début et beaucoup d'étudiants décrochent à ce moment.

Il n'y a pas à y penser dans des langages comme Swift, Ruby, Python, Javascript, C#, Java (langage dit de "haut niveau") etc. On pourrait donc se dire "RAF ! je file dans java programmer de l'outil d'analyse de finance pour une banque et devenir riiiiiche hahahaha"

MAIS les pointeurs SONT UN des principaux FONDEMENT de comment MARCHE un ORDINATEUR (adresse mémoire -> valeur etc on se frotte à la réalité de la MACHINE). C'est un enseignement Précieux qui éclaire beaucoup et permet de bien appréhender par la suite les problèmes de performance ou limites des langages dit de "haut niveau".

Maitriser les pointeurs c'est maitriser nombre de structures de données sophistiquées et leurs implications.

Ne pas hésiter à lire des articles purement théorique sur les concepts, plutôt que de se fracasser la tête sur un bouquin de pure apprentissage de la syntaxe.

La Syntaxe, c'est pas le plus dur, c'est le "mais on fait quoi avec ?!" qui est le plus long à apprendre.

-
C'est typique avec la programmation dite "objet" aussi.

Quand on enseigne froidement la syntaxe des classes, héritages, méthodes, constructeurs en C++ ou Java ou Objective C (et maintenant Swift), tout étudiant(e) normalement constitué(e) et sain(e) dit "mais on en a foutre pourquoi ? O_O" .

Mais un bon livre théorique explique les gains derrière : réutilisabilité du code, clarté entre l'implémentation et la déclaration, mise en oeuvre d'environnement de programmation reposant entièrement sur ces concepts (Cocoa, .Net etc) et là.. on voit que c'est franchement bien utile.

avatar adamsvibe 05/06/2014 - 11:34 via iGeneration pour iPad

@oomu

As tu des bouquins théoriques à suggérer ?

avatar lmouillart 04/03/2015 - 10:24

[supprimé]

avatar adamsvibe 05/06/2014 - 14:08 via iGeneration pour iPad

@lmouillart
Merci :)

avatar John Maynard Keynes 05/06/2014 - 19:44

@lmouillart

Les trois ouvrages sont effectivement des bibles, mais :

- Placer le K&R dans les ouvrages théorique offrant de bonnes fondations pour débuter me semble assez discutable.
- Le TAOCP est certe un chef d'oeuvre mais comme introduction à l'algorithmique il me semble un peu rude.
- De même pour le OOAD.

Ce un pb auquel je suis régulièrement confronté quand on me demande des conseils de lecture, j'ai visiblement comme toi et bien d'autres un "panthéon" d'auteurs et d'ouvrages qui sont incontestablement des référence et qui ont jeu un profond impact sur moi, mais qui en terme de capacité à être des ouvrages de débutants restent assez rudes.

Même si je conseil toujours le Structure and Interpretation of Computer Programs aux têtes bien faite pour créer des fondations théoriques solides :-)

Les ouvrages, ayant à la fois une consistance théoriques, ne donnant pas des recettes de cuisine, offrant un réel travail de pédagogie construit sur peu de pré-requis ... restent assez rares.

Et il est toujours plus facile d'orienter un jeune homme ayant déjà des bases vers les ouvrages pouvant nourrir sa progression ou recarder certains de ses manques, que donner des conseils aux impétrants.

D'autant que la bibliothèque de l'honnête homme dans le secteur est assez vaste et qu'en fait il faut avoir digéré pas mal de connaissances avant d'arriver à un début de prémisse de maitrise.

Bref, il doit y avoir mieux à conseiller, qui s'y risque ?

avatar CKJBeOS 05/06/2014 - 11:13

les pointeurs c'est pas forcement compliqué !
il faut des métaphores pour comprendre !

imaginez la RAM (mémoire vive de l'ordianteur) comme un village, chaque bloc mémoire étant une maison, certains blocs ensemble forme des résidences ou des maisons plus grandes, on peut donc y déposer une information plus ou moins grande (1 octets, 2,4 ou plus une chaine de caractère etc...)
maintenant le pointeur c'est l'adresse postale de ces maisons ;)
ça permet de "pointer" vers ce qui est contenu dedans !
et c'est pour cela que pour une variable type int, short, char etc... par exemple on peut en obtenir son adresse (son pointeur) avec le & en fait la variable c'est la maison, le pointeur c'est son adresse et du coup vous comprenez par la même occasion que votre variable est dans la mémoire vive a une adresse précise ;)
bon j'ai sauté les étapes de mémoires user et kernel etc... en vérité c'est plus compliqué mais abordé ainsi ça reste vrai c'est le principe qui est vrai et qui vous permet de comprendre bien plus après.

avatar adamsvibe 05/06/2014 - 11:25 via iGeneration pour iPad

@Norandy

Les pointeurs , il faut juste se dire que c'est un type de variable qui aime juste les adresses :)

Prennez votre temps, testez tranquillement : ça va être limpide ;)

On est tous tombe sur cette difficulté :)

avatar CKJBeOS 05/06/2014 - 11:02

merci @oomu de conseiller quand même le C, bon nombre de développeur passe tout de suite a du langage "évolué" ou tout est édulcoré, mais du coup ne cerne pas l'implication d'une bonne gestion des ressources et d'une écriture rigoureuse du code !

tres bien !

Pour ma part je defend que la base est tres tres importante et indissociable pour savoir correctement programmer, les principe même du fonctionnement d'un processeur sont aussi chose importante -> binaire opération logique etc... (l'ASM est parfait pour cela mais bon n’allons pas jusque la)

les langages ne sont la que pour traduire les concepts, mais pour réaliser de bon concept il faut connaitre et maitriser l'environnement qui s'y rapporte ! (bon c'est mon point de vue mais je pense pas trop me planter, 27 ans de devs + des études de dev, ça vous donne un peu d’expérience quand même ;)

avatar oomu 05/06/2014 - 11:17 (edité)

oui.

Faut aller dans l'ordre, ce qui n'est pas SI long que ça (C et les deux trois trucs matériels à comprendre derrière demandent qq semaines de lectures et essais)

mais c'est une fondation pour tout l'enseignement qui suit et pour avoir du recul sur son Kilomètre de code Objective C/OpenGL qui se met subitement à être + lent qu'un escargot dans de la glue : c'est bien joli l'empilage de framework et runtime qui font tout, mais arrive à un moment où la machine fait d'avantage d'abstraction que de boulot visible.

Et s'être frotté à C permet d'imaginer pourquoi. (et ça évite le classique conseil geek du "lol, tu fais pas de l'asm huhuhuhu", totalement désuet et hors propos)

-
Pour le reste, tout pilote d'avion sait un minimum sur la mécanique (moteur, carburant, portance, poids, etc, son AVION) et la physique (moment, aérodynamique, math etc)

Tout bon développeur sait un minimum sur comment les ordinateurs fonctionnent en réalité, la réalité finit toujours par frapper.

avatar John Maynard Keynes 05/06/2014 - 19:56 (edité)

@CKJBeOS

merci @oomu de conseiller quand même le C, bon nombre de développeur passe tout de suite a du langage "évolué" ou tout est édulcoré, mais du coup ne cerne pas l'implication d'une bonne gestion des ressources et d'une écriture rigoureuse du code !

Le passage par le vénérable langage C ne me semble pas relever de l'obligation pour atteindre les objectifs fort légitime que tu présentes. Il peut même être contre productif car il enferme parfois les personnes dans les habitudes du C qu'ils se trouvent en suite incapable de dépasser réellement.

Ce que je vois de mieux aujourd'hui en terme de cursus académique c'est l'équilibre suivant proposé aux débutants :
- Un très sérieux cours d'architecture des système posant tous les principe fondamentaux du fonctionnement des ordinateurs et n'hésitant pas à monter en abstraction en montrant que l'informatique est avant tout un art de la sémantique et de la construction.
- Un cours de base de programmation de bas niveau s'effectuant en assembleur sur simulateur avec un processeur virtuel ayant un jeu d'instruction orthogonal et élégant (Type 68k au hasard).
- Un cours de base d'architecture des OS.
- Un cours s'appuyant sur un langage de haut niveau de type Python ou Scheme, selon le profil des étudiants
- Un cours d'algorithmique solide.

Voilà pour les bases.

Cela donne les bonnes fondations pour attaquer la suite et produits des devellopeurs de valeurs capable de faire autre chose que pisser du code et ayant conscience du sous-jacent.

avatar CKJBeOS 05/06/2014 - 20:40

Je constate avec stupeur, les dégâts que provoque le biberon Java dans les filaires info (la mémoire c'est quoi !! ça sert a rien de la gerer)
La méconnaissance total du fonctionnement de base d'un processeur et de la logique binaire !
Pire certains n'y voient même pas d’intérêt, ben oui pas besoin "ça marche sans" par contre quand on voit le résultat de leur production on comprend vite !!!

Tout ne peut pas être acquis, mais comme dans tout dans ce bas monde, sans de solide base on ne construit rien de valable au dessus !
Comme on disait dans le temps "pisser de la ligne" sans connaitre le contenu du fluide n'apporte rien !

Après l’expérience est de toute façon ce qui fait d'un développeur son savoir, ça aussi c'est valable dans tous les domaines.
Mais avoir les outils ne suffit pas, il faut apprendre méthodiquement comment les maitriser pour pouvoir pleinement les exploiter, et comment il fonctionne et a mon sens un plus pour aller plus loin, voir comprendre certains concept plus finement.

De toute façon on dit des choses très similaires, c'est juste que pour moi le C est un bon support et c'est pas le pire, mais il y en a d'autre !
ce que je défend avant tout c'est que l'on ne s'invente pas développeur ! Mais pas évident toujours de le faire comprendre surtout justement avec des langage trop haut niveau qui ont souvent leurs limites !

avatar John Maynard Keynes 06/06/2014 - 02:39 (edité)

@CKJBeOS

Nous défendons effectivement les même besoins de conscience du sous-jacent que ce soit au niveau de la machine ou au niveau des fondement conceptuel.

Mais pour moi ce constat n'est pas le fait de Java ou de tout autre approche à la mode, je constate cela depuis fort longtemps et bien avant l'apparition de ces approches.

Les pisseurs de code inconscient et se contentant d'un : Mais fait pas chier ça marche mon truc sont là depuis bien longtemps et il en est qui ne jurent que par le C.

Là où nous divergeons en fait c'est sur le fait que tu penses que l'emphase se porte sur le premier langage utilisé alors que je crois que c'est bien plus une question d'approche globale et de culture générale des sciences de l'information qui sont les enjeux d'un cursus.

Après je fait parti de ceux qui ne sont pas dans la vénération du K&R et qui ont de grande méfiance vis-à-vis du C qui dans son approche très pragmatique ouvre la porte à bien des pratiques douteuse.

ce que je défend avant tout c'est que l'on ne s'invente pas développeur !

Sur ce point nous sommes bien d'accord, bien de ceux revendiquant l'application sont fort loin d'en être digne :-)

Les première pierre de touche restent pour moi :
- Les capacité d'analyse et de synthèse.
- Les capacités à manipuler des concepts abstrait.
- La culture générale théorique

Toutes choses qui au passage se sentent très fortement à l'écris ou à l'oral.

La frontière se profil déjà assez clairement sur les simple commentaires qui ont accompagné ici l'annonce de Swift ;-)

La programmation est avant toute chose une activité intellectuelle, ce n'est pas du bricolage pour tacherons :-)

avatar CKJBeOS 06/06/2014 - 20:09

tres bien tout est dit !
apres le fait de ne pas aborder les choses de la même manière c'est ce qui fait la richesse de nos débat et de notre vision et c'est ce qui nous fait avancer ;) (enfin je pense ainsi)

avatar John Maynard Keynes 06/06/2014 - 23:34

@CKJBeOS

Yep;-)

avatar josselinrsa 07/06/2014 - 20:59 via iGeneration pour iOS

@John Maynard Keynes :
Puisqu'on parle de langage et de syntaxe, autant aborder l'orthographe !
Messieurs les devs, vous savez bien que votre code déraille si vous zappez un accord, ben la langue française c'est pareil...

Sinon, excellente nouvelle, et excellent apport de vous tous pour faire comprendre l'importance d'un code clair et net.
Et merci pour votre boulot et passion, sans vous nos iBidules seraient bien inertes !

avatar John Maynard Keynes 07/06/2014 - 22:44

@josselinrsa

Toutes mes excuses pour ma dysorthographie chronique en français :-(

avatar Stardustxxx 08/06/2014 - 15:33

On ne maitrise pas tous les langages de la même manière. Tu maitrise peut-etre le francais mieux que l'anglais ou le C ou le Python, mais nous c'est le contraire ;)

Pages