Impression ou réalité ?

Sethii

Membre confirmé
2 Juillet 2011
51
1
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 ?
 
Dernière édition:
En passant outre le langage en lui-même, d'après ce que j'au pu lire que XCode4 semble manquer encore d'un peu de maturité, et la plupart des tutoriels actuellement disponibles et relativement bon concernent encore XCode3.
 
Montrez-moi un bon tuto (même en anglais) qui explique XCode 4 ?

Ai-je raison, ai-je tord, y a-t-il malgré tout un peu de vrai ?
On va se répéter : le problème n'est pas l'Obj-C ou Xcode, mais Cocoa. C'est la philosophie de ce framework qu'il faut comprendre, et après les outils vous paraîtront évidents.

Donc une petite recherche te donnera les lectures de base pour comprendre Cocoa et même si ces livres traitent de Xcode 3, une fois maîtrisé, le passage à la version 4 ne doit pas produire de blocages rédhibitoires.

Par contre Cocoa sans connaître la programmation objet ... :siffle: Cocoa n'est pas pour les débutants.
 
On va se répéter : le problème n'est pas l'Obj-C ou Xcode, mais Cocoa. C'est la philosophie de ce framework qu'il faut comprendre, et après les outils vous paraîtront évidents.

Donc une petite recherche te donnera les lectures de base pour comprendre Cocoa et même si ces livres traitent de Xcode 3, une fois maîtrisé, le passage à la version 4 ne doit pas produire de blocages rédhibitoires.

Par contre Cocoa sans connaître la programmation objet ... :siffle: Cocoa n'est pas pour les débutants.

J'ai XCode 4 à ma disposition et j'ai essayé de transformer un tuto version XCode 3 en version 4.

J'ai quand même quelques notions d'IDE : Borland C++ 3.0, 3.1, 4.0. Plus récemment celui de C# et je n'ai pas spécialement de soucis avec eux mais XCode 4 ...

Pour la POO, j'ai quand même quelques bonnes notions : héritage, polymorphisme, surclassage d'opérateurs, templates. J'ai juste un peu de mal avec les fonction friends.

Puis-je vous demander comment vous avez appris le triplet : Objective-C / Cocoa / XCode ?

En suivant une formation payante ?
En autodidacte ? Si oui, avec quelles ressources ?
 
Ai-je raison, ai-je tord, y a-t-il malgré tout un peu de vrai ?

Tu as tord dans le fait qu'il y aurait une volonté de limiter l'apprentissage à une élite. Cocoa est puissante mais peu accessible, c'est un fait. Apple a fait beaucoup d'efforts ces 3 dernières années, je te l'assure.

Tu as raison dans le fait qu'il n'y a pas autant de ressources pour Cocoa que pour d'autres environnements: ce fut longtemps une plateforme minoritaire. Comme la doc de Cocoa est très vaste, il est très difficile de s'y attaquer de front. C'est pour cela que nous conseillons l'achat de livres.
 
J'ai envoyé le message suivant à A. Hillegass :

@ Aaron Hillegass : Do you plan an pdate for your Programming Cocoa book ?

Regrds,

Et voici sa réponse :

I've already turned the manuscript over to the publisher, but they will edit/index/print it for the next two months.

Sincerely,
Aaron Hillegass
 
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
 
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 :D
- 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 !).
 
Dernière édition:
Tout d'abord, merci pour ta réponse largement argumentée et honnête.

Ce qui m'a supris c'est le contraste entre la réputation d'avant-garde de Mac et le côté presque archaïque des outils de développement. C'est vrai que ça ne date pas d'hier. Il y a 20 ans je me souviens des "inside Macintosh" en 7 volumes qui demandait pour comprendre le début, d'avoir lu la fin.

Personnellement, je suis venu à tout ça un peu par hasard. Ma mère cherchait un moyen d'aller sur internet, mais je la voyais assez difficilement utilisé un PC avec clavier, écran, souris, browser, etc. Aussi lui ai-je acheté un iPad. Depuis elle ne le lache plus.

Ca m'a fait découvrir ce monde et les applis. Il y a 10 ans, j'avais développé un petit soft sur Windows CE (le tout en "vrai" C microsoft avec la gestion de la queue des messages, etc). C'était pour ma boite qui vendait un de ces petits appareils (pas encore de lien réel avec Outlook) et il s'agissait d'une liste téléphonique de tous les collègues avec un outil de search intégré, petit quoi mais fonctionnel.

J'aurais bien voulu programmé cette bête en bluetooth et c'est la, la première fois à laquelle je me suis heurté à un mur. En gros, il fallait acheter un add-on à 2000 euros car rien ne perçait sur les forums. La c'était pire, les démos ne fonctionnait même pas.

Je devais changer de PC et l'iPad m'ayant vraiment séduit, je me suis dit : dommage que je n'ai pas le Mac qui va avec. Et ajd je suis l'heureux proprio d'un Mac.

J'en suis content mais il est vrai qu'un des éléments était d'avoir la possibilité de programmer des petites applis, bien que j'avais intégré la possibilité d'échec. En plus, un de mes boss m'avait sondé en me demandant (il a un iPhone et il sait que j'aime bricoler des applis) si j'avais des idées de développement et je lui avais répondu par la négative. Donc, a priori, je n'avais pas d'idées.

Pour la syntaxe de l'Obj-C, ce qui me perturbe plus c'est le passage de paramètres. Intuitivement, je n'avais pas tord en considérant que l'apprentissage de Cocoa Touch ;) pouvait être une étape dans l'éventuel apprentissage de Cocoa tout court.

J'ai une expérience C classique mais c'est vrai qu'avec Windows et ses reboots journaliers, une fuite de mémoire dans un appli, ben c'est la norme ^^.

Peut être ne suis-je pas doué, mais je trouve que les outils de recherche de nouvelles applis sur l'App store tendent à présenter un subset beaucoup trop réduit d'applications.

Sethii
 
Ce qui m'a supris c'est le contraste entre la réputation d'avant-garde de Mac et le côté presque archaïque des outils de développement.
Xcode archaïque ? :eek::eek::eek: Tu as jeté un coup d'oeil sur les outils de debugage ? :siffle:
Si sur certains points, notamment l'éditeur, Eclipse est au-dessus de Xcode, il ne me semble pas que les produits M$ soient un exemple. Je n'ai pas travaillé avec les toutes dernières versions de Visual, mais celles que j'ai utilisées étaient elles archaïques. :rateau: Et au prix auquel ils les vendent :siffle:
Et si on aborde la construction des interfaces par IB ou son remplaçant dans XC4, Eclipse (et tous les outils Java) est à des années lumières en dessous; quant à M$ ... quand on voit la mocheté des fenêtres des applications Windows ... :D

Tu aurais du venir poser ta question il y a 15 ans, à la grande époque de MPW (et donc de Inside Macintosh) : ça c'était des outils de développement. :rateau:

Donc pour un outil gratuit (XC3) ou presque (4€ pou XC4), c'est plutôt pas mal. Et de toutes les façons, il n'y a rien d'autre :D
 
Ce qui m'a supris c'est le contraste entre la réputation d'avant-garde de Mac et le côté presque archaïque des outils de développement. C'est vrai que ça ne date pas d'hier. Il y a 20 ans je me souviens des "inside Macintosh" en 7 volumes qui demandait pour comprendre le début, d'avoir lu la fin.

Oh non Xcode est tout sauf archaïque, perso le seul reproche que je fais à Xcode 4 c'est d'avoir été sorti un peu dans la précipitation, résultat on a une version finale qui en plus d'être passé payante (bon 4€ c'est plus qu'honnête quand même) est toujours buggée.
Mais au contraire les outils de développement sont vraiment très bons, par contre ça demande de s'y habituer quand on vient d'Eclipse ou de VS en effet ; le développement Cocoa a cet énorme avantage qu'il force à utiliser complètement le pattern MVC, jusqu'à il y a peu l'IDE (Xcode) et l'outil de développement d'interfaces (Interface Builder) étaient même complètement séparés, ce qui impliquait de définir ses outlets dans les interfaces de tes contrôleurs de vues et de les binder depuis Interface Builder, ça ne vient peut-être pas naturellement mais ça évite un développement "à la Visual Studio" où les gens ne réalisent peut-être pas l'indépendance qu'il peut y avoir entre un contrôleur et sa/ses vue(s), par exemple.
Oui Xcode est déroutant, mais il n'est sûrement pas archaïque. ;)

J'en suis content mais il est vrai qu'un des éléments était d'avoir la possibilité de programmer des petites applis, bien que j'avais intégré la possibilité d'échec. En plus, un de mes boss m'avait sondé en me demandant (il a un iPhone et il sait que j'aime bricoler des applis) si j'avais des idées de développement et je lui avais répondu par la négative. Donc, a priori, je n'avais pas d'idées.

Je me suis peut-être mal exprimé dans mon post au-dessus, je n'ai rien contre le fait que des gens se lancent dans Cocoa en voulant publier des applis sur l'App Store ou en ayant des idées d'applis, c'est tout à fait normal ; j'en ai juste après les gens qui ne pensent qu'à la fin et qui ne pensent pas aux moyens que ça demande, en voulant faire ça vite et forcément pas très bien, ou en pensant qu'une appli c'est petit, c'est simple, y a pas beaucoup de contrôles, donc ça doit se coder vite ; malheureusement ça n'est pas aussi simple, et rien que l'état calamiteux de l'appli Facebook actuelle sur iPhone, par exemple, doit mettre sur la voie que même pour une énorme boîte telle que Facebook, ce n'est pas simple d'avoir une appli "parfaite", loin de là.

Pour la syntaxe de l'Obj-C, ce qui me perturbe plus c'est le passage de paramètres. Intuitivement, je n'avais pas tord en considérant que l'apprentissage de Cocoa Touch ;) pouvait être une étape dans l'éventuel apprentissage de Cocoa tout court.

Ça demande un peu d'habitude en effet, mais au final, quel appel de fonction est le plus lisible entre :
- [myNumber addANumber:5 plusAnotherNumber:7 andDivideItBy:2]; (Obj-C)
et
- myNumber.addAndDivide(5,7,2); (Java)

C'est juste un petit exemple qui n'a pas vraiment de sens, mais c'est pour montrer qu'en Objective-C, dans la grande majorité des cas, tu n'as même pas besoin de lire la doc d'une classe pour comprendre ce qu'une des méthodes fait, il te suffit de l'appeler pour que le nom de la méthode te mette sur la voie et t'indique les paramètres à passer, ce qui est loin d'être tout le temps le cas en Java. :)

J'ai une expérience C classique mais c'est vrai qu'avec Windows et ses reboots journaliers, une fuite de mémoire dans un appli, ben c'est la norme ^^.

Bon, c'est peut-être aussi le cas des applis OS X, qui en plus de disposer d'un garbage collector, disposent également de davantage de ressources à gaspiller.

Mais sur iOS, où on parle d'appareils mobiles aux capacités limitées, ce ne sont pas les mêmes contraintes : si tu codes une appli qui va tourner sur un iPhone 3GS par exemple, tu ne peux pas te mettre à gérer la mémoire comme un porc car les fuites mémoires ne pardonnent pas sur un appareil qui ne dispose que de 256 Mo de RAM au total ; de même, le processeur est limité, donc il faut pas mal optimiser les calculs sous peine d'avoir une application qui rame, quand elle ne se vautre pas lamentablement ; ajoute à ça les contraintes liées au réseau, que tu peux capter en 3G lorsque ton appli s'apprête à envoyer une requête, puis qui va passer en GPRS, voire se couper en plein milieu de la réception du résultat de ta requête, puis se rétablir quelques secondes plus tard... sans compter le fait qu'une appli n'est généralement pas utilisée très longtemps, donc il faut qu'elle soit le plus réactive possible, en prenant en compte qu'en plein milieu de l'utilisation de ton appli, l'utilisateur peut la mettre en stand-by pour répondre à un appel, répondre à un SMS, consulter ses mails ou une autre appli... bref, pas mal de contraintes qui ne rendent pas le dév iOS aussi simple qu'on peut le penser au début et auxquelles on ne pense pas forcément :)

Je force un peu le trait sur les contraintes liées à iOS bien sûr, mais tout ça pour dire qu'il n'y a qu'une façon de se lancer dans le dév iOS : proprement, à son rythme, et en assimilant les concepts liés à Cocoa ainsi qu'aux outils de développement, même si ça prend du temps.
Je vais te redonner le meilleur conseil que je puisse te donner : potasse des bouquins, tu as déjà quelques références sur ce thread ; en plus pour le coup tu ne tombes pas si mal, parce que si c'est vrai qu'on a du mal à trouver de la doc gratuite pour Cocoa, on est servis par des auteurs très professionnels et compétents au niveau bouquins, Aaron Hillegass est assez génial dans son genre.