Fermer le menu
 

Apple développerait-elle un nouveau langage ?

Anthony Nelzin-... | | 18:30 |  61
Jesper de Waffle en est sûr : Apple prépare un nouveau langage de programmation, conçu pour dépasser Objective-C. « Après avoir vu les vidéos […] de la WWDC 2010 […] je crois qu'Apple travaille à un nouveau langage pour dépasser Objective-C », écrit-il.

Objective-C a été constamment amélioré ces dernières années, mais il doit porter l'héritage du code produit au fil du temps, et du fait qu'il est une extension du C. Si Apple veut donc aller plus loin, elle se doit de redéfinir un langage.

Elle possède l'expérience de technologies pointues lui permettant de créer un langage moderne, notamment LLVM/Clang. Elle pourrait développer un langage suffisamment bas-niveau pour être aussi performant que l'Objective-C ou le C, tout en en profitant pour définir une nouvelle syntaxe.

Voilà qui permettrait aussi de forcer les développeurs à prendre de nouvelles habitudes, notamment en termes de gestion de la mémoire, où deux écoles s'affrontent, entre ceux qui préfèrent gérer la mémoire manuellement, et ceux qui se reposent entièrement sur le garbage collector. Le passage progressif au parallélisme comble le principal défaut du garbage collector, son impact sur les performances, mais l'utilisation de ce dernier pose toujours des questions sur un OS comme iOS, où le garbage collector ne fait pas assez dans le détail.

Apple pourrait bien forcer la main aux développeurs sur ce point précis, mais d'ailleurs sur l'adoption de ce nouveau langage aussi : si l'Objective-C pourrait rester dans les parages pendant un temps, il suffit de faire de ce nouveau langage le langage par défaut d'iOS pour que près de 50.000 développeurs y passent, pour ne pas descendre du TGV App Store.

Sur le même sujet :
- En route vers Mac OS XI ?
Catégories: 
Tags : 

Les derniers dossiers

Ailleurs sur le Web


61 Commentaires

avatar NicolasO 08/07/2010 - 13:50

@marc_os: Cette histore de pointeur c'est pas un peu un argument contre Objective-C? Il faudrait pas sortir un peu du mode de pensee C? 99% des progammes n'ont pas besoin de pointeurs mais de leur equivalent surs : references et tableaux. Les pointeurs sont sources de bug et de programme dont on ne sait pas ce qu'ils font. En echange de (rares et petites) ameliorations de performances. ((int *) p ++) -- == p ?

avatar marc_os 08/07/2010 - 14:22

Cette collègue m'a montré qu'elle pouvait très bien programmer en Obj-C sans maîtriser les pointeurs. Enfin, dans certaines limites. Mais je sais, C et Unix c'est dépassé.... Si un informaticien professionnel n'est pas capable de comprendre et maîtriser ce qu'est un pointeur, qu'il change de métier, car je doute fortement de la qualité des logiciels qu'il peut produire. Mais bon, c'est sûr, quand on "apprend" quasiment exclusivement en faisant des recherches sur Google...

avatar NicolasO 08/07/2010 - 15:50

Il y a savoir comprendre et maitriser un pointeur et devoir s'en servir au quotidien. Il est vrai qu'Objective-C protege contre beaucoup d'entre eux. Je pense que le pointeur, au meme titre que l'assembleur, appartient aux choses qu'un bon dev doit comprendre pour savoir comment son code va s'executer et qu'il doit etre capable, si necessaire, de savoir les manipuler. Ca ne doit pas constituer son quotidien. Il doit s'en tenir le plus possible eloigner. En l'occurence, le C fait une erreur conceptuelle enorme: melanger pointeur et tableau n'est pas une bonne idee. (Ce n'est pas la meme idee, meme s'ils sont implantes pareils.) Et une autre moins pire: associer le fait de ne pas passer par copie avec le fait d'utiliser un pointeur. Meme les references en C++ sont mieux que cela.


avatar lol51 08/07/2010 - 19:21

NicolasO > Ce n'est pas une erreur conceptuelle, c'est la simple traduction du language assembleur. Le C permet d'accéder à la mémoire, or un tableau n'est rien d'autre qu'une zone de mémoire, je ne vois pas ce qu'il y a de choquant là dedans. Une fois que l'on a bien compris le mécanisme sous-jacent (qu'est-ce que va donner ma ligne de code en assembleur ?), la syntaxe est très claire sans aucune ambiguité. Il en faut pas voir ça comme une contrainte mais comme une liberté d'écriture, c'est d'ailleurs cette liberté d'écriture qui en fait un langage considéré comme "puissant". Pour avoir eu des cours avec un enseignent chercheur mordu du C (et du C++) en cours d'imagerie numérique, je peux t'assurer que la "confusion" (même si je ne vois pas ça comme ça) en vaut la chandelle, car quand on arrive à jouer sur ces points là, on peut s'affranchir d'une quantité de code inutile qui feront augmenter de manière significative la performance d'une application. Alors après, évidemment programmer un logiciel de stock de patate en C est complètement inutile...

avatar NicolasO 08/07/2010 - 20:31

@lol51: Je parle d'erreur conceptuel dans le cas general, car on n'a pas de manipuler l'assembleur a la main. Le C ne te fait pas pousser les arguments sur la pile lors d'un appel de fonction... Je suis bien d'accord que pour quelques applications (jeu, graphisme, noyau OS...) c'est bien d'etre a ce niveau de detail. C'est bien pour le C, du coup. Mais Objective-C langage de haut niveau se traine le C comme boulet. D'autre langage autorise a ecrire du C ou de l'assembleur quand on veut mais n'oblige pas a penser en terme de pointeur.

avatar marc_os 09/07/2010 - 10:39

@ NicolasO : Mais pourquoi donc considères-tu le C comme un boulet ? En Obj-C, tu n'est pas obligé de vraiment comprendre les pointeurs, si c'est ça qui te chagrine. Tu peux même ne jamais les utiliser directement, et ne considérer comme usage que les cas où une API que tu utilises prend un pointeur en paramètre. Comme le fait cette ex-collègue qui avant l'Obj-C ne connaissait que l'AS. Qu'y a-t-il de difficile conceptuellement à se cantonner à la règle simple : Si une API veut qu'on lui passe un pointeur, et bien on lui en passe un ? (Ce qui revient à la vision du "passage par référence" de VB ou php). C'est si difficile que ça ? Qui peut le plus, peut le moins. Le moins décrit ci-dessus, cela n'empêchera pas ceux qui les maîtrisent d'utiliser les pointeurs à bon escient.

avatar dazz 06/07/2010 - 18:37

ouais ben ce serait une bonne nouvelle :) il reste que ca finalement a Apple pour finir de "révolutioner" l'informatique, un langage 100% Apple, compatible a rien, nouvelle styntaxe moins abscon plus lisible. Steve jobs pourra alors prendre sa retraite, Apple aura tout changé :)

avatar Yohmi 06/07/2010 - 18:37

Ce serait un coup de poker risqué, car beaucoup de nouveaux venus ne seront peut-être pas nécessairement enclins à apprendre un nouveau langage alors qu’ils viennent à peine de se mettre à l’Objective-C. Et Google (+ Adobe) en profiterait probablement pour faire sa pub en mettant en avant le fait que sur Android (ou Flash), vous n’avez pas à sans-cesse réapprendre un langage… Mais je suppose que c’est bien que ça évolue, ces langages sont si vieux, il doit y avoir des routines que l’on peut éviter maintenant… enfin je dis ça, je n’y connais rien du tout en code ^^

avatar eliotus 06/07/2010 - 18:41

Ah un moment en lisant le titre j'ai cru que c'était une allusion a la lettre au sujet de l'iPhone 4 sans queue ni tête mais non ;-) Je sais où est la sortie merci ;-)

avatar hok 06/07/2010 - 18:42

Ouai espérons que apple travaille dessus, car objC a une syntaxe peut commune qui rebute beaucoup de gens. Il faudrait une syntaxe genre C++/java/C# ou même du python ruby. Mais il faudrait que ce soit totalement compatible et melangeable avec objC. Il faudrait que ce soit haut niveau, dynamique et fonctionnel, et garbage collecté.

avatar Anonyme (non vérifié) 06/07/2010 - 18:46

Avec tout le support qui existe aujourd'hui pour l'objective C, la progression se fera sur du long terme (si nouveau langage il y a). Tel que je l'imagine, si il y a un changement la valeur ajoutée sera de taille pour que le changement se fasse auprès des développeurs.

avatar FloMo 06/07/2010 - 18:49

Avec l'apparition récente des blocks dans ObjC et la grande part du parallélisme, on peut s'attendre à un ObjC 3.0. De là à voir apparaître un nouveau langage... Le C reste incontournable depuis plus de 30 ans et a été la clé du succès d'Apple : pourquoi changeraient-ils ?

avatar Anabys 06/07/2010 - 18:51

AppleScript 2 :D

avatar SuMyDi 06/07/2010 - 18:52

Il existe un langage objet qui étend le C : le langage D (non, non ça n'est pas une blague). Sa syntaxe est proche du C++, il en garde certains aspects comme les templates (mais avec une syntaxe différente plus simple et plus claire), en enlève d'autres (héritages multiples, ...). En fait il a été conçu pour palier aux différents défauts du C++. Plus d'infos ici : [url]http://fr.wikipedia.org/wiki/D_(langage)[/url]. Peut-être Apple va-t-elle utilisé ce langage ? (adaptation rapide pour ceux venant du C, C++ voire de l'Obj-C).

avatar phoenix73 06/07/2010 - 18:53

Il serait malin de proposer un Java utilisant llvm, soit en natif soit par une étape de pré-compil, comme peut le faire GNU-java. Objectif C est un frein pour pas mal de monde à commencer par les régiments de Javaistes. Pourquoi réinventer la roue ?

avatar iBorg 06/07/2010 - 18:58

Java : trop limité, trop multi-plateformes.

avatar Anonyme (non vérifié) 06/07/2010 - 19:04

[quote] Il serait malin de proposer un Java utilisant llvm, soit en natif soit par une étape de pré-compil, comme peut le faire GNU-java. [/quote] Cette idée me plais bien, mais je ne sais pas si les développeurs actuel adhéreront... Je suis curieux de savoir ce que vous en pensez d'ailleurs pour ceux qui passent ici :)

avatar NicolasO 06/07/2010 - 19:19

Des langages mieux que Objectove-C, il y en a des dizaines. La force de la plate-forme d'Apple, c'est cocoa qui, par sa qualite, comble beaucoup du retard du langage. Mais ca ne suffira pas a terme. Quelqu'un indiquait que son temps de dev etait 4 * inferieur sur Android que sur iPhone... Et encore, d'autres langages sont autorises sur Android, autorisant plus de productivite. Le probleme est de changer de langage sans changer de librairie. Par ailleurs, developper un langage de zero, c'est long et difficile. Surtout quand les plateformes concurrentes (Java, Dadvik, .Net) sont deja tres mures... Donc une etape necessaire, sur laquelle la pomme est en retard sur ces concurrents (Google a Davdik pour java et travaille sur Go, qui ressemble beaucoup a ce que voudrait Apple, MS a .Net qui a atteint un niveau acceptable). LLVM peut aider, mais c'est une vm tres bas niveau. Il reste beaucoup a faire autour.

avatar Ikari 06/07/2010 - 19:20

@phoenix73 Objective C n'est pas un très bon frein si on considère le succès de l'AppStore ^^ Je trouve l'Objective-C beaucoup plus esthétique et clair que le C++ et le Java. (C'est un avis totalement arbitraire, certes ^^)

avatar kubernan 06/07/2010 - 19:25

Un truc capable de nativement s'intégrer pour le Web. Ni plus, ni moins.

avatar Artanis 06/07/2010 - 19:25

La syntaxe de l'Objective-C est un de ses avantages, c'est quelque chose qu'on ne peut comprendre qu'en le manipulant. C'est vraiment un des meilleurs langages objets que j'ai vu pour l'instant. Et paradoxalement, il est assez proche de Java dans l'esprit (une fois qu'on veut bien regarder au-delà de la syntaxe de l'envoi de messages). Beaucoup plus que du C++ en tout cas. Et la courbe d'apprentissage n'a _rien à voir_ avec le C++. Ça m'embêterait pas mal qu'un langage replace l'ObjC dans la case "langage par défaut" pour MacOS X. C'est déjà possible de faire du Java compilé par LLVM, si je ne m'abuse, grâce à Dragonegg. Visiblement certaines personnes font ça, puisque GCJ est encore développé...

avatar kissscoool 06/07/2010 - 19:26

Le Java c'est sympa et facile (très utilisé dans les écoles d'informatique comme premier langage orienté-objet) mais il faut parfois taper beaucoup de code pour pas grand chose, même si c'est facile. Le multi-plateforme est un avantage mais amène parfois quelques surprises… Il y a des avantages indéniables qu'a le Java (annotations, génériques ("templates")) mais est parfois plus limité que l'Objective-C dans ce qu'on peut faire, et manque de choses telles que les categories (vraiment pratique), les properties. Java a aussi cet inconvénient d'imposer le garbage collector et aussi d'être fortement typé. Mais ce n'est pas un langage qui fait un bon programme...

avatar 6ix 06/07/2010 - 19:27

Plutôt que Java, quitte à changer de langage, le top serait alors de jeter un oeil à Scala ! Histoire d'avoir un langage récent, multi-paradigme (objet + fonctionnel), élégant, puissant, etc… Et comme il est d'ailleurs dit dans un commentaire de l'article de Jesper, Martin Odersky (l'homme à la base de Scala) ne serait apparemment pas contre le fait qu'Apple fasse en sorte que LLVM supporte Scala =)

avatar shenmue 06/07/2010 - 19:30

@NicolasO:"Donc une etape necessaire, sur laquelle la pomme est en retard sur ces concurrents" Mais qu'est ce que tu racontes encore ? Tu connais xcode au moins ? Franchement j'en doute avec tes réflexions à la con. Avec toi, Apple ils sont toujours à la traine et quand ils sont devant, ça compte pas. C'est d'un lourd..

avatar Artanis 06/07/2010 - 19:34

@ 6ix: LLVM est libre, hein? En plus les specs pour écrire un front-end sont disponibles et ont l'air relativement accessible. C'est pas le boulot d'Apple de faire en sorte que LLVM supporte langage. Ils le feront que s'ils y ont vraiment intérêt. Sinon Java c'est bien, ouais. C'est idéal pour certaines choses, ça l'est moins pour d'autres. Le fait que ObjC soit un sur-ensemble du C permet pas mal de choses, y compris une compatibilité quasi parfaite entre C, C++ et ObjC. L'autre point, c'est que l'ObjC sur Mac repose entièrement sur Cocoa. Il y a déjà d'autres langages qui permettent d'utiliser Cocoa (Python et Ruby au moins, de mémoire, en plus du défunt Cocoa-Java). Rien n'empêche un développeur (ou même Apple) d'écrire un bridge, là encore, c'est largement facilité par l'intéropérabilité avec C.

Pages