# Acheté un livre didactique sur Cocoa...



## Anonyme (2 Janvier 2010)

C'est un livre d'apprentissage de la programmation sur Cocoa qui a connu deux éditions : une en 2003 et une en 2008, j'ai pris celui de 2008...

Ma question : Cocoa est-il un logiciel ? Ou une suite de logiciels ?
Est-il d'office sur Snow Leopard ?

Pourriez-vous me dire où le trouver sur snow leopard ?

Je tente de réaliser mes rêves de jeunesse : développer un jeu video d'un genre particulier plutôt intellectuel genre une évolution de risk ou une évolution de Sim City 5 le spin-off...

Voilà, merci d'avance de vos réponses...


----------



## GrayStorm (2 Janvier 2010)

Il me semble que Cocoa est une API de Mac OS (peut-être la seule qui reste disponible à partir de Snow Léopard ?).
Voici un lien en anglais : http://developer.apple.com/cocoa/

Donc au delà de Cocoa, il faut surtout que tu apprennes un langage de programmation si ce n'est pas déjà le cas (par exemple le C++).


----------



## ntx (2 Janvier 2010)

Coriolanus a dit:


> Cocoa est-il un logiciel ? Ou une suite de logiciels ?


C'est une API ou plutôt un ensemble de frameworks fournissant les API pour faire des applications graphiques sur Mac OSX.


> Est-il d'office sur Snow Leopard ?
> 
> Pourriez-vous me dire où le trouver sur snow leopard ?


Les outils de développement sont sur ton DVD de Mac OSX, et la dernière version est téléchargeable sur le site développeur d'Apple. (inscription gratuite obligatoire)

Pour la littérature indispensable : Programmation Cocoa sous Mac OSX d'Aaron Hillegass


----------



## Anonyme (2 Janvier 2010)

Merci beaucoup à vous deux 

1) Pour le bouquin cité, c'est bien la version 2008 de cet auteur que j'ai prise à la FNAC.com ...

2) Le site d'Apple où l'on s'inscrit est-il en français ?

3) Apprendre à programmer en Cocoa ne suffit-il donc pas ?
Il faut apprendre le C++/C ou C# ?

4) Lequel des trois faut-il apprendre C++, C ou C# ?

5) Peut-on programmer dans l'un de ces trois langages sans utiliser un logiciel dédié donc en n'utilisant que les API Apple ?

Plein, plein de questions je sais mais à presque 30 ans j'ai décidé que je devais faire quelque chose de ma vie, la maturité y'est en tout cas...


----------



## ntx (2 Janvier 2010)

Coriolanus a dit:


> 2) Le site d'Apple où l'on s'inscrit est-il en français ?


Non, pas plus que Xcode. Donc si tu ne maîtrises pas un minimum la lecture de l'anglais change de métier. :rateau:


> 3) Apprendre à programmer en Cocoa ne suffit-il donc pas ?
> Il faut apprendre le C++/C ou C# ?
> 4) Lequel des trois faut-il apprendre C++, C ou C# ?


Pour développer sur Mac il faut connaître le C et l'Obj-C qui est une "extension" objet du C.
C# c'est uniquement pour Windows.


> 5) Peut-on programmer dans l'un de ces trois langages sans utiliser un logiciel dédié donc en n'utilisant que les API Apple ?


Oui mais tu vas galérer, les aides apportées par Xcode et IB ne sont pas négligeables.
Toutefois si tu débutes en C, il vaut mieux commencer par utiliser le terminal et appeler le compilateur via des commandes shell, ça aide à comprendre ce qu'on fait et ce que fait Xcode automatiquement.


----------



## Anonyme (2 Janvier 2010)

2) a) Rassures-toi, l'anglais, à force de fréquenter certains forums anglo-saxons, et à force de pratiquer l'anglais informatique des jeux en anglais, je pense pouvoir m'en tirer...

3) 4) a) Quels sont les bouquins pour débutants pour le C (version Mac) et le C-Obj (version Mac) ? J'aimerais deux livres équivalent à celui que j'ai pris sur Cocoa de Aaron Hillegass

Si possible en français ces deux livres et pas plus ancien que 2008 (celui sur Cocoa)...

Sinon je peux lire un livre en anglais mais c'est un peu plus dur :rateau:
(j'ai bien un livre de Karoline Leach sur Lewis Carroll - Mythe et Réalités - Biographie critique de la biographie de Lewis Carroll - Le tout dans un anglais plutôt académique que j'ai pourtant presque compris  )

Merci d'avance de ta réponse ntx : tu m'as l'air bien informé


----------



## Anonyme (3 Janvier 2010)

Je n'ai pas pu éditer : donc voici ma nouvelle question :

6) Et pour les graphismes ai-je besoin d'un logiciel ou est-il déjà inclu dans le mac ?


----------



## Rez2a (3 Janvier 2010)

On va résumer ! 

Pour programmer une application sur Mac en natif ça se base globalement sur ça : Xcode (qui est juste l'IDE, c'est simplement une interface qui t'aide à écrire le code), Interface Builder (fourni avec Xcode, t'aide à concevoir l'interface de ton app), Cocoa (c'est un framework, c'est à dire un ensemble de classes à manipuler qui sont présentes en standard sur OS X), Objective-C (qui est le langage utilisé pour la programmation Cocoa), et plein d'autres trucs dont tu verrais pas l'intérêt maintenant.

Le livre que tu as acheté est basé sur la programmation Cocoa, il introduit beaucoup de classes utiles, apprend à les manipuler, apprend à utiliser Xcode et IB, bref à avoir des repères pour la programmation Cocoa, en supposant que tu t'y connaisses déjà en programmation avec un autre framework.
Tu demandes également un bouquin sur l'Objective-C, mais la syntaxe de l'Obj-C s'apprend en pas longtemps pour peu que tu connaisses déjà un autre langage objet.

En bref, il va déjà falloir commencer par les bases : l'algo, les structures conditionnelles, etc.
Tu dois pouvoir trouver des tutos sur le site du zéro, puis tu vas devoir te mettre à un langage "standard" genre C, puis un langage objet pour comprendre le concept, puis passer à Cocoa en sachant que l'approche choisie par Xcode/Cocoa/IB change radicalement de ce qui se fait autre part, c'est vraiment du pur orienté objet, au point qu'il n'y a pas très longtemps on a eu un thread ici de quelqu'un qui n'arrivait pas du tout à s'en servir alors qu'il connaissait déjà la prog objet en Java/C#...

Mon avis personnel à deux balles : je ne sais pas exactement ce que tu comptes faire, mais il va au grand minimum te falloir beaucoup de temps à consacrer à la programmation et une motivation énorme, sans vouloir te décourager...
On dit souvent que la programmation peut s'apprendre en autodidacte, ce qui est vrai, mais ça ne se fait pas en une semaine, il faut des bases derrière, surtout lorsqu'on s'attaque à Cocoa et qu'on a pour objectif de développer un jeu ; encore, tu aurais voulu faire un site et attaquer la programmation en php, ça aurait été basique à côté.

Bref, si tu n'as pas de base en algo, commence déjà par mettre ton bouquin de côté pendant un bon moment.
Je te conseille aussi d'oublier ton projet de jeu pour l'instant, perso c'est le dernier genre de projet dans lequel je me lancerais en étant seul, à plus forte raison lorsqu'on n'a aucune base.
Commence déjà par le début, et dis-toi que si tu arrives à coder une application simple et utile en Cocoa, ça sera super. 
Un jeu, ça peut paraître simple dans ta tête, mais c'est un foutoir sans nom à coder, ça me paraît assez inconcevable de vouloir développer un Sim City en partant de zéro en programmation.

En tout cas, bon courage, je te souhaite de trouver le temps de t'y mettre sérieusement et de garder la motivation, y a jamais rien de sorcier mais c'est un domaine où on peut se décourager très vite lorsqu'on bute sur quelque chose qu'on ne comprend pas, mais garde à l'esprit qu'il faut y aller lentement et par étapes si tu veux devenir un bon programmeur (et je te dis ça sans en être un...) ; commence par te renseigner sur les principes d'algo et attaque le C, c'est déjà pas une partie de plaisir et ça te fera une bonne base pour la suite.


----------



## ntx (3 Janvier 2010)

Pour un livre sur le C voir sur le forum, la question a déjà été abordée.
Une fois acquis le C - et surtout la notion de pointeur et de gestion de la mémoire - pour l'Obj-C il y a un "petit" guide sur le site d'Apple qui suffit amplement. 
Et avant d'aborder les graphismes tu en as pour quelques semaines, voire mois, de boulot : c'est ce qui vient en dernier une fois que toutes les bases sont maîtrisées


----------



## Anonyme (3 Janvier 2010)

Ok, merci de m'avoir prévenu...


----------



## Céroce (4 Janvier 2010)

Si ton objectif final est de concevoir un jeu, tu peux aussi t'intéresser aux moteurs de jeux, tels que Unity (bien fichu et gratuit pour une utilisation personnelle). Il en existe aussi pour la 2D.

Reste que tu devras toujours disposer d'outils pour créer les graphismes et le son. Créer un jeu est un travail de très longue haleine !


----------



## Anonyme (4 Janvier 2010)

Ok, je regarderai mais d'abord je m'exercerai sur Cocoa, y'a t-il un livre pour débutants sur Unity version gratuite ?


----------



## Irving Bartowski (5 Janvier 2010)

Hi Coriolanus 

Je me retrouve en vous lisant! Il me tient également beaucoup à coeur de me lancer dans cette grande aventure qu'est la programmation. Quant à moi, je tiens à me concentrer sur le développement d'applications pour iPhone, car l'App Store représente une activité économique assez... comment dire  intéressante  

En ce qui me concerne, j'ai l'intention de procéder comme suit:

Apprendre language C
Apprendre ObjC
Apprendre Cocoa
Comprendre les concepts algorithmiques afin d'améliorer son application
Télécharger iPhone SDK et s'inscrire au programme

En avant l'aventure 

Mais avant ça un peu d'encouragement à tous les apprentis développeurs...

[YOUTUBE]<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/bhUAr-P_39U&hl=fr_FR&fs=1&color1=0x006699&color2=0x54abd6"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/bhUAr-P_39U&hl=fr_FR&fs=1&color1=0x006699&color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>[/YOUTUBE]



Cordialement,

Irving B.


----------



## Céroce (5 Janvier 2010)

Irving Bartowski a dit:


> Hi Coriolanus
> Quant à moi, je tiens à me concentrer sur le développement d'applications pour iPhone, car l'App Store représente une activité économique assez... comment dire  intéressante



Ça reste à prouver.


----------



## Rez2a (5 Janvier 2010)

Céroce a dit:


> Ça reste à prouver.



Merci beaucoup pour l'article, vraiment très intéressant et très clair, ça fait limite froid dans le dos. 



Irving Bartowski a dit:


> Hi Coriolanus
> 
> Je me retrouve en vous lisant! Il me tient également beaucoup à coeur de me lancer dans cette grande aventure qu'est la programmation. Quant à moi, je tiens à me concentrer sur le développement d'applications pour iPhone, car l'App Store représente une activité économique assez... comment dire  intéressante
> 
> ...



Salut, c'est un bon plan mais les étapes sont d'après moi un peu dans le désordre ! 
Personnellement, je mettrais plutôt :

- Bases d'algo (types, conditions, boucles, etc.) (= Algo 1)
- Télécharger iPhone SDK (Autant commencer sous Xcode pour programmer en C, l'étape suivante)
- Apprendre language C (= Code 1 + Pratique 1)
- Comprendre les concepts algorithmiques afin d'améliorer son application (= Algo 2)
- Apprendre ObjC + Apprendre Cocoa (= Code 2 + Pratique 2, autant apprendre Cocoa et Objective-C en même temps au fur et à mesure, Obj-C n'est qu'une question d'heures quand on connaît déjà un langage OO)

Mon avis vaut ce qu'il vaut, mais je pense que tu oublies une étape essentielle dans ton programme, à savoir apprendre les principes de bases de l'orienté objet, car ça peut faire drôle de passer du C à Cocoa qui est totalement objet sans s'être renseigné sur ce que c'est réellement !


----------



## melaure (5 Janvier 2010)

Et ne pas oublier que Mac OS X aussi est une belle plateforme sur laquelle il y a encore beaucoup de potentiel surtout avec les ventes toujours de plus en forte des Macs 

Il n'y a pas que l'iPhone !


----------



## grumff (5 Janvier 2010)

melaure a dit:


> Et ne pas oublier que Mac OS X aussi est une belle plateforme sur laquelle il y a encore beaucoup de potentiel surtout avec les ventes toujours de plus en forte des Macs
> 
> Il n'y a pas que l'iPhone !



N'empêche que ça attire des développeurs vers cocoa, donc sur le long terme, ça finira bien par nous être profitable aussi sur mac.


----------



## noche84 (6 Janvier 2010)

De fait le marché Apple est en général...

Juste pour dire merci pour les liens, intéressants...

Et... Pour iPilule, il y a aussi une grande règle si on veut être rentrable : avoir plus d'un produit en vente... Celà étant dit, merci pour le lien de l'article... Bon à savoir


----------



## Anonyme (6 Janvier 2010)

pour iPilule


----------



## Gz' (6 Janvier 2010)

Je trouve ça pas mal quand même, tu achetes un bouquin qui doit couter relativement cher sans même savoir ce qu'est le sujet de l'ouvrage ?


----------



## Irving Bartowski (7 Janvier 2010)

Voilà après +- 25h d'apprentisage du C, je viens vous donner de mes nouvelles et ce même si vous n'en avez que faire  

Je crois avoir assimiler les bases, je ne vais pas vous citer le contenu des chapitres que j'ai étudié, je n'en verrais pas l'intérêt. En revanche, voici les modestes programmes que j'ai créé en mode "Terminal":

mini-calculatrice (+-*/)
convertisseur /$ (mais je n'ai trouvé le bon code pour obtenir les restes  ) 
Micro-Jeu d'aventure en verbose (genre Zork) mais très très très simpliste! (fini en 5 min)


Je cale cependant sur un point très important : "La gestion des fichiers" 

L'objectif de ce code primaire ne fonctionne pas! Mon IDE (CodeBlocks pour l'instant) compile correctement, le terminal execute le programme, et  j'obtiens mon message d'erreur :hein:
Mais pourquoi donc mon fichier ne s'ouvre pas?  
Le fichier "test.rtf" est pourtant placé dans le dossier de mon projet! J'ai même essayé de le placer dans le fichier "DEBUG" contenant mon exécutable UNIX mais rien y fait! 


```
#include <stdlib.h>
#include <stdio.h>



int main(int argc, char *argv[])
{
    FILE* fichier = NULL;

    fichier = fopen("test.rtf", "r+");

    if (fichier != NULL)
    {
        // Lire et ecrire dans fichier test
    }
    else
    {
        // Si bug afficher message suivant
        printf("Petite pomme tu vas voler dans le pre\n");
    }

    return 0;
}
```

Oh une autre question: "Comment ce fait-il que test.rtf fait dès le départ 4.0Ko alors qu'il n'y a rien dedans?!"

Cordialement,

Irving B.


----------



## Bladrak (7 Janvier 2010)

Tu mets en paramètre un chemin relatif, or ça ne fonctionnera qu'avec un chemin absolu à priori (un chemin par rapport à la racine de ton disque).

Ton fichier rtf est un fichier avec de la présentation. Il inclut des données que tu ne vois pas (je ne saurais te dire précisément lesquels). Si tu veux un fichier vide sans poids, il ne faut pas le créer avec TextEdit, mais plutôt avec la ligne de commande (tu peux y mettre l'extension .txt par exemple).


----------



## melaure (7 Janvier 2010)

s'il ne met pas de chemin, le fichier est créé dans le répertoire ou il lance l'application 

Oui il peut créer le fichier avec un "touch", mais bon les 4 ko, ce ne serait pas tout simplement la taille minimum d'un fichier pour son système de fichiers (qu'il n'a pas précisé)?


----------



## Irving Bartowski (7 Janvier 2010)

Merci pour vos précieuses contributions! Il est vrai qu'au début, on a tendance à avoir la tête qui tourne, malgré tout j'essaie de garder la tête froide et espère en sortir la tête haute 

Cher melaure, 

Qu'entends-tu par système de fichier? je veux dire, à quoi fais-tu référence? Je vais tenter une réponse mais n'ironisez pas si elle s'avère être à côté de clous svp  je dirais "HFSX" pour mon système de fichier...

Je pense néanmoins qu'il y a un gros soucis, car lorsque je remplace dans mon code "r+" par "w+" qui est une variable plus "flexible" car si fichier non-existant, il sera créé et permet de plus d'effacer son contenu, de lire et d'écrire, cela ne crée aucun fichier 

Je ne parviens à trouver l'erreur!

Amicalement,

Irving B.


----------



## grumff (7 Janvier 2010)

> Le fichier "test.rtf" est pourtant placé dans le dossier de mon projet! J'ai même essayé de le placer dans le fichier "DEBUG" contenant mon exécutable UNIX mais rien y fait!


Attention les chemins relatifs se font par rapport à l'emplacement d'où tu exécutes le programme, et non par rapport à l'endroit où se trouve le programme.


----------



## Céroce (8 Janvier 2010)

Irving Bartowski a dit:


> Qu'entends-tu par système de fichier?


Oui, c'est bien du HFS+ dont parlait Melaure. Il faut savoir qu'un fichier prend une place mimimum sur le disque, même s'il est vide. Quand tu consultes les infos du Finder, tu doit avoir deux indications: 4 Ko (0 octets).



Irving Bartowski a dit:


> Je pense néanmoins qu'il y a un gros soucis, car lorsque je remplace dans mon code "r+" par "w+" qui est une variable plus "flexible" car si fichier non-existant, il sera créé et permet de plus d'effacer son contenu, de lire et d'écrire, cela ne crée aucun fichier


Probablement que si, mais tu ne regardes pas au bon endroit. Cf la réponse de Grumff.


----------



## melaure (8 Janvier 2010)

Déjà vire moi ces //

Les commentaires c'est /* blablabla */

Si tu compiles avec un autre unix ou certain cc, le // ne passe pas 

Sinon je ne vois pas pourquoi ça ne marcherait pas.

Tu compiles en shell avec CC ?

Quand tu lances tu tapes bien ./test pour être sur de lancer le programme test de ton répertoire courant ?


----------



## Céroce (8 Janvier 2010)

melaure a dit:


> Si tu compiles avec un autre unix ou certain cc, le // ne passe pas



Certes, ce n'est pas du C ANSI, mais connais-tu un seul compilateur C qui ne l'accepte pas ? Moi pas


----------



## grumff (8 Janvier 2010)

Céroce a dit:


> Certes, ce n'est pas du C ANSI, mais connais-tu un seul compilateur C qui ne l'accepte pas ? Moi pas


Moi non plus, et c'est tellement moins casse burne à écrire. Si un jour tu tombes sur un compilo qui te jète, le mieux à faire, c'est de changer de compilo. =)


----------



## melaure (8 Janvier 2010)

grumff a dit:


> Moi non plus, et c'est tellement moins casse burne à écrire. Si un jour tu tombes sur un compilo qui te jète, le mieux à faire, c'est de changer de compilo. =)



bah déjà cc ...


----------



## ntx (8 Janvier 2010)

melaure a dit:


> Quand tu lances tu tapes bien ./test pour être sur de lancer le programme test de ton répertoire courant ?


Ne jamais appeler son application "test" car après tu cherches pendant des heures pourquoi ça ne marche pas 
"which test" répond gentillement "/bin/test" :rateau:


----------



## grumff (9 Janvier 2010)

ntx a dit:


> Ne jamais appeler son application "test" car après tu cherches pendant des heures pourquoi ça ne marche pas
> "which test" répond gentillement "/bin/test" :rateau:



Certes, "essai" ça sonne beaucoup mieux, plus doux à la prononciation. =)


----------



## Bladrak (10 Janvier 2010)

grumff a dit:


> Certes, "essai" ça sonne beaucoup mieux, plus doux à la prononciation. =)



Et puis ça vaut 5 points ! :rateau: (Pardon je dérive)
Sinon toto ou tata, c'est des noms référence.


----------



## grumff (10 Janvier 2010)

Bladrak a dit:


> Et puis ça vaut 5 points ! :rateau: (Pardon je dérive)
> Sinon toto ou tata, c'est des noms référence.


Sans oublier foo et bar. =)


----------



## ipascm (14 Janvier 2010)

grumff a dit:


> Moi non plus, et c'est tellement moins casse burne à écrire. Si un jour tu tombes sur un compilo qui te jète, le mieux à faire, c'est de changer de compilo. =)


 

humm, sur un clavier AZERTY (donc avec clavier numérique, / et * sont deux touches adjacentes)...

evidemment avec nos ... de clavier apple (surtout pour ceux sans pavé numérique) c'est evidemment plus compliqué...

mais bon à l'école on m'avait formaté pour écrire /* alors...

Apple, mon petit apple, tu pourrais pas nous sortir un clavier pour developpeur????


----------

