Les bases de ce qu'il y a à savoir pour programmer sur mac?

Diablo42

Membre actif
19 Mars 2005
204
4
49
Je suis en train d'installer xcode pour me mettre à la programmation C++. J'ai compris que xcode était l'IDE (environnement de programmation intégré), que Gcc est le compilateur mais alors je comprend pas ce que sont cocoa et carbon, pourquoi on peut programmer sous l'un ou l'autre (cocoa semblant devenir la préfèrence chez apple à ce que j'ai lu sur le forum).

Quelqu'un pourrait-il éclairer ma lanterne. Je sais que la réponse a surement été déjà donné sur le forum mais là j'ai lis pas mal de choses plus complexes que ça: si quelqu'un voulait bien m'indiquer les bases de ce qu'il y a à savoir, je pourrais commencer à potasser mes bouqins et à programmer sereinement.
Merci d'avance.
 
Connais tu Google ?
http://www.google.fr/
Je pense qu'une recherche rapide de donnera pas mal de réponses.

Pour résumer, Carbon et Cocoa sont deux facons d'acceder au librairies (framework) du systeme.

Carbon, plus simplifié, a l'avantage de fonctionner sur Mac 9 et X. C'est un portage sur 9 de certaines fonctions de Mac OS X .
On ne peut utiliser que les fonction Mac OSX qui ont été implémentées dans la couche CarbonLib de Mac OS 9.Le langage recommandé pour utiliser Cocoa est le C.


Cocoa est spécifiqe à Mac OS X mais n'est plus limité. Le langage recommandé pour utiliser Cocoa est OBJ-C.

Cordialement
 
Oui je connais google merci, ainsi que la fonction rechercher sur le forum : )
Mais comme je l'ai dit on peut lire des choses fort compliquées du genre comparaison technique entre cocoa et carbon sans dire clairement ce que c'est. C'est souvent le pb quand on cherche des réponses techniques: seul un spécialiste sait de quoi on parle et ça lui parait évident...
Finalement tu répond à ma question:
Pour résumer, Carbon et Cocoa sont deux facons d'acceder au librairies (framework) du systeme.
. Donc merci pour ton aide. Cela dit, cela me permet de simplement constater que pour un débutant en programmation, ça n'a aucun intérêt d'en savoir plus sur cocoa et carbon, c'est de la sauce interne au mac. Donc basta j'utiliserai cocoa.

Le langage recommandé pour utiliser Cocoa est OBJ-C
Je sais c'est écrit en long et en travers sur le forum mais désolé ça me parait bien trop spécifique à l'univers mac pour m'y intéresser sans vouloir offenser personne. C++ reste nettement plus répandu. De plus j'ai l'impression que quand on maîtrise C++ il est relativement facile de passer à objective-c, est-ce que je me trompe?

La preuve que je sais utiliser google: j'ai trouvé deux sites
http://www.cocoa-x.com/
http://www.projectomega.org/main.php?lg=fr

le deuxième me paraissant plus complet (j'avais pas trouvé la réponse à ma question sur cocoa sur le premier). il y a d'ailleurs un tuto pour passer de C++ à objective-c.

Bon me reste plus qu'à savoir comment avec xcode créer un projet et puis je pourrais commencer à apprendre C++ :)

Edit: que veux-tu dire par
Cocoa est spécifiqe à Mac OS X mais n'est plus limité
 
Cela veut dire que les limitations de Carbon (seulement certaines fonctionnalités disponibles) n'ont plus court avec Cocoa qui permet d'acceder, lui, a toutes les fonctionnalités.

Si je puis me permettre un conseil, avant de choisir un langage, la question a te poser est de savoir ce que tu veut developper et pour qui.

La difference est grande entre une application que tu developpe pour ton usage propre, juste pour t'initier à la programmation, et une application que tu veut partager/vendre avec d'autres utilisateurs.

Il y a de nombreux langages sur Mac : AppleScript, Obj-C, C++ C, Java, Perl (classé du moins portable au plus portable) et le choix est important selon ce que tu veut en faire : du graphisme, de l'interface, de la gestion de fichier, du Web, etc.

Tu fera difficilement de l'application Web en Obj-C, mais tu choisira alors du PHP ou du Perl.
Si tu veut faire de l'interfacage, il faudra passer par Obj-C et Cocoa.
Si la portabilité est un critère tres important, ce sera le Java.

Il n'y aucun langage parfait, il n'y a que des langages plus a l'aise dans certaines taches.

Cordialement
 
Cela veut dire que les limitations de Carbon (seulement certaines fonctionnalités disponibles) n'ont plus court avec Cocoa qui permet d'acceder, lui, a toutes les fonctionnalités.
ça y est j'ai compris :up:

Il y a de nombreux langages sur Mac : AppleScript, Obj-C, C++ C, Java, Perl (classé du moins portable au plus portable) et le choix est important selon ce que tu veut en faire : du graphisme, de l'interface, de la gestion de fichier, du Web, etc.

Tu as parfaitement raison. En fait, je veux apprendre C++ car c'est le langage utilisé en général
dans le domaine scientifique pour la création d'application.

Sinon, mais c'était pas le but du post, pour une utilisation plus personnelle, quand je passerai sous tiger (dans peu de temps: j'ai le dvd d'installation, j'attend de me renseigner sur les sauvegardes diverses à faire (carnet d'adresses etc...)), je compte me mettre à la programmation de widgets:
ça semble utiliser du http, du css et du javascript (je suppose logiquement que cela veut dire des scripts en java :D ). Je me débrouille en HTPP et CCS, j'utilise souvent photoshop (pour l'interface ça sera utile), reste java et connaître mieux la structure de l'os pour éviter les grosses c***neries (les widgets semblent pouvoir faire du dégat).

Si tu veut faire de l'interfacage, il faudra passer par Obj-C et Cocoa.
Comme il m'a semblé l'avoir déjà vu dans le forum, il est plus facile de créer une interface en objective-c qu'en c++ c'est bien ça?

Merci pour tes réponses.
 
Attention ! Le JavaScript n'est pas du script Java, c'est un langage a part.

Voici une doc JavaScript que j'aime bien :

http://www.comptechdoc.org/independent/web/cgi/javamanual/


En effet, pour "attaquer" les frameworks Cocoa l'Obj-C est plus que recommandé. Tu verra que la plupart des exemples sont donnés en Obj-C, y compris dans les docs Apple.
La aussi, attention, utiliser Obj-C+Cocoa permet de developper rapidement des applis 'qui ont de la gueule' mais sont bloqués sur Mac OS X.
Si tu fait se choix, prends la peine de séparer très nettement ce qui dans ton code est spécifique Mac (Interface) et le reste (calcul). Ceci facilitera une migration ultérieure vers Windows ou Linux.
Je pense meme que tu peut mixer C++ et Obj-C dans le meme projet, reservant l'OBJ-C (difficielement portable de toute facon) aux acces Cocoa et le C++ au calcul.

Cordialement
 
  • J’aime
Réactions: molgow et Diablo42
Attention ! Le JavaScript n'est pas du script Java, c'est un langage a part.
Merci bien pour l'info :eek:
Bon ben du coup j'hésite à me lancer dans la création de widgets (ça me semblait super pour travailler java mais là ç'est encore un autre langage à apprendre...)

Je pense meme que tu peut mixer C++ et Obj-C dans le meme projet, reservant l'OBJ-C (difficielement portable de toute facon) aux acces Cocoa et le C++ au calcul.

C'est bien le problème de portabilité de l'objective-c qui me refroidit mais je vois que l'on est sur la même longueur d'onde: je cherchais tout à l'heure sur les forums si par hasard je purrait pas mettre
du C++ pour les calculs et de l'objective-C pour l'interface et j'ai trouvé ça:

http://www.macfr.com/forums/index.php?showtopic=14351
Mais comme je suis néophyte, je ne suis pas sur d'avoir vraiment saisi... Je me demande s'ils ne suggèrent pas de faire deux applications (une pour l'interface et la gestion des entrées/sorties et une autre qui tourne en tache de fond pour les calculs. J'ai peur que ça ralentisse l'application cela dit.
Le mieux serait de "mixer C++ et Obj-C dans le meme projet" comme tu dis mais là je vois pas trop comment faire (a moins que tu veuilles dire la même chose que dans le lien :) )
 
:up:
C'est exactement ce que je cherchais: j'étais allé voir sur ce site au tout début de mes recherches sur carbon et cocoa mais je n'y étais pas retourné.

Tout cela contient visiblement les réponses à ma question. reste plus qu'à essayer de bien comprendre :D

Merci pour ton aide.
 
Bonjour,
on peut mélanger sans problème de l'objective-c et du C++ : il suffit juste d'appeler ces fichiers sources *.mm au lieu de *.m et du suivre quelques règles édictées par Apple. Il n'y a pas de modèle XCode de projet en objective-c++. Il faut créer un projet Cocoa et renommer le fichier main.m générer par défaut en main.mm.
Dans ce cas tu peux faire le noyau de ton programme en C++ ce qui le rend portable sur d'autres plates-formes, et l'interface en Cocoa pour bénéficier du savoir faire Apple. Il n'est pas nécessaire de faire deux applications, tu peux par exemple générer une librairie C++ et de la linker avec ton programme Cocoa. Mais tu peux aussi mixer le code dans un projet unique.
Par contre tu risques d'être rapidement tenté d'utiliser certaines technologies telles que Core Data pour toute ton application :) Quand tu mixes les deux langages, il y a des contraintes notamment pour passer des tableaux C++ (stl::vector) dans l'interface graphique car ils doivent être converti en NSArray.
Si tu débutes en programmation, saches tout de même que l'objective-c sera plus facile à maîtriser que le C++, mais il est moins repandu :(
 
Merci pour ces précisions: les choses sont maintenant beaucoup plus claires :)
Sans vouloir abuser :D, j'avais vu que quand je lançais C++ tool (donc uniquement pour programmer en C++), la librairie par défaut était libstdc++.a . Faut-il la linker pour pouvoir travailler comme tu l'as indiqué (du C++ dans un projet objective-c)? De plus la linker doit vouloir dire la mettre dans le dossier des frameworks utilisées et peut-être aussi en déclaration dans le code?
 
Non, cette libraire est ajoutée par XCode. Normalement tu n'as rien a ajouté. Du moment que tu as un fichier qui s'appelle *.mm, XCode comprend qu'il doit compile de l'objective-c++.
 
  • J’aime
Réactions: Diablo42