# Programmation sur Xcode incompréhensible



## mko (14 Novembre 2009)

Salut à tous, alors voilà je viens d'avoir mon BTS d'informatique de gestion, et on travaillait uniquement sur Windows, avec VisualStudio qui est vraiment sympathique pour la programmation en interface.

Donc maintenant je suis sur Mac, j'ai laissé complètement windows, mais j'aimerais programmer sur Mac... J'installe donc Xcode je commence et là ça fait 2h que je suis dessus et franchement j'y comprends quasiment rien. Sur VS, quand je créé un bouton et que je double clique dessus il m'envoie sur la partie code, le nom du bouton est visible et si par exemple le bouton s'appelles BTN1, et si j'écris BTN1. il va m'afficher toute sortes de commandes disponibles avec ce bouton.

Déjà j'ai mis 1h à lier un bouton avec Xcode... Ensuite je ne vois nul part ou je peut renommer le bouton dans l'interface builder afin de l'appeler sous Xcode. Ensuite j'espère que les commandes vont s'afficher aussi mais j'en doute... Franchement y a pas un logiciel beaucoup plus avancés, gratuit ou non, pour mac ? VS pour windows c'est génial j'adore, un logiciel du même genre pour mac parce que Xcode bonjour.

Et sinon vous pouvez me dire comment nommer et appeler un élément de l'interface builder dans Xcode ? Sur windows il suffit de double cliquer...Sur Xcode apparement faut avoir son diplome d'ingénieur.


----------



## ntx (14 Novembre 2009)

Une lecture avant de commencer Cocoa : "Programmation Cocoa sous Mac OS X", Aaron Hillgass
Tant que tu n'auras pas potassé un minimum cet ouvrage, pas la peine de venir nous voir. :rateau:


----------



## mko (14 Novembre 2009)

Pas de sous pour un bouquin, qui plus ait je code en C sous linux sans problème pourquoi sur mac il faudrait apprendre un truc en plus par rapport aux autres ? Comment se fait-il qu'un OS aussi simplifié et convivial soit 100x plus galère que Windows dans ses outils de programmations ? Ils veulent pas qu'on leur fasse des programmes ou quoi ?


----------



## Rez2a (14 Novembre 2009)

Si tu veux coder en C sans interface, tu peux très bien le faire avec Xcode aussi (choisis Command-line Tool comme projet).
Sinon je te trouve dur, ce n'est pas parce qu'Apple n'a pas choisi la même ligne de fonctionnement que Microsoft au niveau de l'IDE qu'il est mauvais pour autant.
Perso, quand je jette un oeil au framework de Visual Studio et à Cocoa, je me rends vite compte que c'est la *merde noire* sous Windows, il y a des milliers et des milliers de classes en pagaille, comparé à Cocoa c'est le jour et la nuit.
Visual Studio est certes un IDE sympa (par certains côtés hein, il y en a d'autres que je ne peux pas supporter, il suffit de passer 10 minutes dedans pour se rendre compte que c'est un foutoir international), mais Xcode et IB sont bien plus agréables de mon point de vue.
Ça n'est peut-être pas aussi instinctif que peut l'être VS, mais c'est une question d'habitude... je te recommande aussi "Programmation sous Mac OS X", ton expérience avec Xcode correspondra beaucoup plus à ce que tu attends de Mac OS X, grâce au côté sympa et clair du bouquin.

Mais bon, en premier, demande-toi ce que tu veux faire comme application... si ça se trouve, Java ou Flash correspondent beaucoup plus à tes besoins en terme d'accessibilité et de fonctionnement.
Xcode et Cocoa, c'est très dur de s'y lancer à l'instinct, ça n'a pas le côté "Oui-Oui" de Visual Studio ou de Flash (aussi appelé "c'est magique je créé un bouton, je double-clique dessus, il devine tout seul que je veux créer une procédure Click"), il y a de la gestion mémoire à faire, et même en dehors de l'IDE et du framework, si tu y vas à l'aveugle, rien que la syntaxe de l'Objective-C va te rebuter à mon avis.

Bref si tu veux vraiment te lancer, mets quelques dizaines d'euros de côté, et achète le bouquin d'au-dessus, Aaron Hillegass est sûrement plus à même que moi de te faire comprendre en quoi les côtés qui peuvent paraître bizarres à première vue sont en fait assez logiques.

Et histoire de préciser que je ne suis pas un intégriste de chez Apple, j'ai commencé comme toi (BTS : waouu, Visual Studio roxxe.... L3 Info : waouuu, Java et Flash roxxent.... Master Info : waouuu, Xcode roxxe), et crois-moi c'est pas mal de tester un peu tout en cherchant à comprendre, plutôt que de se braquer dès le début.


----------



## mko (14 Novembre 2009)

Mmmm je te remercis de ta réponse détaillée, je sais pertinement que VS est un bordel ambulant mais ça n'a rien à voir avec l'interface qui est beaucoup plus sympa que sous Xcode. Le flash et le java je laisse ça au amateurs ça fait longtemps que je suis passé à autre chose, sous VS je codais quasiment que en C# et C++, sous linus je code sous C, et il m'arrive de me voir coder en python pour le fun, donc tu ne dois pas tellement bien voir mon niveau, à croire que le BTS s'est intensifié depuis que tu l'a passé...

Mais bon ce que je trouve vraiment allarmant, c'est qu'il faille obligatoirement passer au moins le temps de lire un bouquin pour coder sous mac, alors que n'importe quelle plateforme il te faut simplement savoir codé...

J'ai déjà fait evidement des programmes en ligne de commande, pas besoin de xcode pour ca d'ailleurs.

Mais s'il existe à la rigueur des sites ou des tutos pour cela je suis prêt à me lancer tant qu'a faire, mais il est hors de question de dépenser un seul euro pour coder...


----------



## Rez2a (14 Novembre 2009)

MKO a dit:


> Le flash et le java je laisse ça au amateurs ça fait longtemps que je suis passé à autre chose, sous VS je codais quasiment que en C# et C++, sous linus je code sous C, et il m'arrive de me voir coder en python pour le fun, donc tu ne dois pas tellement bien voir mon niveau, à croire que le BTS s'est intensifié depuis que tu l'a passé...



lol, le Java et le Flash aux amateurs ? 
Je crois que tu serais étonné de voir le niveau de la plupart des développeurs J2E et Flash, si il y a un langage amateur-friendly ça serait justement le Python à mon avis. 
Quant au C#, ça doit être celui qui ressemble le plus au Java justement (à l'exception du J# bien sûr), vu qu'ils sont tous deux dérivés du C++ comme tu dois le savoir ; je vois pas la différence fondamentale entre C# et Java qui ferait de l'un un langage de leet et de l'autre un langage d'amateur. 
C'est facile de (mal) coder en Java ou en Flash mais ça ne les réserve pas aux amateurs pour autant... et comme tu l'as remarqué, Xcode/Cocoa est assez difficile d'accès, dans le sens où quelqu'un qui lance Xcode par hasard ne peut tout simplement rien en faire, contrairement à Visual Studio par exemple... si tu veux mon avis, ce n'est pas plus mal, dans le sens où ça ne pose pas de problème une fois qu'on y est habitué, et où ça permet de se passer de bien des développeurs médiocres qui codent n'importe comment pourvu qu'ils puissent coder quelque chose en 10 minutes, comme en témoigne la qualité générale des applis Mac.

Plus sérieusement, si tu cherches des tutos pour te servir de Xcode :

Il y a déjà ça sur le langage Objective-C, fais l'impasse si tu as pigé la syntaxe.
http://cocoadevcentral.com/d/learn_objectivec/

Un site de référence sur Cocoa :
http://cocoadevcentral.com/
Plus spécifiquement :
http://cocoadevcentral.com/d/learn_cocoa/
http://cocoadevcentral.com/d/learn_cocoa_two/
http://cocoadevcentral.com/articles/000082.php
http://cocoadevcentral.com/articles/000083.php

Le bouquin n'est pas obligatoire, il y a pas mal de tutos pertinents dispos sur le net, et il y a la doc fournie par Apple qui est vraiment sympa.
Cela dit, on conseille souvent le bouquin de Hillegass car, en plus d'être très agréable à lire, il permet de prendre de bonnes habitudes avec Cocoa dès le départ... un des exemples qui me viennent en tête, c'est l'héritage, le premier réflexe du développeur Java, qui est utilisé beaucoup plus rarement avec Cocoa.


----------



## mko (14 Novembre 2009)

Ok merci pour les liens, disons que je ne code pas pour faire des choses "utiles" pour le moment, mais plutôt pour savoir lequel je préférerais me spécialiser...

Donc java et flash c'est cool pour faire des petits trucs, mais bon, pour faire des trucs vraiment poussés c'est moyen.

Je vois pas ou est le problème qu'une interface simple peut avoir... On réfléchit moi aux trucs enervants qu'on connait tous, on code plus proprement, plus rapidement...

Un outils difficile d'accès ne veut pas dire un truc génial, ça veut juste dire un truc mal conçu, aussi performant soit il. Mais bon quand je vois logic pro ou même apertune, j'arrive à penser que apple est génial sur son os et ilife, mais pour autres chose c'est pas ça quand même...

Mais bon je vais me pencher sur tes liens je t'en remercies.


----------



## tatouille (15 Novembre 2009)

MKO a dit:


> Salut à tous, alors voilà je viens d'avoir mon BTS d'informatique de gestion, et on travaillait uniquement sur Windows, avec VisualStudio qui est vraiment sympathique pour la programmation en interface.
> 
> Donc maintenant je suis sur Mac, j'ai laissé complètement windows, mais j'aimerais programmer sur Mac... J'installe donc Xcode je commence et là ça fait 2h que je suis dessus et franchement j'y comprends quasiment rien. Sur VS, quand je créé un bouton et que je double clique dessus il m'envoie sur la partie code, le nom du bouton est visible et si par exemple le bouton s'appelles BTN1, et si j'écris BTN1. il va m'afficher toute sortes de commandes disponibles avec ce bouton.
> 
> ...



oui la toute la difference IB n'est pas un generateur de code, tu travailles avec un reel environement Object, tu peux extend ces Objects ou les utiliser simplement le tout est de creer des relations logiques entre ton code et ces Objets en utilisant les bindings et Outlets

il te faudra bien plus de deux heures pour apprendre le MVC

http://developer.apple.com/mac/library/navigation/index.html#topic=Guides&section=Resource+Types

certains font deja du Cocoa et non meme pas encore leur Bac ... a croire que l'ecole primaire c'est intisifie depuis que tu y es passé


----------



## mko (15 Novembre 2009)

Oui avec VS tu peut aussi faire tout ça, mais quand tu veux utiliser les trucs déjà existants ça te prends 2 secondes alors qu'avec xcode + IB tu met 2 plombes en t'y connaissant.

Depuis j'ai un peu avancé quand même, je commence un peu à comprendre la "logique" de xcode, c'est effectivement comme travailler sans logiciel du tout en fait. Du coup c'est la vraie misère, je comprends qu'il n'existe que trop peu de logiciels sous mac.

Mais bon c'est sur que le résultat est pas le même, il est certain que l'on code mieux sans aucun logiciel, mais on galère. J'ai même essayé de faire du SDL et bien déjà la vraie galère pour l'installer alors que sous windows...

Bref c'est pas grave je suis un peu déçu mais en même temps j'aime bien les challenge et là je pense en avoir pour mon compte lol


----------



## ntx (15 Novembre 2009)

MKO a dit:


> Pas de sous pour un bouquin, qui plus ait je code en C sous linux sans problème pourquoi sur mac il faudrait apprendre un truc en plus par rapport aux autres ? Comment se fait-il qu'un OS aussi simplifié et convivial soit 100x plus galère que Windows dans ses outils de programmations ? Ils veulent pas qu'on leur fasse des programmes ou quoi ?


Xcode et surtout IB est prévu pour travailler sur des programmes en Obj-C/Cocoa, rien à voir avec du C sous Linux.
Si tu ne veux pas faire l'effort de comprendre Cocoa, rien ne t'empêche d'utiliser d'autres frameworke (Qt ou wxWidget) et de programmer comme sur Linux.
Apple fournit des outils pour les gens qui veulent faire l'effort pour apprendre à s'en servir, et quoi que tu puisses en penser avec ton approche de néophyte du monde Apple, ces outils sont assez géniaux une fois maîtrisés. Il est quand même possible de faire en Cocoa un éditeur de texte complet sans taper une ligne de code. :rateau:
Et va dire à un développeur qui n'y connait rien de pondre une interface en Qt ou MFC, il va galérer comme toi sur Cocoa. Et ce n'est pas un manque de connaissance du langage mais de la philosophie des différents frameworks.
Et pour finir, tu peux tout à fait utiliser SDL sur Mac de la même manière que sous Windows, c'est son intégration à Xcode et à une application Cocoa qui diffère. Et à nouveau, rien ne t'oblige de passer par là.


----------



## mko (15 Novembre 2009)

Alors la c'est encore plus alarmant, écrire un programme sans écrire une seule ligne de code, tu m'a convaincu, cocoa => poubelle pour moi merci mais ça n'est pas de la programmation ça, c'est un outils pour bouseux alors lol Encore pire que VS...

La première cause de programme foireux dans le monde de la programmation c'est tous ces outils qui aident à ne pas écrire du code soit même... Alors VS écrit le plus chiant, on peut comprendre et l'utiliser, mais si cocoa te permet de ne même pas écrire de code pour faire un éditeur de texte, c'est bon pour le noob++ et ça le range au même niveau que dreamweaver machin. Et le pire c'est qu'en plus pour faire de la merde, c'est même pas intuitif.

On ne devrait pas appeler framework ce cocoa, c'est un outils pour débutant mal tourné, le jour ou tu veux faire une surchage d'opérateur là ou Apple a décidé que tu peut pas parce qu'il a pas envie, c'est foutu, donc cocoa c'est caca beurk, je comprends pourquoi autour de moi dans ma nouvelle école on me dit que mac c'est pourri, c'est seulement la programmation apple qui est à chier... Encore une fois je suis pas étonnée, en musique j'ai beaucoup plus de connaissance, et en testant logic je me suis rendu compte que c'était plus un programme pour débutant dans la mesure ou le programme fait tout pour toi, mais la aussi il fallait avoir un diplôme d'ingénieur logic pro... Pour faire des trucs pourris... Bref déçue par Apple, mais on ne peut pas être parfait...

Merci en tout cas de m'avoir ouvert les yeux sur la vrai nature de ce "logiciel".


----------



## Rez2a (15 Novembre 2009)

MKO a dit:


> je comprends pourquoi autour de moi dans ma nouvelle école on me dit que mac c'est pourri, c'est seulement la programmation apple qui est à chier...



En même temps, c'est facile de dire qu'un truc est pourri ou génial quand on ne sait même pas de quoi on parle... tu risques pas d'aller bien loin si tu te bases sur une phrase d'un post pour déclarer qu'un framework est pourri.

Tu te rends compte que tu es en train de dire que Cocoa est un "framework pour noob" parce que tu es incapable de comprendre quoi que ce soit à l'architecture MVC et au fonctionnement de Xcode et IB quand même ?



> La première cause de programme foireux dans le monde de la programmation c'est tous ces outils qui aident à ne pas écrire du code soit même...



J'aurais plutôt dit les gens qui n'arrivent pas à s'adapter et qui veulent garder leur façon de faire en dépit de l'environnement sous lequel ils travaillent, mais chacun sa vision des choses... 



> Et le pire c'est qu'en plus pour faire de la merde, c'est même pas intuitif.



Effectivement, la plupart des applis Mac et iPhone méritent bien d'être qualifiées de merdes. 

Bon retour sous VS, c'est tellement plus "leet".


----------



## mko (15 Novembre 2009)

Et bien oui, un framework qui fait tout à ta place et qui n'est même pas intuitif c'est nul. Les applications Mac et iPhone ne sont pas toutes fait en cocoa je pense, et pour celles qui le sont, elles seraient beaucoup moins mangeuses de ressources codé sous simple C avec les framework qu'utilise cocoa.

Donc ce qui est à dénigrer ici c'est la manière dont est géré les framework pour faire un appli mac, pas les framework qui sont bons. Il est donc vraiment compréhensible qu'aucune application pro ne tourne sous cocoa, ça reste un procédé light, pour des programmes débutants si tu veux.

Et non mon grand, un logiciel qui demande de se plier à lire un livre pour comprendre son fonctionnement ça n'est pas intéressant, le mec qui perd 2 jours pour comprendre comment marche un truc alors qu'il peut le faire en sachant uniquement Objective-C ou C, c'est un abruti qui a perdu son temps. Surtout quand on voit le résultat du truc, encore un outils comme smarty, c'est le même procédé on se prend la tête, et je me suis pris la tête à m'adapter au smarty, parce qu'au final le code est vraiment plus aéré, plus compréhensible, et on gagne en temps à long terme, mais la cocoa, c'est raté, on se prend la tête à comprendre un truc pour finalement...et bah avoir un truc encore plus incompréhensible qu'avant, c'est à dire que c'est un procédé fermé d'une part, et d'autres part un procédé qui ne simplifie pas la vie, mais par contre un procédé qui oblige à programmer comme apple veut qu'on programme.

Au final, avec cocoa, tu perds du temps à l'apprendre, pour pouvoir créer un programme relativement mangeur d'énergie, avec du C qui normalement relâche ce qui est inutile, là cocoa force à lancer pleins de trucs inutiles, donc sur 1000 fonctions que cocoa va charger, ton programme va utiliser....3 fonctions ah oui donc c'est une pale copie de VS, sauf que VS est lui beaucoup plus intuitif.

Donc non les gens qui ne veulent pas perdre du temps inutilement, je sais m'adapter quand il le faut, la c'est tout simplement inutile à long terme. L'environnement dans lequel on travaille doit être soumis à une adaptation si l'on veut faire du propre effectivement, mais encore faut il s'adapter à la bonne méthode, c'est à dire celle qui simplifie le CODE, et non pas tout faire avec des clicks.

Sur ce c'est pas grave, j'ai eu ma réponse, je vous remercie, j'ai compris que cocoa n'était pas pour moi dans la mesure ou je recherche un truc pro pour une utilisation à long terme, pas seulement sur vos dires, mais aussi sur la base de vos liens qui m'ont amené à étudier la chose quand même et plus besoin de polémiquer sur ça je vous laisse et me dé-notifie du sujet.


----------



## Rez2a (15 Novembre 2009)

MKO a dit:


> Et bien oui, un framework qui fait tout à ta place et qui n'est même pas intuitif c'est nul. Les applications Mac et iPhone ne sont pas toutes fait en cocoa je pense, et pour celles qui le sont, elles seraient beaucoup moins mangeuses de ressources codé sous simple C avec les framework qu'utilise cocoa.
> 
> Donc ce qui est à dénigrer ici c'est la manière dont est géré les framework pour faire un appli mac, pas les framework qui sont bons. Il est donc vraiment compréhensible qu'aucune application pro ne tourne sous cocoa, ça reste un procédé light, pour des programmes débutants si tu veux.



En effet, les apps iPhone ne sont pas faites avec Cocoa, mais avec Cocoa Touch.
Mais tu dois avoir raison, il n'existe aucune application pro en Cocoa, d'ailleurs je me demande bien avec quoi sont écrites 95% des applis OS X, en commençant par le Finder.

Si ça te fait plaisir de croire que Cocoa est réservé aux débutants parce que dans l'IDE on clique pour relier les outlets aux méthodes plutôt que générer du code indigeste comme dans VS, tant mieux pour toi, mais tu fais fausse route.


----------



## ntx (15 Novembre 2009)

MKO a dit:


> je comprends pourquoi autour de moi dans ma nouvelle école on me dit que mac c'est pourri, c'est seulement la programmation apple qui est à chier...


Ah je vois qu'on a à faire avec un grand professionnel :rateau: Alors mon coco quand tu te seras tapé 10 ans de bureau d'étude et que tu connaîtras un peu mieux le métier de développeur, tu reviendras nous voir pour nous dire ce que tu penses de Xcode et de Cocoa. Je suis sûr que ton point de vue aura changé.
Apple fournit des outils de programmation pour les professionnels, pas pour les boutonneux qui ne rêvent que de pondre de la ligne de code et qui ne voient pas 1% des possibilités de la programmation objet.  Quant aux grands professeurs d'informatique des écoles d'ingénieurs, je les ai rencontrés avant toi et ce que je peux en dire c'est qu'ils feraient bien de temps en temps de quitter leur labo et de mettre les pieds dans une entreprise, une vraie. :rateau:


----------



## tatouille (15 Novembre 2009)

Rez2a a dit:


> En effet, les apps iPhone ne sont pas faites avec Cocoa, mais avec Cocoa Touch.
> Mais tu dois avoir raison, il n'existe aucune application pro en Cocoa, d'ailleurs je me demande bien avec quoi sont écrites 95% des applis OS X, en commençant par le Finder.
> 
> Si ça te fait plaisir de croire que Cocoa est réservé aux débutants parce que dans l'IDE on clique pour relier les outlets aux méthodes plutôt que générer du code indigeste comme dans VS, tant mieux pour toi, mais tu fais fausse route.



oui c'est la puissance du parser sheme, IB  ne genere pas de code il genere des relations logiques entre objet === *c'est du pur objet*, comme quartz composer, 

+ Cocoa est est reconnu comme etant une reference dans le monde de l'objet, meme Torval en a dit du bien apres avoir flammé les devs de GTK et Gnome ...

*@notre ami* avec ses trois pauvres annees d'experiences semble etre un specialiste et un guru né de la programmation, vient donc a Standford faire un talk sur ta vision de l'objet je peux t'organiser cela

ecrire le moins de ligne possible pour un meme task c'est pourquoi ont a inventé l'OOP...

si tu me pisses 300 lignes de code alors que je peux le faire en 5 lignes, tout le monde te dira change de metier, car tu manques de fondamentaux : le software est un business et meme l'open-source.

OOP a ete invente pour reduire le temps homme/machine, 

+ on a inventé les MLs pour creer des AI qui seraient capable de generer leur propre code voir language on flight pour se passer de l'humain et repondre de la maniere la plus optimise a la demande, ce que fait ton cerveau en effet il change de mode  pour analyser differentes donnees, et il peut creer on flight un nouveau mechanisme d'analyse


----------

