Quatre ans de développement pour Swift

Mickaël Bazoge |

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 ».

Tags
avatar ce78 | 

Pour la petite histoire, veuillez noter que SWIFT est l'auteur des voyages de "Gulliver" : pas moins ;)

avatar John Maynard Keynes | 

@ce78

ici la référence est plutôt celle de l'oiseau, d'où le logo : http://en.wikipedia.org/wiki/Swift

Anecdote pour anecdote il y a un lien entre l'oeuvre de Jonathan Swift et l'informatique :

l'Endianness fait directement référence aux voyage de Gulliver où il est question d'une grave controverse : doit-on manger les oeufs à la coque par le petit ou le grand bout de l'oeuf ?

Les notions de big et little endian font référencent à ceci ;-)

avatar XiliX | 

En anglais ça donne

SWIFT is Taylor for developpers...

avatar umrk | 

Pour ceux qui en douteraient encore, Swift démontre les impressionnantes capacités d'innovation d'Apple. Si en effet pléthore de langages exotiques pullulent dans les centres de recherche en informatique, l'industrie fait preuve d'un conservatisme extrême quand il s'agit d'adopter un niveau langage.

Le poids du passé, la nécessaire compatibilité avec ce qui a été développé pendant des années (et qui fait la chiffre d'affaires de la société ...), le poids des méthodes et outils de développement dans lesquels on a énormément investi, la culture des informaticiens , et ... l'impossibilité de convaincre des décideurs qui ne veulent plus faire que de la gestion, sans prendre de risques techniques que rien ne les oblige à prendre, et dont ils ne voient pas l'intérêt ....

Les informaticiens eux mêmes ne sont pas en reste pour ce qui est du conservatisme, chacun étant souvent persuadé que le langage qu'il maîtrise le mieux est le meilleur ...

C'est ce qui fait que l'informatique est un étonnant mélange d'innovations radicales et incessantes, mais paradoxalement également, souvent un des secteurs les plus conservateurs d'une entreprise.

J'ai longtemps travaillé dans un secteur que je ne nommerai pas, développant du logiciel critique, pour lequel j'ai toujours pensé que le langage ADA était le mieux adapté, à la place du C. Ce n'est pas une question de codage (contrairement à ce que croit le grand public, le codage en tant que tel est une partie infime des coûts de développement), mais une question liée au fait que le code ADA, s'il passe l'étape de compilation, est libre d'erreurs qu'il faut dans d'autres langages de couteuses campagnes de test pour éliminer.

Nous n'avons pas fini d'entendre parler de ce langage, et Apple prend , sur ce domaine encore, une longueur d'avance sur la concurrence ...

avatar John Maynard Keynes | 

@umrk

Les informaticiens eux mêmes ne sont pas en reste pour ce qui est du conservatisme, chacun étant souvent persuadé que le langage qu'il maîtrise le mieux est le meilleur ...

Juste remarque qui vos pour quasiment tous les secteurs, l'aversion aux changement et à la remise en question de ce qui semble être des acquis est le plus gros frein à l'innovation.

Pour le reste l'histoire du "Green Langage" (Ada) qui doit beaucoup à la France et de sont relatif échec au regard de ses ambitions initial est assez passionnante.

Quoi qu'il en soit nous avons là quelques belles référence locale dans cette mouvance, entre autre Jean Ichbiah, Jean-Raymond Abrial et Bertrand Meyer (Eiffel)

avatar Stardustxxx | 

Donc l'invention d'un langage de programmation est une preuve d'innovation!!!

Google a sorti recemment Dart et Go, deux nouveaux langages de programmation. Si on applique le même raisonnement Google innove encore plus. On peut aussi faire la meme chose pour Microsoft, le C# par exemple.

Pour que Apple ait vraiment une longueur d'avance sur la concurrence il faudrait que Swift soit crossplateform. Sinon on se retrouve coincé dans l'ecosystème Apple. Et donc l'interet de Swift est limité en terme d'utilisation.

Apple se donne evidemment les moyens pour son ecosystème, et Swift permettra le developpement rapide de nombreuse application.

PS : Ton code compilé ADA est peut-être libre d'erreur detectés par le compilateur. Mais il restera toujours les erreurs de logique et d'algorithmique. Mais c'est deja une étape. J'ai eu un cours d'ADA a la fac il y a longtemps, j'ai pas de bon souvenir de ce language.

avatar John Maynard Keynes | 

@Stardustxxx

Donc l'invention d'un langage de programmation est une preuve d'innovation!!!

Pour qui ne vois pas plus loin que le bout de son nez et n'a pas compris quel était le périmètre de Swift, les points d'exclamation et la provocation à deux balles est compréhensible.

Pour qui voit un peu plus loin Swift est très loin d'être un pet de lapin, ou un langage de plus :-)

Pour que Apple ait vraiment une longueur d'avance sur la concurrence il faudrait que Swift soit crossplateform.

Là c'est la parfaite illustration du fait que tu n'a rien compris aux objectifs et au spécificité de la démarche.

C'est justement le couplage fort de Swift aux paradigmes mis en oeuvre par Apple qui en fait la fores.

J'ai eu un cours d'ADA a la fac il y a longtemps, j'ai pas de bon souvenir de ce language.

Tu m'étonnes :-)

on code compilé ADA est peut-être libre d'erreur detectés par le compilateur. Mais il restera toujours les erreurs de logique et d'algorithmique.

Il y aun je ne sais quoi dans ta phrase qui laisse à penser qu'effectivement tu as mal suivit tes cours :-)

avatar Stardustxxx | 

Tu te permet d'interpreter mes propos et me faire dire des choses que je n'ai jamais écrite et tu es complétement a côté de la plaque.

Mon premier point était totalement ironique et s'adressai a mon interlocuteur pas au langage Swift. Apple innove, Apple innove, toutes les compagnies innovent. Je trouve qu'on retire du sens au mot innovation en l'utilisant a tout va, car dans beaucoup de cas il s'agit plus de raffinement et d'adaptation que d'innovation.
Tous les grands de l'informatique ont inventé des langages et des framework pour leur besoins. Microsoft avec C# et leur suite .Net, Google avec Dart et Go, etc... Et maintenant Apple et Swift.
Je me moquais du fait qu'affirmer qu'Apple innove en inventant un langage. Deja inventer un langage, c'est faire preuve d'innovation en tant que tel. Dans ce sens, les autres compagnies qui inventent un langage innovent egalement. Ensuite on peut entrer dans les détails et déterminer que tel langage apporte beaucoup et innove plus.
Je ne parlais en aucun cas des qualités et des defauts de swift, il apporte visiblement beaucoup de chose sur la table, et permet d'utiliser autre chose qu'Objectif C pour du dev iOS. En même temps, c'est un langage nouveau, il n'est pas encore connu, et il a aussi ses limites. Je trouve un peu prematuré de comparer avec les autres langages, attendons de voir ce qu'il a dans le ventre.

Quand au cross plateforme, les objectifs d'Apple pour le Swift n'empeche en aucun cas qu'il soit multiplateforme. Il l'est deja quelque part car il supporte iOS et OS X. Le fait que Swift soit pensé pour bien s'interfacer avec Cocoa, n'empeche pas Apple de rendre Swift cross plateform. Un des tout premier commentaire sur Swift a été le fait qu'il semble que ce soit un très bon langage pour l'enseignement de la programmation. On pourrait imaginer que les étudiants apprennent sur un compilateur Swift sur un autre OS que OS X.
Je considère que Apple aurait vraiment innové en ouvrant plus ce langage et non pas en le reservant a son propre écosystème. Il est également vrai que c'est la première annonce, et que les chose peuvent évoluer par la suite.

Qu'est ce qui dans ma phrase te laisse a penser que j'ai mal suivi mes cours ?

Contrairement a ce que tu penses. Je trouve que Swift est une très bonne chose. Il apporte tout d'abord un langage moderne a l'écosystème Apple. Pour le reste, je n'ai pas pris le temps d'aller lire la doc pour aller voir plus loin, donc je ne me permettrais pas d'aller affirmer autre chose.
Une chose par contre me plait beaucoup, c'est les nouvelles fonctions de debug. J'ai aussi lu que des idées expérimenter sur le site de LightTable ont été reprises. http://www.lighttable.com/2014/05/16/pain-we-forgot/

avatar John Maynard Keynes | 

@Stardustxxx

Excuses moi pour ma réaction te semblant un peu vive sur l'interpretation de ton propos, ;-)

La porté de ta remarque sur l'innovation que j'y trouvais n'étais pas totalement celle que tu exposes ici, pour moi Swift n'est en fait pas un enjeux de "langage informatique" seul, c'est une vision globale, un levier puissant potentiel pour les Dev Apple.

Même en lisant ta nouvelle contributions il me semble que bien qu'elle soit positive pour nous deux nos visions du produit restent fort différente en fait ;-)

Je considère que Apple aurait vraiment innové en ouvrant plus ce langage et non pas en le reservant a son propre écosystème. Il est également vrai que c'est la première annonce, et que les chose peuvent évoluer par la suite.

C'est en fait là que se trouve le point principale de notre désaccord et ce qui me fait penser que tu as une compréhension surprenante pour moi du projet ;-)

Pour le cross plateforme (Hors Apple s'entend), je reste dubitatif quant à son intérêt, le langage seul décoléré des liens avec la philosophie des systèmes Apple pert quand même énormément de son intérêt.

De plus une adoption en dehors de l'écosystème Apple ne me semble, contrairement à toi, n'être nullement l'enjeu du succès.

Qu'est ce qui dans ma phrase te laisse a penser que j'ai mal suivi mes cours ?

C'était un clin d'oeil au second degrés qui demande une certaine connaissance "Green Langage" c'est tombé à plat, pas grave. En tout cas ce n'était pas une attaque.

avatar Stardustxxx | 

Contrairement a ce que tu penses je n'ai pas une vision si différente que toi.

Je ne pense pas qu'une adoption hors de l'ecosystème Apple soit l'enjeu du succès, pourquoi le serait-il d'ailleurs? Et je n'ai jamais affirmer une telle chose.
Je pense que sortir un langage pour son ecosystème, ses frameworks est plutot trivial pour une compagnie comme Apple (Idem pour Microsoft, Google, ...), et donc pour moi je ne trouve pas vraiment innovant le fait de sortir un nouveau langage.

Pour le multiplateforme, il est vrai que Swift sans framework equivalent a Cocoa sur une autre plateforme cela n'a pas beaucoup d'interet. Mais mon propos a été de dire que Apple aurait vraiment innové en ouvrant Swift pour permettre d'écrire des compilateurs sur d'autre architecture. Mais ce n'est pas un reproche a Apple, Microsoft a fait la meme chose avec C#, ce ne sont pas eux qui ont developpé Mono. Je ne trouve pas innovant de mettre des bon outils a disposition de son ecosystème, je m'attend a ca. Mais evidement comme il s'agit d'Apple, et vu la taille de l'ecosystème, cela reste une nouvelle majeure.

Je trouve d'ailleurs que l'article sur Ars Technica que tu as posté dans un autre commentaire, et que j'avais deja lu avant ma premiere rèponse ;), fait un bon résumé du langage.

avatar John Maynard Keynes | 

@Stardustxxx

Pour que Apple ait vraiment une longueur d'avance sur la concurrence il faudrait que Swift soit crossplateform.

Ok, excuses moi d'avoir pris ceci peut-être un peu trop au pied de la lettre, dans ce cas ;-)

Je ne vois vraiment pas en quoi cela donnerait une longuet d'avance à Apple, à moins que tu considère que le fait de se différencier des pratiques logiques des concurrents est une forme d'innovation ;-)

Je ne trouve pas innovant de mettre des bon outils a disposition de son ecosystème, je m'attend a ca.

Ok, je vois ce que tu veux dire et effectivement la mise à disposition d'outils innovant est en rien originale ;-)

Il me semble que pour toi innovation est synonyme d'originalité, de never seen before ... ce qui est loin d'être toujours le cas.

C'est peut-être le point d'achoppement de nos petite divergence, pour moi innovation n'est en rien synonyme de nouveauté absolue, l'innovation peut se cacher dans les détails d'une vision globale plus que dans la nouveauté à tout pris.

C'est d'ailleurs là ou Apple est fort, il ne fabriquent pas de nouveau concept de produits ou de nouvelles technologie inattendues, mais des produits changeant la donne sur les secteurs qu'ils ciblent ;-)

avatar Stardustxxx | 

Absolument j'aurai trouvé innovant qu'Apple sorte de sa zone de confort.

Oui je préfère reserver le mot innovation a quelque chose de vraiment tangible plutôt qu'a des petits raffinements ou l'adaptation de concept qui existent sur d'autres plateformes.
Mais bien evidemment on peut considérer ses raffinements comme des innovations. Mais je trouve que le discours ambient sur les forums ou il y a un guéguerre de celui (lire Apple, Google, ...) qui innove le plus n'est pas très pertinent ni intéressant, et bon nombre de supposée d'innovations ne sont pas. Il est aussi vrai que les besoins marketings des compagnies jouent aussi la dessus pour nous faire acheter encore plus de produits.

Enfin, il faut souvent du recul pour determiner si les choses ont été innovantes, et trouver ce qui a été vraiment déterminant comme innovation.

A première lecture, je trouve que les innovations intéressantes qu'apportent Swift sont les nouvelles fonctionalités de debug, et la partie interactive et visuelle. Il y a surement d'autres, nous verrons les avantages et les inconvénients a l'usage. Les devs vont prendre de l'experience.

avatar guillaumem | 

On a l'impression qu'ils cherchent a rendre le dev d'app "bankable" à 99$ fun, facile et abordable. Pour que ces petits app très rentable pour les dev et aussi pour Apple (30% de com) se multiplie comme des petits pains sur l'appstore.

avatar oomu | 

sans blague ? c'est exactement ce que j'aurais fait à leur place.

Xcode Playground va aussi dans ce sens, et j'acclame.

le 30% de com reste toujours infime dans les revenus de l'entreprise et c'est toujours moins chers que payer serveurs webs, bande passante, store et système de paiement et les administratifs (en interne ou prestataire) pour maintenir ça.

30% correspond aux attentes habituelles de l'industrie en matière de prestation, c'est pour cela qu'au près des pros, c'est passé comme une lettre à la poste et que tous les autres entrants se sont alignés sur ça.

30% était déjà ce qu'on voyait en mobile avant Apple.

Steam est dans ce genre aussi même si le détail n'est pas public.

avatar XiliX | 

C'est exactement ça...
- 30% sur une app gratuite ça fait toujours 0€ pour Apple
- 30% sur une app à 0,89€ ça faut moins de 0,30€ pour Apple
Or comme tu dis Oomu, ça ne paie pas la transaction bancaire, la bande passante, le stockage...

avatar CKJBeOS | 

Tout a fait !
l'énorme avantage de tout cela aussi, c'est que même un petit studio comme nous (on est 2 + graphiste) on y arrive (bon on en vie pas) mais on a pas besoin d'une structure complexe administrative, tout est géré par apple et oui !! 30% pour ça ce n'est rien !
Apres il y a toujours des gens assez "limités" qui croient encore que le gratuit existe ;) mais bon... ils vont aussi grandir un jours...

avatar oomu | 

Scène de vie banale:

"whoa c'est pas gratuit ton truc ? capitaliste!!! Linux est gratos et wikipedia aussi alors ho"

"-oui gratuit..avec des milliers de contributions sur 20 ans, le financement en arrière plan d'entreprises comme IBM et universités pour les tâches ingrates, et la contribution bénévole à des fondations chargées de gérer le financement"

"- hu???"

avatar CKJBeOS | 

le monde malheureusement ne tourne pas sans argent ;(
Même si certaines initiative comme wikipédia qui font appels a des dons car sans ben = clé sous la porte, donc oui rien n'est gratuit ;( en j'en suis tout autant désolé mais la réalité est dure et notre monde capitaliste jusqu'a la racine ;(
PS : au cas ou, je suis bénévole dans deux association donc... et je maintient que rien dans ce bas monde n'est gratuit !

avatar John Maynard Keynes | 

@guillaumem

aussi pour Apple (30% de com)

Les 30% de com ne sont pas l'enjeu majeur, l'enjeu central est d'avoir une offre large riche et attractive de logiciels sur la plate-forme.

La WWDC marque réellement une volontés de donner de la matière au dev :
- Amélioration progonde de l'App-store pour la rendre plus attractive.
- Ouverture à de nouveaux type de programme grâce au possibilité de communication inter-app, aux widget, à l'accès plus simple et plus complet à iCloud.
- Une masse importante de nouvelles API ouvrant de large champs d'usage.
- Une approche plus simple et plus propre du Dev
...

Ce qui a été montré à la WWDC est potentiellement énormes quand aux potentiel de business pour les Dev.

avatar sekaijin | 

Ce n'est pas d'hier qu'apple travail sur un tel langage.
si on regarde un bout de code
func configureLabels(labels: UILabel[]) {
let labelTextColor = UIColor.greenColor()
for label in labels {
// label inferred to be UILabel
label.textColor = labelTextColor
}
}
et qu'on le compare à une autre langage qui était aussi en vigueur chez appel et qui ets né en 1992
let radius = 5;
let circumference = 2 * $pi * radius;
if (circumference > 42)
format-out("Hello, big circle! c is %=", circumference);
else
format-out("Hello, circle! c is %=", circumference);
end if

on ne peu que noter des similitudes.
Dylan se voulait "un langage de programmation dynamique, réflexif, orienté objet et fonctionnel."

Objective-C poursuivait à sa création deux objectifs introduire l'objet et avoir de la dynamicité dans C
Lorsque Obj-C est passé chez Apple elle n'a cessé de travailler sur ces aspect.

toute la problématique est de trouvers le bon compromis entre les langages purement statique comme le C d'origine et les langage purement dynamique comme les interprètes Lisp

Swift est dans la continuité et prends évidement en compte les évolutions tant théorique que technique des langages de programation.

A+JYT

avatar ledidou | 

J'ai l'impression qu'il faut être développeur "payant" pour avoir accès à XCode 6 béta qui permet de tester ce langage.

En attendant la lecture de la documentation m'impressionne pour les évolutions depuis 10 ans dans les langages compilés. Le fait de repartir d'une page blanche leur a permis d'introduire des ne nombreuses notions de manières particulièrement élégante et d'avoir un code concis mais efficace. On dirait presque du python, mais avec la puissance d'un langage compilé. Je suis impatient de pouvoir tester sous XCode où cela a l'air particulièrement bien intégré.

avatar CKJBeOS | 

oui en tout cas ça a toujours ete le cas pour les anciennes beta ;(
sinon connaitre un dev qui rentre ton uuid dans sa liste !

avatar iRobot 5S | 

Au moins Apple a toujours des secrets que les rumeurs ne dévoilent pas

avatar mypiano-coach | 

N'étant pas du tout programmateur (musicien pro), je remercie l'excellence des posts qui me permet au moins d'imaginer la passion que vous placez dans votre beau métier.

À vous lire, je me retrouve dans la manière dont je m'investis avec passion dans mon approche musicale.

Merci à tous, ce fil était vraiment intéressant...

avatar John Maynard Keynes | 

@mypiano-coach

Beaucoup de liens entre les deux activité en fait, Bach eu fait un remarquable informaticien à n'en pas douter, l'Art de la Fugues c'est tout un programme.

Et les notions d'esthétique du code sont là pour qui est initié ;-)

Un livre assez sympathique sur cet aspect :

http://shop.oreilly.com/product/9780596510046.do

avatar John Maynard Keynes | 

Pages

CONNEXION UTILISATEUR