Du C au développement iOS

Bonjour,


 


Je poste ici un message déjà  posté dans un autre forum (sans réponse) :


Je souhaiterais développer pour iOS. Actuellement je maà®trise le C ANSI et imaginé la progression suivante :


- Ingurgiter la POO avec le livre de référence C++ pour les programmeurs C (Claude Delannoy, 600 p.). Déjà  en cours...


- Maà®triser l'objective C avec Programmation Objective-C (Aaron Hillegass, 300 p.)


- Maà®triser le framework Cocoa avec Programmation Cocoa sous Mac OS X (Aaron Hillegass, 500 p.)


 


Par ailleurs, j'ai déjà  Les fondamentaux de la programmation iOS (Lemine Beyrouk, 300 p.) et je compte acquérir aussi Programmer pour iPhone/iPad (en PDF).


 


Je précise que je ne suis pas à  l'aise avec l'anglais et que je pense de ce fait prendre une licence de dév. Apple le plus tard possible.


 


Est-ce que ce parcours vous semble bon ? Pas doublon ?


A lire les autres posts de ce forum, je ne pense pas être trop loin de la vérité.


 


Par avance merci.


 


Note : Je garde dans un coin de l'esprit l'aide-mémoire qu'est le livre Objective-C 2.0 de Pejvan Beigui (ed. Pearson).


Mots clés:

Réponses

  • Lisez le topic suivant jusqu'au bout et vous devriez trouver votre bonheur ;-).


     


    http://forum.cocoacafe.fr/topic/12179-formation-iphone-et-ipad-en-ligne/


  • Un cours à  la Sorbonne Waou ! Merci pour ces infos, je me suis inscrit. Mais pour l'instant je n'ai pas le niveau. Il me faut des livres.


    Du coup, j'ai 2 mois et demi pour maà®triser l'Objective C...


  • CéroceCéroce Membre, Modérateur

    Personnellement, je ne vois pas trop l'intérêt d'apprendre C++ (par rapport à  ton but). C'est un piètre langage objet.


    La POO s'explique en 30 mn, mais il faut changer son mode de pensée quand on est habitué à  la programmation impérative.


    Il me semble donc qu'apprendre plutôt Java par exemple et les design patterns est un bien meilleur investissement de ton temps.


     


    Ceci dit, habituellement, nous voyons ici plutôt des gens qui ne veulent pas passer du temps à  apprendre, alors que toi, c'est l'inverse: on dirait que tu hésites à  te mettre à  Cocoa ! La bonne approche pour moi a toujours été d'avoir un projet et d'essayer de le réaliser. Ensuite, j'apprends selon la nécessité. Mais chacun travaille à  sa manière.


  • Pour moi, Céroce (merci de ta contribution), je vois le C++ comme une base, un tronc commun qui se suffit à  lui même. Alors qu'on aurait des difficultés à  trouver un travail où le C suffirait, avec le C++ c'est possible (j'en connais). En apprenant le C++, je ne perds il me semble pas mon temps puisque le mode de pensée et les concept de la POO se retrouvent dans tous les langages modernes. Je me trompe ?


    Java ne m'attire pas du tout (je ne détaille pas) et Cocoa n'est pas basé sur Java, mais sur l'objective C, lequel vient du C que je connais. Bon je ne suis pas là  pour dire que mon point de vue est le meilleur, au contraire j'apprends beaucoup en lisant les contributions.


     


    Quoi qu'il en soit, c'est vrai que je veux apprendre, me sentir à  l'aise et en confiance avant de coder. J'ai déjà  lu des docs sur le Cocoa, vu des tutos, mais la marche est trop haute. Je me pose 10000 questions par ligne de code ; il ne me suffit pas de faire quelque chose qui marche, il faut que je comprenne pourquoi ça marche. L'inverse serait la garantie de faire du code truffé de bugs.


    C'est pour ça que j'ai adoré Le C ANSI de K&R, où chaque virgule s'explique, alors que les méthodes "par la pratique" ne me conviennent pas. J'ai déjà  essayé par le passé, sans succès, les ouvrages en français étaient rares.


     


    Ma devise : quand on veut faire quelque chose, on le fait bien ou on ne le fait pas.


     


    En attendant d'autres réactions, je continue sur ma lancée...




  • Pour moi, Céroce (merci de ta contribution), je vois le C++ comme une base, un tronc commun qui se suffit à  lui même. Alors qu'on aurait des difficultés à  trouver un travail où le C suffirait, avec le C++ c'est possible (j'en connais). En apprenant le C++, je ne perds il me semble pas mon temps puisque le mode de pensée et les concept de la POO se retrouvent dans tous les langages modernes. Je me trompe ?


    Java ne m'attire pas du tout (je ne détaille pas) et Cocoa n'est pas basé sur Java, mais sur l'objective C, lequel vient du C que je connais. Bon je ne suis pas là  pour dire que mon point de vue est le meilleur, au contraire j'apprends beaucoup en lisant les contributions.




     


    Ce que veux dire Ceroce je pense, est qu'en travaillant C++ tu vas apprendre des tas de trucs qui ne te seront d'aucune utilité avec Objective-C (surcharge d'opérateur, types génériques, héritage multiple, ...) qui sont des extensions Objet qui peuvent être utiles mais qui ne sont pas purement Objet. Java est plus 'pur' objet que C++, les concepts objets utilisés dans Objective-C sont plus proches de ceux de Java que ceux de C++. Travailler Java serait plus rentable que travailler C++.


     


    Mais finalement le plus simple à  mon avis c'est de travailler Objective-C directement.

  • CéroceCéroce Membre, Modérateur
    décembre 2014 modifié #7

    je vois le C++ comme une base, un tronc commun qui se suffit à  lui même. Alors qu'on aurait des difficultés à  trouver un travail où le C suffirait, avec le C++ c'est possible (j'en connais).

    Si apprendre le C++ est un critère de recrutement, c'est une autre discussion, et j'admets que c'est pertinent. Par contre le C++ n'est la base de rien, parce qu'on peut faire tout et n'importe quoi en C++. Surtout n'importe quoi.
     

    En apprenant le C++, je ne perds il me semble pas mon temps puisque le mode de pensée et les concept de la POO se retrouvent dans tous les langages modernes. Je me trompe ?

    Oui, tu te trompes. Comme je l'écrivais, on peut apprendre les concepts de la POO en 30 mn, mais il y a une culture à  intégrer.

    Voici le premier programme d'exemple qu'on voit en C++:
     
    cout << "Hello World";
    Il s'agit d'une démonstration brillante de tout ce qui ne va pas avec ce langage.
    Déjà , je n'ai toujours pas trouvé quelqu'un capable de m'expliquer précisément ce qu'était 'cout'. Une variable globale qui pointe vers stdout ?
    Mais le pire c'est la surcharge de l'opérateur <<, qui sert normalement à  faire des décalages, pour quelque chose d'un sens totalement différent.

    Les concepteurs de certains langages, comme Objective-C ou Java ont fait un choix de conception: pas de surcharge d'opérateurs. En effet, le problème de la surcharge d'opérateur est qu'on ne sait jamais bien quelle méthode est appelée.
    Ceci dit, surcharger les opérateurs est bien pratique et améliore la lisibilité du code. Par exemple, il semble assez logique d'utiliser + pour additionner deux matrices ou deux nombres complexes.

    Dans l'exemple que je donne en C++, on a l'impression qu'on fait ainsi seulement parce que le langage le permet. Et toute la bibliothèque standard " affreuse " du C++ est à  cette image.
     
    Question subsidiaire: pourquoi ne pas avoir conservé printf() ?

    Java ne m'attire pas du tout (je ne détaille pas) et Cocoa n'est pas basé sur Java, mais sur l'objective C, lequel vient du C que je connais.

    Java est un héritier direct d'Objective-C. On retrouve les mêmes choix de conception: pas d'héritage multiple, mais héritage d'interface (protocoles en Objective-C), les nombres ne sont pas des objets, pas de surcharge d'opérateurs, etc.
    Par ailleurs la culture est la même: par exemple, on préfère la composition à  l'héritage, on insiste sur les design patterns.

    Là  où je veux en venir c'est qu'on peut programmer correctement en C++, mais fondamentalement, le langage n'est pas "designé" et laisse tout faire. Je crois que si on veut apprendre correctement la POO, il faut apprendre sa culture, et C++ est un bien mauvais langage pour ça.
  • LeChatNoirLeChatNoir Membre, Modérateur

    ou swift ?


    B)


  • T'aimes pas Swift ?
  • OK merci pour ces éclaircissements.


     


    @LeChatNoir et @Draken : Swift on verra plus tard, si je tiens le coup ;)


  • DrakenDraken Membre
    décembre 2014 modifié #11

    Tu commences par le plus compliqué, gardant le plus simple pour l'avenir ?


     


    * retourne étudier le Swift *

  • J'ai eu le même parcours que toi il y a 5-6 ans, et je suis passé par les cours de Stanford (recherche CS193p sur google), c'était parfait pour le développeur C que j'étais.


     


    Par contre, si tu n'es pas à  l'aise avec l'Anglais, ça ne passera pas...


     


    Je n'ai vraiment intégré les concepts objets et qu'à  partir de ma deuxième application iOS. Quand je dis " intégré ", c'est penser réellement objet, au delà  d'une vision un objet = une structure en malloc + des fonctions associées :)


     


    Le passage par le C++ est totalement inutile


  • Suite à  tous ces conseils, j'ai maintenant mis de côté le C++ et suis en plein dans l'Objective-C.


    Tous les bons bouquins sont maintenant traduits en français (c'est top pardon super). L'anglais dans la doc d'Apple et les ressources en ligne me suffit largement.


    A suivre...


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