Swift, un langage conçu par Apple pour Apple

Anthony Nelzin-Santos |

Avec la nouvelle interface d’OS X Yosemite, les extensions d’iOS 8 et la « continuité » liant les deux, on en oublierait presque qu’Apple a présenté rien de moins qu’un nouveau langage de programmation. Swift, c’est son nom, est présenté comme « un Objective-C sans le barda du C ». Et il y a de ça.

Que les choses soient claires, Swift n’a pas été conçu comme un langage de programmation « universel » : il a clairement été conçu « pour le développement sur OS X et iOS », « pour Cocoa et Cocoa Touch ». Il repose sur la base du C et de l’Objective-C, « sans la contrainte de la compatibilité avec le C », mais avec toutes les technologies développées par les ingénieurs Apple ces dernières années (dont ARC et LLVM).

Swift se veut « moderne, sûr, interactif et performant ». Moderne, il l’est par sa syntaxe concise : oubliés les headers, envolés les points-virgules, Swift rappelle immanquablement les langages de script — Apple ne se lasse d’ailleurs pas de le comparer avec Python. Le simple exemple du « Hello world » est parlant. Ce code Objective-C :

#import <stdio.h>
#import <Foundation/Foundation.h>
 
int main(void)
{
    NSLog(@"Hello, world!\n");
    return 0;
}

Est équivalent à ce code Swift :

println("Hello world!")

La déduction du typage, l’interpolation de variables, les clôtures, les tuples et bien d’autres fonctions participent à cet allégement de la syntaxe du Swift. Il est incontestablement élégant, même si la concision va souvent de pair avec une certaine opacité. Apple fournit cependant une épaisse documentation d’une clarté exemplaire qui permettra aux développeurs de rapidement comprendre les particularités de Swift.

Apple assure avoir « des objectifs très ambitieux » pour Swift, en allant jusqu’à évoquer un système d’exploitation qui serait codé en Swift. Reste que pour le moment, il est d’abord et avant tout conçu pour développer des applications simples, ou les pans les plus simples d’une application.

Mais dans le même temps, l’idée est qu’il puisse se substituer de plus en plus à l’Objective-C et au C : le C sera toujours utilisé pour coder au plus près du matériel, mais il n’y a aucune raison de ne pas utiliser Swift pour le reste. Il peut donc déjà exploiter toute la richesse de Cocoa et Cocoa Touch, et il ne serait pas étonnant que les futures APIs d’OS X et iOS lui soient réservées.

LLVM a été particulièrement travaillé pour optimiser au mieux le code natif ARM ou x86-64 produit par la compilation d’un projet Swift — mais comme tous les autres langages « modernes », c’est sa syntaxe même qui assure que le développeur ne commette pas certaines erreurs communes ou tombe dans des pièges. Facilité d’appréhension du code et rapidité d’exécution vont main dans la main, alors qu’elles ont traditionnellement tendance à s’opposer.

Mais un des aspects les plus intéressants et les plus importants de Swift est sans doute son interactivité, qui rappelle celle des grandes heures du Lisp. En mode playground, le code Swift est compilé à la volée pour procurer un retour instantané au développeur — quelque chose de « normal » pour les développeurs web, et dont l’implémentation rappelle les travaux de l’ancien ingénieur d’Apple Bret Victor.

Un tutoriel de découverte de Swift qui montre tout l'intérêt du playground. Via @GeekUnivers.

Cette fonction est extrêmement utile dans l’apprentissage du Swift, tout autant pour le développeur chevronné que le développeur débutant. Apple s’offre là l’occasion d’attirer de nouveaux publics à la programmation, donc de renforcer son écosystème. Et de le renforcer à long terme, puisque les développeurs Swift seront avant tout des développeurs OS X et iOS. Un langage conçu par Apple pour Apple, en somme.

GitHub regorge déjà de projets développés en Swift. Notre développeur Nyx0uf s’est fait la main sur ce langage avec son éditeur de texte mimant les fonctions de Writer Pro : vous pouvez télécharger la version Objective-C ici, et la version Swift là, de quoi comparer les deux.

Tags
avatar rondex8002 (non vérifié) | 

Je ne suis pas développeur. Je ne connais pas grand-chose à la programmation, à part des mémoires et une thèse avec LaTeX, si on peut vraiment appeler cela de la programmation !

Bref, il existe une base commune entre OS X et iOS. Pour créer une application pour iOS ou pour Mac, il y a une grosse différence de programmation ? Par exemple pour quelqu'un qui souhaite développer la même appli sur Mac et sur iOS. Hormis bien sûr que l'interaction avec l'utilisateur ne soit pas la même sur iOS et sur Mac.

Et qu'apporte dans ce cas, ce nouveau langage ?

avatar Hasgarn | 

Tu demandes un cours, presque ^^

C'est loin d'être aisé à expliquer, mais en gros, une app OSX est utilisable sous iOS, en se basant sur les fonctions et le moteur de l'application. Par contre, tout l'enrobage et les problématiques de chaque plate forme demanderont un certains nombres de remaniement. La plus grosse barrière de l'un a l'autre est la gestion de la connexion au réseau téléphonique, après l'IHM (Interface Homme Machine) ou interface graphique qui représente le plus gros du travail.
Je passe sur les bonnes pratiques qui diffèrent d'une plate forme à l'autre.

Pour ce qui est de l'apport de Swift, c'est, de ce que j'en vois, une accessibilité accrue. Savoir qu'un mec qui n'y avait jamais touché a su refaire un Flappy Bird en moins de 24h le démontre. Le gars n'est probablement pas un manchot non plus ^^

Du coup, ça va pas être facile de t'expliquer par le menu le pourquoi du comment, mais en gros :
[quote]Pour créer une application pour iOS ou pour Mac, il y a une grosse différence de programmation ?[/quote]
Oui et non. Le moteur peut être semblable, mais il faudra réadapter.

[quote]Et qu'apporte dans ce cas, ce nouveau langage ?[/quote]
Plus facile, plus sur, plus rapide...
C'est top moumoute si ça se vérifie.

avatar Yool66 | 

Un rapport avec http://swift-lang.org?

Je sais pas si une personne connais le sujet.

avatar John Maynard Keynes | 

@Yool66

Ce Swift là est conçu pour relever le défis du parallélisme dans la programmation sur des architectures distribuées.

Apple a étrangement réutilisé le même nom.

avatar tleveque | 

Et le logo!!! Avez-vous vu les oiseaux dans leur logo? Le même qu'Apple!!!

avatar Niarlatop | 

Swift est le nom d'une espèce d'oiseau, le martinet.
D'où la très relative ressemblance du logo.

avatar iRobot 5S | 

@tleveque :
Je trouve que l'oiseau et la couleur ça fait Hunger games (celui dessiné sur le bouquin).

avatar Lemmings | 

edit : erreur

avatar Kriskool | 

Après les clients, c'est au tour des développeurs de devenir les plus captifs possibles ??? avec ce nouveau langage de programmation aux abords très attrayants mais à terme, si je comprends bien, totalement propriétaire, les développeurs eux aussi ne se retrouveront ils pas dans une belle prison dorée ? Et ensuite devront ils subir les politiques ultérieures d'Apple ?
Je reconnais bien là encore la stratégie fondamentale d'Apple qui a fait son succès jusqu'à présent....

avatar tleveque | 

Sauf que l'Objective-C aussi est pas mal propriétaire. (à ce que je sache?). Seul Apple l'utilise.... donc c'est pareil.

avatar amnesic | 

Non l'Objective-C est un langage ouvert (aka licence libre)

http://fr.wikipedia.org/wiki/Objective-C

avatar Mithrandir | 

@Kriskool :
C'est sûr qu'avec le Java de Google sur Android on n'est pas captif du tout...

avatar FreeDa | 

Wahou ! J'ai rien compris ahah ^^ Les devs qui codent parlent entre eux en messages codés :-) Ce que j'ai compris au moins, c'est que cela a l'air de vous plaire, donc tant mieux...

avatar rondex8002 (non vérifié) | 

C'est clair. Je suis largué. Déjà en lisant l'article. Pas mieux avec les commentaires. ;-)
Dommage, j'aurai aimé un peu mieux comprendre. À moins que ça ne soit pas vraiment facile à vulgariser.

avatar Silverscreen | 

Il y avait un lien indiqué sur l'une des pages web d'Apple dédiées à Swift et renvoyant sur l'"autre" langage. Ils sont visiblement au courant de la possible confusion à Cupertino.

On a quand même impression que maintenant qu'Apple a la masse critique de développeurs qui vont bien, ils vont jouer à fond la carte de ma synergie soft-hard quitte à déborder les standards si nécessaire (Metal pour OpenGl/ES, Swift par rapport aux dérivés du C) quand ceux-ci ont trop de gras (de code conçu pour la retrocompatibilité ou des architectures étrangères à Apple).

C'est la même démarche que Google avec Blink en somme...

avatar free00 | 

Ah ah, les gens qui vont chercher code swift vont bien rigoler !

avatar babgond | 

Dans l'exemple,
En objective-c on affiche : Hello Word!

Comment swift devine qu'il y a un point d'exclamation ?

avatar redchou | 

En objective-C cette ligne: NSLog(@"Hello, world!\n");
Aurait pu s'écrire : NSLog(@"Hello, world!");
Le \n est un caractère spécial qui permet d'aller à la ligne, mais un appel de la fonction NSLog va à la ligne automatiquement.

Swift sait qu'il y a un point d'exclamation de la manière que l'Objective-C...
Dans : println("Hello world!")

Entre les " " il y a un point d'exclamation...

En Swift, println() va écrire ce qui est entre guillemet dans une ligne en sortie standard , ici :
Hello World!

avatar pecos | 

Hm... A première vue ça a l'air fréquentable Mais j'y vois déjà comme un tout petit problème Ou est passé le point virgule C'est juste pour faire moderne qu'ils ont supprimé ça dans leur nouveau langage ou il y a une nécessité Je dis ça parce que ça aide bien le point virgule Surtout quand on a un écran qui ne fait pas 40000 pixels de large et qu'on a activé le word wrap automatique dans le code Juste pour savoir si on est au bout d'une instruction ou pas Le compilo il s'en fout mais moi comment je fais pour savoir ou commence la nouvelle instruction

Ce texte était écrit pour votre plus grand plaisir en n'utilisant pas le point à la fin des phrases.
...Pour que les non développeurs comprennent ma perplexitude face à du code sans point virgule à la fin des instructions.

Tiens, petite question à ceux qui ont déjà un peu testé : comment fait-on pour écrire un truc du genre

for(int i = 0; i < j; i++){}

Sans les point virgules ????

avatar NicoTupe | 

Les points virgules sont pas interdits, ils sont optionnels et justement indispensable quand tu as plusieurs instructions sur la même ligne alors

for(int i = 0; i < j; i++){}

tu l'écriras pareil. Mais tu aurais pu aussi l'écrire (si j'ai bien compris)

for i in 0..j {}

et là plus de points virgules. Après si tu adores les points virgules, optionnel veut dire que tu peux continuer à en mettre partout!

Mais bon on survit très très bien sans points virgules (et même sans parenthèses la plupart du temps... ;))

avatar pecos | 

Quand j'ai commencé à programmer, il y a 20 ans, je détestais les points virgules.

C'est sûr que pour débuter, ça peut dérouter, surtout quand c'est un langage qui n'accepte pas l'absence de point virgule et dans un environnement de dev pas aussi bienveillant qu'XCode qui va nous dire immédiatement s'il en manque un (par exemple développer en PHP avec un viel éditeur de texte).

Donc si j'ai bien compris c'est comme en JS : le point virgule est optionnel.
Pourquoi pas...

avatar NicoTupe | 

Comme Ruby aussi qui lui permet même d'ommetre les parenthèses et certaines accolades (et on le vit très bien).

JS est sans doute pas le meilleur exemple vu que même si théoriquement il le permet, ça ne permet plus de minimiser le code comme c'est monnaie courante sur les sites web.

avatar redchou | 

Tu peux écrire avec la nouvelle ou l'ancienne syntaxe, dans la Doc c'est indiqué:

These two loops do the same thing:

var firstForLoop = 0
for i in 0..3 {
firstForLoop += i
}
firstForLoop // Affiche la valeur de firstForLoop dans le playground

var secondForLoop = 0
for var i = 0; i < 3; ++i {
secondForLoop += 1
}
secondForLoop // Affiche la valeur de secondForLoop dans le playground

- Je me suis permit de commenter deux lignes pour expliquer que le code ci dessus doit être coller dans Xcode en mode playground.

avatar John Maynard Keynes | 

../.. réaction un peu vive désolé ;-)

avatar pecos | 

mmm... t'emballe pas.
J'ai jamais dis que j'étais un fanatique du point virgule.
Mais comme dans l'article, il y a écrit "envolés les points virgules", j'en ai déduit avec raison qu'il n'y en avait pas.

Par ailleurs, en effet, il y a bien des langages qui existent.
Pourquoi un nouveau ?
Le seul risque finalement c'est de se planter royalement en n'intéressant pas grand monde.
Dois-je rappeler qu'objective-C a attendu mac OSX, et dans un grande mesure, iOS, pour prendre son envol ?
Il me semble quand même qu'entre la date de sa sortie sous NEXT et les premiers softs pour mac OSX, il a passé de l'eau sous les ponts.. et pas beaucoup de devs.

Je ne crois pas non plus que les milliers de devs objective C vont passer, la fleur au fusil, à un nouveau langage juste parce qu'Apple le sort.
A moins qu'on y soit contraints et forcés.

En tous cas, moi ça m'excite pas plus que ça.
Je pense qu'il y a beaucoup plus intelligent à faire pour faire venir de nouveaux devs et avoir un langage simple, performant et moderne.

Par exemple, Apple aurait pu nous sortir un bon gros jeu d'APIs cocoa pour JAVA.
Ça m'aurait bien plus émoustillé : mon assez courte expérience de JAVA se limitant au développement d'apps pour Android, j'ai pu constater que si les APIs de Google sont bel et bien mal fichues (je trouve, surtout par rappoort à ce qu'on a dans les APIs cocoa), le langage, lui est particulièrement agréable.

Dommage.

avatar John Maynard Keynes | 

@pecos

J'avais éditais en m'excusant avant que tu ne postes.

Mais je suis quand même assez surpris ;-

Pour le reste :

Pourquoi un nouveau ?

Savoir programmer ce n'est pas connaitre un langage, si de nombreux langage ont été développé ce n'est pas juste pour le plaisir (Même s'il y a des langage qui ne sont fait que pour ça voir ici http://en.wikipedia.org/wiki/Esoteric_programming_language ou là en français http://fr.wikipedia.org/wiki/Langage_de_programmation_exotique, la c'est du très haut niveau de perversion) mais pour répondre à de nouvelle approche, de nouveau défis, de nouveaux paradigme.

Si NeXT fût bâtît autour d'Objective C ce n'est pas juste par caprice ou pour faire chier ce qui maitrisait le C et ne jurait que par lui.

L'histoire des langages de programmation est très riche avec des débats, des polémiques, de vision et même au sein d'un langage son évolution donne lieu à de sérieuse bataille comme celle ayant entourée les diverse phase de normalisation des version successives du C++

Bref un nouveau langage ce n'est pas grand chose à apprendre s'il n'introduit pas un tout nouveau paradigme, en général la maitrise vient en quelques jours.

L'intérêt d'un nouveau langage c'est d'être mieux adapté à des tâche, plus lisible, plus efficace, d'avoir un meilleur pouvoir à manipuler certaines abstractions, d'avoir une plus grande lisibilité, une plus forte expressivité ...

Bref créer des langages c'est assez banal et ne pose pas de pb.

Je n'ai pas encore fait le point sur la proposition d'Apple mais l'esprit du langage et des outils qui l'accompagne semble très intéressant.

Et pour le fun, une page wiki avec de nombreuse version de la boucle For dans de nombreux langages ;-)

PS : Je conseil vraiment les liens vers les langages de programmation exotique, c'est du lourd ;-)

avatar Darth Philou (non vérifié) | 

@pecos :
C'est méconnaître les développeurs. Ceux-ci sont toujours avides de nouveaux langages qui leur permettent de dépasser les limites.
Aujourd'hui ce sont les langages type Python ou Ruby qui ont la côte, langages de style script.

Ce qui est intéressant avec la proposition d'Apple c'est qu'il combine les avantages d'un langage de script (productivité, expressivité notamment) à même de séduire les "jeunes" développeurs et celui d'un langage typé susceptible de rassurer les plus "anciens".

Je prédis le plus bel avenir pour ce langage et une très bonne adoption.

avatar pecos | 

Ouais, je leur fais confiance aussi.
de là à en faire un succès commercial... on verra.

Merci joneskind pour le lien, j'ai bien rigolé.
Faut que je me mette au LOLCODE. :D

avatar John Maynard Keynes | 

@ pecos

Merci joneskind pour le lien, j'ai bien rigolé.
Faut que je me mette au LOLCODE. :D

Moi, c'est John Maynard Keynes ;-)

Il y a vraiment des trucs de grands malades dans les langages exotiques, un de mes favoris est BrainFuck :-)

http://en.wikipedia.org/wiki/Brainfuck

avatar NicoTupe | 

Perso mon favori reste whitespace : http://esolangs.org/wiki/Whitespace

avatar John Maynard Keynes | 

@NicoTupe

La véritable élégance du minimalisme et de l'expressivité du code portés à leur paroxysme :-)

avatar oomu | 

"Par exemple, Apple aurait pu nous sortir un bon gros jeu d'APIs cocoa pour JAVA.

Ça m'aurait bien plus émoustillé : mon assez courte expérience de JAVA se limitant au développement d'apps pour Android, j'ai pu constater que si les APIs de Google sont bel et bien mal fichues (je trouve, surtout par rappoort à ce qu'on a dans les APIs cocoa), le langage, lui est particulièrement agréable.
"

Os x 10.0 avait fait de java un langage de premier plan, à coté de Objective-C pour programmer Cocoa

Les ajouts de cocoa étaient à la fois porté à Objective-C et Java.

Le Marché a parlé: ça n'intéressait pas les développeurs. Le principe de JVM est un obstacle pour obtenir toutes les performances d'une machine et reste une source de bugs supplémentaire en plus du runtime cocoa et de l'OS.

Apple a en quelques versions de Os X déclassé java pour cocoa puis supprimé.

C'est une guerre perdue, Apple fait donc tout par dessus LLVM (pour qui elle a beaucoup investi) et un langage sur mesure pour les fonctionnalités de Cocoa et Xcode. C'est ce qui permet l'élégance de Cocoa.

Objective C et Openstep allait ensemble avec Project Builder et Interface Builder, ce ne sont pas des coïncidences.
Swift, Cocoa et Xcode formeront un tout indissociable aussi.

avatar joneskind | 

Quelqu'un sait comment télécharger xCode sans être développeur payant ? J'aimerais beaucoup le tester.

Merci !

avatar Domsou | 

@joneskind :
Il suffit d'aller sur :
http://developer.apple.com

Pour avoir Xcode 6 il faut avoir un compte développeur et c'est gratuit !

avatar joneskind | 

@Domsou

Merci beaucoup !

avatar tomate | 

Ah non, ça ne suffit pas. XCode 6 est en beta pour l'instant. Seuls les développeurs ayant un compte payant peuvent le télécharger. Pour ceux qui ont un compte gratuit, il faudra attendre la release officielle en automne.

avatar pecos | 

Pas besoin de payer pour être dev apple : c'est seulement si tu veux VENDRE tes apps, qu'il faut payer.
Inscrit toi sur le site de dev apple, c'es gratuit.
https://developer.apple.com/register/index.action

avatar XiliX | 

@joneskind :
Je suis développeur gratuit. Et j'ai accès à XCode et toute la bibliothèque.
Mais je n'ai pas encore vérifié si je peux télécharger XCode Swifté

avatar redchou | 

- Il me semblait que Xcode 6 nécessitait Yosemite mais non:
This is a pre-release version of the complete Xcode developer toolset for Mac, iPhone, iPod touch, and iPad. Please review the Release Notes before installing. Xcode 6 beta requires OS X Mavericks 10.9.3 or later.

- Il est compatible 10.9.3+ par contre je sais pas si il est dispo avec les programmes de développement gratuit. Il est dispo sur les pages de la Beta d'iOS 8 et de Yosemite.
Mais je pense qu'on peut le trouver à droite ou à gauche facilement ;-)

avatar tomate | 

c.f. ma réponse ci-dessus.

avatar Mr. THZ | 

Ahah ça a l'air bien simple, ça change de l'Objective-C ou du Python, espérons que Swift sera « universel », j'ai pas envie d'arriver au bureau et d'être le seul à l'utiliser :')

avatar oomu | 

Swift sera disponible à quiconque veut bien l'utiliser, il sera dispo au sein de LLVM et le runtime objective-c est sous licence Libre (APL 2), mais Apple le fait avant tout pour les besoins de ses plateformes.

Il est peu susceptible que ça soit adopté (concrètement) hors du Mac et ios.

Linux a déjà assez de chaos avec C/Mono/GTK et C++/QT/KDE et autres pythons, perl, etc

Windows a tout autour de .NET et C++/MFC et autres frameworks + ou - .net

avatar Ellipse | 

Initiative intéressante de la part d'Apple.

A première vue, il s'agit d'un hybride entre JS et Python, avec un typage faible. Il est donc beaucoup plus simple d'accès qu'Objective-C.

C'est au niveau de la gestion des objets que je me pose des questions. Objective-C est complexe pour la gestion l'héritage et du polymorphisme, mais très puissant. Si Swift s'approche de la gestion JS pour les objets, ça va être un peu plus compliqué à gérer.

avatar John Maynard Keynes | 

@Ellipse

Effectivement sur le modèle objet je suis curieux de voir les choix qu'ils ont fait.

avatar Mithrandir | 

@Ellipse :
Ça n'a pas l'air de ressembler beaucoup à JS, mis à part le mot clé var qu'on retrouve d'ailleurs dans beaucoup de langages.

avatar oomu | 

typage fort mais inféré.

c'est indispensable pour permettre les optimisations et la vitesse au niveau de Objective-C et +

-
Swift est censé avoir les même possibilités que Obj-C, c'est compatible et ça repose sur le même runtime.
Swift est obligé de géré tout ce que Cocoa met en oeuvre (héritage, protocoles, propriétés, interface)

Je ne me rappelle pas que Objective-C soit particulièrement "complexe" en objet. Il ne gère pas l'héritage multiple, ce qui limite nettement l'envie de pondre des classes complexes.

avatar PiRMeZuR | 

Ce langage a l'air de simplifier pas mal la syntaxe, et ce n'est pas inutile, étant donné la lourdeur de l'Objective-C (rien que mettre une @ devant un NSString, ou être obligé d'utiliser une fonction pour en concaténer...). En revanche, je ne pense pas que simplifier à outrance soit une bonne chose car on finit par donner de mauvaises habitudes aux développeurs, qui se traduisent par des problèmes (de performance, par exemple) dans le code.

Ça fait sûrement un peu grincheux de prétendre que rompre avec les vieilles traditions va conduire un langage à sa perte, mais il y a du vrai dans ce que disent certains puristes. Plus un langage est de haut niveau, moins le code écrit est efficace (au global, ça peut dépendre des développeurs), et donner des raccourcis aux développeurs peut les conduire à ne plus utiliser la solution optimale. Mais ce n'est pas l'approche qu'aura un journaliste pour son article.

Je suis un peu rabat-joie, mais je suis globalement très content de ces changements, et de toutes les nouvelles API des deux OS. Le plus dur va être d'attendre qu'iOS 8 atteigne 90% pour commencer à abandonner iOS 7 !

avatar John Maynard Keynes | 

@PiRMeZuR

Plus un langage est de haut niveau, moins le code écrit est efficace

Bjarne Stroustrup s'inscrirait sans doute en faux et te dirait : c'est le niveau du codeur qui est en cause pas celui du langage ;-)

Une bonne vieille polémique en fait :-)

A titre perso je considère qu'un langage proposant de manipuler des concepts abstraits de haut niveau et offrants l'accès à plusieurs paradigmes de programmation n'est pas à la portée du premier venu.

Il y a souvent un déficit de bases théoriques solides chez certains codeurs, qui utilisent des langages sans en comprendre réellement les tenant et les aboutissants.

L'exemple parfait restant le C++ assez largement utilisé mais bien souvent absolument pas maitrisé réellement, ce qui n'empêche nullement de poser du code, bien évidement.

Les exemples sont nombreux et il n'est souvent pas besoin d'aller chercher bien loin pour trouver du codeurs laborieux incapable de dépasser les bases qu'il trouve pratiques, suffisantes pour lui et qui ne veut surtout pas se prendre la tête avec d'inutiles truc d'intelos.

avatar Dark-Vador | 

@PiRMeZuR

Simplifier la syntaxe c'est bien.

Un autre point noir à prendre en compte également concerne les conversions de types de données.
Dans une application, on saisit généralement des données dans des champs alphanumériques et ensuite on contrôle puis on traite.

Prenons l'exemple de Java, convertir un numérique en chaine de caractères ou une chaine contenant une valeur numérique en une valeur numérique c'est galère à gérer aussi ! En java on passe son temps à passer d'un format à un autre avec des fonctions de conversion un peu lourdes !

Python est beaucoup plus souple de ce point de vue ainsi que PHP. Le cast n'est pas automatique en Java !

L'est-il en Swift ?

avatar oomu | 

Swift est comme objective-C : typé avant exécution.

Contrairement à objective-C, Swift fait de l'inférence de type (pas obligé de préciser si c'est évident, en tenant compte des choix par défaut du langage)

si vous voulez transformer un type en un autre, il faut caster, comme en objective-C.

-
Quand Apple a déclaré subitement que Swift sera + performant que Objective-C, vous savez à quoi vous attendre: nettement moins de trucs à la PHP/Python

mais la syntaxe est moderne et ajoute quelques fonctionnalités appréciables d''emblée au langage (l'inférence, les optionnels, les closures, les génériques, etc)

Pages

CONNEXION UTILISATEUR