# Code C et interfaçage



## Sékiltoyai (12 Août 2007)

Bonjour à tous,

Je viens de me mettre aux macs. Et j'ai une petite application toute conne à faire, mais je ne m'y retrouve pas dans tout le bordel, surtout que je n'ai jamais fait d'applications graphiques en autre chose que Delphi (ou Java, mais c'est une bonne blague ça  ).
Notamment, j'aimerais qu'on m'explique les différences Carbon, Cocoa, &#8230;, parce que je croyais avoir noté la subtilité, mais en fait, pas du tout.

Et ensuite, pour mon application, j'aimerais savoir comment relier mon interface créée sous IB avec mon code C sous XCode. J'ai lu un peu la doc Carbon d'Apple et le problème, c'est que la doc d'Apple me semble plutôt mal faite :-/

Enfin bref, si vous avez de la lecture pour moi qui pourrait m'aider à en savoir plus, je suis preneur.

Merci


----------



## tatouille (12 Août 2007)

S&#233;kiltoyai;4363119 a dit:
			
		

> Bonjour &#224; tous,
> 
> Je viens de me mettre aux macs. Et j'ai une petite application toute conne &#224; faire, mais je ne m'y retrouve pas dans tout le bordel, surtout que je n'ai jamais fait d'applications graphiques en autre chose que Delphi (ou Java, mais c'est une bonne blague &#231;a  ).
> Notamment, j'aimerais qu'on m'explique les diff&#233;rences Carbon, Cocoa, &#8230;, parce que je croyais avoir not&#233; la subtilit&#233;, mais en fait, pas du tout.
> ...


si tu la trouves mal faite ... il y a des centaines de sample codes ...


----------



## Eul Mulot (12 Août 2007)

Pour ce qui est de Carbon, c'est du C pur, qui tend à disparaitre au profit de Cocoa, ou qui reste présent pour des toutes petites choses. Apple pousse les gens à developper avec Cocoa.

Après si tu as du code en C et que tu veux gérer des éléments graphiques, qui sont issus du framework Cocoa, je sais pas si tu peux arriver à quelque chose, étant donné qu'il faut utiliser l'Objective-C pour utiliser Cocoa. L'Objective-C est un sur-ensemble du C, donc va surement falloir que tu modifies ton code.

Si quelqu'un pouvait aussi confirmer mes dires.


----------



## tatouille (12 Août 2007)

Eul Mulot a dit:


> Pour ce qui est de Carbon, c'est du C pur, qui tend &#224; disparaitre au profit de Cocoa, ou qui reste pr&#233;sent pour des toutes petites choses. Apple pousse les gens &#224; developper avec Cocoa.
> 
> Apr&#232;s si tu as du code en C et que tu veux g&#233;rer des &#233;l&#233;ments graphiques, qui sont issus du framework Cocoa, je sais pas si tu peux arriver &#224; quelque chose, &#233;tant donn&#233; qu'il faut utiliser l'Objective-C pour utiliser Cocoa. L'Objective-C est un sur-ensemble du C, donc va surement falloir que tu modifies ton code.
> 
> Si quelqu'un pouvait aussi confirmer mes dires.



1 - il existe plein d'applications utilisant carbon
2 - c'est juste qu'un dev cocoa est beaucoup + rapide 
3 - Objc-c et un MOP C
4 - tu peux mixer (cocoa utilise carbon)


----------



## Eul Mulot (12 Août 2007)

Merci pour les infos tatouille, j'entendais par disparaitre que Carbon se voyait eclipsé par Cocoa, mais qu'il y a encore pas mal d'applis (le Finder il me semble), qui l'utilisent.

Qu'est ce que MOP ? Je n'ai pas trouvé quelque chose de probant part rapport au C :S


----------



## tatouille (12 Août 2007)

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


----------



## Sékiltoyai (12 Août 2007)

Et qu'est-il plutôt conseillé d'utiliser, sachant qu'ayant une mauvaise image de l'objective C, je n'ai pas trop envie de m'y mettre (par contre, en C++ ca ne me dérange pas&#8230 ?


----------



## tatouille (12 Août 2007)

bah ne developpe pas sous macos ?
"une mauvaise image de l'objective C" ? t'as 5 ans ?
comment peux tu savoir &#224; ton &#226;ge ?


----------



## Eul Mulot (12 Août 2007)

Sékiltoyai a dit:


> Et qu'est-il plutôt conseillé d'utiliser, sachant qu'ayant une mauvaise image de l'objective C, je n'ai pas trop envie de m'y mettre (par contre, en C++ ca ne me dérange pas) ?



Lorsque j'ai vu un code en Objective-C pour la première fois, je me suis dit que j'y comprenais pas granc chose. Après l'avoir approché puis un peu approfondi, je me dit que c'est un langage vraiment interessant, super puissant, et moins foutoir que le Java.

Je ne sais pas ce que tu n'aimes pas avec l'Objective-C, le mieux serait peut être de pratiquer pour t'en faire une véritable opinion avant d'avoir des préjugés !

@ Tatouille: Merci pour le lien


----------



## Sékiltoyai (12 Août 2007)

Bref, vous me conseillez de faire Obj-C + Cocoa plutôt que C+Carbon ?
C'est vraiment plus simple ?
N'y a-t'il pas moyen de s'habituer simplement à C+Carbon ?


----------



## tatouille (12 Août 2007)

http://developer.apple.com/samplecode/Carbon/index-date.html#doclist

http://www.carbondev.com/site/?page=CarbonDev


----------



## Eul Mulot (12 Août 2007)

Sékiltoyai a dit:


> Bref, vous me conseillez de faire Obj-C + Cocoa plutôt que C+Carbon ?
> C'est vraiment plus simple ?
> N'y a-t'il pas moyen de s'habituer simplement à C+Carbon ?



Je comprend pas trop ton "entêtement" à vouloir manger du C, quand on voit la simplicité et la logique de l'Objective-C et de Cocoa.


----------



## Didier Guillion (12 Août 2007)

Eul Mulot a dit:


> Je comprend pas trop ton "entêtement" à vouloir manger du C, quand on voit la simplicité et la logique de l'Objective-C et de Cocoa.



Peut etre simplement un probleme de portabilité, le C ca marche partout... 

Cordialement


----------



## Sékiltoyai (12 Août 2007)

Trop tard, j'ai compris la subtilité de Carbon, donc c'est déjà parti.

Par contre, j'ai regardé un peu le principe de l'objective-C, ca me paraît original mais intéressant (parce que c'est une conception plutôt atypique de l'objet). Je regarderais plus en détails un de ces jours (vous avez vous, tout n'est pas perdu  )

Sinon, le C, j'aime bien en manger, c'est un de mes langages préférés (avec l'assembleur  ).

Au passage, merci pour les liens, j'ai mis du temps à comprendre mais déjà, si on cherche au bon endroit, c'est plus simple


----------



## Sékiltoyai (12 Août 2007)

Didier Guillion a dit:


> Peut etre simplement un probleme de portabilité, le C ca marche partout...


Bah, vu que je développe pour Carbon, niveau portabilité&#8230; Mais c'est vrai qu'apprendre un langage portable, c'est pas plus mal.
Mais c'est aussi que l'année qui va venir, on va nous apprendre le C en cours, donc je m'entraine déjà un peu avant aussi


----------



## Didier Guillion (12 Août 2007)

Sékiltoyai a dit:


> Bah, vu que je développe pour Carbon, niveau portabilité Mais c'est vrai qu'apprendre un langage portable, c'est pas plus mal.
> Mais c'est aussi que l'année qui va venir, on va nous apprendre le C en cours, donc je m'entraine déjà un peu avant aussi



Le truc c'est de bien séparer au niveau de ton code ce qui est "C pur" et ce qui est spécifique à ton environnement de développement. Sachant qu'Apple mets régulièrement ses technologies à la poubelle ("deprecated" comme ils disent) c'est un bon gage de perennité.
Bonne chance et n'hésite pas à poser des questions.

Cordialement


----------



## Sékiltoyai (12 Août 2007)

Didier Guillion a dit:


> Bonne chance et n'hésite pas à poser des questions.


Merci.
Pour les questions, je viendrais peut être en poser quelques unes si je ne trouve pas mes réponses dans la doc ou la référence mais je n'aime pas poser les questions sans avoir auparavant cherché, donc bon&#8230; (Et puis bon, dans mon école, on ne nous habitue pas à ce que tout soit servi sur un plateau  )


----------



## Mala (13 Août 2007)

Obj-C est très certainement l'un des langages les plus élégant que je connaisse.

Je doute que Carbon soit un bon choix. Ce n'est pas pour rien qu'Apple pousse depuis longue date à passer vers Cocoa/Obj-C. Carbon, n'en déplaise à certains, est voué à disparaître (tiens pas de support du 64 bits pour Carbon dans Léopard. C'est étrange...). Il reste surtout présent pour des raisons de compatibilité ascendante et pour combler les quelques manques du framework Cocoa (mais pour combien de temps?).

Après carbon c'est un choix de facilité pour un dev C mais il ne faudra pas venir pleurer parce que les API de Carbon passeront "Deprecated" les une après les autres. 

PS: depuis quand l'Obj-C n'est pas portable? Il ne faut pas confondre un langage et les librairies/frameworks qu'on peut lui associer.


----------



## Sékiltoyai (14 Août 2007)

Mala a dit:


> Après carbon c'est un choix de facilité pour un dev C mais il ne faudra pas venir pleurer parce que les API de Carbon passeront "Deprecated" les une après les autres.


A priori, l'application que je compte faire est très petite, et ne sera que peu ou pas distribuée.

Mais au passage, on peut tout de même développer en C++ avec Cocoa plutôt qu'en Obj-C ?


----------



## Didier Guillion (14 Août 2007)

Mala a dit:


> Après carbon c'est un choix de facilité pour un dev C mais il ne faudra pas venir pleurer parce que les API de Carbon passeront "Deprecated" les une après les autres.




QuickDraw est marqué "deprecated", combien d'années avant que Quartz ne le soit aussi ?
Personnellement, Apple a perdu ma confiance depuis longtemps. Je m'amuse avec leur techno dans des freewares, mais sinon, dans mes autres programmes, je prends beaucoup de recul.

Tiens, pas plus tard que la semaine derniere, Apple a fermé iMovie aux extensions tierces. Imagine les boites qui vivaient de cela... 

Cordialement


----------



## Eul Mulot (14 Août 2007)

Sékiltoyai a dit:


> A priori, l'application que je compte faire est très petite, et ne sera que peu ou pas distribuée.
> 
> Mais au passage, on peut tout de même développer en C++ avec Cocoa plutôt qu'en Obj-C ?



Oui, il suffit d'utiliser des .mm au lieu de .m


----------



## Sékiltoyai (14 Août 2007)

Didier Guillion a dit:


> Tiens, pas plus tard que la semaine derniere, Apple a fermé iMovie aux extensions tierces. Imagine les boites qui vivaient de cela...


Ce n'est pas une façon de fonctionner perenne mais si dans 10 ou 20 ans, Apple n'est plus qu'un mauvais souvenir pour Microsoft, et un bon pour les fans, alors c'est leur problème&#8230;


----------



## Mala (14 Août 2007)

[Mode Hors Sujet]


Didier Guillion a dit:


> QuickDraw est marqué "deprecated", combien d'années avant que Quartz ne le soit aussi ?


A un moment donné, il faut bien faire des choix. QuickDraw a vécu. Apple ne l'a pas supprimé par plaisir d'ennuyer les développeurs mais parce qu'il est obsolète face aux besoins à venir (résolution indépendence par exemple). 

Maintenant, on peut aussi prendre la réflexion à l'envers. J'ai longtemps développé sur PC et je ne compte plus le nombre d'années où j'ai pesté contre des API telles que AVICap pour la capture de flux vidéo sous Windows. Un véritable immondice "Made in Microsoft". Et que faisais la firme de Redmond? ...rien. Aujourd'hui, Apple a décidé de remettre à plat QuickDraw et QuickTime. Est-ce un mal quand on voit la lourdeur de codage actuelle de ces API?

Tout ça pour dire que même si je suis toujours un peu agacé comme toi, il faut bien avouer qu'il y a toujours un intérêt caché qui profite à terme aux développeurs.



Didier Guillion a dit:


> Tiens, pas plus tard que la semaine derniere, Apple a fermé iMovie aux extensions tierces. Imagine les boites qui vivaient de cela...


Je viens de recevoir iLife et iWork. Concernant iMovie 08, je serais plus réservé que les annonces récentes qu'on a vu ici et là. Les plugins spécifiques à iMovie sont maintenant remplacés par des fichiers Quartz Composer (qtz et  cikernel). Peut-on faire plus standardisé et accessible pour ce type de Plugin? S'il n'y pour le moment pas encore d'ouverture pour une intégration tierce, je pense qu'il est urgent d'attendre avant de crier au loup. La suite iLife n'est manifestement pas achevée. Il n'y a qu'à voir le nombre de régressions fonctionnelles d'iMovie 08 par rapport à son prédécesseur. Raison de cause à effet avec le retard de Léopard? L'avenir nous le dira.
[Fin Mode Hors Sujet]

Pour en revenir au choix Obj-C ou Carbon. Comme je l'ai dis avant. Le choix de Carbon doit se faire en connaissance de cause. Et aujourd'hui Carbon va tendre à devenir de plus en plus obsolète.



Eul Mulot a dit:


> Oui, il suffit d'utiliser des .mm au lieu de .m


En renommant les fichiers sous Xcode, le compilateur va basculer en compilation Objective-C++ qui permet de mixer du code C++ dans du code Objective-C et vice et versa. Les limites principales:
- On ne peut pas faire d'héritage entre une classe Obj-C et une classe C++. Cela est assez logique en soit.
- L'interaction avec l'interface graphique reste en Obj-C. Il n'est donc pas possible de faire du 100% C++.


----------



## Sékiltoyai (14 Août 2007)

Mala a dit:


> je pense qu'il est urgent d'attendre


C'est joli ça ! C'est une magnifique antithèse  



Mala a dit:


> En renommant les fichiers sous Xcode, le compilateur va basculer en compilation Objective-C++ qui permet de mixer du code C++ dans du code Objective-C et vice et versa. Les limites principales:
> - On ne peut pas faire d'héritage entre une classe Obj-C et une classe C++. Cela est assez logique en soit.
> - L'interaction avec l'interface graphique reste en Obj-C. Il n'est donc pas possible de faire du 100% C++.


D'accord, ça a le mérite d'être clair&#8230;


----------



## p4bl0 (14 Août 2007)

Eul Mulot a dit:


> Oui, il suffit d'utiliser des .mm au lieu de .m


&#199;a ne sera pas du C++ simple, il y aura forc&#233;ment de l'Objective-C (c'est pour &#231;a que les fichier .mm ou .M sont des fichier Objective-C++ )


EDIT : Ok... ultra-toasted compl&#232;tement carbonis&#233; m&#234;me plus mangeable


----------



## Didier Guillion (14 Août 2007)

Mala a dit:


> [Mode Hors Sujet]
> 
> A un moment donné, il faut bien faire des choix. QuickDraw a vécu. Apple ne l'a pas supprimé par plaisir d'ennuyer les développeurs mais parce qu'il est obsolète face aux besoins à venir (résolution indépendence par exemple).
> 
> ...



Désolé je te cite partiellement. Quelle raison peut avoir Apple d'abandonner QuickDraw ? Ils ont les sources, il leur suffit de recompiler. Meme si ce n'est pas 64bits qui verra la différence ? Non, la seule explication est qu'ils veulent "pousser les developpeurs aux fesses" vers leurs nouvelles technologies et même s'il y a des pertes en route ils s'en moquent profondément. Le probleme reste que ces nouvelles technos, elles apparaissent tout les 5 ans et disparaissent ensuite, Apple devient le MacDo des technos, vite promues comme indispensable, vite mises à la poubelle. On se fait avoir, une fois, deux fois, après on se casse vers un systeme stable, comme Windows, (pourri d'accord mais stable depuis Windows 95 au niveau des API).
Apple devient elle une boite a gadget pour bobo ? C'est l'impression qu'elle me donne.

Et puis entre nous, pour des besoins basiques, QuickDraw reste simple, bien plus simple a utiliser que Quartz et, rapide....

Et toujours entre nous, j'ai reecrit le QuickDraw, j'ai les sources, si Apple nous mets une fois de plus le couteau sous la gorge, j'ai qu'a recompiler... 

Cordialement


----------

