1599Fermer1601
ZerosquareLe 29/03/2016 à 23:08
Ça dépend pour quoi.

Pour de l'embarqué comme les distributeurs de billets SNCF dont parlait récemment Ximoon, tu peux faire un peu ce que tu veux, c'est un environnement assez comparable à celui d'un ordinateur desktop (au pire, ce sera de l'ARM au lieu du x86, mais avec une puissance CPU et une quantité de RAM confortables).

Pour un appareil mobile comme une tablette d'entrée de gamme ou une liseuse, tu es restreint par les spécs matérielles. Utiliser du Java ou du C# par exemple peut être techniquement faisable, mais au prix de perfs dégradées et d'une consommation supplémentaire qui font que ce n'est pas franchement une bonne idée (rappelez-vous les vieux téléphones Java, par exemple).

Plus tu vas descendre en coût ou augmenter les contraintes de réactivité, moins tu auras le choix :

- les langages garbage-collectés sont hors-course pour tout ce qui a besoin de déterminisme ou de temps d'exécution maximum garanti (télécoms, contrôleurs industriels, etc.). Dans les cas les plus restrictifs, toutes les allocations mémoires sont statiques. Ça élimine déjà pas mal de langages.

- si tu as besoin de hautes perfs, d'économie d'énergie et/ou d'exploiter à fond le hardware dispo (ce qui est souvent le cas : le hardware, ça pèse dans le prix de revient du produit ; donc dès que tu fabriques en quantités non négligeables, c'est rogné au maximum, au grand dam des dévs hardware et software), tu peux oublier tout ce qui est langages interprétés ou compilés à la volée. Même le C++ est à utiliser prudemment, quand on peut le faire.

- enfin, même si d'autres langages seraient bien adaptés, il faut encore que les compilos existent pour la plateforme visée. Quand on voit que certains n'ont commencé à supporter le C99 que récemment, et qu'il y a encore des bugs sérieux qui traînent dans certains compilos C, ça te donne une idée de la maturité du secteur. Il y a des cas où tu as le choix entre C et assembleur, et c'est à peu près tout.