IBM exporte le terrain de jeu de Swift dans le navigateur

Nicolas Furno |

En proposant à tous les développeurs OS X et iOS un tout nouveau langage de programmation, le Swift, Apple a aussi imaginé le « Playground ». Ce terrain de jeu intégré à Xcode permet de découvrir le langage sans créer de programme : on tape quelques lignes, on exécute le code et on obtient immédiatement un résultat. Un excellent moyen d’apprendre le Swift, mais aussi la programmation en général et cette interface est d’ores et déjà utilisée dans certains cours.

Le code est à gauche, les résultats s’affichent sur la droite et ils sont mis à jour en temps réel. Cliquer pour agrandir

Puisque Swift est désormais open-source, on peut l’utiliser en-dehors de Xcode, et même du Mac. La preuve, IBM a recréé le Playground imaginé par Apple, mais dans un navigateur web. L’entreprise a utilisé pour cela le compilateur pour Linux fourni par Apple et on peut utiliser ce service comme la fonction de Xcode : on saisit du code sur la gauche, on a le résultat sur la droite. Cette version est toutefois encore plus simple, puisque la seule chose qui est nécessaire, c’est un appareil connecté à internet…

Le playground web d’IBM : les résultats apparaissent sur la droite, sous la ligne « Output ». Cliquer pour agrandir

Dans un article de blog qui présente la fonction, IBM ajoute que ce n’est que le début. L’entreprise exploite Swift bien au-delà de ce terrain de jeu, sans préciser pour quoi faire à ce stade.

Tags
avatar françois bayrou | 

rhaaa un accent dans un nom de variaaaable

avatar thefolken | 

Tu peux même mettre des emojis si tu veux !

avatar Schwarzer Stern | 

Chouette ! Sans accents, j'ai parfois du mal à trouver un nom directement lisible et compréhensible pour mes variables en français.

avatar Mrleblanc101 | 

@Schwarzer Stern :
Tu les écris à l'identique mais sans l'accent...
Simple principe de programmation ! Tout comme la majuscule lorsqu'ils sont en deux mots.
Ex: annee, anneeNaissance

avatar Schwarzer Stern | 

lol merci je n'y avais pas pensé :P le problème vient des mots qui n'ont pas la même signification avec ou sans accents, du genre (exemples imaginaires) : une fonction "trouve" ou une variable "trouvé" ;)

avatar mac-a-dames | 

@Schwarzer Stern :
Jamais eu ce problème... Je pense que tu as une mauvaise convention de nommage (sans vouloir t'être désagréable !)

avatar Schwarzer Stern | 

Oh non c'est plus que possible, je reste amateur

avatar Domsware | 

@mac-a-dames :
Plus besoin de convention de nommage si l'on utilise le langage naturel.

avatar tekikou | 

Ça s'appelle le CamelCase:
https://fr.wikipedia.org/wiki/CamelCase

avatar françois bayrou | 

Beaucoup de langages le permettent.
Certains te permettent même de créer des raccourcis, genre
nouveau = nouvelle = new, Chaîne = String

Comme ça tu peux faire
var chaîne = nouvelle Chaîne()
au lieu de
var chaîne = new String()

Si c'est ça qui peut te permettre de mieux programmer, faut pas s'en priver

avatar ovea | 

@françois bayrou :
Oai ! ^^

Y 'a même des langages qui permettent de programmer en langage mathématique … wysiwyg … à partir des équations et des schémas avec reconnaissance des concepts

avatar Domsware | 

@Schwarzer Stern :
D'accord avec toi. Les accents me permettent de lire plus facilement le code en le rapprochant du langage naturel.

Cela me permet de me rapprocher des algorithmes que j'écris en français.

avatar Domsware | 

@Schwarzer Stern :
Cela permet d'exprimer en français les actions passées. Exemple :
laPhraseEstCoupée
laPhraseEstCoupee

Le premier est immédiatement interprété alors que le second nécessité une "traduction" mentale.

avatar françois bayrou | 

Quitte à écrire des vars en français, autant mettre les accents.
Mais tu auras toujours besoin de cette traduction mentale.
Pire encore, tu devras sans arrêt switcher entre traduction et non traduction au sein d'un même fichier :
En effet, tu peux appeler ta view "vue", mais ca sera toujours une "View" et elle aura toujours une méthode "viewDidLoad", et ton algo aura toujours des "if", des "switch", des "while", des "for" etc. puisque les frameworks et les mots réservés sont, et seront toujours en anglais !
Je trouve personnellement plus facile de lire un code quand tout est dans la même langue.

avatar marc_os | 

@ françois bayrou
Du moment qu'on n'utilise pas toto...

avatar Seccotine | 

C'est plutôt « Playground » que « Sandbox »
EDIT: Je ne sais pas pourquoi IBM l'a appelé Sandbox, car cela prête à confusion.

avatar Nicolas Furno | 

@ Seccotine : ah oui, je me disais aussi que ça ne collait pas ! j'ai corrigé, merci.

J'imagine qu'ils n'ont pas réutilisé Playground pour ne pas avoir de problème avec Apple ?

avatar SartMatt | 

Playground en lui même n'a rien de bien exceptionnel, donc c'est pas bien compliqué de faire la même chose sans utiliser directement Playground.

C'est un REPL relativement classique, comme on en trouve pour quasiment tous les langages. Le seul point qui n'est pas très commun, c'est le fait de pouvoir modifier à posteriori une ligne (les REPL fonctionnent souvent ligne par ligne, sans possibilité de modifier les lignes précédentes), mais ce système temps totalement interactif existait déjà pour d'autres langages (par exemple, la Worksheet de Scala, qui existe depuis 2012).

Et là IBM ne s'est pas particulièrement foulé, il n'y a même pas cette réévaluation temps réel à chaque modification de ligne, ça évalue tout le script en une seule fois et sur demande. Il suffit donc d'avoir derrière un quelconque interpréteur Swift, de lui passer le script et de récupérer sa sortie.

avatar SartMatt | 

C'est bel et bien une sandbox : un environnement d'exécution propre et verrouillé, tournant au sein d'un système hôte auquel on n'a pas accès depuis la sandbox.

Playground n'est pour sa part pas une sandbox, mais peut être exécuté en environnement sandboxé (ce n'était pas le cas au début, mais je crois que ça l'est maintenant).

avatar ErGo_404 | 

Je ne sais pas s'ils ont eu accès aux sources avant ou s'ils se préparaient à la sortie, mais c'est plutôt impressionnant d'avoir fait ça dès le premier jour.

EDIT : à ce propos, quelqu'un connaîtrait un outil pour écrire du code JS et l'exécuter directement, un peu comme le fait jsfiddle, mais qu'on puisse héberger soi-même ?

avatar Lemmings | 

@ErGo_404 : t'as essayé la console de dev de ton navigateur web ?

avatar ovea | 

Du coup ça serait marrant de Swifter dans un Playgound sur iOS …

avatar JustThink | 

Le développement sur iPad pro va t il devenir une réalité?

avatar iPal | 

Pas besoin d'attendre la version open-source de Swift. Des compilateurs Swift online, y en a depuis le début de l'année. Comme http://swiftstub.com qui fait la même chose que celui d'IBM.

avatar fanchig | 

Comment vous voyez Swift par rapport à Python? Python est très implanté dans la communauté machine learning par exemple... Est-ce que Swift peut le remplacer?

avatar Lemmings | 

Moi je me pose surtout la question de l'intérêt d'un nouveau langage en 2015...

avatar feefee | 

@Lemmings :

"Moi je me pose surtout la question de l'intérêt d'un nouveau langage en 2015..."

Ouaih tu peux toujours faire du Cobol, turbo pascal , et autres :-)

Pour Moi l'avenir de l'informatique passe aussi par de nouveaux langages évolués et sans toutes les contraintes accumulés durant tant d'années . À part pour les jeux , et encore, nuls besoins d'un langage proche proche de la machine.

Mais je sais bien que les informaticiens purs et durs voudront toujours garder la main sur ce qu'ils ont appris durant tant d'années avec sueur, toutes ces règles , pour ne pas tout jeter à la poubelle :-)

avatar Lemmings | 

Sur le principe je suis bien d'accord, je ne fais pas d'assembleur au quotidien loin de là, mais je comprend mal l'intérêt du Swift comparé aux autres langages modernes qui existent déjà.

En gros, qu'es-ce qu'on fera de mieux en swift qu'en java, C++, Delphi, Go, JS ou autres ?

avatar françois bayrou | 

"Pour Moi l'avenir de l'informatique passe aussi par de nouveaux langages évolués et sans toutes les contraintes accumulés durant tant d'années"

Comme par exemple la compilation ? ;) ( python, js+nodejs, ruby )

avatar iPal | 

@Lemmings :

/facepalm

avatar thebarty | 

Il y a réellement des gens qui codent en français ? Vous êtes fous, les gars !

avatar Seccotine | 

Il faut vraiment être taré en effet...

CONNEXION UTILISATEUR