Avant l'apparition des langages de programmation Java et C #, les programmes informatiques étaient uniquement compilés ou interprétés. Des langages comme Assembly Language, C, C ++, Fortran, Pascal étaient presque toujours compilés en code machine. Des langages comme Basic, VbScript et JavaScript étaient généralement interprétés.
Alors, quelle est la différence entre un programme compilé et un programme interprété?
Pour écrire un programme, procédez comme suit:
Avec certaines langues comme Turbo Pascal et Delphi, les étapes 2 et 3 sont combinées.
Les fichiers de code machine sont des modules autonomes de code machine qui nécessitent une liaison entre eux pour construire le programme final. La raison d'avoir des fichiers de code machine séparés est l'efficacité; les compilateurs n'ont qu'à recompiler le code source qui a changé. Les fichiers de code machine des modules inchangés sont réutilisés. C'est ce qu'on appelle faire la demande. Si vous souhaitez recompiler et reconstruire tout le code source, c'est ce qu'on appelle un build.
La liaison est un processus techniquement compliqué où tous les appels de fonction entre les différents modules sont reliés, les emplacements de mémoire sont alloués pour les variables et tout le code est disposé en mémoire, puis écrit sur le disque en tant que programme complet. C'est souvent une étape plus lente que la compilation car tous les fichiers de code machine doivent être lus en mémoire et liés ensemble.
Les étapes pour exécuter un programme via un interpréteur sont les suivantes:
C'est un processus beaucoup plus rapide et il aide les programmeurs débutants à éditer et tester leur code plus rapidement que d'utiliser un compilateur. L'inconvénient est que les programmes interprétés fonctionnent beaucoup plus lentement que les programmes compilés. Jusqu'à 5 à 10 fois plus lentement que chaque ligne de code doit être relue, puis re-traitée.
Ces deux langues sont semi-compilées. Ils génèrent un code intermédiaire optimisé pour l'interprétation. Ce langage intermédiaire est indépendant du matériel sous-jacent, ce qui facilite le portage de programmes écrits dans l'un ou l'autre processeur, tant qu'un interprète a été écrit pour ce matériel..
Java, une fois compilé, produit un bytecode qui est interprété au moment de l'exécution par une machine virtuelle Java (JVM). De nombreuses machines virtuelles Java utilisent un compilateur Just-In-Time qui convertit le bytecode en code machine natif, puis exécute ce code pour augmenter la vitesse d'interprétation. En effet, le code source Java est compilé dans un processus en deux étapes.
C # est compilé en Common Intermediate Language (CIL, qui était auparavant connu sous le nom de Microsoft Intermediate Language MSIL. Il est exécuté par le Common Language Runtime (CLR), qui fait partie du framework .NET, un environnement qui fournit des services de support tels que le garbage collection et Just -Compilation en temps voulu.
Java et C # utilisent des techniques d'accélération, la vitesse effective est donc presque aussi rapide qu'un langage compilé pur. Si l'application passe beaucoup de temps à faire des entrées et des sorties comme lire des fichiers disque ou exécuter des requêtes de base de données, la différence de vitesse est à peine perceptible.
Sauf si vous avez un besoin très spécifique de vitesse et devez augmenter la fréquence d'images de quelques images par seconde, vous pouvez oublier la vitesse. N'importe lequel de C, C ++ ou C # fournira une vitesse suffisante pour les jeux, les compilateurs et les systèmes d'exploitation.