L’éditeur allemand Open-Xchange lance sa suite bureautique en ligne, basée sur un code ouvert. Suivez le guide… Lire la suite
L’évolution de l’Objective-C
Si l’on doutait encore de l’impact commercial des iDevices (comprendre iPhone, iPad et autre iPod touch), il suffit de regarder l’index Tiobe pour s’apercevoir que, si avant 2007 l’objective-C était méconnu des développeurs, celui-ci est maintenant passé à la 3e place des langages populaires devant le C et le C#.
Bien qu’avec le C , les deux langages soient d’un âge relativement similaire, l’objective-C est longtemps resté dans l’ombre. Jusqu’à il y a peu, seule une poignée de développeurs aficionados en connaissaient l’existence, et moins encore en connaissaient la syntaxe. Les langages informatiques, comme tout langage, évoluent au fil du temps. Et ce qui est vrai en langues humaines l’est aussi en informatique : plus un langage est utilisé, plus son évolution est rapide! Autant dire donc que l’objective-C a peu évolué entre 1970 et l’année 2007 où l’iPhone l’entraina sous le feu des projecteurs…
Par nature, l’objective-C reprend entièrement le langage C et lui ajoute les notions de classe et d’objet, où chaque objet est stocké en mémoire et est accessible via un pointeur. Les méthodes (appelées messages) peuvent ainsi être envoyées à l’objet via son pointeur en utilisant une syntaxe à la smalltalk. La «fameuse» syntaxe à la smalltalk, dont le monde a entièrement oublié l’existence! C’est cette syntaxe particulière, choix stratégique et certainement justifiable en 1980, qui est de nos jours le plus couteuse en matière d’apprentissage du langage. Depuis l’an 2000, le JAVA s’est imposé comme standard de facto pour la programmation orientée objet. C’est le langage qui est maintenant appris dans les écoles, son usage est plus répandu que celui du C, et sa syntaxe pour l’appel de méthodes (la syntaxe pointée, communément appelée dotSyntax), a été reprise par tous les langages modernes: C#, PHP, JavaScript, Ruby… L’objective-C fait ainsi figure d’alien face à une communauté de développeurs jeunes ayant appris les bases de la programmation en acceptant dotSyntax comme convention universelle.
La première évolution sérieuse du langage survint en 2006, quelques mois avant la sortie de l’iPhone, dans un contexte où le mac commençait à séduire un nombre croissant d’utilisateurs. Cette évolution, baptisée objective-C 2.0, introduisit en partie la dotSyntax, la génération automatisée des accesseurs, l’énumération rapide (communément appelée for….each), les extensions de classe et la possibilité d’inclure des méthodes optionnelles dans les protocoles grâce à des mécanismes d’introspection (permettant entre autres de tester si une instance implémente une méthode).
La deuxième grande évolution de l’objective-C, promue par Apple Inc. sous le nom « Modern Objective-C », ne remonte pas plus loin que septembre 2012 et dote le langage de fonctionnalités inspirées du java pour la manipulation des collections et des nombres.
Les développeurs ont souvent besoin de saisir des chaines de caractères en dur dans leur code et en objective-C, cette fonctionnalité est, depuis longtemps, aisément disponible grâce au préfixe @. Ainsi la création d’une variable contenant la chaîne de caractères « toto », pouvait s’écrire de façon simple:
NSString * str = @"toto";
au lieu d’appeler les méthodes constructeurs classiques
NSString * str = [NSString stringWithUTF8String:"toto"];
Si ce raccourci est disponible pour les strings, il n’en était rien pour les collections, ainsi créer de manière littérale une collection requérait d’écrire:
NSArray * array = [NSArray arrayWithObjects:object1, object2, nil];
Maintenant, le même résultat peut s’obtenir via la syntaxe simplifiée
NSArray * array = @[object1, object2];
et il en va de même pour les tableaux associatifs (NSDictionnary) désormais instanciable via la syntaxe
NSDictionary * dictionary = @{clef1:object1, clef2:object2};
Sur la même logique, la méthode permettant de créer un objet NSNumber à partir d’un nombre littéral est simplifiée avec la syntaxe @YES, @2, @34f … remplaçant les traditionnels:
[NSNumber numberWithBool:YES];
[NSNumber numberWithInt:2];
[NSNumber numberWithFloat:34f];
Cette technique appelée boxing (consistant donc à mettre dans une « boîte » objet, une valeur primitive telle qu’un entier ou une valeur logique) que java 1.5 a rendu transparente pour le développeur ne l’était pas encore en objective-C, voila qui est fait. Notons aussi que, si on souhaite « mettre en boite » le résultat d’un calcul , il est possible d’utiliser directement la syntaxe @( expression).
Le dernier point de modernisation concerne l’accès à l’un des éléments d’un tableau. Il y a encore un an, le développeur devait appeler sur ses collections les méthodes suivantes:
id object = [myArray objectAtIndex:3];
id object = [myDictionary objectForKey:@"toto"];
Il pourra à présent obtenir les mêmes résultats avec::
id object = myArray[3];
id object = myDictionary[@"toto"];
Ces petites améliorations font partie de l’évolution normale d’un langage vivant (rappelons qu’il a fallu attendre 2004 pour que le langage Java apporte l’énumération rapide et le boxing automatique) et s’il reste encore quelques points à améliorer (comme l’unboxing ou, plus vitale encore, la simplification de la technique de concaténation de chaines de caractère) je les salue avec plaisir. Ce sont de petites choses mais elles contribuent à rendre l’Objective-C plus lisible, plus agréable à programmer et permettent de passer moins de temps sur de petits détails techniques afin de se concentrer sur le coeur de métier du développeur: « Créer de superbes Apps ».
Hadoop est adopté par Windows Azure
Hadoop vient de trouver un nouveau partenaire de clusters avec Windows Azure de Microsoft. Mais comment font-ils ?
Oracle muscle son SRM
Pour entretenir de bonnes relations avec ses fournisseurs, Oracle muscle sa gamme Supplier Relationship Management (SRM), en connectant les campagnes publicitaires sur les réseaux sociaux avec les outils de veille et de suivi. Lire la suite
Nouveau fil pour Facebook
Modernisation oblige, Mark Zuckerberg rénove le fil d’actualités de Facebook en choisissant d’accorder plus de place aux photographies et aux publicités. Lire la suite
Une nouvelle vidéo de formation symfony2 gratuite
Pour vous souhaiter à tous une bonne semaine, voici une nouvelle vidéo de formation sur Symfony2.
Elle répond à une question récurrente de nos clients « comment faire des formulaires imbriqués ? ». Ce sujet était majeur dans Symfony1, où ils étaient assez complexes à aborder. Vous verrez dans cette vidéo que l’équipe de Symfony a réellement simplifié ses formulaires dans la v2.
Bonne vidéo !
Google modernise BigQuery
Pour améliorer son service d’analyse de données lancé en 2010, Google rénove BigQuery en permettant aux développeurs de croiser des tables de données de plusieurs téraoctets. Détail de l’opération… Lire la suite
Apple met à jour Mountain Lion et Xcode
La dernière mise à jour de Mountain Lion vient d’être livrée, accompagnée de celle d’Xcode, l’environnement de développement pour OS X et iOS. Lire la suite
Un nouveau cloud est né
Pour aider les développeurs à porter leur code x86 sur des plateformes ARM, la société britannique Boston Limited s’est associée à l’éditeur du logiciel d’Ellexus, avec pour objectif d’offrir la possibilité de réaliser des tests dans un service cloud spécialement dédié. Lire la suite
Navigateur : Flash en vue pour IE10!
Bonne nouvelles pour les Utilisateurs de Windows 8 et surtout Windows RT, Microsoft revoie sa copie pour la gestion des sites en Flash sous IE10.
En effet avec l’intégration de Flash Player dans Internet Explorer 10, il fallait jusqu’à présent que le site soit présent dans la liste blanche, pour que Flash puisse s’exécuter.
Depuis aujourd’hui (12 mars) et une fois les « Patch Tuesday » de mars appliqués, la liste blanche disparait au profit d’une liste noire! Par défaut tous les sites seront donc autorisés à afficher le contenu Flash à l’exception des sites présents dans cette nouvelle liste.
Si officiellement Microsoft justifie ce retournement de situation par une meilleure compatibilité des sites web vis-à-vis de son nouveau navigateur, la réalité semble tout autre (si comme moi vous êtes utilisateur de Windows RT vous savez de quoi je parle), en effet l’impossibilité d’installer un autre navigateur sur sa tablette et la récurrence de n’avoir qu’une page blanche au chargement d’un site contenant du Flash a tendance à agacer bon nombre d’utilisateurs.
Or les ventes de Surface (est autres terminaux sous Windows RT) n’étant pas forcément au top, Microsoft n’a pas intérêt à se tirer une balle dans le pied avec des problèmes de compatibilité, cependant ce pas en avant suffira-t-il à relancer la tablette?