Question d'un vrai débutant...
Bob.bryan
Membre
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.
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.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Tu as beaucoup de choses à connaà®tre avant de pouvoir faire des programmes un peu complexes. Bon courage pour la suite...
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?
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.
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.
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.
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.
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 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!
- 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.
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.
J'aurais plutôt tendance à dire que c'est une régression, mais c'est un autre débat.
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).
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--)
Je reviendrai de toute façon car ce site se révèle une mine d'information!!!
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".
Bref, je ne sais pas qui a écrit cet article, mais tous mes respects à cette personne !
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
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
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...
Android = java = daube ?
C'est bête, moi qui voulait me prendre une tablette sous Android
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
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
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.
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.
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.
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.
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.
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é.
J'en fait partie aussi
Rhaaaaa AMIGA ONLY !!!!
Et moi... 1040 STF.
Mon éditeur TX7 Yamaha, sous émulateur AtariST (Mac OS 8)