1. John Siracusa
    1. Mountain Lion
      1. Introduction
      2. Achat et installation
      3. Changements d'interface (1)
      4. Changements d'interface (2)
      5. Changements d'interface (3)
      6. Applications (1)
      7. Applications (2)
      8. Applications (3)
      9. Applications (4)
      10. Applications (5)
      11. iCloud(1)
      12. iCloud(2)
      13. iCloud(3)
      14. Gatekeeper(1)
      15. Gatekeeper(2)
      16. Retina et HiDPI
      17. Fourre-tout (1)
      18. Fourre-tout (2)
      19. Fourre-tout (3)
      20. Fourre-tout (4)
      21. Fourre-tout (5)
      22. Fourre-tout (6)
      23. Recommandations
      24. Deux pères, un fils
    2. Lion
      1. Introduction
      2. Installation
      3. Revoir les fondamentaux
      4. Redimensionnement des fenêtres
      5. Et voici pour les cinglés
      6. La gestion des fenêtres
      7. Le modèle de document
      8. le modèle des processus
      9. Les éléments internes (1)
      10. Les éléments internes (2)
      11. ARC
      12. Le système de fichiers
      13. Ses modifications dans Lion
      14. Documents, résolution
      15. Le Finder
      16. Mail, Safari
      17. Fourre tout (1)
      18. Fourre tout (2)
      19. Recommendations
    3. Snow Leopard
      1. Introduction
      2. Le ticket d'entrée
      3. L'installation
      4. Nouvel aspect
      5. Détails internes
      6. Quick Time X
      7. Système de fichiers
      8. Faire plus avec plus
      9. LLVM et Clang
      10. Les blocs
      11. Concurrence
      12. Grand Central Dispatch
      13. Asynchronicité
      14. Open CL
      15. La différence...
      16. Quick Time Player
      17. Le Dock
      18. Le Finder
      19. Exchange
      20. Performances
      21. Fourre tout (1)
      22. Fourre tout (2)
      23. Le futur
    4. Leopard
      1. Introduction
      2. L'héritage
      3. Nouvel aspect 1
      4. Nouvel aspect 2
      5. Le noyau
      6. 64 bits
      7. FS Events
      8. Core animation
      9. Quartz GL
      10. Core UI
      11. Détails internes
      12. Le Finder
      13. Le Dock
      14. Time Machine
      15. Performances
      16. Pot pourri
      17. Demain
    5. Tiger
      1. Introduction
      2. Retour sur le passé
      3. Nouvel aspect de Tiger
      4. Mises à jour du noyau
      5. Le lancement
      6. Les méta-données
      7. Attributs étendus
      8. Listes de contrôle d'accès
      9. Spotlight 1
      10. Spotlight 2 : analyse et potentiel
      11. Types de fichiers
      12. Méta-données : la fin
      13. Quartz
      14. Quartz 2D Extreme
      15. Core Image
      16. La vidéo sous Tiger
      17. Dashboard
      18. Le Finder
      19. Les performances
      20. Pot pourri
      21. Conclusion
    6. Panther
      1. Introduction
      2. Les précédents
      3. L'installation
      4. Nouvel aspect
      5. Performances
      6. Changement rapide d'utilisateur
      7. Gestion des fenêtres
      8. Exposé
      9. Le Finder
      10. Performance du Finder
      11. Toujours le même
      12. Safari
      13. XCode
      14. Conclusion
    7. Jaguar
      1. Introduction
      2. Le nom
      3. L'installation
      4. Modifications d'Unix
      5. Dévelopeurs...
      6. Quoi de neuf
      7. Rendezvous
      8. Quartz Extrême
      9. Performance
      10. Compositions
      11. Le Finder
      12. Applications
      13. Sherlock
      14. Le portrait
    8. Puma
      1. Prelude
      2. Introduction
      3. Installation
      4. Réglages système
      5. Performance
      6. Redimensionnement des fenêtres
      7. Utilisation de la mémoire
      8. Diagnostics de mémoire
      9. L'environnement Classique
      10. L'interface Utilisateur
      11. Le Finder
      12. Extensions de fichiers
      13. Divers, conclusion
    9. Cheeta (Mac OS X 10.0)
      1. Qu'est ce que Mac OS X
      2. Installation
      3. Le démarrage
      4. Utilisation de la RAM
      5. Performance
      6. Performance des applications
      7. Stabilité
      8. L'interface utilisateur
      9. Le Finder
      10. Le navigateur du Finder
      11. Le Finder (divers)
      12. L'interface utilisateur
      13. Os X Classique
      14. Système de fichiers
      15. Unix
      16. Applications
      17. Conclusion
    10. Les débuts de MacOsX
      1. 1999 : OSX DP2
      2. 2000 : Quartz et Aqua/a>
      3. Fin de la lune de miel
      4. la première bêta publique
      5. 2001 : Mac OS X 10.0
      6. Un investissement
    11. Finder Spatial
      1. Introduction
      2. Interfaces spatiales
      3. Le Finder spatial
      4. Le concierge
      5. Un nouveau Finder
      6. Le browser
      7. Le browser spatial
      8. Finder et méta-données
      9. Les modèles
      10. Pensées finales

Mountain Lion : la revue de Ars technica (17)

Là où Lion a trébuché, Mountain Lion regroupe et va de l'avant.

Par John Siracusa, 25 Juillet 2012


Les améliorations d'Objective C

En 2005, j'ai écrit une série d'articles en trois parties intitulée " Eviter Copland 2010" qui abordait le futur à long terme de la plateforme de développement d'Apple. (Copland est la référence à un projet d'OS avorté de génération supérieure, chez Apple). En résumé, j'y disais que tous les compétiteurs d'Apple avaient des langages de haut niveau qui libéraient les développeurs de problèmes archaïques comme la gestion de mémoire, et les protégeaient d'erreurs coûteuses comme un accès impropre à la mémoire.

En 2010, j'ai repris ce sujet. Lisez l'article pour voir comment les choses ont tourné, mais je pense que vous en connaissez déjà l'essentiel. En dépit des inquiétudes techniques que je peux avoir eues, les années à partir de 2005 ont été particulièrement bonnes pour Apple.

Mais Apple n'a pas ignoré les insuffisances de sa plateforme de développement. En réalité, à l'aide d'une série de modifications prudentes sur plusieurs années Apple a presque complètement remplacé sa chaîne d'outils de développement. Tout cela a commencé avec LLVM, un nouvel outil de compilation qu'Apple a utilisé pour se libérer de la chaine d'outils du compilateur GNU. Apple a recruté le créateur de LLVM, et mis du temps et de l'argent pour construire un compilateur moderne, de haute performance, qui lui soit propre.

Apple a aussi commencé à améliorer Objective C, le langage de programmation basé sur C sur lequel sont construites les plateformes iOS et OS X (et sur lequel la plateforme NeXT, dont iOS et OS X sont dérivées reposait aussi). J'ai parlé de LLVM et d'Objective C 2.0 dans mon rapport sur Léopard en 2007.

Dans Snow Léopard en 2009, Apple a encore modernisé sa plateforme en rajoutant les fermetures et les fonctions anonymes à Objective C avec une extension de langage, les blocs, et en créant une bibliothèque innovante pour la simultanéité appelée Grand Central Dispatch qui utilise les blocs. Son nouveau compilateur bourgeonnant a permis aussi à Apple de rajouter un analyseur statique impressionnant à l' IDE Xcode.

L'an dernier, Apple a rajouté le comptage automatique de référence (ARC) à Objective C, en libérant finalement l'essentiel de la charge de gestion manuelle de la mémoire. (Une tentative précédente pour faire la même chose en utilisant le ramasse miettes avait été moins réussie).

Avec Mountain Lion, le ramasse miette d'Objective C a été officiellement abandonné. Le compilateur LLVM d'Apple est maintenant le compilateur par défaut de Xcode. Le nouveau débogueur LLDB a remplacé GDB. Tous les vestiges du compilateur GNU seront retirés de la future version de Xcode. Apple a désormais le contrôle complet de ses outils de développement.

Dans mon article de la série Copland 2010, j'affirmais qu'un meilleur langage de développement mérite aussi une meilleure API. En voici un extrait :

figure

Un framework avec des méthodes comme celles-ci (les trois premières lignes de code) ne fera pas de miracles dans un langage qui (hypothétiquement) supporte ceci (les trois lignes de code suivantes). On a incontestablement besoin d'une nouvelle API qui corresponde mieux au nouveau langage.

Cette année, Apple a renforcé sa croyance apparente que l'amélioration d'objective C peut et finira par conduire à un langage de programmation et à des APIs qui peuvent tenir coude à coude avec n'importe lequel de ses compétiteurs plus modernes. La syntaxe d'objective C a été étendue pour accepter les nombres, les booléens, et des noms de collections, la souscription d'objets, des expressions en boîte. Même si vous n'avez aucune idée de ce que cela signifie, je crois que vous allez trouver le tableau ci-dessous intéressant :

figure

Avant et après

(Et bien oui, pour les programmeurs ne connaissant pas Objective-C qui lisent ceci, ces terminaisons nil dans les collections sont effectivement exigées, et NSDictionary vous oblige vraiment à spécifier les valeurs avant les clés). Heureusement, ces caractéristiques ne sont pas reprises dans la nouvelle syntaxe.

Est-ce que cela transforme Objective C en un langage moderne, de haut niveau, et sécurisé en mémoire ? Et bien, non, pas vraiment. Tout cela n'est qu'un sucre syntactique qui ne modifie pas la fonctionnalité réelle ou la puissance expressive du langage. Mais cela rend réellement Objective C beaucoup plus agréable à utiliser et plus facile à lire.

Est-il vraiment possible pour Apple de moderniser complètement son langage par une série continue d'améliorations incrémentales de la même veine que les blocs, ARC, et cette nouvelle syntaxe pour les expressions littérales, et les indexes ? J'ai des doutes sérieux. mais c'est le chemin qu'Apple semble avoir choisi pour un futur prévisible. En fait, dans le cours de l'année, je ne serais pas surpris de voir un tableau comme celui-ci :

figure

Avant et après

Inférence de type pour objective C ? ou n'est-ce pas seulement une adoption du mot-clé auto dans C++ 11 ? Des choses plus étranges sont déjà arrivées.

Combien de modifications supplémentaires C++ peut-il accepter ? La quantité de syntaxe supportée par ce pauvre caractère @ est déjà un peu hors de contrôle. C'est le prix de la compatibilité avec C et C++, je suppose, mais je pense que tout cela doit à l'occasion finir par aboutir.

C'est cependant difficile d'évaluer les résultats maintenant. A la suite d'un gros travail, et d'une recomposition très habile, le langage d'Apple et l'équipe chargée du compilateur ont été capables de tenir en face des nouveaux venus avec leurs machines virtuelles et leurs langages dynamiques pendant les sept dernières années. Je ne parierais pas contre eux au moins pour les sept prochaines années.