# "Programmation Cocoa sous Mac OS X" : toujours d'actualité ?



## Rez2a (8 Septembre 2009)

Bonjour/soir à tous,
je me suis procuré le livre "Programmation Cocoa sous Mac OS X" (3e édition il me semble) de A. Hillegass il y a quelques mois.
J'avoue avoir un peu traîné, et par manque de motivation je n'ai toujours pas vraiment attaqué le livre en pensant m'y mettre pendant l'année scolaire qui commence.

Seulement voilà, maintenant que Snow Leopard est sorti, j'ai quelques inquiétudes puisque le livre dans son édition actuelle ne traite pas de GCD/OpenCL, et pour tout dire je ne sais même pas si ces technos seront si efficaces que Apple le promet, ni dans quelle mesure elles influent sur la façon de coder une application en tirant parti.

Après tout, je sais bien que je ne coderai jamais d'application "lourde" (j'entends par là iTunes & cie) et j'imagine que je peux me passer de ça pour le moment, mais j'ai quand même quelques questions...

Me conseilleriez-vous d'attendre un peu et de me procurer la prochaine édition qui sera sûrement focalisée sur GCD/OpenCL ?
Si vous avez déjà touché au dév en utilisant ces technos : est-ce que ça entraîne une différence fondamentale au niveau du code (autre langage ? j'imagine que oui pour OpenCL) et est-ce que ça vaut le coup de retarder mon apprentissage de Obj-C/Cocoa pour le commencer sur des "bases saines" en m'habituant à GCD et OpenCL dès le début ?
À noter que je rentre dans ma dernière année de fac, donc la dernière année où j'aurai tout mon temps libre pour m'intéresser au développement sur Mac OS... j'aurai sûrement beaucoup moins de temps à y consacrer une fois que la prochaine édition du livre sera sortie.

Merci d'avance.


----------



## Céroce (8 Septembre 2009)

Rez2a a dit:


> je me suis procuré le livre "Programmation Cocoa sous Mac OS X" (3e édition il me semble) de A. Hillegass il y a quelques mois.



Très bon choix.



Rez2a a dit:


> Me conseilleriez-vous d'attendre un peu et de me procurer la prochaine édition qui sera sûrement focalisée sur GCD/OpenCL ?


Au contraire, c'est très peu probable. Cocoa se compose de deux parties: Foundation (classes de bas niveau, en rapport avec les types de données, et l'interface avec le système d'exploitation) et AppKit (éléments d'interface utilisateur). Or, le livre parle essentiellement d'AppKit, qui ne va pas être bouleversé par GCD ou OpenCL. D'ailleurs les classes actuelles de Foundation profitent déjà GCD sans réécriture des applis.
GCD aide à la parallèlisation des traitements; il va changer peu de choses aux IHM. Il va surtout profiter aux applis qui font du calcul intensif ou lancent des tâches en parallèle (par ex. connexions Internet). Je n'ai pas regardé si, ou comment, GCD a été adapté à Cocoa, mais je m'attends à des changements minimes.

La grosse nouveauté qu'apporterait la nouvelle édition  s'il y en avait une, puisque rien n'a été annoncé  ce serait plutôt des copies d'écran qui correspondent à XCode 3.2.



Rez2a a dit:


> Si vous avez déjà touché au dév en utilisant ces technos : est-ce que ça entraîne une différence fondamentale au niveau du code (autre langage ? j'imagine que oui pour OpenCL) et est-ce que ça vaut le coup de retarder mon apprentissage de Obj-C/Cocoa pour le commencer sur des "bases saines" en m'habituant à GCD et OpenCL dès le début ?


Non, certainement pas, lance-toi tout de suite, de toute façon ce que tu apprends aujourd'hui te servira demain. À mon avis, GCD ou OpenCL sont plutôt des technos que tu intègres à ton appli après-coup pour améliorer les performances, quand tu as déjà quelque chose de fonctionnel.


----------



## [Vezøul]Numerø41 (8 Septembre 2009)

Rez2a a dit:


> est-ce que ça vaut le coup de retarder mon apprentissage de Obj-C/Cocoa pour le commencer sur des "bases saines" en m'habituant à GCD et OpenCL dès le début ?



Le bon apprentissage d'un langage c'est de codé comme il faut en utilisant les règles de nommage, l'architecture recommandé pour celui-ci etc. Connaitre un langage, ce n'est pas connaitre les librairies et autres frameworks, ça c'est un autre type de connaissance dans le développement (métaphore pourrie mais j'ai déjà vu ça, on peut connaitre une extension d'un protocole très bien et très mal utiliser le protocole de base). D'ailleurs un bon code Objective-C écrit sous OSX, peut très bien se porter avec peu d'effort sous Linux ou Windows, donc comme dit précédemment c'est toujours le bon moment d'apprendre un langage et cela te servira de toute manière pour la suite si tu reste dans la voie du développement.


----------



## tatouille (8 Septembre 2009)

openCl -> http://www.khronos.org/registry/cl/ si tu n'es pas trop abruti; il y a une petite journée d'apprentissage (bien sur si tu es confortable avec GL), ceci dit l'utilisation des multi-cores: Grant Marketing Control , GPU  ecetera est loin des considerations d'un language, pour Snow et l'Obj-C la mise a jour de connaissance concerne plutot les Blocks ou C Closures et l'utilisation de LLVM. Ici deux tres bon articles de Mike Ash du studio Ambrosia pour ne pas le nommer sur les Closures:

http://www.mikeash.com/?page=pyblog/friday-qa-2008-12-26.html
http://www.mikeash.com/?page=pyblog/friday-qa-2009-08-14-practical-blocks.html

PLBlocks (Landon Fuller, ex Apple CoreOS Dev, libre implementation des Closures/obj-C/C pour GCC) est disponible pour Regular Leopard, j'encourage tous ceux qui n'auraient pas deja commencé a apprendre ce bignou qu'il est grand temps, un bon et tres utile exercice: cloner toutes les functions utilisant les Blocks de Snow sur son Regular Leopard (ce que j'ai fait, car pour la retro compatibilité, c'est tres efficace).

http://code.google.com/p/plblocks/

pour ceux qui argumenteraient ce n'est pas normé, cela va vite le devenir en effet la prochaine STD++ les inclura (avec l'arrivé d'un vraie multi-thread backend et la gestion des singletons cela rendra Boost enfin obsolete), et je pense que l'on va meme voir une revision du standard 99 tres prochainement, Apple a decidé de pousser le cul des vieux grigous qui ne voulaient pas voir les closures et criaient a l'heretisme et qui emmerdent tout le monde avec leur inaction et le refus du progres, (cette histoire est loin d'etre nouvelle), comme Apple a fait pour le standard UNIX, donc M$ devra suivre pour prevaloir que Windows est une platforme conforme au standard, ce qui strategiquement est loin d'etre con et tres agressif de la part d'Apple, en effet, ils attaquent la ou ca peut faire tres mal, les open-standards de l'industrie, mais on le voit aussi avec html5, Apple a decidé aussi de prendre le lead au W3 qui avait ete laissé au bon soin de M$ pendant les annees 2000 (premier financeur) et on a pu voir l'inertie volontaire de la politique crado de cette entreprise en coupant les credits.


----------



## Rez2a (8 Septembre 2009)

Ok, merci de vos réponses, je sais ce qu'il me reste à faire alors... beaucoup de café, beaucoup de cigarettes, beaucoup de motivation et j'attaque le bouquin.


----------



## tatouille (8 Septembre 2009)

c'est vraiment chiant et inutile le time-out d'edition:sleep::sleep::sleep::sleep::sleep:

... open-standard de l'industrie *(la ou M$ n'avait trouvée que l'arme de la patent troll...) ...


----------



## Nebuchad34 (9 Septembre 2009)

Rez2a a dit:


> Ok, merci de vos réponses, je sais ce qu'il me reste à faire alors... beaucoup de café, beaucoup de cigarettes, beaucoup de motivation et j'attaque le bouquin.



Même pas besoin de prendre autant de drogues 

Le bouquin de Hillegass est tellement bien foutu que "ça coule de source". Je me suis vraiment pas pris la tête en le parcourant...


----------

