Comment un débutant peut y arriver ? (Cocoa/Obj-C)
nicolinux
Membre
Bonsoir,
J'espère d'abord que je suis au bon endroit...
Alors voilà , la sortie du SDK pour iPhone m'a donné envie d'apprendre à coder en Cocoa. Réflexions faites, ayant préalablement des idées d'applications sur Mac, j'ai décidé que je commencerai pas apprendre sur un Mac, l'iPhone pouvant suivre plus facilement puisque les bases étaient les mêmes.
Je précise d'emblée que je ne suis qu'un amateur, nullement un professionnel. Je n'ai jamais étudié en informatique, je suis un autodidacte en tout ce que je fais avec un ordinateur. Mais cela commence à faire pas mal d'années, je commence à maà®triser un peu cet outil. Je n'utilise pas de Mac depuis très longtemps cependant (bientôt deux ans), j'utilisais auparavant Linux (ceci expliquant le pseudo...).
Bref, si je maà®trise du point de vue utilisateur, je suis un débutant à peu près complet en ce qui concerne l'arrière du décor, la programmation. Je dis "à peu près" car j'ai déjà programmé : comme de nombreux autres, j'ai en effet découvert les joies de la programmation avec ma calculatrice graphique au lycée. Vous me direz, c'est un peu ridicule d'espérer programmer du Objective-C avec comme seule expérience le sous-Basic des calculatrices graphiques... C'est vrai mais cela m'a néanmoins permis d'apprendre les principes de base de, en tout cas je pense, tous les langages de programmation. Ainsi, j'ai appris le principe des variables, mais aussi des boucles, des conditionnelles, etc.
Mais en dehors de cela, et quelques autres expériences (programmation sur Psion, HTML...), je n'ai jamais programmé, et je ne connais ni Xcode, ni Cocoa et encore moins Objective-C. J'ai eu l'occasion de découvrir InterfaceBuilder pour traduire une application, autant dire que je ne le connais pas non plus.
Ces quelques précisions posées, j'entre dans le vif du sujet. J'ai dans l'idée de créer une application qui me semble assez simple, puisqu'il s'agirait d'une simple base de données pour créer un livre de recettes virtuel. Pour commencer, je souhaite rester sur du simple, si ça marche je raffinerai ensuite. Je voulais déjà savoir si, à votre avis, ça n'est pas un objectif irréaliste pour un débutant. De mon point de vue, il me semble qu'il s'agirait surtout de rassembler des technologies offertes par Apple, mais s'il faut prévoir des centaines de milliers de lignes de code, autant le savoir...
Conscient qu'il est insensé de vouloir se lancer à l'aveugle, j'ai cherché sur la toile des tutoriaux pour commencer : j'ai trouvé Become an Xcoder qui a l'avantage de s'adresser à des débutants complets et d'être adapté à Xcode 3. J'ai aussi repéré le Cocoa Dev Central qui semble contenir de quoi débuter. J'ai commencé à travailler avec le Xcoder, je ne comprends pas tout mais je suppose que c'est normal ; globalement cependant, je m'en sors.
Cependant, je sens bien que ça sera loin de suffire. D'où cette seconde question : peut-on, de votre point de vue, se contenter de tutoriaux sur Internet et des aides d'Apple, où l'achat d'un livre est-il un passage obligé ? Si oui, quel livre est indispensable ? Français ou anglais, peu m'importe, par contre je ne veux pas d'un livre trop théorique...
Dernière chose : j'ai du mal à me rendre compte, est-ce que mon cas est isolé ? Y a t-il de nombreux néophytes autodidactes qui se sont lancés en programmation (ça c'est facile) et surtout ont réussi à effectivement produire des programmes (plus compliqué) ? Ou tous ceux qui réussissent sont-ils passés par une école ? Je ne cherche pas à produire l'application qui révolutionnera l'informatique, mais juste une application pour moi. Si cela marche, je la diffuserai éventuellement par la suite, mais au départ, c'est vraiment plus par curiosité que j'essaie de programmer...
Merci beaucoup pour vos réponses et éclairements !
J'espère d'abord que je suis au bon endroit...
Alors voilà , la sortie du SDK pour iPhone m'a donné envie d'apprendre à coder en Cocoa. Réflexions faites, ayant préalablement des idées d'applications sur Mac, j'ai décidé que je commencerai pas apprendre sur un Mac, l'iPhone pouvant suivre plus facilement puisque les bases étaient les mêmes.
Je précise d'emblée que je ne suis qu'un amateur, nullement un professionnel. Je n'ai jamais étudié en informatique, je suis un autodidacte en tout ce que je fais avec un ordinateur. Mais cela commence à faire pas mal d'années, je commence à maà®triser un peu cet outil. Je n'utilise pas de Mac depuis très longtemps cependant (bientôt deux ans), j'utilisais auparavant Linux (ceci expliquant le pseudo...).
Bref, si je maà®trise du point de vue utilisateur, je suis un débutant à peu près complet en ce qui concerne l'arrière du décor, la programmation. Je dis "à peu près" car j'ai déjà programmé : comme de nombreux autres, j'ai en effet découvert les joies de la programmation avec ma calculatrice graphique au lycée. Vous me direz, c'est un peu ridicule d'espérer programmer du Objective-C avec comme seule expérience le sous-Basic des calculatrices graphiques... C'est vrai mais cela m'a néanmoins permis d'apprendre les principes de base de, en tout cas je pense, tous les langages de programmation. Ainsi, j'ai appris le principe des variables, mais aussi des boucles, des conditionnelles, etc.
Mais en dehors de cela, et quelques autres expériences (programmation sur Psion, HTML...), je n'ai jamais programmé, et je ne connais ni Xcode, ni Cocoa et encore moins Objective-C. J'ai eu l'occasion de découvrir InterfaceBuilder pour traduire une application, autant dire que je ne le connais pas non plus.
Ces quelques précisions posées, j'entre dans le vif du sujet. J'ai dans l'idée de créer une application qui me semble assez simple, puisqu'il s'agirait d'une simple base de données pour créer un livre de recettes virtuel. Pour commencer, je souhaite rester sur du simple, si ça marche je raffinerai ensuite. Je voulais déjà savoir si, à votre avis, ça n'est pas un objectif irréaliste pour un débutant. De mon point de vue, il me semble qu'il s'agirait surtout de rassembler des technologies offertes par Apple, mais s'il faut prévoir des centaines de milliers de lignes de code, autant le savoir...
Conscient qu'il est insensé de vouloir se lancer à l'aveugle, j'ai cherché sur la toile des tutoriaux pour commencer : j'ai trouvé Become an Xcoder qui a l'avantage de s'adresser à des débutants complets et d'être adapté à Xcode 3. J'ai aussi repéré le Cocoa Dev Central qui semble contenir de quoi débuter. J'ai commencé à travailler avec le Xcoder, je ne comprends pas tout mais je suppose que c'est normal ; globalement cependant, je m'en sors.
Cependant, je sens bien que ça sera loin de suffire. D'où cette seconde question : peut-on, de votre point de vue, se contenter de tutoriaux sur Internet et des aides d'Apple, où l'achat d'un livre est-il un passage obligé ? Si oui, quel livre est indispensable ? Français ou anglais, peu m'importe, par contre je ne veux pas d'un livre trop théorique...
Dernière chose : j'ai du mal à me rendre compte, est-ce que mon cas est isolé ? Y a t-il de nombreux néophytes autodidactes qui se sont lancés en programmation (ça c'est facile) et surtout ont réussi à effectivement produire des programmes (plus compliqué) ? Ou tous ceux qui réussissent sont-ils passés par une école ? Je ne cherche pas à produire l'application qui révolutionnera l'informatique, mais juste une application pour moi. Si cela marche, je la diffuserai éventuellement par la suite, mais au départ, c'est vraiment plus par curiosité que j'essaie de programmer...
Merci beaucoup pour vos réponses et éclairements !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
oui
tout le monde en est passé par là
C'est le fondamental.
Objective-C possède une "couche" supplémentaire, c'est un langage objet.
Personnellement, j'ai appris ce type de langage avec Objective-C, sans que cela pose problème.
Le langage C est néammoins à connaà®tre pour utiliser pleinement Objective-C
Non, regarde par exemple le code de l'éditeur de Text Edit, il est disponible dans les exemples du dossier Developer, tu verras qu'un gros projet en Cocoa se révèle assez peu gourmand en ligne de codes car Cocoa fournit beaucoup d'outils prédéfinis.Â
Pour ma part, je pense que le passage par un livre est indispensable, et fait gagner un temps considérable.
(Cocoa par la pratique de Aaron Hillegass)
Ben quand on aime ça on y arrive.
Bienvenu !
En tout cas, tous les livres et tutoriaux sur la programmation Cocoa demande des pré-requis en C ; donc je te conseillerais de commencer par le C.
Il y a un tutoriel pas trop mauvais sur le site du Zéro je crois.
Oui, ça arrive très souvent... D'ailleurs beaucoup de gens autodidactes sont passé par des écoles surtout pour en faire leur métier.
Je confirme à 100%
Oui, ça arrive très souvent... D'ailleurs beaucoup de gens autodidactes sont passé par des écoles surtout pour en faire leur métier.
[/quote]
Il y a aussi beaucoup de livres écrits sur ce sujet.
Les tutoriels, lorsqu'ils sont bien faits, c'est bien pour apprendre quelques petites bribes, pour ouvrir rapidement des portes, mais pour apprendre sérieusement l'architecture générale d'un langage comme le C, le livre permet de structurer ses connaissances ...
Bon je sais que je ne suis pas à la mode en disant cela, les gens préférant passer des heures à chercher des tutoriels sur le net, plutôt que d'acheter un bouquin pour quelques euros ...
Quand à ta réponse sur le passage par une école, je répondrais, oui, c'est plus simple de suivre l'encadrement d'une école, ce qui n'empêche pas d'être en plus autodidacte.
Concernant le langage C : j'ai cru comprendre qu'Obj-C le reprenait en gros en étant plus orienté "objet", ce que j'ai interprété comme étant plus concret. Donc je pensais qu'apprendre l'Obj-C suffirait : j'ai faux alors ? Et est-ce que, selon vous, j'ai vraiment besoin de connaà®tre théoriquement le C avant de me lancer dans la programmation concrète ? Je vais jeter un oe“il au site du Zéro en attendant...
Je n'avais pas repéré le dossier "Examples" de Developper. Je viens de jeter un oe“il à Textedit : le code m'impressionne plus qu'autre chose bien sûr puisque je me suis limité à des codes d'une dizaine de lignes jusque là , alors forcément. J'ai du mal à me rendre compte : la quantité de code pour cette application est donc une quantité limitée, c'est ça ? En tout cas, je vois bien que j'ai du boulot encore...
Pour le livre Cocoa par la pratique, cela fait plusieurs fois que je vois ce titre, je suppose donc que c'est un passage obligé. La seule chose qui me gêne est sa date de publication, assez ancienne, qui implique que ce sont de vieilles versions de Xcode et IB qui ont été utilisées. Cela ne pose-t-il pas un problème ? J'ai cru lire quelque part que la dernière version d'InterfaceBuilder notamment changeait pas mal de choses...
Encore merci !
EDIT @ Philippe49 : la question que je me pose est : est-ce que l'on a besoin de connaà®tre sérieusement l'architecture générale du langage que l'on souhaite pratiquer ? Si on est un professionnel, la question ne se pose même plus, mais même un amateur doit absolument le faire ?
Oui, il faut apprendre le C.
Si tu regardes les autres exemples de ce dossier, tu verras que les méthodes écrites sont en général de 10 à 20 lignes de code. Donc un programme conséquent c'est souvent
une ou deux dizaine de lignes x nombre de fonctions/méthodes
Je crois qu'il a en a fait une réédition en 2004-2005 et qu'il y en a une autre plus récente , .. en Anglais.
Le C est un langage qui fonctionne sur un modèle simple de fonctionnement de l'ordinateur :
il y a des octets qui se trouvent à telle adresse dans la mémoire (vive)
il y a des données qui se trouvent à tel endroit dans la machine
et pour simplifier, tout se déroule à partir de cette idée. On dit que c'est un langage bas-niveau. Cela simplifie les choses, il ne faut pas avoir peur du mot architecture.
Il y a de bons tutoriels/livres qui vont faire le lien et construire ainsi une image mentale de la situation chez le lecteur, et d'autres qui vont se contenter de te dire "tape ci , tape-ça".
Je vais commencer par regarder le tutoriel du site du 0 puisqu'il faut bien commencer quelque part...
Allez, j'y vais aussi de ma petite expérience, non pas pour la prôner en exemple, mais pour répondre à ta question: "est-ce possible?"
Je suis entièrement autodidacte en informatique et mon métier n'a absolument rien à voir.
Pour autant je code depuis plus de 20 ans maintenant.
D'abbord en basic, je me suis rapidement tourné vers le C.
"Le langage C" de Richie et Cunningam est du reste le seul et unique livre que j'ai acheté un jour.
Mais à cette époque Internet n'existait pas et il était alors bien plus difficile d'apprendre par soi-même.
Puis ce fut le C++ orienté Objet dont la connaissance (en terme de compréhension) m'a beaucoup ++ aidé pour enfin passer à l'obj-C lors de l'avènement de MacOs X.
Actuellement je travaille quotidiennement sur MES programmes depuis des années, et je suis en train de porter en Cocoa le dernier (et le plus important) que j'avais écris sous 4D il y a plus de 15 ans (et bien sûr upgradé et légèrement amélioré à chaque nouvelles versions de 4D) pour terminer, cet été j'espère, par n'avoir plus que des softs perso en Cocoa.
Et je précise bien que ces programmes me servent quotidiennement pour mon "vrai" travail et doivent donc être fiables avant tout (et c'est le cas depuis 20 ans).
Donc la réponse à ta question c'est: OUI c'est possible.
Sans confirmer forcément à 100% je dirais que ce fut mon approche également.
Là , par contre, je confirme à 100%.
L'important n'est certainement pas d'arriver à quelque chose une fois en "recopiant" du code que l'on ne saura pas "ré-inventer" plus tard quand on l'aura à moitier oublié, mais plutôt de comprendre au mieux la logique, l'architecture du langage, de ta machine ET de la documentation .
Tout ce que tu apprends doit-être suffisamment compris pour que tu puisse le re-imaginer et re-créer quand tu auras tout oublier du code utilisé.
Je veux dire qu'il est bien plus important de savoir où et comment retrouver la façon de faire que de l'avoir appris "par coeur".
En plus de la Doc Apple, qui assez bien faite sommes toutes, tu as AppKiDo qui offre une autre façon de naviguer dans la doc.
Par contre, en obj-c, s'il y a bien une chose qu'il faut bien maà®triser c'est l'anglais !
Concernant le C, je n'arrive pas à cerner ce que je dois apprendre. Par exemple, j'ai parcouru rapidement le tutorial du Site du 0 (ICI) et la première partie de ce tutoriel explique en gros comment faire ce que je faisais avec ma calculatrice graphique. À savoir faire des opérations mathématiques sur des nombres que l'on aura récupéré auprès de l'utilisateur. Le tout en utilisant les boucles de condition. Je ne dis pas que je sais le faire en C, car je ne connais pas le langage mais si j'apprenais comment on fait, je pense que j'arriverai, par exemple à recréer mes programmes de calculatrice. à‰videmment, il manque à cela des problèmes spécifiques aux ordinateurs comme la gestion de la mémoire. Est-ce cela que vous entendez par apprendre le C ? En d'autres termes, est-ce que maà®triser les deux premières parties du tutoriel cité ci-dessus suffit pour se lancer ?
Sinon, je suis d'accord avec vous pour éviter de taper des lignes que je ne comprends pas. Les tutoriels que j'ai trouvé jusqu'ici expliquaient toujours et j'aime bien comprendre ce que je fais.
Je vais tester AppKiDo...
Et quant à l'anglais, cela devrait convenir, au pire j'ai toujours un dictionnaire sous la main...
Merci encore...
T'es bien parti alors.
C'est sur ça réclame du temps et nous en manquons toujours.
Le principe est d'adapter l'ambition de nos projet au temps dont on dispose, en sachant qu'il est toujours plus facile d'apporter au fur et à mesure des perfectionnements à une appli que d'en réduire l'envergure une fois à moitié développée...
(Bien sur l'architecture de ton projet de base doit être propre sinon chaque ajout la rend encore plus mauvaise )
.
Kernighan :P
Oui, c'est LE livre des créateurs, donc y passer ne fait pas de mal...
Mais il n'est pas facile pour débuter !
Dans le tutorial :
I - 4,5,6,7,9
II - 1,2,3,4,5,6,(7),8 (7 entre parenthèses parce que les I/O C ne sont pas utilisés en Cocoa)
Pas la peine de regarder la partie III ; les GUI en Cocoa ne se gèrent pas du tout comme en SDL
Oui, c'est du C quoi :P
Le bouquin de Kernighan et Ritchie ne fait "que" 185 pages hors annexes
Ah OUI ! t'as raison,
Cuningham c'est la famille de la petite maison dans la prairie !! :P
J'ai cité de mémoire, j'avais la flemme de monter dans ma bibliothèque vérifier les noms ... :-\\
Je propose le bannissement de ClicCool immédiat, sans indemnités de départ!
Bin quoi ? c'est dela cuture aussi non ? :(renaud):
C'est même le reflet d'une culture éclectique comme je les aime :P
La vie se charge de me bannir suffisament souvent de mes passions-non-indispensables sans qu'on en rajouteÂ
Dites je m'y perds un peu, c'est quoi une culture électrique ?
surtout avec ça par-dessus :(renaud):
Un quota minimum, c'est 10h de pratique par heure de lecture/compréhension.
Le problème n'est pas de comprendre comment faire, c'est de le faire. C'est pourquoi les tuto sont rassurants, montrent qu'on peut le faire, mais sont trompeurs sur la quantité de travail qu'il y a derrière. Les tutoriels, c'est comme la Star Academy : tout le monde peut être une vedette !!
Il faut simplement y ajouter la passion.
J'imagine que c'est du second degrèsÂ
Par ce que ça: :(renaud): c'est le Manneken-Pis et donc tout ce qu'il y a deplus culturel :fouf):.
par ailleurs, Philippe, si tu t'arrêtes à des détails comme la position du Manneken-Pis dans un post t'as pas fini de te poser des questions inutiles ;D
C'en est
Tristesse : cela fait bien longtemps que je suis allé à Bruxelles ...
Il manque un smiley avec une choppe de Gueuze ... sinon je t'en aurais offerte une, Clic-cool
T'inquiètes, il me reste encore une Lambic de Cantillon
à la tienne !
Eh ben je suis pas sorti de l'auberge alors !
Mais je comprends ce que tu veux dire. Je ne sais pas si ça sera dix heures (aurais-je la patience ?) mais il est clair que je ne pensais pas survoler les tutoriels rapidement et me lancer dans l'application du siècle. Il faut savoir y aller par étapes...
En même temps 10 heures, c'est une journée ou deux demi-journées ...
Il est vrai que je n'ai pas le profil type du programmeur... Mais bon, la prépa se termine bientôt, j'aurai peut-être plus de temps. Pour l'heure, et pour être franc, c'est surtout pour me changer les idées et trouver une excuse pour ne pas travailler... ::)
C'est pile comme moi, je passe des heures à ne pas travailler en faisant de la programmation ...
Alors que quand je t'ai demandé de m'en servir un verre il t'en restais plus ?? Traitre !
oups ! ???
J'ai dis ça moi ? pour toi ? :-*
Je suis confucius maà®tre Ali ,
c'était sans doutes avant que je ne retrouve cette divine bouteille dans ma cave !
Allez, il m'en reste encore un peu, profitons-en !
à la tienne, pourfendeur des grincheux et champion de ma bonne humeur