Merci Cirdo pour le lien
Pour ce qui est des APIs Cocoa et Cocoa Touch oui, ce sont bien les mêmes.
@Brionne : je ne comprends pas ce que tu appelles complémentaire et pourquoi, de facto ça en fait un langage inintéressant.
Je serais tenter de penser tout le contraire. Le fait d'avoir un autre langage pour attaquer la même API me semble non seulement dans l'ère du temps (cf. les frameworks polyglotes émergents) mais en plus intéressant. Objective-C est un langage pénible à prendre en main en plus d'être vraiment très verbeux, ce qui a poussé beaucoup de développeurs mobiles à se tourner vers les frameworks cités dans la BD (PhoneGap, Adobe Air, …) pour plus de productivité et maintenabilité.
Apple y a sans doute vu (et à juste titre je pense) un désaveu de la part des développeurs sur le langage et non l'API. Conserver l'API en l'état me semble être le bon choix.
Ensuite, en quoi trouves-tu Swift plus éloigné de Java ou C# qu'Objective-C ?
Et quand bien même je serais d'accord avec toi sur ce point, quel en serait l'intérêt ?
Je vois un Swift un langage similaire aux langages de script assez récents que je connais, qui sont justement apparus pour pallier les manques des langages plus anciens et établis.
Et ces derniers finissent par suivre le mouvement : l'apparition de closures en Java 8 (lambda expressions) en est selon moi une preuve.
On retrouve dans Swift beaucoup d'éléments astucieux ou pratiques d'autres langages de programmation et surtout de script. L'inférence de type est sans doute ce qui me vient le plus rapidement à l'esprit. Etant donné que c'est un langage compilé, j'aurais préféré l'approche Groovy, à savoir : je déclare le type d'une variable si je veux, sinon j'utilise un mot-clef (def
en Groovy, let
en Swift) pour signaler que cette variable (ou le type de retour d'une fonction) peut varier. Je trouve cela personnellement plus rapide et élégant que de devoir écrire 4 fois la même fonction ou lui faire retourner Object
.
Swift utilise les génériques (d'ailleurs très fortement inspirée de ceux qu'on trouve en Java 5 d'ailleurs, beaucoup plus que des templates C++) et c'est toujours dans la veine d'écrire du code plus facile à maintenir (code générique plutôt qu'écrire 40 fois le même code) et plus dans la veine des langages ayant émergés ces dernières années.
On notera aussi les variables possiblement nulles (optionals) ce qui est plutôt intéressant : je peux déclarer que cette variable ne DOIT JAMAIS être nulle ou bien qu'elle peut prendre la valeur nil (que ça a un sens quoi).
Enfin, parmi les bricoles que j'ai relevées, l'utilisation de tuples me paraît être une excellente idée aussi. Faire retourner plusieurs valeurs à une méthode dans un langage objet est souvent disgracieux (tableau, ou encapsulation dans un objet qui n'a aucun sens/intérêt fonctionnel). C'est très certainement inspiré de Python, et tant mieux.
Bref, pour répondre à Kje : y'a rien de spécialement innovant dans ce que j'ai lu. C'est un langage de script orienté objet, et d'inspirations diverses (je dirais Python et Ruby parmi ceux que je connais un peu, mais y'a sans doute une forte inspiration fonctionnelle mais que je ne saurais attribuer). Je pense qu'en dehors des développeurs iOS et OS X il n'a aucun intérêt (pour les pédagogues ou les curieux donc), un peu dans la même veine que ce que Groovy est à Java : aucun intérêt 'scolaire' en tant que langage (contrairement à Erlang, Caml, Haskell ou autres) mais un gros intérêt en termes de productivité, en reprenant des idées de langages "modernes" (pardonnez-moi l'expression).
Donc les curieux passeront leur chemin, tant pis c'est un peu dommage. Les développeurs Mac (iOS, OS X) disposeront d'une alternative "made in scripting" à un langage somme toute assez vieillissant.