• [^] # Re: gcc 3.3 est sorti

    Posté par . En réponse à la dépêche GCC 3.3 est sorti. Évalué à 10.

    Oui on est quelques-uns à utiliser Objective-C ... :-)
    Objective-C, comme son nom l'indique, est un langage orienté objet basé sur C -- comme C++ .

    La différence réside dans l'approche; C++ n'est pas plus que ça orienté objet, c'est juste un des multiples paradigmes de programmation qu'il supporte.
    C++ a fait le choix de proposer un maximum de possibilitées dans le langage, mais en même temps essaie de ne pas pénaliser quelqu'un qui n'utiliserait qu'une partie de ces possibilitées (i.e., on ne paie que pour ce qu'on utilise).

    Accessoirement le modèle objet de C++ est plus inspiré de Simula que de Smalltalk, c'est à dire qu'il privilégie la compilation statique au runtime dynamique.

    Objective-C par contre a comme seul but de fournir des mécanismes de programmation orientée objet par dessus le langage C. Il n'ajoute ainsi que très peu de choses par rapport à C, mais ces choses sont fondamentales et permettent de changer complètement de paradigme et d'utiliser vraiment la programmation orientée objet. En cela il est différent de C++, qui ajoute énormément de choses. Personnellement, je trouve cette approche plus élégante car plus concise, mais ça dépends du but visé. Comme je l'ai dit, C++ n'a pas que la POO comme objectif.

    L'approche OO d'Objective-C est très inspiré par Smalltalk, et il dispose ainsi d'un runtime chargé de résoudre les envois de messages entre objets (ce qui du coup rends l'envoi de messages entre objets distants, sur des machines ou réseaux différents, absolument trivial). Objective-C est bien sûr compilé, mais ce runtime permets des choses particulièrement intéressantes, comme l'ajout pendant l'exécution de méthodes à des classes d'objets (dont on n'est même pas forcé d'avoir le source), voir la modification de la hièrarchie des objets. Le runtime permets également quelques possibilitées d'introspection, permettant de demander ainsi à un objet son type, s'il réponds à une méthode ou un protocole, etc. On peut aussi définir une méthode répondant à tout message envoyé (même si non défini), et éventuellement forwarder ces messages vers d'autres objets ...

    Bref, Objective-C a une nature dynamique, qui est particulièrement bienvenue quand on code -- au moins pour des logiciels avec interface graphique.

    Sinon, oui, un des principaux intérêts d'Objective-C est la disponibilité du framework OpenStep, dont l'implémentation sous Mac OS X (Cocoa) ou celle sous Unix/Windows/etc. (GNUstep) permettent de programmer de façon particulièrement élégante et efficace (enfin, c'est mon avis :).

    Bref selon moi, Objective-C est un langage élégant et souple, qui vaut le coup de s'y intéresser. Et OpenStep est le meilleur framework de programmation que je connaisse, point barre.

    Tu peux trouver des documentations sur GNUstep/Objective-C sur cette page : http://www.roard.com/docs/(...) , dont les articles parus jusqu'à présent dans Linux Mag. D'ailleurs le prochain article ne sera malheureusement pas pour Juin, mais pour Juillet :-/ (rendu trop tard ...)