Le meilleur langage pour le développement cross-platform est-il le C++ ?
Embarcadero prévoit une résurgence du C++ dans le mobile
Le 2012-12-11 14:25:09, par Hinault Romaric, Responsable .NET
Lorsqu’il s’agit de développement mobile, les langages mis en avant pour la création d’applications multiplateformes sont couramment HTML et JavaScript.
Pour le développement natif, en fonction des écosystèmes, les développeurs s’orientent le plus souvent vers objective-c ou Java.
Pourtant, ceux qui cherchent à créer des applications cross-platform tout en bénéficiant d’une approche efficace pour la réduction des couts peuvent trouver leur bonheur au sein du C++.
C’est en tout cas ce que pense John Thomas, directeur de gestion des produits chez Embarcadero Technologies, qui a présenté les atouts du langage pour le développement mobile lors d’une session intitulée « le regain du C++ pour le développement d’app mobile » pendant la conférence DevCon5 de San Francisco.
C++ peut être utilisé pour développer des applications natives pour Android, iOS, Windows Phone, Windows RT et Blackberry 10, selon John Thomas, qui estime que « les développeurs commencent à réaliser que l’utilisation d’outils natifs pour chacun de ces écosystèmes est trop chère, et ceux-ci sont à la recherche d’une solution ».
En effet, le compilateur LLVM d’Apple pour son outil de développement Xcode prend entièrement en charge C++. Android offre le NDK pour la création d’applications C++. Windows Phone 8 introduit également la prise en charge en natif du C++ et le SDK pour BlackBerry 10 dispose d’un Framework permettant le développement d’interface utilisateur en C++.
En dehors du domaine des jeux où le langage excelle, John Thomas trouve que C++ est également en parfaite adéquation avec la création d’applications d’entreprise.
Dans sa feuille de route pour 2013, Embarcadero envisage d’intégrer dans ses outils de développement la prise en charge de la création d’applications pour Android et iOS en C++.
Source : Embarcadero
Et vous ?
Que pensez-vous du langage C++ dans le mobile ? Meilleur choix pour le développement multiplateforme ?
Pour le développement natif, en fonction des écosystèmes, les développeurs s’orientent le plus souvent vers objective-c ou Java.
Pourtant, ceux qui cherchent à créer des applications cross-platform tout en bénéficiant d’une approche efficace pour la réduction des couts peuvent trouver leur bonheur au sein du C++.
C’est en tout cas ce que pense John Thomas, directeur de gestion des produits chez Embarcadero Technologies, qui a présenté les atouts du langage pour le développement mobile lors d’une session intitulée « le regain du C++ pour le développement d’app mobile » pendant la conférence DevCon5 de San Francisco.
C++ peut être utilisé pour développer des applications natives pour Android, iOS, Windows Phone, Windows RT et Blackberry 10, selon John Thomas, qui estime que « les développeurs commencent à réaliser que l’utilisation d’outils natifs pour chacun de ces écosystèmes est trop chère, et ceux-ci sont à la recherche d’une solution ».
En effet, le compilateur LLVM d’Apple pour son outil de développement Xcode prend entièrement en charge C++. Android offre le NDK pour la création d’applications C++. Windows Phone 8 introduit également la prise en charge en natif du C++ et le SDK pour BlackBerry 10 dispose d’un Framework permettant le développement d’interface utilisateur en C++.
En dehors du domaine des jeux où le langage excelle, John Thomas trouve que C++ est également en parfaite adéquation avec la création d’applications d’entreprise.
Dans sa feuille de route pour 2013, Embarcadero envisage d’intégrer dans ses outils de développement la prise en charge de la création d’applications pour Android et iOS en C++.
Source : Embarcadero
Et vous ?
-
Houla ! J'entends les trolls rappliquer à grands pas x)
Non, plus sérieusement, je pense effectivement que le C++ peut-être une bonne solution pour des applications cross plateforme sur mobile. Surtout si on veut profiter des avantages du natif sans avoir le budget pour développer une appli pour chaque OS. Cependant, il manque peut-être des outils pour ça. Comme l'a dit Octal, Qt pourrait être une bonne solution s'ils approfondissaient leur support des différents OS et s'ils intégraient des simulateurs dans leur IDE.
Ce qui me fait peur par contre, c'est que beaucoup de développeurs fraichement formés ne sont plus sensibilisés aux problématiques "bas niveau" (tout est relatif). Je pense notamment à la gestion manuelle de la mémoire. Venant moi-même de recevoir mon diplôme d'ingénieur, je sais que sans ma passion pour la programmation qui m'a poussé à être curieux et a approfondir des notions que l'on a juste effleuré, j'aurais pu obtenir ce diplôme sans savoir ce qu'est un pointeur ou un destructeur.
Donc, j'ai peur qu'on mette sur du C++ des développeurs habitués à programmer à plus haut niveau et qu'on obtienne des résultats catastrophiques.le 11/12/2012 à 14:58 -
r0dExpert éminentPuissance toute relative.
Les managers de adobe rêvent de faire tourner premiere sur iphone. Si tu vois où je veux en venir...
Les langages interprétés (python, ruby, java, c#...) nécessitent une machine virtuelle, ce qui pose beaucoup de problèmes en embarqué (dont la place et la perte de performance).le 11/12/2012 à 16:27 -
KlaimMembre expertGeneralisation fausse.
Les projets d'applications medicales, militaires, de robotique, d'infrastructure, de recherche ont pour priorite d'etre correct, pas vite fait (au risque de devenir litteralement mortel). Note que c'est la ou C++ est le plus present. La qualite dans le jeu video se fait avec du temps aussi quelque soit le language.
Donc non pas toute. La plupart.
Et, pour simplifier au maximum, C++ ne donne pas la possibilité de faire vite.
Encore une fois, j'insiste, aujourd'hui, malheureusement ça n'est pas la qualité et la pérennité, mais la vitesse de développement.
Cela etant dis, comme il y a effectivement un ralentissement a coder en C++, ils travaillent tous avec le standard et les outils comme CLang pour ameliorer la vitesse a laquelle on itere en C++.Aujourd'hui la mode est au code jetable : on fait vite, à l'arrache, ça prend deux jours, ça marche. Dans un mois il faut faire une évolution ? On jette l'ancien code, on fait vite, à l'arrache, ça prend deux jours, ça marche.
Le C++ n'a pas ce rapport "vitesse / ça marche" qu'ont tous les autres langages (cf tous les posts précedents) : C#, Php et même Delphi.
C++ n'est actuellement pas bon pour le prototypage de concept. Coder rapidement une idee, la tester, la mettre publique, etc, tout ca c'est chaud en C++.
Faire une application de qualite en revanche, selon les resources dispo, C++ colle largement au profil.
Je ne critique pas le C++ en tant que tel, je dis juste que ce discours n'est pas en rapport avec le marché mondial actuel. Et encore une fois : "malheureusement".le 12/12/2012 à 19:48 -
octalMembre éprouvéFranchement, en le combinant avec un framework aussi bien fait que Qt, ça marche très bien.
Après, il est clair que si l'on ne rivalisera jamais avec la vitesse de développement et le confort obtenue avec un langage genre C# qui gère les allocations/désallocations dynamiquement et décharge grandement le développeurs de pleins de points noir en débug (même si le C++ a comblé partiellement son retard avec les smart pointers offer par boost ou autre).le 11/12/2012 à 14:51 -
BouskRédacteur/ModérateurJe suis d'accord pour la "vitesse de développement" que peut offrir C#. Encore que, c'est plus une question d'habitude que du langage en lui-même.
Autant vouloir s'affranchir totalement de la gestion mémoire, je n'y vois aucune évolution réelle. Oui le C++ permet de gérer la mémoire aux petits oignons, mais je n'apelle pas ça un retard, pas plus que l'utilisation des smart pointer n'est une obligation. Je suis beaucoup plus géné par le Garbage Collector "qui passe un peu quand il veut" (bien qu'on peut le forcer il me semble) que par maîtriser la responsabilité et la durée de vie de mes objets et pouvoir les supprimer (et tout ce que ça implique - fermer un fichier etc) quand je le souhaite.
S'il fallait attendre les futurs jeunes développeurs pour pondre du code imbuvablece serait le paradis !
Malheureusement tu retrouveras souvent en entreprise dans des équipes des canards boiteux, parfois là depuis des années.le 11/12/2012 à 15:25 -
air-dexMembre expertAu niveau performances, le C++ est loin devant les applis HTML 5 et Java et c'est toujours bon à prendre sur les terminaux mobiles.
Après il reste le problème de la portabilité. Embarcadero fait ici sa promo ("le C++ revient fort dans le dev mobile et comme par enchantement, on en fera en 2013!" mais ce n'est pas eux qui résolveront le problème. Qt est plus que jamais là pour ça. La stratégie de Qt a évolué depuis son départ de Nokia et ne se cantonne plus aux OS morts (Symbian, Maemo, MeeGo) ou jamais annoncés (Meltemi) de ce dernier. Qt va maintenant sur iOS, Android, BlackBerry et Sailfish OS et cela peut en effet relancer le C++ dans le developpement mobile. Qt permettra d'avoir des applications pouvant marcher plus rapidement sur plusieurs grosses plateformes avec plus de qualités que le HTML5 et pour moins cher. En effet, le développement d'une appli Qt coûtera sûrement moins cher que le développement de 1°) Une appli Objective-C pour iPhone et iPad et 2°) Une appli Java pour Android et 3°) Plus si affinités. Il coutera peut-être aussi cher qu'une application HTML5 et son adaptation aux différentes plateformes mais la qualité des appli Qt sera plus élevée que celle des applis HTML5. le 11/12/2012 à 15:52 -
KlaimMembre expertPour etre precis:
* LLVM n'appartiens pas a Apple
* LLVM est finance par Apple
* LLVM est essentiellement developpe par Apple
Notez d'ailleurs qu'ils cherchent des gens pour ameliorer(voir rendre tout simplement possible) son utilisation sur Windows...le 11/12/2012 à 15:54 -
Niark13Membre éclairéJe pense que c'est plus une contrainte liée à l'autonomie qu'un problème de puissance de calcul. Une interprétation de code ou une machine virtuelle avec du JIT, ça consomme des cycles qui tirent plus sur la batterie.le 11/12/2012 à 16:32
-
KlaimMembre expertEn fait la situation pourrait tourner comme pour le web: la plu parts des productions ne vont pas utiliser C++ mais les plus notables (pour des raisons de performance ou d'omnipresence) le seront, comme Google, Facebook etc.le 11/12/2012 à 15:56
-
koala01Expert éminent séniorMais le problème, c'est que vous ne vous rendez pas compte que ces deux langages vous mentent depuis le début...
Quand l'étudiant écrit une classe en java, il peut croire (tant qu'on ne lui a rien dit) que sa classe fait partie d'une hiérarchie tout à fait à part... Non, non, non, pas de chance... elle hérite (sans qu'il n'ai rien demandé !!!) de Object, ce qui fait que, bien malgré lui, sa classe s'insère dans une hiérachie de classes mégalithique qui contient jusqu'à la classe créée par un étudiant à l'autre bout de la terre !!!
Notes bien que je comprend ce choix de conception, mais il est clair (je crois que tu l'auras compris) que je ne le partage pas .
La deuxième chose sur laquelle le langage vous ment, c'est la notion d'interface, et, pour "faire passer la pilule", il a été jusqu'à introduire trois nouveaux mots clés : interface implements et inherits.
Mais, si tu fais abstraction de ces mots clés, quelle différence y a-t-il entre une classe et une interface
En gros:- une classe hérite d'office de Object, et je ne sais plus si c'est le cas d'une interface
- une interface peut avoir des comportements indéfinis, mais pas une classe
- une classe peut etre instanciée, mais pas une interface... Seulement, cette troisième différence découle directement de la deuxième parce que les compilateurs ont horreur du vide.
Finalement, une interface, ce n'est jamais... qu'une classe dénaturée
Parce que, si tu regardes en termes de conception, tu constates qu'une classe est substituable à une interface (tu peux passer un objet "implémentant" une interface donnée à toute fonction qui attend cette interface).
Oui, mais... attends un tout petit peu... dés que l'on parle de substitution, on parle du principe de substitution de liskov (le L de SOLID) !!!!
Et que nous dit ce principe encore ?
Envoyé par Barbara Liskov
Ca fait quand même furieusement penser à l'héritage, tu ne trouves pas
En fait, lorsque tu écris le mot clé implements, il ne faut pas te leurrer, en interne ca équivaut à un héritage, et qui plus est, multiple vu que la classe qui implémente une interface hérite d'office de Object!!!
Alors, voilà un point de réflexion intéressant : D'un coté, le langage vous dit "attention malheureux, n'héritez jamais de deux classes en même temps".
Mais, d'un autre coté, il vous dit aussi "Par contre, vous implémentez autant d'interface que vous le voulez".
Mais comme une interface n'est au final qu'une classe dénaturée et que l'implémentation d'une interface correspond exactement à la définition de l'héritage,
- Quel crédit peut on donner à un langage qui nous interdit d'un coté ce qu'il nous autorise (que dis-je... ce qu'il nous incite à faire le plus souvent possible) de l'autre
- Quel crédit peut on accorder à un langage qui nous ment dés le départ sur la base de ses mots clé
[EDIT]Finalement, je trouve presque cocasse le fait que ce soient en définitive ceux qui ont le plus dans leur culture de recourir à l'héritage multiple qui viennent nous demander quel intérêt on peut trouver à la technique
A leur décharge, comme le langage leur ment, il y ont recours sans même s'en rendre compte
[/EDIT]le 15/12/2012 à 15:40