Pierre, nouveau blogueur JobProd, s’exprime sur Swift. Un langage qu’il connait bien aujourd’hui. Il dresse un retour d’expérience transparent et assez enthousiaste ! Retour sur cette interview.
1/ Pourquoi souhaitez-vous parler de Swift aujourd’hui ?
J’ai entendu parler il y a peu temps de la version 2, annoncée lors de la conférence annuelle d’Apple. Aussi, je passe pas mal de mon temps libre sur cette techno pour la tester et m’amuser avec. Il sort souvent de nouveaux langages de programmation, mais celui-ci semble très prometteur ! D’ailleurs, le fait que ce langage soit bientôt open source et porté sur Linux est très intéressant !
2/ A quel(s) besoin(s) est-ce que Swift répond ?
Essentiellement, je dirais que Swift est un langage « sûr ». Il répond à un besoin de fiabilité et d’efficacité du développement d’applications aux architectures complexe. Par ailleurs, il permet d’être compatible avec une multitude de bibliothèques existantes (Frameworks Apple ou bibliothèques C), et cela sans développement supplémentaire !
3/ Comment et par qui est-il utilisé aujourd’hui ?
Je n’ai pas de réponse très précise à ce sujet. Il ne peut être utilisé, pour l’instant, que pour les développements iPhone, iPad et Mac, mais il y a déjà quelques projets qui anticipent le portage sur Linux. Je ne connais pas aujourd’hui le taux d’adoption.
4/ Quels sont les avantages et les inconvénients que vous voyez au sujet de l’utilisation de Swift ?
- Les avantages
– Swift reprend pas mal de caractéristiques d’autres langages modernes : l’objet, avec du duck typing (comme Objective-C ), les blocks (ou lambdas, ou closures), les generics, les surcharges d’opérateur, les extensions de classe, ARC…
– L’interopérabilité avec C (et Objective-C)
Contrairement à C++ et Objective-C, Swift n’hérite pas des inconvénients du C. Je pense surtout à la syntaxe et à la gestion de la mémoire parfois source d’erreur. Et contrairement à tous les autres langages que je connais, la compatibilité ne nécessite pas de développer une interface supplémentaire entre C et le langage hôte.
– La gestion de la nullité d’une variable (plus de NullPointerException)
Peu de langage permet d’indiquer au compilateur si une valeur null est correcte ou non pour une variable ou un paramètre donné. Il reste toujours à faire une vérification à l’exécution, mais seulement lorsque l’on passe d’une variable qui peut être null à une variable qui ne l’est pas et cela occasionne des erreurs beaucoup plus pertinentes, faciles à anticiper et à comprendre. D’autant plus que la syntaxe est élégante (simple et efficace), que ce soit pour déclarer qu’une variable peut être null (par défaut ce n’est pas le cas), ou pour faire la vérification. Ce langage nous propose finalement pas mal d’outils nous permettant d’éviter les erreurs.
– L’inférence de type
Elle permet à Swift d’être typé statiquement, sans pour autant alourdir le code d’informations explicites de type partout. La réduction du typage explicite réduit les répétitions et allège la lecture et l’écriture du code. Tout en gardant les avantages d’un langage typé statiquement : le compilateur est capable de prévenir pas mal d’erreur dès la compilation. En somme, le développeur a moins de code à taper et fait donc moins d’erreur. Tout est plus facile à maintenir !
- Les inconvénients
– La limitation aux plateformes Apple
Apple ayant annoncé le portage sur linux et l’ouverture des sources, il ne s’agira pas d’un inconvénient bien longtemps !
– La syntaxe évolue encore
Je dirais finalement que le langage n’est pas encore tout à fait mûr. En effet, la syntaxe a évolué plusieurs fois, obligeant à repasser sur les sources. Heureusement Xcode sait trouver et effectuer la plupart des modifications nécessaires. Ça nous empêche tout de même de travailler à cheval sur deux versions.
– L’absence de preprocesseur
Je ne sais pas s’il s’agit d’un véritable inconvénient. L’absence de preprocesseur doit manquer qu’aux amateurs de C, C++ et Objective-C. Néanmoins, étant donnée l’interopérabilité avec C, il est facile de contourner le problème avec un fichier C au sein des sources.
– Les performances
Je n’ai pas beaucoup creusé cet aspect là, mais c’est une critique que j’ai entendu. Swift est moins performant que du C par exemple. Après il ne s’adresse pas à la même cible. Apple dit avoir fait beaucoup de progrès sur cet aspect. A confirmer.
5/ Auriez-vous un conseil à donner à des nouveaux utilisateurs ou à des plus expérimentés ?
Dans tous les cas, je leurs recommande de commencer par télécharger le playground « Guided Tour », qui offre une approche théorique combinée à une approche pratique. Aussi, n’hésitez pas à jeter un oeil au blog officiel si vous souhaitez voir un aperçu des coulisses !