Tous les langages de programmation dits « évolués » (« structurés », « orientés objet », etc), qu'ils soient compilés ou interprétés, doivent d'une manière ou d'une autre être « traduits » en langage machine avant de pouvoir être exécutés par un ordinateur.
Or, s'il est indiscutable que ces langages ont un grand nombre d'atouts pour le développement de logiciels complexes, en termes de conception, de lisibilité, de portabilité et de maintenance, le revers de la médaille est qu'ils masquent fortement sinon totalement, les limitations de la machine.
Ne pas avoir conscience de ces limitations peut pourtant avoir des conséquences fâcheuses :
- en terme de performance, dans le cas d'une sous-exploitation des capacités du processeur. Par exemple, l'apparition de processeurs 64 bits et des Single Instruction Multiple Data (dont font partie les jeux d'instructions MMX, SSE et 3D now!) dans les dernières versions des processeurs Intel et AMD. Les SIMD permettent de réaliser jusqu'à 16 opérations arithmétiques en parallèle. Rares sont les compilateurs exploitent ces instructions, encore plus rares sont les programmes qui en tirent profit. La plupart des ordinateurs personnels présents sur le marché ont un processeur 64 bits, mais l'immense majorité est vendue avec un système d'exploitation 32 bits !
- en terme de fiabilité, dans le cas d'une sur-estimation des capacités (programmes qui disfonctionnent ou qui doivent être entièrement réécrits dès que le cadre d'utilisation s'élargi).
Or, s'il est quasiment impossible d'écrire un programme conséquent directement en langage machine, il est tout à fait possible de l'écrire en « assembleur », qui n'en est qu'une version légèrement « humanisée ». Connaître les rudiments de la programmation en assembleur peut donc donner des atouts considérables pour la compréhension et la maîtrise de tous les autres langages de programmation.
Connectez-vous pour laisser votre commentaire