# Ouvrage d'apprentissage du language C



## dragondin (15 Mars 2011)

Bonjour à tous,

Je me tourne vers vous puisque je suis à la recherche d'un (ou plus) ouvrage pour apprendre le langage C qui est manifestement le socle à l'objective-C langage de programmation d'Apple. 

En fait je recherche un ouvrage qui utilise les outils d'Apple pour apprendre progressivement à programmer en C tout en exploitant Xcode 3 ou 4 (4 c'est peu être un peu trop récent surement).

 J'ai des connaissances de programmation en Windev & Script bash donc je préfère partir du principe que je suis débutant voir amateur éclairé.

Cordialement

PS : J'ai bien vu le topic du forum sur les livres suggérés mais je préfère de loin le ressenti des membres.


----------



## Céroce (15 Mars 2011)

dragondin a dit:


> En fait je recherche un ouvrage qui utilise les outils d'Apple pour apprendre progressivement à programmer en C tout en exploitant Xcode 3 ou 4 (4 c'est peu être un peu trop récent surement).



Ça n'existe pas. Du moins, pas à ma connaissance, et si ça existe, c'est une arnaque.

Xcode est vraiment un outil pour programmer Cocoa en ObjC. Vraiment. L'utiliser pour programmer en C est faisable, mais tu ne verras pas comment fonctionnent réellement les outils sous le capot, et puis il est trop complexe pour cette tâche, sans rien apporter.

Comme nous le conseillons souvent ici, il peut être intéressant de commencer en ligne de commande: utilise un bête éditeur de texte (TextMate, BBEdit, TextWrangler, Smultron, voire vi ou emacs si tu es téméraire) et prépare des makefiles à la main: tu apprendras beaucoup plus.

P.S.: Installe tout de même Xcode pour avoir les compilateurs C et _make_.


----------



## dragondin (15 Mars 2011)

Re Céroce

A ce moment que recommande tu comme ouvrage qui enseigne le langage C et permet une transition logique à ObjC ?

Cordialement


----------



## tatouille (15 Mars 2011)

http://www.amazon.com/Learn-C-Mac-Dave-Mark/dp/1430218096

http://www.amazon.com/Practice-Prog...=sr_1_3?s=books&ie=UTF8&qid=1300215393&sr=1-3

http://www.pragprog.com/


----------



## dragondin (15 Mars 2011)

tatouille a dit:


> http://www.amazon.com/Learn-C-Mac-Dave-Mark/dp/1430218096
> 
> http://www.amazon.com/Practice-Prog...=sr_1_3?s=books&ie=UTF8&qid=1300215393&sr=1-3
> 
> http://www.pragprog.com/



Et en VF sans avoir à sortir systématiquement un dico Franco/Anglais

(En même temps cela serait une parfaite occasion de parfaire mon anglais  )

PS Je m'auto-cite en ayant écrit plus haut _"PS : J'ai bien vu le topic du forum sur les livres suggérés mais je préfère de loin le ressenti des membres."_


----------



## tatouille (16 Mars 2011)

dragondin a dit:


> Et en VF sans avoir à sortir systématiquement un dico Franco/Anglais
> 
> (En même temps cela serait une parfaite occasion de parfaire mon anglais  )
> 
> PS Je m'auto-cite en ayant écrit plus haut _"PS : J'ai bien vu le topic du forum sur les livres suggérés mais je préfère de loin le ressenti des membres."_



l'anglais est un prerequisite pour la programmation, si tu ne te sens pas fait autre chose de la couture ou du jardinage


----------



## Céroce (16 Mars 2011)

dragondin a dit:


> A ce moment que recommande tu comme ouvrage qui enseigne le langage C et permet une transition logique à ObjC ?



Je ne peux pas te dire, ça fait trop longtemps que je l'ai appris !


----------



## dragondin (16 Mars 2011)

tatouille a dit:


> l'anglais est un prerequisite pour la programmation, si tu ne te sens pas fait autre chose de la couture ou du jardinage



Je suis pas mal au jardinage. :rateau:
Mais j'ai pigé le message.

@Céroce : Merci quand même. Je vais ralentir mon taf un peu sur Windev pour m'orienter sur le C progressivement.


----------



## duthen-mac (21 Mars 2011)

Céroce a dit:


> Citation:
> Envoyé par dragondin
> A ce moment que recommande tu comme ouvrage qui enseigne le langage C et permet une transition logique à ObjC ?
> 
> Je ne peux pas te dire, ça fait trop longtemps que je l'ai appris !



C'est un peu aussi mon cas (j'ai appris l'Objective-C il y a plus de 15 ans!), mais, pour autant que je me souvienne, il me semble qu'un bon bouquin d'Objective-C ne nécessite pas une connaissance préalable du C.


----------



## tatouille (21 Mars 2011)

duthen-mac a dit:


> C'est un peu aussi mon cas (j'ai appris l'Objective-C il y a plus de 15 ans!), mais, pour autant que je me souvienne, il me semble qu'un bon bouquin d'Objective-C ne nécessite pas une connaissance préalable du C.



ha donc l'objective-c n'est toujours pas un runtime objet pour C (depuis bientot 25 ans maintenant), merci d'arreter tes delires.


----------



## redchou (22 Mars 2011)

- Je pense qu'il voulait dire qu'il y a possibilité d'apprendre l'objective C sans apprendre le C. En apprenant le C au fur et a mesure de son utilisation dans un programme Objective C... Je dirai que cela dépend des programmes que l'on veut développer...
- Possible pour une application purement cocoa, mais impensable pour une application openGL par exemple...
Mais bon, c'est sur qu'il n'y a rien de mieux qu'une bonne connaissance du C pour faire du développement objective-C.

- Pour apprendre le C, tu peux aller faire un tour sur le site du zéro, pour des cours en français et accessible. 
- Moi je préfère avoir différent point de vue. Donc j'ai pris un gros bouquin sur le C, lu le sommaire et appris sur le net xD.
J'ai aussi découvert un site vraiment sympa:http://a.michelizza.free.fr/
La section Langage C, évidemment. Malheureusement c'est plus orienté C bas niveau, je sais plus trop si c'est idéal pour passer ensuite à l'Objectif-C, mais bon... Si tu veux apprendre le C, c'est une référence pour moi... 
Ensuite si tu veux juste savoir a quoi correspond le code C d'une application Objectif-C, pas la peine d'apprendre le C... Apprends direct l'Objectif-C, une bonne maitrise du C requiert un apprentissage assez long, et surtout beaucoup de la pratique, je trouve personnellement...
- Si tu veux faire des applications iOS par exemple, ça risque de rallonger le temps de l'apprentissage..


----------



## Céroce (22 Mars 2011)

*Pourquoi faut-il connaître le C pour programmer en ObjC ?*

- Pour savoir ce qu'est un pointeur (non, ce n'est pas une simple référence vers un objet).
- Pour savoir que la mémoire, ça se gère
- Pour savoir ce qu'est un masque de bits, et éviter de chouiner sur PommeDev comme quoi "Apple y font des choses trop dures et que j'avais pas compris qu'on pouvait mettre | entre les options pour en mettre plusieurs".
- Pour savoir ce qu'est une structure et que rectangle.size.width n'est pas un appel de méthode.
- Pour savoir ce qu'est une fonction, et que oui, on a le droit de les utiliser, et que même des fois il faut.
- Pour savoir stocker 100 entiers dans un tableau sans utiliser un NSMutableArray et des conversions en NSNumbers. Bref, en programmant efficacement et lisiblement.
- Pour ne pas avoir peur d'utiliser les fonctions de Core Foundation.
- Parce que le langage C est l'Esperanto de l'informatique. Les algos sont donnés en langage C.

Et j'en oublie.


----------



## tatouille (22 Mars 2011)

tu as oublié:
- Stack vs Heap Allocation (obj-c fait les deux)
- Algo de base B-tree, hashtable ecetera
- vectorization et calcules avancés pourquoi dois je quelque fois faire des appels asm inline optimisés au CPU avec le set d'instruction disponible e.g SSE, SSE3, altivec different arch ou pourquoi? je dois maintenir un code, ceci est present dans le code: donc je suis capable de le lire et comprendre ce qu'a fait la personne precedente et pourquoi.
- Compiler/Linker Dynamic/Instruction Set/debugger
- Concurrency/Synchronization at large
- LibC standard et basic OS bindings FS /Net/systypes ecetera
- Comprendre  le concept of fairness of the code
- Savoir utiliser tout le reste des frameworks Apple ecritent exclusiivement en C et C++
donc concept d'exo-constructor e.g commencement de la prog object manipulation des structure donc comprehension de l'aligment de la "size" de chaque type et pourquoi en obj-c un boolean est une unsigned char qui peut reprondre un false positive dans certain cas ecetera.


on ne s'inprovise pas en obj-c, on peut commencer a trifouiller mais rapidemment et bien vite la non connaissance des points precedents sera une barriere infranchissable et l'accumulation des lacunes de base (donc de tres mauvaises pratiques donc code toujours boguer mauvais style design tres pauvre e.g code cramoisie non evolutif et tres couteux a maintenir) et bien plus dur a renverser


mais si vous voulez absolument apprendre mal, vous pouvez y aller on ne vous retient pas, et vous viendrez poser les sempiternelles questions debiles

pourquoi quand j'assigne -1 a une unsigned int ca me retoure un gros nombre, ou qu'es ce que le mask d'un type ..., apres tout les gens qui vous repondent: ce n'est pas leur metier depuis tres longtemps.

​


----------



## grumff (22 Mars 2011)

Alors le bouquin avec lequel j'ai appris c'est celui là :
http://livre.fnac.com/a291809/Tony-Zhang-Le-langage-C
Basé sur des exemples simples, et pourtant assez exhaustif pour apprendre les bases du langage. (bon le livre m'allait bien mais pour le coup je partais de vraiment pas grand chose).
Bon ça reste du niveau débutant, mais c'est déjà un passage obligé.
Mais même si j'aime bien avoir un livre sous la main, je pense que t'as largement assez de ressources sur le net pour faire sans.


----------



## redchou (22 Mars 2011)

- Céroce et Tatouille, les bons tutos abordent ces notions... Malheureusement pas beaucoups en français. Ensuite rien n'empêche de procédé par étapes...
1. C de Base.
2. Obj-C de Base.
3. Explication d'une implémentation C de l'Obj-C de Base.
4. Obj-C avancé ou C avancé.
4. C avancé ou Obj-C avancé.
Chaqu'un sa formule, il n'y a pas une obligation de réciter par coeur une bible du C pour passer à l'Obj-C.
- Un livre en anglais sur Obj-C expliquait le C, et ensuite l'Obj-C en montrant comment les concepts objets de l'Obj-C était fait en C.
C'est une des meilleures approches que j'ai eut l'occasion de voir dans un livre.


----------

