# Apprendre C avant Objective-C ?



## osc (18 Mars 2010)

Salut,

je suis assez débutant en programmation, et je fais ça pour "le fun" et par curiosité. Pour l'instant je suis plutôt lancé dans des applications web en Ruby (après avoir jeté un oeil à PHP et Python, qui ne m'ont pas plu), mais je compte aussi m'intéresser à de la "programmation classique" (là aussi par curiosité, je ne compte pas produire d'applications opérationnelles (ou alors ça sera des petits bidules pas bien compliqués)). Donc bref, je compte me lancer sur XCode avec Cocoa et Objective-C, mais comme je le disais plus haut je suis parfaitement débutant ; ma question est en fait la suivante : est-il nécessaire d'apprendre le C avant d'utiliser de l'Objective-C, ou peut-on faire sans ? Pour être honnête je n'ai pas vraiment envie de me lancer dans un truc aussi "compliqué" que le C (surtout que j'ai choisi Ruby plutôt que les autres précisément pour sa simplicité), en tout cas pas tout de suite. Donc la vraie question : *si je commence par de l'Objective-C sans passer par la case C est-ce que ça me pénalisera vraiment ?* Et si oui dans "quelles proportions" ?

Une fois encore je compte "développer" pour le fun, il n'y a aucun enjeu de productivité derrière (ni de délais, ni rien d'autre). C'est vraiment par pure curiosité, ce qui veut aussi dire que j'ai tout mon temps (en gros ça me dérange pas de prendre plus de temps à apprendre Objective-C sans connaître le C plutôt que me taper le C pour gagner du temps sur Objective-C  je sais pas si c'est très clair ce que je dis...  Disons que je cherche avant tout à prendre du plaisir dans ma programmation, plutôt qu'à être vraiment productif...).

Merci pour vos réponses, et bonne soirée.

OSC


----------



## ntx (18 Mars 2010)

osc a dit:


> est-il nécessaire d'apprendre le C avant d'utiliser de l'Objective-C


Oui, c'est indispensable. L'Obj-C n'est qu'une surcouche "POO" sur du C.


> Pour être honnête je n'ai pas vraiment envie de me lancer dans un truc aussi "compliqué" que le C


Dans ce cas, arrête le dév et va la pêche 


> Donc la vraie question : *si je commence par de l'Objective-C sans passer par la case C est-ce que ça me pénalisera vraiment ?* Et si oui dans "quelles proportions" ?


Tu ne vas rien y comprendre puisque l'Obj-C est avant tout du C. :rateau:


----------



## Yama (19 Mars 2010)

Je ne suis pas tout à fait d'accord. On peut apprendre l'Obj C directement. Il y a un très bon bouquin : programming in Objective C 2.0 qui s'adresse aux débutants.

L'idée est bien entendu de donner les bases du C, mais en fait c'est un peu invisible, car tout est fait pour conceptuellement ne pas superposer deux apprentissages.
Simplement quand il y a des petites différences entre C ou C++ et Obj-C et bien le livre ne s'embarrasse pas de comparaison. Il montre que l'Obj-C.

Avec un certain avantage c'est que l'angle est immédiatement "objet" et donc on ne superpose pas deux logiques... mais on reste complètement ancré dans une logique objet.
Avantage : avoir une approche propre.
Défaut évident : un manque de culture générale C

Mais c'est pas mal pour commencer


----------



## osc (19 Mars 2010)

Merci pour vos réponses, elles m'ont été toutes deux bien utiles.


----------



## mpergand (19 Mars 2010)

osc a dit:


> Une fois encore je compte "développer" pour le fun,
> OSC



Alors tu peux essayer PyObjC ou Ruby Cocoa:
http://www.cocoa.fr/tag-rubycocoa/


----------



## HAL-9000 (19 Mars 2010)

Je suis en accord total avec ntx, choisit la pêche 

Nan je pense quand même que tu peux attaquer l'Obj-C sans passer par le C, mais ça va pas être simple (déja que le C :mouais et la qualité du code que tu produiras à mon avis...  

Sinon Perl c'est sympa :rose: Nan j'déconne  ! :love:


----------



## France1159 (20 Mars 2010)

Halala ... on retrouve toujours les mêmes remarques alors évidemment OUI tu peux apprendre l'Objective-C sans passer par le C directement, tout comme on peut apprendre le C++ sans passer par le C, tout comme on peut apprendre le PHP sans passer par le C, tout comme on peut apprendre le Java sans passer par le C. Pourtant tout ces derniers possède une syntaxe C-Like et apprendre directement l'un de ces derniers n'a jamais tué personne. 

L'objective-C est certe une surcouche du C, mais la courbe d'apprentissage s'inversera. En effet les concepts Orienté-Objet vont être assimiler plus facilement et les concepts du C pur viendront en temps utile. 

D'ailleurs sur cocoalab il me semble qu'ils font apprendre l'Objective-C directement et font approfondir par le C. Une technique plutôt bonne qui permet d'assimiler le paradigme objet plus rapidement techniquement parlant.


----------



## tatouille (20 Mars 2010)

osc a dit:


> Salut,
> 
> je suis assez débutant en programmation, et je fais ça pour "le fun" et par curiosité. Pour l'instant je suis plutôt lancé dans des applications web en Ruby (après avoir jeté un oeil à PHP et Python, qui ne m'ont pas plu), mais je compte aussi m'intéresser à de la "programmation classique" (là aussi par curiosité, je ne compte pas produire d'applications opérationnelles (ou alors ça sera des petits bidules pas bien compliqués)). Donc bref, je compte me lancer sur XCode avec Cocoa et Objective-C, mais comme je le disais plus haut je suis parfaitement débutant ; ma question est en fait la suivante : est-il nécessaire d'apprendre le C avant d'utiliser de l'Objective-C, ou peut-on faire sans ? Pour être honnête je n'ai pas vraiment envie de me lancer dans un truc aussi "compliqué" que le C (surtout que j'ai choisi Ruby plutôt que les autres précisément pour sa simplicité), en tout cas pas tout de suite. Donc la vraie question : *si je commence par de l'Objective-C sans passer par la case C est-ce que ça me pénalisera vraiment ?* Et si oui dans "quelles proportions" ?
> 
> ...



*si je commence par de l'Objective-C sans passer par la case C est-ce que ça me pénalisera vraiment ?

oui

http://en.wikipedia.org/wiki/Ansi_C

http://en.wikipedia.org/wiki/Struct_%28C_programming_language%29

http://en.wikipedia.org/wiki/Pointer_(computing)

http://en.wikipedia.org/wiki/Malloc

http://en.wikipedia.org/wiki/Stack-based_memory_allocation

http://en.wikipedia.org/wiki/Stack_machine

http://en.wikipedia.org/wiki/Call_stack

http://en.wikipedia.org/wiki/Floating_point_unit

http://en.wikipedia.org/wiki/Inline_assembly



+ 

http://en.wikipedia.org/wiki/Memory_pool

+

http://en.wikipedia.org/wiki/POSIX_Threads

http://en.wikipedia.org/wiki/Mutex

+

http://en.wikipedia.org/wiki/Race_condition

+

http://en.wikipedia.org/wiki/Signal_handler

+

http://en.wikipedia.org/wiki/GNU_Compiler_Collection

+

http://en.wikipedia.org/wiki/Dynamic_linker

+

http://en.wikipedia.org/wiki/Hash_table

http://en.wikipedia.org/wiki/Associative_array

http://en.wikipedia.org/wiki/Set_(computer_science)

http://en.wikipedia.org/wiki/Multimap

http://en.wikipedia.org/wiki/Memory-mapped_I/O

http://en.wikipedia.org/wiki/Memory-mapped_file

http://en.wikipedia.org/wiki/Serialization


et sur *cocoalab, le prerequist est de ne pas etre green en C c'est une introduction au MVC, le livre est assez nase par ailleurs, comme les examples aussi plus ou moins pouraves full of bad practices


----------



## Nyx0uf (22 Mars 2010)

multimap, mmap, signal handler, pour un débutant c'est franchement pas utile, pour commencer à faire des trucs simple y a pas besoin de tout ça.

Ceci dit, il est clair qu'il vaut mieux connaître le C avant de se lancer dans Obj-C.


----------



## osc (25 Mars 2010)

Salut à tous,

après lecture et mûre réflexion, je pense que je vais en effet directement apprendre Objective-C. Je ne prévois pas de développer l'application de la mort qui tue (voire même de développer d'application tout court), et je cherchais surtout à savoir si ne pas connaître le C allait me pénaliser (sachant que j'y viendrais probablement _plus tard_). Aux vues des différents messages je crois surtout comprendre que connaître le C est intéressant en ce sens que ça permet d'assimiler des "méta-concepts" qui serviront pour tous les autres langages &#8212; mais compte tenu de la pratique que j'aurais du codage, je n'aurais probablement pas besoin avant longtemps de tels "méta-concepts", auquel cas je peux donc (pour l'instant du moins) m'en passer.

Mon idée est de développer pour le plaisir, pour moi, pour m'amuser, et à mon rythme (je ne suis pas un professionnel et j'ai une vie à côté de ça qui me demande un temps de cerveau disponible assez conséquent). De fait, m'embarrasser d'un truc aussi "imposant" que le C (et surtout pour débuter...), je ne crois vraiment pas que ce soit utile (j'ai bien évidemment jeté un oeil à quelques tutos sur le C pour débutants, et autant j'ai été enthousiaste avec Ruby, autant là...). Une fois encore, je pense donc, _compte tenu de ma pratique_, pouvoir me passer (au moins au début) d'un apprentissage du C. Je prends par ailleurs note des diverses références, qui sauront m'être utiles.

En tout cas merci pour toutes vos réponses.



			
				mpergrand a dit:
			
		

> Alors tu peux essayer PyObjC ou Ruby Cocoa:



Je vais effectivement jeter un oeil attentif sur RubyCocoa, qui a l'air assez sympa. Merci pour l'idée.


----------

