Bon, je vais jeter un pavé dans la marre. Mon poste est à la limite de la provoc' j'en conviens mais en plus de 20 ans de d'auto-apprentissage de langage de programmation, ce n'est que la seconde fois que je rencontre cette situation.
Y a-t-il une volonté délibérée de la part des personnes qui connaissent la programmation sur Mac de garder ce savoir par devers eux ?
Evidemment, programmer des applis I-Bidule ça fait rêver tout le monde et on peut comprendre que quelqu'un qui ne maitrise que l'Html va avoir quelques difficultés, et qu'il soit difficile de lui apprendre la programmation OOP en un tour de main.
Ou alors, est-ce une volonté d'Apple ?
Montrez-moi un bon tuto (même en anglais) qui explique XCode 4 ?
Constatez la faiblesse des exemples disponibles.
A titre de comparaison, voici un tutoriel réalisé pour DirectX sous C# :
http://www.riemers.net/eng/Tutorials/DirectX/C++/series1.php
Sur base de ce tuto, j'ai été capable de réaliser une petite démo suffisante pour mes besoins.
Ai-je raison, ai-je tord, y a-t-il malgré tout un peu de vrai ?
Le problème si tu te bases sur les posts de ce forum, c'est que pour la moitié (je suis gentil) des gens qui viennent ouvrir un sujet ici, en gros ça consiste en : "Je suis développeur HTML/PHP, je veux me mettre à Cocoa, comment je fais ?".
Avec, en gros sous-entendu dans la plupart des cas, "j'ai une idée d'appli révolutionnaire, y a plein de pognon à se faire sur l'App Store, et je veux faire ça vite".
Et si Cocoa n'est pas insurmontable (on n'est pas nés en sachant coder, ni en connaissant la POO, et encore moins en connaissant toutes les classes de Cocoa), c'est des mois qu'il faudrait passer à répondre à ces gens-là pour qu'ils arrivent à ce qu'ils veulent.
Le souci de Cocoa, c'est que d'une, c'est complètement orienté objet (notion que tout le monde ne maîtrise pas), de deux, il n'y a effectivement pas énormément de documentation là-dessus (celle d'Apple est bonne cela dit), et de trois, même pour quelqu'un d'expérimenté, ce n'est pas simple à assimiler.
J'ai même envie de rajouter une quatrième difficulté, l'Objective-C, qui n'est pas un langage compliqué en lui-même (c'est pas imbuvable comme du LISP quoi), mais il a une syntaxe assez particulière et très déroutante au début, rien que ça, ça peut décourager des gens ; rien que le mécanisme d'envoi de messages et la syntaxe "en crochets imbriqués", personnellement il m'a fallu un petit moment pour m'y faire.
Cela dit, c'est un langage au final très lisible et élégant, ça devient naturel au bout d'un moment, à un point que je crains de devoir me remettre un jour au Java ou au C#.
Bon, ceci étant dit, il n'y a pas de miracle pour apprendre à développer sur iOS, c'est la même réponse que pour bien des questions en prog : il faut se taper des bouquins.
Le livre d'Aaron Hillegass est une référence (même si il utilise Cocoa plutôt que Cocoa Touch, la philosophie est plus ou moins la même et il apprend bien les bases de l'Objective-C et de Foundation), le bouquin "Objective-C" de Jiva Devoe est pour moi une grosse référence mais il est assez avancé au niveau des mécanismes du langage (pas très utile pour le début quoi), et si ça peut t'aider personnellement j'ai commencé la prog iPhone avec "iPhone OS 3" de Thomas Sarlandie, qui est rapide à lire et qui est un bon moyen de démarrer, même si il passe trop rapidement sur certains points.
Il y a aussi un bouquin sur les design patterns classiques appliqués à Cocoa, dispo sur Amazon, qui est bien foutu.
Donc non ce n'est pas spécialement de la rétention d'information, c'est juste que le développement iOS a l'air d'une poule aux oeufs d'or actuellement, et que beaucoup de monde veut s'y mettre sans se donner les moyens ou en partant de trop loin ; rajoute à ça le fait que les outils, le langage et le framework utilisés sont réservés au développement iOS/Mac OS, personne n'est familier avec ça, et ça fait d'autant plus de trucs à expliquer.
Cela dit, le dév iOS étant mon métier, je peux te donner à moitié raison sur un point : ça ne me dérange pas d'aider les gens qui posent des questions ici, je le fais dès que j'en ai l'occasion et les capabilités ; néanmoins, à l'heure actuelle, la demande en développeurs iOS est assez forte, et les gens qui savent faire ça sont assez rares (de moins en moins j'imagine), donc oui les dévs iOS se frottent les mains et sont bien arrangés par la difficulté d'apprentissage de Cocoa/la difficulté pour trouver des tutos, tout le monde ne peut pas se lancer là-dedans comme tout le monde s'est lancé dans le dév PHP lorsque ça rapportait de faire des sites web pour pas grand chose.
En attendant la nouvelle version du livre, je suis tombé sur les vidéos du site thenewboston et consacrées au développement d'appli en obj-C/Cocoa sur iPhone. Je m'étais fait la main en objective-c sur ce site?
Je suis à peu près à la moitié des vidéos et même si ça manque un peu (euphémisme) de vue d'ensemble, les tutoriaux sont progressifs et explique le comment et le pourquoi - mais pas le pourquoi du comment.
Afin de me faire une idée, si vous deviez estimer le "recouvrement" entre Cocoa pour iPhone et Cocoa pour Mac, quel niveau de compatibilité donneriez-vous entre les 2 mondes ?
Sethii
Juste pour info, "Cocoa pour iPhone" s'appelle Cocoa Touch.
Il ne faut pas oublier qu'on se réfère souvent à Cocoa comme un framework, alors que c'est un ensemble de plusieurs frameworks.
Parmi eux, Foundation (les classes principales telles que les NSString, NSArray, NSSet etc.) et UIKit (tout ce qui comprend les vues et ce qui y est associé, UIView, UIButton, UITextField) doivent être les plus importants.
Je ne suis pas développeur OS X mais j'ai essayé d'y toucher, et je t'avoue que la logique est pour moi tellement différente que je pense qu'il faut avoir le temps d'assimiler la logique de prog sur OS X même quand on est expérimenté sur iOS.
Cela dit, je pense que les classes de Foundation sont grosso modo les mêmes, mais la logique de conception est plus complexe sur OS X (pour résumer, sur iPhone, tu n'as qu'une UIWindow dans ton application, et la plupart du temps tu ne gères qu'un UIViewController à la fois, avec une UIView principale qui lui est rattachée, et plusieurs sous-classes de UIView que tu imbriques là-dedans, avec les actions dans le contrôleur ; sous OS X, tout ça a l'air bien plus différent du fait que tu as plusieurs NSWindow, avec plusieurs contrôleurs qui ne s'instancient pas de la même façon, etc etc... mais bon tu as le temps de voir venir).
[Edit]
Deux derniers points :
- la gestion mémoire sous iOS, pour quelqu'un qui vient de Java/C#, ça fait tout drôle au début
- la difficulté pour trouver des tutos vient aussi sans aucun doute du fait que les développeurs OS X/iOS sont rares, pour la bonne raison qu'il faut un Mac pour pouvoir développer là-dessus, et même si la proportion de codeurs utilisant un Mac est sûrement bien plus élevée que la proportion de gens ayant un Mac parmi la "population moyenne", on sait que ça fait quand même pas beaucoup de personnes (alors que C#/.NET que tu prends un exemple, si il y a beaucoup d'infos et de tutos là-dessus, ça vient certainement du fait que c'est quand même la base du type qui veut se lancer dans le développement sous Windows ; je suis pas sûr que tu trouves autant de tuto sur le Boo par exemple, alors que ce dernier a quand même l'avantage d'utiliser le framework .NET lui aussi !).