Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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 , par Hinault Romaric

14PARTAGES

12  0 
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 ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Enerian
Membre éclairé https://www.developpez.com
Le 11/12/2012 à 14:58
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.
5  0 
Avatar de r0d
Expert éminent https://www.developpez.com
Le 11/12/2012 à 16:27
Citation Envoyé par Drawingrom Voir le message
étant donné la puissance dispo sur les terminaux mobiles aujourd'hui
Puissance 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).
6  1 
Avatar de Klaim
Membre expert https://www.developpez.com
Le 12/12/2012 à 19:48
Citation Envoyé par SurferIX Voir le message
Je déteste dire ça, mais aujourd'hui, tout développement d'application doit (malheureusement) se faire vite.
Generalisation 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.
Discutable. C++ a des desavantage cote vitesse d'iteration oui. Ca ne veut pas dire que tu ne peux pas coder rapidement une appli en C++. Ca necessite certainement plsu de connaissances de base du language (entre autre) avant d'arriver a coder rapidement en C++, mais c'est loin d'etre impossible. J'ai fait des game jams de 3h ou de 2 jours en C++.



Encore une fois, j'insiste, aujourd'hui, malheureusement ça n'est pas la qualité et la pérennité, mais la vitesse de développement.
Toujours faux, ca depends des domaines. Google, Facebook et d'autres ont C++ dans leur systeme de fond (chez Facebook ils vont encore plus loin avec C++ apparemment) et ya de bonnes raisons qui n'ont pas a voir avec la vitesse de developpement parceque c'est pas la priorite.

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.
Je sais pas ou tu bosses mais dans toutes les boites ou j'ai bosse, tu fais ou pense comme ca, tu prends la porte dans la minute.



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.
Et pourtant... la plupart des gros jeux sont en C++. Recemment, Super Hexagon, qui est un petit jeu mais tres rapide et cross-platform, a ete totalement recode en C++. Qu'est-ce que ca pointe?

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".
C'est comme si tu disais qu'il n'y avait pas de bonne raison de choisir C++ plutot qu'una utre language. Le critere de la vitesse d'ecrtiture de code est important mais pas pour tous les projets. Donc en fait non.
5  0 
Avatar de octal
Membre éclairé https://www.developpez.com
Le 11/12/2012 à 14:51
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).
5  1 
Avatar de Bousk
Rédacteur/Modérateur https://www.developpez.com
Le 11/12/2012 à 15:25
Citation Envoyé par octal Voir le message
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).
Je 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.

Citation Envoyé par Enerian Voir le message
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.
S'il fallait attendre les futurs jeunes développeurs pour pondre du code imbuvable ce serait le paradis !
Malheureusement tu retrouveras souvent en entreprise dans des équipes des canards boiteux, parfois là depuis des années.
4  0 
Avatar de air-dex
Membre expert https://www.developpez.com
Le 11/12/2012 à 15:52
Au 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.
4  0 
Avatar de Klaim
Membre expert https://www.developpez.com
Le 11/12/2012 à 15:54
Citation Envoyé par zackel Voir le message
Dis comme ça j'ai eu vraiment l'impression que LLVM était la propriété d'Apple
Or LLVM c'est un compilateur libre utilisé par Apple.
Pour 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...
4  0 
Avatar de Niark13
Membre éclairé https://www.developpez.com
Le 11/12/2012 à 16:32
Citation Envoyé par Drawingrom Voir le message
Je me demande pourquoi on irait vers du C++ pour du cross platform et pas sur des langages de plus haut niveau, comme Python, Ruby, etc... .

Pour les performances ? OK mais étant donné la puissance dispo sur les terminaux mobiles aujourd'hui, a-t-on besoin d'une gestion aussi fine que du C++ dans la majorité des cas ?
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.
4  0 
Avatar de Klaim
Membre expert https://www.developpez.com
Le 11/12/2012 à 15:56
Citation Envoyé par olivier.pitton Voir le message
Je ne pense pas que le C++ arrivera à s'imposer dans l'univers du mobile. Attention, je ne dis pas que l'on ne peut pas développer de bonnes applications en C++, mais je pars simplement du principe que la quasi totalité des sociétés développant dans le mobile ne le font pas en C++, donc que son adoption sera difficile.

A voir dans quelques temps.
En 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.
3  0 
Avatar de koala01
Expert éminent sénior https://www.developpez.com
Le 15/12/2012 à 15:40
Citation Envoyé par youtpout978 Voir le message
Après c'est un choix des concepteurs de la plateforme, on ne peut pas dire qu'il soit mauvais ou bon et il est aussi lié a d'autre comportement de la plateforme, tout hérite d'objet ce qui permet de faire des méthodes de base qui marcheront avec tous les composants.

Et dans tous les langages il y a des gens qui se croient bon c'est pas propre a java ou c#, c'est la simplicité d'accès à ces plateformes et la demande actuel qui fait qu'il y en a un peu plus dessus mais de là a dire que c'est à cause du langage.
Mais 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:
  1. une classe hérite d'office de Object, et je ne sais plus si c'est le cas d'une interface
  2. une interface peut avoir des comportements indéfinis, mais pas une classe
  3. 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 ?
Citation Envoyé par Barbara Liskov
Let q(x) be a property provable about objects x of type T. Then q(y) should be provable for objects y of type S where S is a subtype of T.
... for objects y of type S where S is a subtype of T...

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é
Ce n'est qu'un avis personnel, mais, à choisir, je préfère un langage qui ne m'interdit rien mais dont tout me met en garde sur sa complexité, et qui me garanti que je ne devrai pas payer ce que je n'utilise pas

[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]
3  0