Swift 2 : « c'est le moment rêvé » pour se lancer

Nicolas Furno |

L’annonce faite durant le keynote de la WWDC a fait grand bruit auprès de la communauté des développeurs, au-delà même des plateformes traditionnelles d’Apple : en devenant open source, Swift 2 s’ouvre de nouveaux horizons prometteurs. Les sources du compilateur ainsi que les bibliothèques seront diffusées, d’ici la fin de l’année, pour iOS, OS X et Linux ; de son côté, Apple acceptera les contributions provenant de la communauté.

Nous avons voulu en savoir plus sur ce changement majeur dans les habitudes d’Apple et sur cette ouverture inédite avec Pascal Batty, développeur iOS chez SOAT.

Swift open-source : qu’est-ce que ça va changer concrètement ?

Swift est le premier langage sur lequel Apple a communiqué aussi ouvertement. Pour la première fois il y a un blog avec des explications sur le langage, les choix pris, des astuces et la documentation des nouveautés. Il y a même une communication via Twitter sur lequel Chris Lattner [un des créateurs de LLVM et directeur des outils développeurs chez Apple, NDLR] est très actif.

Le passage en open source est un pas de plus dans cette direction « d’ouverture », qui montre cet Apple nouveau, qui n'a pas peur de la transparence sur certains aspects, qui partage et qui accepte les suggestions.

Est-ce que Swift pourrait devenir un langage majeur en dehors de l’écosystème d’Apple ?

C'est tout à fait envisageable : cette ouverture pourrait permettre le développement d'un framework web en Swift par exemple, ce qu'Apple ne propose pas pour le moment. Le langage a gagné en attraction et en popularité très vite, il est unique sur certains aspects, donc les chances pour que des équipes talentueuses se l'approprient et l'utilisent dans d'autres contextes sont plutôt élevées.

De plus, l'ambition du langage est de pouvoir servir aussi bien à écrire des scripts et des applications qu'un système d'exploitation complet ! Le passage en open source lui permet cette omniprésence.

Est-ce que les autres langages existants pourraient évoluer grâce à cette ouverture ?

Swift propose une approche différente des langages actuels, ce qu’Apple a clairement explicité à la WWDC lors de la présentation « Protocol-Oriented Programming ». Cette approche n'est pas incompatible avec les langages orientés objet par exemple, qui pourraient s'inspirer du travail effectué sur Swift et l'intégrer.

Sur un plan plus technique, la compilation de Swift est assez spécifique et « redescend » pas à pas l'échelle de l'abstraction jusqu'à un niveau très bas. Le langage utilisé est très facile d'utilisation et éloigné du langage machine. Malgré ça, pour promettre une exécution performante le compilateur fait toutes les optimisations possibles. D'autres langages de haut niveau pourraient aussi s'en inspirer.

Est-ce que cela pourrait faciliter le passage d’iOS à Android, ou d’OS X à Windows/Linux ?

Je ne pense pas que ça puisse avoir de l'influence là-dessus. Le plus important dans une app iOS ou OS X, ce sont tous les appels aux « frameworks » qu'Apple a réalisés : de celui qui permet d'afficher une liste d'éléments à celui qui effectue les appels réseau, en passant par le système de navigation et la détection des gestes. Tout ceci n'est pas du tout « libéré » par Apple.

Je pense qu'avec Swift, Apple espère plutôt lever la principale barrière qui pouvait décourager les développeurs de se mettre aux applications iOS et OS X : Objective-C, dont la réputation est qu'il est vieillissant et pénible à utiliser.

Swift 2 avance-t-il dans la bonne direction ?

Oui ! Au-delà de l'évolution itérative au niveau des messages d'erreur, deux nouveautés marquent clairement une intention.

La gestion des erreurs arrive tardivement, cela laisse entendre qu'Apple a préféré attendre de trouver une solution satisfaisante plutôt que de sortir quelque chose qui marche mais qui manque d'élégance — comme avec ses autres produits. C'est rassurant.

Avec les « Protocol Extensions », une nouveauté très technique du langage, Apple ouvre la porte à de nouvelles façons de concevoir et d'organiser le code de son application. Elle l'a même explicité en réservant une présentation à la WWDC à ce sujet.

D'autres petites améliorations comme le mot-clé guard donnent aux développeurs de nouvelles conventions autour desquelles se rassembler, pour se poser moins de question et mieux se comprendre les uns les autres. Je reviens sur les principales nouveautés dans un article sur le blog de SOAT.

Tout cela montre une véritable réflexion en profondeur et que Swift est un sujet important pour Apple, sur le long terme.

Apple a fait évoluer Swift très rapidement. Est-ce que selon toi, c’est le bon moment pour se lancer à Swift ?

C'est le moment rêvé. L'évolution rapide n'est pas difficile à suivre, et les outils pour migrer le code sont de plus en plus efficaces.

Le langage a aujourd'hui démontré sa légitimité et sa pertinence, je conseille à tous ceux qui veulent développer des applications iOS ou OS X de s'y mettre. Nous avons commencé à l'utiliser en début d'année et nous ne le regrettons pas du tout.

Et puis en commençant par apprendre le langage tel qu'il est aujourd'hui, prendre en main les prochaines nouveautés sera plus facile. Je prépare en ce moment un programme de formation pour aider chacun à mettre le pied à l'étrier. En attendant, les cours sur iTunes U (en anglais) sont très bons et Exercism est une excellente plateforme pour tester ses connaissances avec des exercices d'algorithmique.

Qu’est-ce que tu attends des futures mises à jour de Swift ?

J'aimerais voir de quelle manière le langage peut évoluer vers le paradigme « Fonctionnel », vu que ça semblait être un point important au départ. Je pense que les Playgrounds, qui permettent de coder « en live » nous réservent encore beaucoup de surprises. Je suis aussi très curieux de voir comment seront intégrées les contributions de la communauté. C'est très inhabituel de voir Apple abandonner son contrôle vertical.

Tags
avatar Jackdu59 | 

Ce qui va changer c'est que je vais m'y mettre sérieusement :)

avatar EBLIS | 

Je voulais découvrir ce langage pour me diversifier mais si je ne me trompe pas il faut installer xcode. Or sur le store il est impératif d'avoir la dernière version de macos. Sauf que mon mac mini fonctionne super bien (1 seul soucis récurrent) avec l'ancienne version qui me plaît et que sur plusieurs forum des utilisateurs se plaignent de cette mise à jour sur leur mini. Résultat: xcode ne sera pas pour moi car il est hors de question que j'installe Yosemite.

avatar bpisano | 

Je me suis déjà lancé de Swift 1. Swift 2 est une très bonne évolution on sent qu'Apple s'implique beaucoup.
Je mettrais à jour mes projets pour Swift 2 dès la sortie d'une bêta d'iOS 9 plus stable.

avatar heret | 

[Édité. La prochaine fois, envoyez plutôt un mail… MB]

avatar Giloup92 | 

@heret
C'est comme les "risques potentiels". Tic de langage pour ajouter un mot à la phrase.

avatar l3aronsansgland | 

D'ailleurs Apple a sorti un nouveau livre sur Swift 2 sur l'iBook Store.

avatar Lonsparks23 | 

Est-ce que une personne qui n'a absolument aucune connaissance en la matière et qui veut s'y intéresser un peu peut commencer par regarder quelques trucs sur Swift ?

avatar makeiteasy | 

@Lonsparks23 :
Tu peux déjà lire le livre de l'iBook Store. Télécharger XCode et bosser sur le playground.
Pour le dev iOS il faudra un peu plus de temps..

avatar Lonsparks23 | 

Oui oui je m'en doute ^^ mais c'est juste pour voir comment ça fonctionne, ça m'intéresse.

Merci, je vais suivre ton conseil :-)

avatar RyDroid | 

Si tu ne connais rien à la programmation, ce n'est pas un très bon choix pour commencer. La raison est simple : le langage est jeune, il y a donc peu de questions/réponses sur les erreurs disponible via Internet et une moins grosse communauté que d'autres langages. Python 3 et Java me semblent plus indiqué pour commencer la programmation d'une manière générale. Si ton unique but est de faire de la programmation pour iOS, c'est peut être mieux que Objective-C. Sinon, avec les bases dans un autre langage de programmation, tu assimileras plus vite Swift et aura plus d'expérience pour te débrouiller tout seul en cas d'erreur. http://spanti-nicola.legtux.org/fr/documents/articles/computing/not-mine/choix-langage.html

avatar Lonsparks23 | 

Merci de ta franchise :-)

Je ne connais pas non plus rien rien. Sans rentrer spécifiquement dans un langage précis, j'ai quelques bases de part mon cursus universitaire. Pour métaphoriser la chose, je sais écrire un petit texte de base en japonais, mais je connais pas les kanjis, le vocabulaire et je me trompe parfois sur la position des mots dans la phrase.

Après je n'ai pas la prétention de vouloir programmer, mais juste avoir des connaissances dans le trucs pour savoir de quoi on parle et avoir quelques bases ^^

Je vais suivre ton lien en tout cas, merci encore :-)

avatar Finouche | 

Je ne suis pas vraiment d'accord.
Si le projet est de développer pour OS X ou iOS, autant partir tout de suite sur les outils du moment.
Je parle en tant que petit développeur du dimanche sans formation spécifique et venant de REALbasic/Studio (et maintenant XOJO).

Swift est "facile" à apprendre (et même ludique avec le Playground), l'écriture est plus naturelle qu'avec Objective-C.
Apprendre les bases de Swift n'est pas le plus gros morceau de l'apprentissage. Le plus gros morceau c'est de COMPRENDRE le reste c'est-à-dire les différents modèles de programmation (le fameux modèle MVC Model-View-Controller, entre autres) d'une part et les notions de programmation objet d'autre part.

Autant avec XOJO on peut prendre divers chemins (et des mauvais) pour arriver à ses fins, autant on ne peut éviter les fondamentaux du développent moderne avec Swift ou Objective-C.

La documentation et l'aide s'étoffe rapidement. J'ai eu recours à des formations en vidéo de très bonne qualité sur Udemy. Il y a régulièrement des journées avec 90% de réduction et on peut alors s'acheter un cours complet pour 10 à 20$. C'est en anglais mais tout est en anglais dès qu'il s'agit de programmation. Il y a tout de même une mini formation Swift en français et de grande qualité sur Udemy.

Mon seul regret est que l'aide en général est beaucoup plus fournie pour la documentation iOS que pour OS X, marché oblige. Mais le rapprochement des deux OS est en marche et n'ira qu'en s'améliorant.

Alors oui, Swift est jeune mais évolue très vite. Apple y met visiblement le paquet.

Ce n'est qu'un avis de bricoleur. :)

avatar Ajioss | 

@Finouche :
Avec ton niveau tu t'estimes capable de faire quoi avec Swift à ce jour ?

avatar Finouche | 

Je refais ce que j'ai déjà fait et refait avec REALbasic que j'ai doucement abandonné à l'arrivée des premiers Macbook Pro Retina. J'ai fait quelques sharewares dont Minuteur que je suis en train de refaire en Swift dans le but ultime de le proposer sur le Mac App Store.
Aussi une petite facturation pour mes besoins personnels et des petits jeux du genre casse-têtes (Sokoban, Mastermind).
Rien de transcendant, c'est un hobby.

Reste que j'ai beaucoup ramé et je rame encore beaucoup. :)
Mais comme je le disais, il faut en passer par là, il faut se conformer au modèle de développement. Se familiariser avec tout ça, tout seul et sans bagage, c'est dur. Avec un niveau de 6e en Anglais, c'est encore plus dur mais au moins, on progresse en Anglais. :)

avatar Domsware | 

Je répondrais que cela dépend de ta motivation et de ton niveau en anglais. De ta motivation car au début tu ne feras que des petites choses et qu'il te faudra apprendre des concepts nouveaux. De ton niveau en anglais car les très nombreuses ressources sont en anglais. Le langage est jeune mais suscite un engouement important.

N'avoir jamais programmé n'est pas forcément un handicap : un point positif est que tu ne seras pas "déformé" par un précédent langage et ne chercheras pas ainsi à vouloir reproduire à tout prix ce que tu sais faire.

Enfin il y a le mode "Playground" qui pour simplifier te permet de rentrer très facilement dans le langage en jouant avec du code en live.

avatar MacTHEgenius | 

@Lonsparks23 :
Essaie l'app Swifty sur iPhone et iPad, excellent tutoriel de programmation ! (en anglais)

avatar Fennec72 | 

@makeiteasy :
Dans le même ordre d'idée que @Lonsparks23, la connaissance du PHP peut-elle aider pour aborder Swift, pour quelqu'un qui n'a jamais programmé en Java, en C ou en Objective C?

avatar RyDroid | 

C'est mieux que rien. Tu connais le principe des variables, des structures de contrôle (if, while, etc), des classes et objets et d'autres choses qui sont identiques ou similaires en Swift. De plus, tu as acquis de l'expérience sur le débogage et comment faire un programme bien construit.

avatar Un Type Vrai | 

Comme RyDroid.
Sauf si tu t'es "autoformé" à php et que tu te demandes pourquoi "class" est un mot clé en PHP.

En fait, j'ai croisé plusieurs fois des dév PHP qui bidouillaient de l'objet sans rien comprendre.
Un des défaut de PHP, c'est que même si le code est brouillon, daté, hors de tous les clous de bonnes pratiques, ça marche.

Avec un langage plus structuré, tu vas découvrir le typage (ça va te rager au début, mais tu y prendras goût) et surtout, tu n'iras plus vérifier l'ordre des arguments de strtr, str_replace et substr dans la doc... Et ça, tu vas adorer.

avatar makeiteasy | 

@Fennec72 :
Oui la connaissance d'un language orienté objet t'aidera dans l'apprentissage mais vu que Swift touche aussi à la programmation fonctionnelle et prêche la programmation orientée protocole tu devras comme nous tous penser différemment dans ta façon de concevoir tes applis mais tu ne sera pas le dernier loin de là

avatar martinx | 

Salut. Quel est le meilleur langage pour débuter en programmation ? L'objectif serait de faire une app iOS

avatar Domsware | 

@martinx :
Swift.

avatar bugman | 

@martinx :
Lut.
Le Pascal est (etait) tres bien pour commencer. C'est un langage excellent et structuré, ideal pour commencer. Le PureBasic est sympa aussi (simple, multiplateforme et rapide pour un basic), je l'aime beaucoup. Le C++ reste mon langage préféré mais je ne le conseille pas a un débutant.

avatar Ajioss | 

J'ai envie de débuter sur swift avec aucune notion de programmation. J'ai vu que openclasseoom proposait des cours payants sur swift. Quelqu'un a des retours ? Que me conseillez vous pour bien acquérir les bases de ce langage ?

avatar RyDroid | 

Si tu comprends l'anglais, le guide d'Apple parait bien fait et est gratuit. https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/index.html
Peut importe ce que tu liras, une très bonne manière d'apprendre est aussi de pratiquer en faisant de petits programmes (jeu du plus ou moins, etc).

avatar SugarWater | 

"La gestion des erreurs arrive tardivement, cela laisse entendre qu'Apple a préféré attendre de trouver une solution satisfaisante plutôt que de sortir quelque chose qui marche mais qui manque d'élégance — comme avec ses autres produits. C'est rassurant." Je serais curieux de connaître son avis : quel produit?

avatar Ajioss | 

@Finouche

Ton profil est très intéressant, Comme j'ai envie de m'y mettre j'avais envie de me faire une idée via ton parcours. Merci beaucoup

avatar Finouche | 

Premiers pas aver Swift, en Français : https://bnc.lt/l/5p_9ks-0Al
Ce n'est qu'une mise en bouche mais c'est clair et très bien fait.
Effectivement, le guide gratuit d'Apple est très bien aussi et dispo sur le Store.
Ici, Minuteur (REALbasic), pour te donner une idée plus précise de mon projet en cours.
http://www.phg-home.com/index_mac.html

Je rêve d'un club Swift avec des rencontres à tous niveaux. Rien de tel pour progresser.

avatar Ajioss | 

@Finouche :
Merci infiniment pour ces précieux conseils. Je ne connaissais pas du tout cette application. Très pratique :) c'est vrai qu'une telle communauté serait bien. Peut être que le forum Macg par exemple comporte une telle section ? Il faudrait vérifier .

avatar jeanclaude S | 

@ FINOUCHE
Premiers pas aver Swift, en Français : https:*************l
Peut-être vaudrait-il mieux donner un lien direct et non pas commercial... pour un service open.

https://www.udemy.com/les-bases-du-langage-swift/?dtcode=oxD6DPb38QZb

avatar Finouche | 

En effet. J'ai utilisé le bouton partage d'iOS...

avatar Alama | 

Ca fait déjà quelques temps que je tourne autour, il n'y a pas ou peu de tuto simple en Français, il faut commencer a comprendre Xcode6 ce qui n'est pas une mince affaire. on est loin de AS3 et FlashDevelop qui sont bien plus simples et dont l'API est mieux documentée. Je ne sais plus trop quoi penser au sujet de Swift..

avatar Alama | 

Faudra bien un jour unifier tout ça et rendre les applications absolument cross plateformes.. Je n'ai jamais compris pourquoi des gens capables de faire des compilateurs n'en font pas un !!!

CONNEXION UTILISATEUR