sebsauvage
33667Messages postés
29 août 2001Date d'inscription
ModérateurStatut
16 janvier 2012Dernière intervention
4 jui 2006 à 14:21
Méfiance avec ces idées reçues:
De nos jours les machines virtuelles sont capables de faire des optimisations à la volée que les compilateurs natifs sont incapables de faire.
(On a déjà mesuré des programme écris en C# plus rapide que leurs équivalents C++ compilés natifs.)
Les langages à machine virtuelle (Java, C#, Python...) sont à la mode pour de bonnes raisons:
- avec les compilateurs JIT (Just-in-time), on atteind maintenant d'exellentes performances.
- on arrive même à des optimisations à la volée infaisaibles avec les compilateurs natifs.
- il existe (comme le fait remarquer Char Snipeur) des compilateurs natifs (par exemple pour Java).
- ils affranchissent le programmeur de certaines besognes bas niveau (exemple: allocation mémoire, gestion des chaînes de caractères...) afin de se concentrer sur la logique du programme elle-même, car:
- les ordinateurs sont de moins en moins chers. Les programmeurs compétents le sont de plus en plus.
Donc à part quelques domaines spécifiques (calcul scientifique), le temps processeur n'est plus un élément déterminant.
Un programme Python sera plus lent que le même en C++, mais il sera plus lisible, et donc plus facile à maintenir et coûtera donc beaucoup moins cher à maintenir et faire évoluer.
Au début de l'informatique, le slogan d'IBM était: "Achetez-nous un ordinateur, on vous offre 2 ingénieurs avec."
Maintenant, ce sont les ordinateurs qu'on offre, et le service qu'on fait payer (très cher).
Le temps CPU n'est plus un facteur déterminant dans la grande majorité des secteurs.
Auriez vous des ordes de grandeur
Comme dit Char Snipeur, c'est très variable en fonction des options d'optimisation, du compilateur lui-même, de l'architecture du processeur destination, de l'implémentation de la machine virtuelle (s'il y en a une), de la nature des algorithmes, de la quantité d'entrées/sorties du programme, etc.
Mais si tu penses qu'entre C++ et Pascal il y a peu de différence, alors je pense que ceux qui font du Fotran sont encore à la "vieille école"...
Pas forcément.
Chaque langage a sa façon de penser.
Le fortran est sûrement mieux adapté à certaines tâches mathématiques que le C++.
De même, le SQL est bien mieux adapté à l'aggrégation et la recherche de données que le C++.
Bien sûr, tu arrivera à faire la même chose en C++, mais tu en chiera des ronds de chapeau, et même si le C++ est performant, ton algo ne sera probablement pas aussi performant que les mécanismes internes du SQL.
Tout à fait d'accord.
En assembleur vous avez l'espoir d'atteindre a perfection alors qu'en java ou C# vous ne pouvez aller plus vite que ce que la VM permet.
Là par contre je ne serais pas aussi catégorique.
D'abord les compilateurs modernes sont capables d'optimisations parfois meilleures que ce que pourrait faire un être humain (voir cet article), mais en prime la plupart des VM actuelles ont des compilateurs JIT qui donnent d'excellentes performances.
Donc à part quelques cas bien spécifiques (par exemple les couches bas niveau d'un OS), les langages à VM ont des performances largement suffisantes, surtout quand on prend en compte toutes les astuces d'accélération (JIT, cache de code, reverse-proxy cache, etc.)