Question d'un vrai débutant...

Bob.bryanBob.bryan Membre
21:20 modifié dans Vos applications #1
Salut a tous, j'ai découvert ce site et je me suis dit qu'il serait intéressant de poser ma question ici.

Voila je suis totalement débutant en programmation, je touche ma bille en informatique mais dans d'autre secteur comme la retouche via photoshop, ou encore indesign pour la pub etc... Mais en programmation je suis autant débutant que le pape avec un iphone.

Mon but est de creer de petites application pour mon iphone qui m'aideront pour mon travail, surtout des application de calcul etc...

Je voudrais apprendre le langage de programmation. J'ai un bouquin sur la programmation sur iphone mais je me demande si je ne devrais pas commencer par le langage C. Or je l'iphone se programme en objectif C, d'ou ma question.

Devrais je commencer par m'instruire sur le langage C, ou directement apprendre le langage objectif C? Je compte suivre une formation avec un formateur, a votre avis par ou devrais je commencer?

C'est une question qui vous paraitra conne mais moi ça va beaucoup m'aidé car souvent il y a des tuto pour les mec qui connaisse or moi je ne connais rien et j'aimerais partir sur des bases solides.

Merci encore a tous pour vos reponses.
«1

Réponses

  • CéroceCéroce Membre, Modérateur
    21:20 modifié #2
    Connaà®tre le langage C est un pré-requis pour apprendre le langage ObjC.
    Tu as beaucoup de choses à  connaà®tre avant de pouvoir faire des programmes un peu complexes. Bon courage pour la suite...
  • Bob.bryanBob.bryan Membre
    21:20 modifié #3
    Mais justement j'ai du temps, je suis jeune et j'ai la possibilité de faire des formation avec un prof.

    Donc je devrais automatiquement débuté par le langage C ou un truc encore avant? Existe t il un gros lien entre l'objectif c et le C?
  • Eric P.Eric P. Membre
    21:20 modifié #4
    Bonjour,

    Avant le C, il y a eu le Pascal, nettement mieux que le C.
    Encore avant il y a eu les cartes perforées mais inutile de commencer de là   ;)

    Bon courage.
  • CéroceCéroce Membre, Modérateur
    21:20 modifié #5
    Ma réponse pouvait porter à  confusion, mais je t'encourage à  te lancer dans l'aventure. C'est un apprentissage de plusieurs années pour devenir bon en programmation, comme dans n'importe quel domaine, en fait.

    ObjC, c'est le langage C auquel ont été ajoutés les concepts de la programmation orientée objet (à  la façon de Smalltalk).
    Le langage C n'est pas vraiment à  la portée d'un débutant non plus, parce qu'il impose de savoir comment fonctionne un microprocesseur dans les grandes lignes, mais avec un prof, c'est très jouable.
  • yoannyoann Membre
    21:20 modifié #6
    Commence par le C avec un bon prof, c'est le plus important pour développer correctement dans n'importe quel autre langage actuel.

    Tous les langages d'aujourd'hui ont un fort héritage du C. Si tu veux devenir bon développeur, commence par le C et apprend ensuite les théorie de l'orienté objet si possible en utilisant tout les langages et pas uniquement le Java. Le Java n'apporte qu'une seule vision de l'orienté objet, pour être bon il les faut toutes :-)

    Quoi qu'en dise certains, il faut apprendre a marcher avant de savoir courir, le C est le meilleur langage pour avoir toutes les bases nécessaires.
  • AliGatorAliGator Membre, Modérateur
    21:20 modifié #7
    Je plussoie pour t'inciter fortement à  apprendre le C avant en effet.
    Par contre, ensuite, je te conseille de passer à  Objective-C une fois que tu maà®trises bien le C, j'entend par là , ne pas passer par l'apprentissage du Java par exemple pour comprendre les principes de la prog orientée objet : ça peut être une idée, qui a ses avantages, mais côté gestion de la mémoire etc, ceux qui viennent du Java ont souvent du mal à  passer à  l'Objective-C à  cause de certaines habitudes qu'ils ont prises avec Java. Vu que toi ton but final est l'Objective-C, une fois une bonne maà®trise du C avec un bon prof autant passer à  l'ObjC direct.
  • Bob.bryanBob.bryan Membre
    21:20 modifié #8
    En tout les cas je vous remercie tous de m'avoir repondu et surtout de m'avoir bien repondu. Je lis dans vos commentaire que ma tache sera difficile et que la programmation est compliqué mais étant guitariste (truc qui semble avoir absolument rien a voir :)) je suis habitué au defi. En effet la guitare est le truc le plus compliqué auquel j'ai touché, tennis, langue étrangère etc... c'est du pipi de chat comparé a la guitare. J'ai appris tout seul a jouer, aujourd'hui je suis capable de jouer n'importe quel morceaux de hendrix et ceux tres bien pourtant j'ai 1 centième de la connaissance que l'ont peut avoir en musique tellement c'est riche. Je me souviens des longue semaine ou t'arrive a rien faire sonner, mais avec la persévérance on y arrive.

    Alors je ne sais pas si la programmation est du même système mais ça me botte bien un nouveau défi!!

    Revenons a nos mouton, en attendant ma formation j'ai trouvé un site (le site du zero) ou il y a un cours sur le langage C et le C++, si vous connaissez, il a l'air pas mal fait, ce peut être un bon début.

    D'ailleurs je commence par le C et pas par le C++ (qui doit être une amélioration).

    J'ai reussi a faire une quiz pour mon iphone grace a un tuto. Je peux juste le testé avec le simulateur d'iphone, mais honnetement je sais pas vraiment comme ça marche et c'est pour ça que l'etude des langage m'aidera beaucoup.

    Dernier truc avant de vous laissez tranquille :o  Ou avez vous appris a programmer? Tout seul? A l'école ou autre? c'est intéressant je trouve.

    Merci encore a tous pour votre aide. Cela doit etre vraiment chiant d'expliquer un truc qu'on maitrise parfaitement et qui semble logique, je me vois en train de montré un accord a la con a un debutant, c'est tres tres chiant! :'( :'( :'( :'( :'(
  • AliGatorAliGator Membre, Modérateur
    21:20 modifié #9
    Alors oui c'est un défi, mais tu as déjà  un très bon point :
    - tu as conscience de la difficulté
    - tu as déjà  cherché avant de ton côté, trouvé par exemple des tutos sur le net, etc
    - et tu poses les bonnes questions pour l'instant :P

    Crois moi, ce n'est pas le cas de tous les débutants, et ça change tout.

    Pour répondre à  ta question, pour ma pomme (bah oui, on est sur mac, c'est mieux que "pour ma poire" :P), j'ai appris à  programmer en BASIC un peut tout seul il y a de ça des années, langage démodé maintenant. Après j'ai fait des études de programmation (Ecole d'Ingénieur Bac+5) et me suis mis en parallèle au dev mac (Cocoa) en autodidacte pour le plaisir. Puis quand l'iPhone est sorti j'ai naturellement eu envie de m'y mettre aussi, donc suis passé du dev Mac au dev iPhone, toujours en autodidacte et pour le plaisir. Mais il est évident que ma formation en informatique (qui m'avait appris le C et le C++ et bien d'autres principes) m'a fortement aidé aussi.
    Aujourd'hui, j'en ai fait mon boulot puisque j'ai été embauché en tant qu'architecte expert iPhone et Mac dans ma boite et dev donc dessus régulièrement.
  • DrakenDraken Membre
    21:20 modifié #10
    Je te souhaite bonne chance dans ton apprentissage. Attention, Tu n'as pas besoin d'apprendre le C++ pour développer sur iPhone. Ce n'est pas un descendant ou un petit frère de l'Objective-C, plutôt un cousin. Ce sont tous les deux des langages objets conçus à  partir du C, avec des principes un peu différents.




  • wiskywisky Membre
    21:20 modifié #11
    Bienvenue dans le monde merveilleu de Cocoa ;)
  • CéroceCéroce Membre, Modérateur
    21:20 modifié #12
    dans 1267136169:
    mais étant guitariste (truc qui semble avoir absolument rien a voir :)) je suis habitué au defi.

    Effectivement c'est un peu pareil: il faut pratiquer régulièrement, il y a des jours où on arrive à  rien, on peut apprendre seul mais un mentor fait gagner beaucoup de temps, et il faut des années pour être bon.


    D'ailleurs je commence par le C et pas par le C++ (qui doit être une amélioration).

    J'aurais plutôt tendance à  dire que c'est une régression, mais c'est un autre débat.


    Ou avez vous appris a programmer? Tout seul? A l'école ou autre?

    Au début, j'ai appris seul. Comme Ali, j'ai commencé par le Basic (Gfa Basic sur Atari ST). Ensuite, un peu d'assembleur 68000. En passant sur Mac, j'ai suivi un cours de C, contenu sur une disquette: un cours bien fichu, donc forcément chiant par moments. Ensuite, j'ai appris le C++, puis ObjC. Pendant des années, j'avais le projet d'un logiciel de dessin, qui n'a jamais vu le jour, mais qui m'a poussé à  étudier tout cela.
    À l'école, j'ai appris l'assembleur 6809 et 8051 (je suis électronicien). Si je devais commencer aujourd'hui, ce serait très différent, ne serait-ce que parce qu'il y a Internet.

    Le langage que je conseille habituellement aux débutants est Python: la syntaxe est claire, les messages d'erreurs aident vraiment, la doc est bien faite, et on doit mettre des années à  en atteindre les limites (je ne les ai pas atteintes). Aussi, il permet la programmation impérative (programmation "classique"), avant de passer à  la programmation orientée objet qui est plus complexe (mais plus viable sur des projets complexes).

  • wiskywisky Membre
    21:20 modifié #13
    Pour ma part, j'ai commencé à  développer à  16ans tout seul avec REALbasic. Je l'ai abandonnée pour Obj-C lorsque j'ai commencé mon BTS info de gestion et que j'ai perdu un projet complet avec REALbasic pour Windows. Maintenant je développe en Obj-C pour le plaisir et en PHP/AJAX (bientôt en Obj-J) pour le boulot. En général mes projets obj-c sont open-source ;)
    L'apprentissage de l'OBJ-C a été dur mais j'ai eu un soutien indefectible des membres du forum qui m'ont conseillé d'acheter le livre "Programmation Cocoa sous Mac Os X" pour eviter les questions qui coule de source en cherchant un peu.
    Qui à  dit que je cherche pas trop ? Bon d'accord, maintenant je pose moins de question car je trouve les réponses dans le forum ou sur le net et la 3ème edition du livre est très bien ;)
    Pour moi c'est un régal de coder en obj-c  8--)
  • Bob.bryanBob.bryan Membre
    21:20 modifié #14
    Bon ben je vous re remercie de toutes vos réponse claire et précise, je m'en vais donc étudier le langage C sur le site du zero pour préparé au max avant de suivre un cours.

    Je reviendrai de toute façon car ce site se révèle une mine d'information!!! o:)
  • DrakenDraken Membre
    février 2010 modifié #15
    dans 1267171226:

    Au début, j'ai appris seul. Comme Ali, j'ai commencé par le Basic (Gfa Basic sur Atari ST).

    Tu lisais les articles d'Atari Magazine sur la programmation en GFA Basic ? Je demande ça, car j'ai écrit la plupart de ces articles, y compris le Hors Série "Best Of Gfa Basic".







  • CéroceCéroce Membre, Modérateur
    21:20 modifié #16
    Mes parents ne m'ont acheté Atari Magazine qu'une fois. Dans ce numéro-là , il y avait un programme pour générer l'ensemble de Mandelbrot. Je n'ai jamais réussi à  faire fonctionner complètement le programme, il y avait un bug pour l'enregistrement des images, peut-être une erreur de frappe de ma part. À vrai dire, je n'ai jamais réussi à  comprendre le programme et donc le déboguer; je n'avais que douze ans. Mais ça m'a grandement intéressé à  l'époque. Pas étonnant que j'ai repris cette idée pour mes articles sur Cocoa.fr.

    Bref, je ne sais pas qui a écrit cet article, mais tous mes respects à  cette personne !
  • DrakenDraken Membre
    21:20 modifié #17
    Ce n'étais pas l'un des miens, les maths n'ont jamais été ma tasse de thé. Mes articles parlaient surtout de l'apprentissage du langage pour les débutants et de la programmation des jeux vidéos : affichage de sprites et de polices de caractères bitmap, création de jeux de rôles, de jeux de stratégie à  tour type civilisation, casse-brique, jeux d'aventures, techniques de scrolling, etc. J'ai dus écrire 30 à  40 articles sur le Gfa Basic au fil des années.

  • mpergandmpergand Membre
    février 2010 modifié #18
    Comme de coutume, avec ce genre de sujet, c'est avec un plaisir non dissimulé que je me vois dans l'obligation de contredire les avis précédents  :D

    Le C on s'en fout grave de chez grave !!!!

    Les principaux éléments du C ne sont pas ou peu utilisés en ObjectiveC
    - les pointeurs, on a juste besoin de savoir que tout objet en ObjC est un pointeur et c'est tout
    - les tableaux, très rarement utile
    - les structures, oui y a quelques structures dans Cocoa, mais on peut les considérer comme une forme primitive d'objet.
    - le gestion mémoire: rien à  voir avec celle de Cocoa, n'y celle du core framework (bien que ce soit du C)

    A part pour du traitement de bas niveau ou un utilitaire en ligne de commande, on n'utilise pas le C, mais un langage objet, alors autant si mettre tout de suite. Il semble que se soit l'avis de bon nombre d'écoles puisque le premier langage enseigné est souvent le java.

    Oui, je sais java c'est un gros mot  :o

    Alors pourquoi java est-il un bon langage pour l'apprentissage de la prog objets, parce qu'il est très rigide, on ne peut pas faire n'importe quoi, donc parfait pour bien débuter.

    Une fois assimilé les concepts de la prog par objets, la transition vers l'ObjectiveC devrait se faire sans problème, car java et ObjectiveC se ressemblent beaucoup (normal, puisque les concepteurs de java se sont inspirés d'ObjectiveC).

    Néanmoins il y a deux difficultés:
    1- la gestion de la mémoire, automatique en java, semi-automatique en ObjC (bien qu'il existe le garbage collector en Objc 2, mais pas sur l'iphone je crois) Le principe de la gestion mémoire en ObjC n'est pas compliqué, mais il est très facile de faire des erreurs, ce qui oblige à  une certaine discipline.

    2- et c'est en fait ça la difficulté majeur en ObjC, c'est que c'est un langage trop permissif, il y a plein de concepts qui n'existent pas en ObjC et que pourtant on utilise tout le temps.
    Comme la notion de classe abstraite. Par ex: bien que le doc te dise que NSView est une classe abstraite, tu peux tout à  fait faire ceci:
    NSView* maVue=[NSView new];
    ca sert à  rien , ça n'affichera rien, mais c'est permis.
    en java si tu fais:
    JComponent monPanel=new JComponent();
    le compilo va te jeter.

    Encore pire pour les méthodes abstraites, en ObjC on peut seulement les simuler.
    C'est à  dire que ces concepts existent sous formes de conventions d'écriture, une sorte d'auto-discipline
    Tout ça ne sera pas un problème si tu maà®trises parfaitement ces concepts (ce que tu apprendras avec java), sinon ce sera la caca !

    Moi, je veux bien que tu débutes par le C, mais à  la moindre erreur tu auras un plantage avec un beau  SIGBUS comme tout message ...
    Java est très poli, il te dira, pardon mais vous avez fait tel type d'erreur à  la ligne tant.
    Plus sympa non ?

    Alors bien sûr que les tableaux, les structures, les pointeurs, ça peut servir en Cocoa, mais c'est très particulier (ex: les variables globales statiques). Sinon c'est plutôt une mauvaise idée.

    Et mélanger du C et de l'ObjC ça peut donner des trucs horribles, même fait par Apple:
    http://www.pommedev.com/forum/index.php?topic=5171.msg52716;topicseen#new

    Les notions de C que tu seras amenées à  connaà®tre, tu les assimileras en quelques heures à  peine. Pour la prog objets et Cocoa ça sera plusieurs mois.

    Java is the way to go  ;)
  • yoannyoann Membre
    21:20 modifié #19
    dans 1267196177:

    Comme de coutume, avec ce genre de sujet, c'est avec un plaisir non dissimulé que je me vois dans l'obligation de contredire les avis précédents  :D

    Le C on s'en fout grave de chez grave !!!!

    Les principaux éléments du C ne sont pas ou peu utilisés en ObjectiveC



    Et c'est comme ça qu'on fait des développeurs pas foutu de comprendre comment marche une gestion mémoire...

    Tu veux apprendre a _programmer_, tu commence par le C, tu veux apprendre a faire des coussins péteurs sur iPhone, ouais, commence par le C.

    Question d'objectif...

    Dire le C ne sert a rien c'est ne pas connaitre la programmation... Tous les langages sont issue du C. Comprendre la logique objet en connaissant le C permet d'apprendre très facilement n'importe quel autre langage par la suite. Commencer par le java c'est comme dire "Apprend a conduire avec une boite auto, les boite manuelles c'est pour les vieux cons de toute manière le jour où ta batterie est morte t'appel quelqu'un de plus compétant pour la changer"

    C'est caricaturé mais c'est ça... Commence par le Java et le jour où tu a besoin de faire de la performance (ndlr: dès que tu fait du mobile...) t'es dans la merde ^^

    Et bien entendu ne pas oublier de prendre des cours d'algo dans l'histoire... àŠtre capable de faire un tri de tableau en C c'est surtout être capable de sortir un algo optimiser dans d'autres situation...
  • mpergandmpergand Membre
    février 2010 modifié #20
    Commence par le Java et le jour où tu a besoin de faire de la performance (ndlr: dès que tu fait du mobile...) t'es dans la merde ^^


    Android = java = daube ?

    C'est bête, moi qui voulait me prendre une tablette sous Android  :D
  • yoannyoann Membre
    21:20 modifié #21
    dans 1267198656:

    Android = java = daube ?

    C'est bête, moi qui voulait me prendre une tablette sous Android  :D


    Sans partir dans le troll, Android dispose d'un NDK en C/C++ justement pour les développeur ayant besoin de performance...


    Java est un très bon langage pour des serveurs d'application, il est très puissant pour ce genre de chose mais pas pour la performance machine, il n'a pas été fait pour tout simplement
  • Bob.bryanBob.bryan Membre
    21:20 modifié #22
    Ce post est de plus en plus intéressant car j'en apprend de plus en plus avec le débat qui se construit.

    Je veux pas passer pour un vantar mais j'ai quand même l'esprit rapide et ce que je déteste dans certain tuto c'est le fait que l'on t'apprend quelque chose sans vraiment t'expliquer comme ça marche. ET parfois quand on resonne on a besoin de savoir le pourquoi du comment, savoir que le pain est fait de farine et d'eau te permet de savoir que la brioche doit etre fait d'a peu pres la meme chose.

    Je sais pas si je me suis bien fait comprendre la B)
  • CéroceCéroce Membre, Modérateur
    février 2010 modifié #23
    dans 1267196177:

    - les pointeurs, on a juste besoin de savoir que tout objet en ObjC est un pointeur et c'est tout

    C'est faux. Pour faire des programmes efficaces, il faut programmer au plus près de la machine. Les pointeurs permettent de "taper directement dans la mémoire". C'est comme ça qu'on arrive à  traiter rapidement des images ou des sons.


    - les tableaux, très rarement utile

    Utiliser un NSArray et y placer des NSNumber est beaucoup moins efficace qu'utiliser des tableaux en C, en terme de vitesse et de consommation mémoire.


    - les structures, oui y a quelques structures dans Cocoa, mais on peut les considérer comme une forme primitive d'objet.

    Là  encore, les structures, utilisées conjointement avec les pointeurs sont un moyen d'accéder rapidement aux données. Si Apple utilise une structure à  la place d'un objet, c'est parce que c'est plus rapide.


    - le gestion mémoire: rien à  voir avec celle de Cocoa, n'y celle du core framework (bien que ce soit du C)

    C'est vrai. Mais l'apprentissage du C permet de comprendre pourquoi il faut y faire gaffe.

    Ah, et puis tu as oublié les masques de bits, les unions et les opérateurs booléens.


    Alors pourquoi java est-il un bon langage pour l'apprentissage de la prog objets, parce qu'il est très rigide, on ne peut pas faire n'importe quoi, donc parfait pour bien débuter.

    Le Java pour apprendre la programmation objet, je dis pourquoi pas. C'est un langage de qualité.

    Tout ce que tu écris démontre que tu n'as pas compris l'essence d'ObjC: c'est un compromis. D'un côté, tu as le C ou le Pascal: langages de bas niveau, qui collent à  la machine. De l'autre, des langages objets purs, qui offrent de l'abstraction, comme Python ou Ruby, mais qui sont lents. ObjC est au milieu: en général, il utilise des concepts objets, mais tout ce qui est calcul et accès à  la machine sont issus du C. Et c'est un bon compromis à  l'époque actuelle.
  • AliGatorAliGator Membre, Modérateur
    21:20 modifié #24
    Oui, le Java a ses bons côtés... mais le bon côté principal c'est qu'il est rapide à  apprendre car a une couche d'abstraction relativement haute. Pas de concept de gestion de mémoire avec laquelle s'enquiquiner pour débuter, pas de notions d'optimisation non plus, c'est donc adapté pour apprendre les concepts objets sans être "pollué" par d'autres problématiques.

    Donc si tu veux progresser rapidement sur les concepts objets, Java sera plus agréable.
    Mais si tu veux apprendre avec des bases et surtout comprendre pourquoi ceci et cela, à  quoi ça sert de gérer la mémoire (concept très important en effet sur mobile) et ce que ça implique "sous le capot", rentrer un peu plus dans le détail, c'est le C qui sera la bonne base.

    Comme dit plus haut, c'est vrai qu'on peut voir l'ObjC comme un bon compromis entre le C et le Java : proche de la machine quand il y a besoin, car il se base sur le C, mais avec des concepts objets et des patterns qu'on retrouve dans Java (alors que le C n'a aucune notion de POO). Reste à  savoir par quel bout tu veux aborder le problème, boite noire (je veux vite apprendre pour que ça marche sans comprendre ce qui se passe sous le capot, donc façon Java, et le jour où je suis confronté à  une problématique d'optimisation ou de nécessité d'un accès bas niveau, je bloque) ou boite blanche (le C, plus proche de la machine, comprendre ce qui se passe sous le capot, et aborder la base de la programmation en détail, qui te servira de toute façon d'ailleurs... mais plus complexe à  apprendre puisqu'il faut mettre les mains dans le cambouis).

    Si tu es prêt à  investir du temps dans ton apprentissage comme tu sembles être prêt à  le faire avec un formatteur et tout, je pense qu'attaquer le problème en commençant par le C est l'approche conseillée. Si tu veux directement attaquer les concepts objets sans te soucier de comment ça marche sous le capot, quitte à  investir moins de temps, pour aller plus vite quitte à  moins connaà®tre le sujet en profondeur, Java est plus adapté.

    Le comparatif avec la voiture à  boite automatique est très bien trouvé et tout à  fait adapté.
  • NseaProtectorNseaProtector Membre
    21:20 modifié #25
    Juste pour dire que sa fait plaisir de voir qu'il y'a des vétérans de l'Atari (Céroce, Draken), Devpac mon ancienne maitresse !!!
  • zoczoc Membre
    21:20 modifié #26
    dans 1267247945:

    sa fait plaisir de voir qu'il y'a des vétérans de l'Atari

    J'en fait partie aussi  :D
  • devulderdevulder Membre
    21:20 modifié #27
    dans 1267253959:

    dans 1267247945:

    sa fait plaisir de voir qu'il y'a des vétérans de l'Atari

    J'en fait partie aussi  :D


    Rhaaaaa  AMIGA ONLY !!!! :)
  • muqaddarmuqaddar Administrateur
    21:20 modifié #28
    dans 1267247945:

    Juste pour dire que sa fait plaisir de voir qu'il y'a des vétérans de l'Atari (Céroce, Draken), Devpac mon ancienne maitresse !!!


    Et moi... 1040 STF. ;)
  • mpergandmpergand Membre
    21:20 modifié #29
    Séquence nostalgie:

    Mon éditeur TX7 Yamaha, sous émulateur AtariST (Mac OS 8)
  • olofolof Membre
    21:20 modifié #30
    Ah, nostalgie, Atari 1040 STF pour moi, suivi par un Mega STE. Et après, Mac  :D Que de bons souvenirs (avec un petit peu de GFA Basic)...
  • DrakenDraken Membre
    21:20 modifié #31
    L'Atari c'était le bien ! J'ai eu un 1040 STE puis un Falcon, le troisième à  être arrivé en France, l'avantage de bosser pour Atari à  l'époque.

Connectez-vous ou Inscrivez-vous pour répondre.