Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

WWDC : Apple dévoile son nouveau langage de programmation Swift
Qui serait plus sûr, plus rapide et plus fiable qu'Objective-C

Le , par Hinault Romaric

0PARTAGES

4  0 
La conférence WWDC 2014 (Apple Worldwide Developers Conference), l’événement majeur de l’année regroupant les développeurs autour des technologies d’Apple a été riche en annonces pour sa première journée.

La plus grosse surprise du jour a été la présentation d’un nouveau langage de programmation par la firme à la pomme croquée pour le développement d’applications pour iOS et OS X.

Baptisé Swift, ce nouveau langage introduit une syntaxe toute nouvelle. Apple souhaite marquer la rupture avec le langage C, sous lequel repose Objective-C. Selon Craig Federighi, vice-président d’Apple, à qui l’honneur a été accordé pour annoncer le langage, « Swift représente le nouveau Objective-C sans le langage de programmation C ».

Swift sera inclus par défaut dans l’outil de développement Cocoa et Cocoa Touch. Il reposera, pour un début, sur le même runtime qu’Objective-C et le code écrit en Swift pourra cohabiter avec du code C/Objective-C, ceci pour éviter dans un premier temps de dépayser les développeurs déjà familiers avec C/Objective-C. Mais, le langage évoluera vers une syntaxe proche des langages de script comme Python.


Par rapport à Objective-C, Swift introduit de nouveaux opérateurs ; prend en charge les types de variables comme les Tuples et les types facultatifs ; les génériques ; « closures » ; des structures qui soutiennent des méthodes, des extensions et des protocoles ; des itérations rapides sur une plage ou une collection ; le support des modèles de programmation fonctionnelle, etc.

Swift bénéficiera d’une intégration parfaite avec Xcode. Les développeurs auront à leur disposition un éditeur de code interactif, permettant d’appliquer des changements dans le code et de voir instantanément les résultats sur l’application.

« Swift est un nouveau langage de programmation puissant pour OS X et iOS, qui permet aux développeurs de créer avec facilité des applications incroyables », vante Apple dans un communiqué de presse. « Swift aide les développeurs à écrire du code plus sûr et plus fiable, en éliminant les erreurs qui existent avec Objective-C. Les développeurs peuvent facilement intégrer Swift dans leurs applications existantes. »

Selon Apple, le langage a été conçu avec la sécurité à l’esprit, avec notamment les variables qui doivent être initialisées avant utilisation, des tableaux qui sont vérifiés en cas de débordement ou encore la gestion automatique de la mémoire. Apple met également en avant la vitesse du langage. Par exemple, un algorithme de tri complexe est 3,9 fois plus rapide que son équivalent en Python et également plus rapide que son équivalent en Objective-C.


Dès que les versions stables du prochain iOS et OS X seront disponibles, les développeurs pourront publier sur l’App Store leurs applications développées avec Swift.

Source : WWDC 2014

Et vous ?

Que pensez-vous de ce nouveau langage de programmation ? A-t-on encore besoin d'un nième langage ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de iolco51
Membre habitué https://www.developpez.com
Le 03/06/2014 à 11:41
Comme d'habitude Apple fait les chose différemment. D'habitude j'aime bien ceux qui font différemment, mais comme il y a déjà pléthore de langages...

A l'époque Objective-C était un langage pertinent pour les devs, au vu de la part de marché d'IOS jusqu'il y a 4-5 ans. Swift le sera-t-il autant? Et puis Objective-C avait quelques heures de vol (1983, c'est quand même du éprouvé sur long terme).

Maintenant, un langage de programmation juste pour IOS, alors que les parts de marché d'IOS sont en nette régression, et que les devs doivent déjà maitriser au grand minimum une demi douzaine de langages pour être performants.

C'est juste S.T.U.P.I.D.E.

Mini état des lieux du métier de développeur:

  • Les langages répandus (C, C++, Haskell, Python, Perl, Objective-C, Java, Javascript, Scala, Groovy, Lisp et ses dérivés, Ruby, C#, F# et autres langages de .NET, PHP, Lua, langages de shell divers), sans oublier les dinosaures (FORTRAN, COBOL -aie) et les petits derniers prometteurs (D, dart, coffee, GO), les tentatives de langages plus ou moins propriétaires, les langages à applications spécifiques (VBA, R, Mathlab, les variantes de SQL), la multitude de ceux que j'ai oublié, et bien sur se tenir a jour des nouvelles versions et fonctions de tous ces langages. Combien de ces langages devez vous maitriser un minimum pour être performant dans votre métier?
  • On ajoute les frameworks qu'il faut maitriser, les concepts de plus haut niveau (architecture SOA, MDA... Les concepts SOLID, injection de dependance, les design patterns), les methodes de dev (TDD, BDD, La rache), les methodes et process d'ingenierie (RUP, SCRUM, XP, Crystal, la rache), l'integration continue et DevOps...
  • J'ai failli oublier les grandes bases: l'architecture systeme, les processeurs, la mémoire et sa gestion, les protocoles et les services réseau (OSI, TCP/IP, HTTP...etc.), les structures de données.
  • Ah, et les formats de sérialisation données (XML, JSON, protocol buffers...), les protocoles de services (JMS, COM, CORBA...), les couches de présentation (HTML et consorts... Heureusement le HTML semble prendre la tête)
  • N'oublions pas non plus les outils: IDEs, compilateurs, gestionnaires de version et consorts
  • Et puis les bases de données, car il faut en savoir dessus (toutes les variantes SQL, Big Data, orientées graphe
  • On rajoute aussi les bonne pratiques, la sécurité de l'information
  • Enfin et surtout: savoir faire du code qui marche (et qui fait ce qu'il doit faire) dans les temps impartis


Wow!

Merci Apple. Nous avions justement besoin d'un nouveau langage, qui n'est pas interopérable, que vous êtes les seuls a développer et soutenir, avec une ÉNORME API, qu'il faudra (ré)apprendre, maitriser (et évidemment debugger pour vous, comme toute nouvelle techno informatique qui sera truffée de bugs mystérieux).
Et puis le communiqué est plutot rigolo:
  • Gagner un pouillème sur les tris d'objets? C'est presque comique comme promotion de langage, sur du big data je comprendrais l’intérêt, mais sur un terminal mobile ou un PC Mac je n'ai pas vu de problème de perfs avec les tris depuis 15 ans dans 99% des cas d'utilisation. Et encore je doute de leur benchmark, lorsqu'on se rendra compte que peut-être trier un tableau d'entiers prend 15 fois plus de temps qu'en C/Java/Python/C#.
  • Et communiquer sur la sécurité alors que le bousin va être en bêta dans les 5 années à venir avec une multitude de failles dans le coeur du langage (ou le compilateur, ou les API) bien plus faciles a exploiter en masse que les erreurs de dev.


COOL !

Ceci dit, que j'aime avant dans notre métier de développeur c'est que l'on ne s'ennuie jamais.
15  0 
Avatar de abriotde
Membre expérimenté https://www.developpez.com
Le 03/06/2014 à 8:17
Son principale défaut : tout comme Objective-C c'est un langage propriétaire exclusivement réservé au développement Apple. Cela limite grandement l’intérêt.
Sinon dans l'absolu un langage plus rapide a l’exécution et au développement est toujours le bienvenu. Je doute que le langage soit vraiment plus rapide car le benchmark est sur un algorithme répétitif simple que les VM compilent en langage machine pour les plus optimisé. La VM est simplement plus optimisé car plus récente...
10  2 
Avatar de Gugelhupf
Modérateur https://www.developpez.com
Le 03/06/2014 à 9:52
Est-ce que les programmes créés avec Swift seront exécutés par une machine virtuelle Apple ?

Objective-C n'est pas un langage propriétaire.
De base non. Mais Apple est la seule société à l'utiliser, et je vois mal un programme en Objective-C sans les API Cocoa etc...
Objective-C était un langage mort jusqu'à ce que les iPhone/iPad débarquent.
Le jour où Apple laissera tomber Objective-C, ce sera la fin de celui-ci.
8  0 
Avatar de rthomas
Membre du Club https://www.developpez.com
Le 03/06/2014 à 9:16
Beaucoup de développeurs iOS réagissent sur Twitter et pensent plutôt passer à Xamarin qui à l'avantage de cibler aussi Android et Windows phone.
7  1 
Avatar de air-dex
Membre expert https://www.developpez.com
Le 03/06/2014 à 13:59
Citation Envoyé par Hinault Romaric Voir le message
Par exemple, un algorithme de tri complexe est 3,9 fois plus rapide que son équivalent en Python
Les joies de la communication, où l'on compare un langage compilé optimisé pour une plateforme à un langage de script multi-plateformes. Je ne dis pas (ni ne pense) que Python est tout sauf performant, mais là c'est juste trop facile. Il eut été plus pertinent de comparer Swift à C++ ou C# qui sont bien plus proches.

Citation Envoyé par Hinault Romaric Voir le message
A-t-on encore besoin d'un nième langage ?
Non. Mais là c'est Apple et comme d'habitude ils n'ont pas pu s'empêcher de faire du non standard.
7  1 
Avatar de Abawell
Membre à l'essai https://www.developpez.com
Le 03/06/2014 à 15:39
Citation Envoyé par DonQuiche Voir le message
Là aussi rien n'empêche d'accomplir ceci, à moins qu'il n'ait fallu ajouter au langage des constructions spécifiques. Si oui je suis authentiquement curieux de savoir lesquelles.
Exemple:
En Objective C, une méthode peut s'appeler myMethodWithA:andB:

La déclaration s'écrit
-(void)myMethodWithAint)a andBint)b;

l'appel s'écrit
[myObject myMethodWithA:12 andB:42];

va écrire ça en C# pour rester compatible avec les librairies Cocoa en sachant que c'est plus qu'une question de compilation parce que le compilateur ne se contente pas de trouver l'adresse d'une méthode à appeler mais c'est réellement un message qui s'appelle myMethodWithA:andB qui passe plusieurs classes, le message pouvant être intercepté par des classes créées dynamiquement.

En Swift, pour répondre à ce problème Apple a créé la notion de nom de variable interne et externe.
La méthode est déclarée
function myMethodWithA( parA:Int, andB parB:Int);

andB est le nom externe du paramètre et parB le nom interne du paramètre à la fonction.

L'appel de la fonction s'écrit alors
myObject.myMethodWithA(12, andB:42);

Par défaut, le premier paramètre n'a pas de nom externe (mais peut en avoir un) et s'il n'y a pas de nom externe déclaré aux paramètres suivants, le compilateur utilise le nom interne (mais on peut lui demander de ne pas en utiliser).

Et ça ce n'est qu'un des nombreux points qui a obligé Apple a écrire un nouveau langage.
6  0 
Avatar de CP / M
Membre actif https://www.developpez.com
Le 03/06/2014 à 9:26
Citation Envoyé par abriotde Voir le message
Son principale défaut : tout comme Objective-C c'est un langage propriétaire exclusivement réservé au développement Apple. Cela limite grandement l’intérêt.
Sinon dans l'absolu un langage plus rapide a l’exécution et au développement est toujours le bienvenu. Je doute que le langage soit vraiment plus rapide car le benchmark est sur un algorithme répétitif simple que les VM compilent en langage machine pour les plus optimisé. La VM est simplement plus optimisé car plus récente...
Objective-C n'est pas un langage propriétaire. Ce qui l'est, c'est l'implémentation par Apple des librairies Cocoa, NextStep et ce qui gravite autour, même si GNUStep est une réimplémentation partielle de NextStep. Et clang et gcc sont tout à fait apacbles de compiler de l'Objectve-C ; c'est d'ailleurs les compilateurs qui sont ou ont été fournis par Apple.
5  1 
Avatar de Sylvaner
Membre éclairé https://www.developpez.com
Le 03/06/2014 à 10:36
Citation Envoyé par Gugelhupf Voir le message

Objective-C était un langage mort jusqu'à ce que les iPhone/iPad débarquent.
Merci grâce à toi je comprend ce que j'ai ressenti quand j'ai appris ce langage, c'est donc un langage zombie
Citation Envoyé par CP / M

... même si GNUStep est une réimplémentation partielle de NextStep. Et clang et gcc sont tout à fait apacbles de compiler de l'Objectve-C ...
C'est officiel, le masochisme informatique existe.
4  0 
Avatar de teddyFry
Membre à l'essai https://www.developpez.com
Le 03/06/2014 à 12:48
J'ai du mal à comprendre comment avec le même runtime un language peut tourner deux fois plus vite qu'avec un autre.
Il me semble que traduire un programme de C# à F# n'apporte pas de bénéfices particuliers à moins d'utiliser les nouveaux concepts introduits avec le F#.

Enfin il me semble que faire évoluer l'objectif C aurait été un choix bien plus judicieux pour leur écosystème.
4  0 
Avatar de DonQuiche
Expert confirmé https://www.developpez.com
Le 03/06/2014 à 13:52
Citation Envoyé par Le Vendangeur Masqué Voir le message
Sans parler des qualités propres de Swift face à un vieillissant C#
Justement j'aimerais que tu les mentionnes car elles ne me semblent pas évidentes et je ne vois pas en quoi C# est vieillissant. S'il y a des innovations intéressantes dans ce langage ou des choses sortant de l'ordinaire je serais ravi de les découvrir mais je ne vois que du conventionnel.

le critère des perfs disqualifie automatiquement ce bricolage lourd qu'est Xamarin.
Swift étant un langage "sûr" il effectue des vérifications aux bords et une gestion automatique de la mémoire. Donc comme C#. Alors comment Apple fera t-il pour faire exactement les mêmes opérations mais en plus rapide ? Via un champ de distorsion de la réalité créé par le fantôme de Steve Jobs au sein de chaque processeur ?

Et vu la taille du marché d'Apple (un parc total qui frise le milliard d'appareils) et de ses clients qui n'ont pas de pingrerie à acheter des applis, je dois dire que l'argument du "ça tourne ailleurs" m'est parfaitement égal.
Pour toi je ne sais pas mais l'industrie apprécie en général de pouvoir doubler ses ventes.
6  2