Developpez.com - Rubrique iOS

Le Club des Développeurs et IT Pro

Quel est le niveau de difficulté d'apprentissage du développement iOS

(Objective-C, Cocoa...) ?

Le 2011-01-18 10:13:09, par teumm, Membre régulier
Cela fait maintenant 3 ans que je suis développeur PHP et je souhaite me former au développement iOS. A la base j'ai une formation de programmeur polyvalent, et bien que cela remonte un peu j'ai déjà développé en Java, C++ (quelques bases de C aussi).

J'ai déjà suivi une première formation en ligne sur Objective-C ainsi que des tutoriaux sur Cocoa, j'ai lu pas mal de docs techniques aussi sur ce dernier.
Malgré tout je rencontre encore pas mal de difficultés de compréhension alors je souhaitais simplement savoir si d'autres ont eu des difficultés à aborder le développement iOS (ou Cocoa simplement).

A la base, PHP n'est déjà pas un "vrai" langage objet (même si je l'utilisais plus ou moins comme tel) et n'est pas restrictif du tout ni particulièrement structuré, en fait tout repose sur l'utilisation qu'on en fait contrairement à d'autres langages. Alors passer d'un tel langage à Objective-C me semble déjà compliqué dans le principe, d'autant plus qu'il faut à la fois apprendre un nouveau langage ET l'utilisation des frameworks qui vont avec (Cocoa, Foundation...).

J'aimerais donc avoir votre avis sur la chose et je vais essayer de joindre un sondage à ce post, c'est la première fois que je le fais donc j'espère ne pas me tromper

Merci d'avance
  Discussion forum
16 commentaires
  • sgamel
    Membre éprouvé
    Certes ObjC n'est pas PHP ni Java. Il partage cependant de nombreux points communs avec ce dernier.

    Il ne faut pas se laisser avoir par la syntaxe "exotique". Au final seuls les principes comptent.

    Java et Objective-C sont très similaires tant sur les principes du langage que sur les bibliothèques de bases. NSString/NSMutableString ressemblent beaucoup a leurs pendants String et StringBuffer.

    L'heritage simple, les interface (protocoles en ObjC) sont aussi des points communs.

    Seul l'utilisation des blocs peut paraitre nouvelle, sauf si vous connaissez des langages fonctionnels comme Lisp et Scheme. Mais Java cherche a introduire lui aussi cette fonctionnalité (les closures).

    Le plus difficile est de surtout bien comprendre les frameworks et ne pas chercher a en détourner les usages.
    Il faut apprendre quelques design patterns: delegation, codage clef-valeur (KVC) et observation (KVO et Observer), sans oublier l'indétronable MVC qui est non seulement poussé par Apple mais totalement incontournable.
  • Virgil Scipion
    Membre habitué
    Bin soit t'es un vrai programmeur, et alors peu importe le langage, tu t'y fera très vite. Ou alors t'es pas un vrai, et là t'as qu'à bosser en SS2I pour des contrats de deux mois

    Si tu veux un exemple parlant, je connais super bien le C++, j'ai eu aucun souci (évidemment) pour passer sur C# et Java, mais j'ai aussi aucun problème quand je dois écrire des macros en VBA.
    Certes je pleure, car c'est minimaliste, mais il n'empêche que je les écris bien.

    Un jour j'avais maudit un prof parce qu'il nous enseignait seulement la programmation, mais aucun langage, donc que des algorithmes écrit avec des mots courants.
    Jusqu'au jour où j'ai découvert le Prolog, le Small-C et le VBA, et là j'ai compris qu'il valait mieux penser en terme de concepts plutôt que parler la seule langue du C++ & co.

    De toutes manière, la majorité du boulot n'est pas d'écrire un programme, mais de comprendre toute les petites saloperies spécifiques à la plate-forme. Que ça soit les API de Windows, les subtilités du HTML ou le code assembleur de la machine.

    Et l'autre majorité de notre boulot est de faire comprendre notre boulot. On peut se la jouer comme bon nombre et ne pas savoir parler sans utiliser de termes techniques. Ou alors comprendre le sens du mot "vulgarisation", et donc être capable d'expliquer notre point de vue à n'importe qui, commerciaux et patrons, et même une fois qu'on se démerde à ce jeu, on pourrait vendre un verre d'eau à un dauphin juste parce qu'on appelle ça H20.
  • teumm
    Membre régulier
    Je suis tout à fait d'accord, je me rends bien compte en ce moment que le plus dur n'est pas d'apprendre le langage mais de comprendre l'architecture des frameworks d'Apple qui est assez complexe. Une fois familiarisé avec les frameworks on peut commencer à avoir de l'intuition sur des éléments qu'on ne connaît pas encore, mais en ce qui me concerne je trouve que le début n'est pas évident.
    Une autre chose qui n'est pas très intuitive pour ma part ce sont les liens entre les fichiers NIB et le reste, la présentation de ces derniers sous Interface Builder, le système d'Outlets...

    Mais en tout cas on sent que l'environnement fourni par Apple est très travaillé et cela peut expliquer le fait que l'apprentissage ne soit pas très intuitif.
  • travon
    Nouveau Candidat au Club
    Envoyé par teumm
    Je suis tout à fait d'accord, je me rends bien compte en ce moment que le plus dur n'est pas d'apprendre le langage mais de comprendre l'architecture des frameworks d'Apple qui est assez complexe. Une fois familiarisé avec les frameworks on peut commencer à avoir de l'intuition sur des éléments qu'on ne connaît pas encore, mais en ce qui me concerne je trouve que le début n'est pas évident.
    Une autre chose qui n'est pas très intuitive pour ma part ce sont les liens entre les fichiers NIB et le reste, la présentation de ces derniers sous Interface Builder, le système d'Outlets...

    Mais en tout cas on sent que l'environnement fourni par Apple est très travaillé et cela peut expliquer le fait que l'apprentissage ne soit pas très intuitif.


    Pour les liens entre les interfaces NIB et le code, tout cela va être simplifié dans xcode4 qui va pas tarder à sortir. Tout sera automatisé, il suffira de glisser, déposer une élément de l'interface dans la partie code pour créer une enveloppe de code associé puis a toi de la compléter.

    Je ne suis pas fan de la syntaxe de l'objective C, je prefère celle du C# mais
    la force du développement sur machine Apple (IOS ou mac) réside dans les librairies très riches, tout est quasi mâcher.

    Avant de coder quelque chose fouille bien, il y a 90% de chance que cela soit déjà fait.
  • teumm
    Membre régulier
    Wow, et moi qui commence seulement à me faire à XCode 3

    Pour l'instant je suis surtout à la recherche d'une base de tutoriels progressifs avec un minimum de pédagogie pour que tu apprennes rapidement à faire des choses par toi-même qui sortent du cadre des tutos. Bon j'en demande peut-être beaucoup là

    Pour l'instant tout ce que je connais dans le genre c'est ipup.fr, c'est plutôt pas mal mais les tutos pour commencer ne sont pas à jour et puis ça manque un peu de pédagogie.

    Si quelqu'un a des suggestions je suis preneur.
  • equesada
    Membre régulier
    Je me suis mis à ObjectiveC y a seulement 2 semaines... et c'est vrai que c'est quand même pas simple.

    Je suis surtout Java et heureusement j'avais des connaissances en C/C++... du coup j'ai entamé la lecture de "Learn ObjectiveC For Java Developpers" et c'est pile ce qu'il me fallait

    Sinon comment as-tu réussi à avoir une version de XCode4 ?
  • sgamel
    Membre éprouvé
    Envoyé par equesada
    Sinon comment as-tu réussi à avoir une version de XCode4 ?
    XCode 4 est une béta couverte par l'accord de NDA des développeurs enregistrés. Il n'est donc pas possible d'en parler pour l'instant.
  • teumm
    Membre régulier
    Désolé, c'était une erreur, je parlais bien d'XCode 3.

    La seule différence c'est que, si mes souvenirs sont bons, en Java on ne gère pas du tout la mémoire ("garbage collected".
  • teumm
    Membre régulier
    Je partage ton avis quand tu dis joliment "comprendre toutes les petites saloperies spécifiques à la plateforme", car comme je l'ai dit plus haut le langage en soi n'est pas ce qu'il y a de plus dur.
    J'ai une formation de programmeur tout court, pas de programmeur dans tel ou tel langage, donc je suis aussi passé par la case algorithmique (en version longue d'ailleurs).
    Quand t'es passé par l'algorithmique tu peux aborder n'importe quel langage étant donné que ce n'est que la syntaxe qui change et pas les concepts qui sont derrière, c'est presque que de l'apprentissage par coeur. Il m'est déjà aussi arrivé d'avoir besoin d'une fonctionnalité qui n'existait pas dans Excel et de la pondre en VBA sans même jamais y avoir touché, mais l'environnement est relativement simple à appréhender comparé à d'autres.

    T'as l'air d'avoir vendu un verre d'eau à pas mal de dauphins toi (on peut vendre 1 verre d'eau à 1000 dauphins, on peut vendre 1000 verres d'eau à 1 dauphin... désolé).
    En quelques mots c'est quoi ton parcours ? (diplômes, nombre d'années d'expérience, nombre de boîtes dans lesquelles tu as bossé...).
  • Dar0ck
    Membre régulier
    Un bon livre pour commencer: http://www.pearson.fr/livre/?GCOI=27440100482780
    Il commence à dater un petit peu, bientôt un an, par conséquent il parle encore d'iOS 3, mais ce livre est bien pour commencer. Il aborde pas mal de concepts qui permettent d'avoir une bonne vue d'ensemble.