Pourquoi je hais la programmation sur iPhone Ces derniers temps, je suis débordé de demandes de devis pour le développement d'applications sur iPhone.
J'envisage en fait de sous-traiter toutes ces demandes.
Tout d'abord parce que je n'ai matériellement pas le temps de toutes les traiter, et d'autre part parce que je déteste programmer en Objective-C / Cocoa-touch.
L'API Cocoa-touch est probablement l'une des plus moisies que j'ai pu voir à ce jour.
Ceci me conforte dans l'idée qu'Apple sont vraiment des rois du marketing, mais que techniquement ... certaines choses sont complètement à revoir.
Cocoa pour Mac OS X (paradoxalement un OS que j'adore), était déjà pas mal pourrie, mais son rejeton pour la programmation native sur iPhone/iPod dépasse les bornes.
Explications en quelques points ...
Objective-C, ou le coelacanthe des langages objets:
Propriétaire ou quasiment (qui d'autre qu'Apple propose de développer sur Obj-C ?)
Désuet, lourd, syntaxe parfois bizarre.
Mais bon, ce n'est qu'un langage et si jamais il est trop lourd, on peut retomber dans le C pur et dur dont Objective-C est un "super-set".
Et honnêtement, à part les 'core-users' Apple, qui programme en Obj-C ?
Cocoa-touch, pierre d'achopement:
Touffue, mal documentée (certaines fiches techniques de la doc sont "susceptibles de changer" ou "désuètes" dixit), complexe, utilisation de patterns discutables (du delegate à gogo, le key-view pas "typesafe" du tout ...).
Bref, cet API nécessite un apprentissage long et fastidieux.
Il est déconcertant de voir comme certaines portions de l'API (comme 'Core-Data') permettent de faire des trucs impressionnants en un minimum de lignes de code, et comme des fonctions triviales, comme lire un fichier MP3, sont incroyablement complexes à mettre en place.
La copie est à mon goût complètement à revoir.
API propriétaire:
Tout est dans le titre, j'adore l'Open Source, pourquoi je m'embeterais à coder avec une API proprio.
Parce que c'est tout ce que j'ai à dispo ?
Ah bon, dommage ....
Exit Java:
Autrefois, Apple fournissait un "pont" entre Java et Cocoa, ce qui permettait d'accèder aux widgets et composants graphiques de Cocoa sans utiliser Obj-C.
Exit.
L'utilisation de Java est officiellement enterrée par Apple.
En théorie, la firme rejette même pour l'instant d'avoir une JVM tournant sur l'iPhone.
En pratique, on peut trouver de bonnes JVM customs tournant sur cette plateforme.
Pire, sur Mac OS X le support Java n'est plus ce qu'il était, par exemple avec l'update 1 pour Java sur Leopard.
La plupart de mes applications importantes en Java (Idea, jEdit par ex.) ne fonctionnaient plus après cette mise à jour.
Ca fait vraiment pas sérieux.
Et c'est bien dommage, car beaucoup de personnes travaillant en Java ont des Macs.
XCode:
Autant j'adore IB (Interface Builder), qui est innovant, simple et intuitif à utiliser, et puissant (le resize des fenêtres et des composants, trop bon !), autant XCode est lourd.
Le fenêtrage est bizarre, mais bon on peut s'y faire.
L'autocomplétion, est assez aléatoire, mais il faut dire qu'avec les noms de méthodes à rallonge de Cocoa, c'est pas évident de s'y retrouver :)
La gestion de la documentation est bonne, excepté que le contenu est parfois succint.
Il manque vraiment des exemples et des extraits de code.
Les processus de compilations ont visiblement des fuites, au bout d'un moment la fermeture d'XCode est inévitable.
q
Concernant les outils de profiling et de test, ils sont bon mais un peu opaques. Il est difficile de savoir quels sont les procédés mis en place pour tester.
Mais dans l'ensemble, ça profile.
Ce que je regrette le plus, c'est de ne pas avoir de bons outils de refactoring et de gestion de code comme dans Idea par exemple.
Idea etant probablement ce qu'il se fait de mieux, toutes catégories confondues, n'en demandons pas trop à Apple de ce coté là...
Tous ces points font que je m'embête royalement à programmer avec Cocoa-touch sur iPhone.
La machine est géniale mais l'environnement de développement est vraiment un frein, et ce ne sont pas les jolis keynotes d'Apple (sans Jobs :( ) qui me feront dire le contraire.
C'est décidé, et même si son avenir n'est peut-être pas aussi brillant que celui de l'iPhone, je reviens à mes premières amours open-source, et pour les plateformes mobiles, je me spécialiserais désormais sur Android !
Libellés : iphone cocoa objective-c apple