43 votes

Pourquoi Objective-C n'est-il pas très populaire en dehors de la communauté Apple ?

Je sais que la communauté Apple - y compris les développeurs Mac et iPhone - utilisent principalement Objective-C comme langage de développement. Mais il semble que peu de gens utilisent l'Objective-C en dehors de la communauté Apple, comme dans le monde Windows ou Linux.

Quelles sont les raisons possibles pour lesquelles Objective-C n'est pas particulièrement populaire en dehors de la communauté Apple ?

22voto

Dave S. Points 16

Une autre façon de penser à cette question pourrait être : pourquoi le C++, plutôt que l'Objective-C, est-il devenu le "C orienté objet" ?

J'ai appris le C++ en 1991, et je me souviens que le C++ semblait être le truc à la mode alors que l'Objective-C était ce petit langage bizarre que personne (à part NeXT) ne voulait utiliser. J'ai essayé de me rappeler pourquoi, et je pense que cela se résume à 4 choses (5, si on inclut le fait que C++ ait AT&T derrière lui) :

  1. Caractéristiques : Le C++ disposait, déjà à l'époque, d'un ensemble de fonctionnalités bien plus riche que l'Objective-C.
  2. Syntaxe : La syntaxe d'Objective-C est bien plus différente de celle du C que celle du C++.
  3. Performance : Stroustrup s'est attaché à rendre les fonctionnalités du C++ facilement transposables au C, de sorte que (en théorie !) l'utilisation du C++ n'entraîne aucune pénalité en termes de performances. Et avec une utilisation judicieuse du mot-clé "inline", on pouvait même obtenir de meilleures performances avec le C++ qu'avec le C. Même aujourd'hui, il est hors de question que j'utilise l'Objective-C dans un projet où les performances sont critiques.
  4. Le style : Relativement fort, le typage statique était à la mode (pour de bonnes raisons).

Ainsi, par rapport à l'Objective-C, le C++ du début des années 90 offrait davantage de fonctionnalités, avec une pénalité de performance moindre, et une syntaxe à la fois à la mode et plus familière que celle de l'Objective-C.

20voto

Williham Totland Points 15798

C'est une question compliquée, mais en résumé, je pense que la réponse se trouve probablement dans l'âge des systèmes d'exploitation et leurs racines.

  • UNIX es C, alors c'est ça.

  • Linux est envisagé comme un clone d'Unix (d'accord, c'est légèrement inexact, mais assez proche pour cette discussion) et en tant que tel, il est plus ou moins écrit en C.

  • Windows est un vieux et un système d'exploitation qui est construit en empilant hack sur hack en remontant jusqu'à Windows 3.1. Le C++ est fortement favorisé, et dans .NET, le C#.

    Ce nouvel afflux est bien sûr basé sur l'agenda de Microsoft concernant cette plateforme.

  • Mac OS X, quant à lui, est un système d'exploitation (comparativement) jeune, et ses nouvelles parties (bien qu'elles soient encore assez anciennes, étant héritées de NeXT et autres) sont toutes basées sur Objective-C parce que, "Hé ! pourquoi pas ?".

    Comme la rétrocompatibilité ne faisait pas partie de la liste des priorités de Mac OS X 10.0, la Toolbox et Carbon, basés sur C/C++, n'ont pas été retenus, et l'ensemble du système d'exploitation a plus ou moins été conçu comme une version remaniée de NeXTStep.

Le problème avec Obj-C, c'est que la puissance du langage provient principalement des cadres de travail importants, du niveau généralement élevé d'intégration dans le système, etc. Il est presque impossible d'obtenir un bon jive comme celui-là sans une rupture nette de la rétrocompatibilité et, en tant que tel, il n'aurait jamais vraiment eu une chance sur une plate-forme qui n'aurait pas osé le faire. Apple, avec une petite (à l'époque) base d'utilisateurs dévoués, a osé le faire et a trouvé l'or.

Microsoft s'y essaie actuellement, mais, à mon humble avis, elle échoue. ("Échouer ?! .NET !? COMMENT OSEZ-VOUS ? Avec 4 révisions majeures en 8 ans environ, ils font plus de croissance que de maturation ; ce qui peut être une bonne chose, s'ils peuvent retourner la situation).

Editar: Il existe quelques projets qui tentent de porter OpenStep sur Linux, mais ils sont un peu lourds et difficiles à utiliser ; il existe également des projets plus petits sur des NS/OS-likes avec des domaines de problèmes plus petits, mais c'est un travail difficile.

17voto

nevan king Points 46410

J'étais récemment dans une librairie en train de lire Les maîtres de la programmation où les créateurs de langages de programmation parlent de leurs créations. Dans un chapitre consacré à l'Objective-C, on demandait à Tom Love (l'un des créateurs de l'Objective-C, avec Brad Cox) pourquoi le C++ était allé si loin, alors que l'Objective-C ne l'était pas :

Pourquoi pensez-vous que le C++ a été utilisé plus fréquemment que l'Objective-C ?

Tom : Il y avait le nom AT&T derrière.

Juste ça ?

Tom : Je pense que oui.

Que pensez-vous de l'Objective-C aujourd'hui ?

Tom : Il existe toujours. Que dites-vous de ça ?

12voto

jbcreix Points 2383

Objectif-C n'est rien d'autre qu'une fine couche (un peu plus épaisse avec les 2.0 ) de sucre syntaxique pour le passage de messages au-dessus de la norme C . Même l'orientation objet la plus élémentaire est fournie par la bibliothèque d'exécution, qui a longtemps été propriétaire. L'inertie est un facteur important dans l'utilisation des langues.

Il brille surtout sur GUIs mais les seules boîtes à outils qui le supportent sont les suivantes Apple et la plupart des inconnus et des joueurs de rattrapage. GNUStep .

Bien qu'il y ait une certaine valeur pour Objectif-C à l'extérieur de GUIs et je pense que les gens utiliseraient les extensions si elles étaient importées. C Même dans le code du système, il y a peu de raisons de le choisir par rapport à d'autres solutions, lorsque peu de votre système est censé fonctionner avec lui.

4voto

Carl Smotricz Points 36400

De mémoire, je crois que le C++ est plus ancien que l'Objective-C, et pas seulement pour cette raison, il a une base d'utilisateurs beaucoup plus importante. Partout où OC a pu arriver, le C++ était déjà là :)

De plus, le C++ a plus de fonctionnalités. Beaucoup de gens sont impressionnés par de nombreuses fonctionnalités. Et il a fait l'objet de plus de recherche et de développement... et ainsi de suite. Essentiellement, le momentum.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X