Cocoa.fr

Developpement Mac, Objective-C, Cocoa et Swift

Tag

c

18 article(s) associe(s) a ce tag.

14 October 2009

Grand Central Dispatch, qu’est ce que ça apporte ?

Une des grandes nouveautés de Snow Leopard, est l’arrivé de Grand Central Dispatch qui permet la mise en place des taches concurrentes sur plusieurs coeurs ou plusieurs processeurs. Mais la programmation concurrente implique un paradigme différents de ce que l’on a l’habitude de voir avec les langages objets ou impératifs.

Si vous voulez apprendre à utiliser Grand Central Dispatch (GCD), je vous invite à découvrir les ressources suivante pour une prise en main rapide :

Et si vous voulez aller plus loin, l’Apple Developer Connection propose les ressources suivantes :

Sachez en plus que Apple mis le code de GDC sous licence Open source sous le nom de libdispatch, et l’on peut noter qu’un port est d’ores et déjà disponible pour FreeBSD.

19 February 2009

Langage C et Xcode

Puisque la question fut posée maintes fois: “Comment programme-t-on en langage C sous XCode”.

Créer un projet (pour réunir tous les fichiers)

  • Aller dans le menu File > New Project > Command Line Utility > Standard Tool. Puis cliquer sur Choose.
  • Yapuka éditer le fichier main.c.

Lancer le programme

Pour lancer le programme, direction le menu Build > Build & Run.

Comme il est souvent intéressant de voir du texte s’afficher, il est de bon ton d’ouvrir la Console, par le menu Run > Console.

Y’a qu’à demander.

09 December 2008

OpenCL 1.0 est disponible

La version 1.0 de la spécification de OpenCL est sorti le 5 décembre, elle définit :

  • un sous-ensemble du langage C99 avec des extentions pour gérer le parallélisme
  • une API pour gérer les données et les tâches entre plusieurs processeurs hétérogène.
  • une interopérabilité avec OpenGL, OpenGL ES et d’autres API graphiques

Pour aller plus loin et découvrir OpenCL, vous pouvez utilisez les liens suivants :

La grande interrogation est maintenant de savoir l’API que va proposer Apple pour gérer tout ça en Objective-C.

12 November 2008

Sortie de LLVM 2.4

La version 2.4 de LLVM, le projet permettant de créer des compilateur auquel Apple attache beaucoup d’importance (voir LLVM : Le futur compilateur d’Apple ? et 2008 LLVM Developers’ Meeting), vient de sortir. Parmi les nouveautés il y a :

  • La gestion des Blocks
  • Beaucoup d’évolutions sur Clang qui devrait permettre à terme de proposer une remplacement à GCC. Il permet déjà à l’heure actuelle de compiler des projets comme SQLite, Lua ou ClamAV ainsi qu’une grande partie des exemples de code Obejctive-C de la documentation Apple.
  • Diverses optimisations concernant la vitesse de compilation.

Pour plus d’informations, vous pouvez lire :

14 October 2008

Présentation de Cocoa

Cet article est très important pour Cocoa.fr, car il s’agit du premier article de Renaud Pradenc, un nouveau contributeur sur le blog.

Qu’est ce que Cocoa ?

Du point de vue du programmeurs, Cocoa est un ensemble de classes, écrites en langage Objective-C. Certains vous diront que Cocoa sert à créer des interfaces graphiques. Pas seulement! Cocoa permet de créer des applications de tout type, même en ligne de commande. Elle est en fait constituée de trois parties.

Cocoa = Foundation + AppKit + CoreData

Foundation est un ensemble de classes liées aux bas niveaux: gestion des types de données (chaînes, dates, tableaux, dictionnaires…), des fichiers, des connections réseau, etc.

AppKit est la partie plus connue, dédiée à la gestion des interfaces utilisateur. C’est là que se trouvent les boutons, menus et fenêtres.

CoreData est la plus récente, puisqu’elle fut introduite avec le système 10.4. Elle sert à définir une base de données pour gérer la rétention des données.

Voilà ce qu’est Cocoa. Ni plus, ni moins. Il existe d’autres bibliothèques de classes écrites en Objective-C : je pense au récent QT kit, par exemple, ou au wrapper pour mySQL. Il faudra aussi parfois utiliser les API écrites en langage C, c’est en gros ce que l’on nomme Carbon par chez nous. Ce n’est pas sale !

Interface Builder

On pourrait dire que cette application fait partie intégrante de Cocoa, puisqu’elle sert à générer les fichiers .nib qui décrivent l’interface graphique. Quand vous découvrirez le principe des targets/actions, la proximité de Cocoa et Interface Builder vous seront évidentes.

À ce propos: Cocoa est faite pour utiliser les .nib. Il faut les utiliser, si, si ! Beaucoup de nouveaux venus (souvent formés à l’école Java et cette horreur de Swing) veulent absolument coder l’interface graphique. Sachez que l’on peut. Mais sérieusement: coder les interfaces à la mano, c’est la préhistoire; même sur mon Atari, j’utilisais un éditeur de ressources. Préférez les .nib, c’est beaucoup plus simple, beaucoup plus flexible, beaucoup moins long.

Et au niveau du langage ?

Je ne vais pas y aller par quatre chemin: Cocoa fut écrite en Objective-C, c’est le langage le plus adapté à Cocoa. Il existe ce qu’on appelle des bridges qui permettent d’interfacer Cocoa avec d’autres langages: Java, Python, Ruby, Eiffel, et un tas d’autres. Je ne peux toutefois vous conseiller des les utiliser sans avoir une connaissance de base du couple Cocoa/Objective-C. Cocoa s’appuie sur les mécanismes et conventions de ce langage, et utiliser ces bridges revient à penser en Objective-C et écrire avec la syntaxe de votre langage habituel.

Apple promet qu’on peut apprendre Objective-C en une demi-journée (quand on connaît le langage C et un langage objet): je peux témoigner que c’est vrai. Il ne reste plus ensuite qu’à apprendre Cocoa… ce qui vous prendra des mois ! Ne focalisez donc pas trop sur le langage. Objective-C a certes une syntaxe particulière — faite de crochets dans tous les sens — mais je vous promets qu’elle n’est pas si mauvaise que ça. J’y reviendrai dans un prochain article.

En attendant, n’hésitez pas à laisser vos questions et remarques dans les commentaires.

26 September 2008

GTK+ sur OS X

Si vous voulez développer sur Mac avec le framework GTK+, vous pouvez installez GTK+ on OSX. Cela installera les différentes librairies nécessaires, un framework ainsi qu’un nouveau type de projet sous XCode (GTK+ Application).

Pour ce qui ne connaîtrais pas GTK+, il s’agit de l’équivalent sous Linux et plus particulièrement Gnome de Quartz sous Mac OS X.

03 September 2008

Les “blocks” dans C grâce à LLVM/Clang

Depuis quelques jours, on entend pas mal parler de l’ajout des blocks dans le compilateur Clang de LLVM, projet dans lequel Apple est très investi. Voici quelques articles pour ceux qui voudrait en savoir plus :

20 August 2008

nVidia Cuda 2.0 disponible

nVidia vient de rendre disponible la version 2.0 du SDK Cuda pour MAC OS X. Vous pouvez donc dès maintenant télécharger nVidia Cuda SDK 2.0. Il contient :

  • Le compilateur C nvcc
  • Les librairies CUDA FFT et BLAS pour le GPU
  • Le profileur
  • Le débuggeur gdb pour le GPU
  • Le driver d’éxecution CUDA (inclus dans le driver nVidia standard)
  • Le manuel de programmation CUDA

16 August 2008

2008 LLVM Developers’ Meeting

Le 1er août a eux lieu l’édition 2008 de la rencontre des développeurs LLVM (Low Level Virtual Machine) sur le campus d’Apple.

Les vidéos et les slides sont maintenant disponible sur la page http://llvm.org/devmtg/2008-08/. Une bonne partie des présentations viennent d’employés d’Apple, ce qui permettre de découvrir les choses à venir dans le monde du développement Mac. Il s’agit tout particulièrement des présentations suivantes :

  • Clang Internals (slides) - Clang est le nouveau front-end C/ObjC/C++ actuellement en développement du projet LLVM qui pourrait permettre de remplacer GCC. Cette présentation décris l’état actuel et l’architecture du projet, ainsi que le fonctionnement de l’AST (Abstract Syntax Trees).
  • Finding Bugs with the Clang Static Analyzer (slides) qui présente un analyseur statique du code source qui permet de découvrir plus de problème lors de la compilation que les outils actuels.

31 July 2008

Snippets pour Cocoa

Les snippets sont des extraits de code, le plus souvent court, montrant comment résoudre en problème particulier en développement. Il s’agit par exemple de savoir comment :

Voici donc quelques sites proposant des snippets pour Cocoa et le développement Mac de manière général :

21 June 2008

LLVM : Le futur compilateur d’Apple ?

Tous les projets d’Apple ne sont pas secrets, après l’utilisation de SproutCore dans les galeries .Mac, AppleInsider nous présente ici LLVM (Low Level Virtual Machine) et l’utilisation qu’en fait Apple. Il s’agit par exemple :

  • De l’histoire entre Apple et LLVM
  • De l’utilisation conjointement à GCC et des gains possibles de performance par rapport à GCC seul
  • De l’utilisation des fonctions de compilation JIT dans la pile OpenGL de Léopard
  • Et surtout pour finir de son avenir certainement conjointement avec OpenCL.

Pour découvrir tout ça, vous pouvez lire l’article Apple’s other open secret: the LLVM Complier

17 June 2008

Création du groupe de travail OpenCL

The Khronos Group, un groupe chargé de la normalisation dans le domaine des médias, qui s’occupe entre autre de OpenGL, vient de créer un nouveau groupe de travail concernant OpenCL. Le communiqué de presse nous permet donc d’en savoir un peu plus sur OpenCL :

  • Les membres : 3Dlabs, AMD, Apple, ARM, Codeplay, Ericsson, Freescale, Graphic Remedy, IBM, Imagination Technologies, Intel, Nokia, NVIDIA, Motorola, QNX, Qualcomm, Samsung, Seaweed, TI, and Umeå University
  • Permettre d’utiliser au mieux les architectures avec plusieurs GPU et des CPU multi-coeurs (many-core GPUs and multi-core CPUs)
  • De permettre d’utiliser la puissance de GPU et CPU à travers un langage proche du C (enable any application to tap into the vast gigaflops of GPU and CPU resources through an approachable C-based language)

Il n’y a pas encore de documents concernant OpenCL sur le site (en dehors du communiqué de presse), mais il sera intéressant de jeter de temps en temps un oeil sur ce site pour découvrir ce que permettra ce nouveau langage.

11 June 2008

En savoir plus sur OpenCL

Si l’on sait une chose sur le langage OpenCL (qui sera disponible dans OS X 10.6), c’est que l’on ne sait pas grand chose le concernant. En dehors de la petite description sur le site d’Apple, c’est plutôt flou. Mais voici quelques éléments sur OpenCL :

Il faudra certainement attendre un peu pour avoir plus d’informations dans l’Apple Developer Connection.

04 April 2008

La différence entre Cocoa, Carbon et Objective-C

Il n’est pas toujours facile lorsque l’on débute dans développement sous Mac OS X de bien faire la différence en Cocoa, Carbon et Objective-C. Voici donc la définition de chacun :

  • Objective-C est une langage de développement que l’on peut voir comme le langage C avec la gestion de la programmation orienté-objet. Il fonctionne par envoie de message entre les objets, et ressemble donc beaucoup plus à ce niveau là à Smalltalk qu’a C++. Pour une description détailler, la page wikipedia sur Objective-C vous permettra d’aller plus loin.
  • Cocoa est un framework de développement, c’est à dire un ensemble d’objet et de fonctions permettant de faciliter la vie du développeur. Il est écrit pour et en Objective-C.
  • Carbon est lui aussi un framework de développement mais il est conçu pour être utilisé avec C et C++ principalement. On peut le voir “en gros”, comme un framework de transition entre le développement Mac OS 9 et le développement avec Cocoa.

Pour prendre un exemple d’actualité, Photoshop CS 3 et la future version 4 sont écrit avec Carbon, mais il est prévu pour la version CS 5 de le passer sous Cocoa.