Différences entre les compilateurs et les interprètes

Avant le Java et les langages de programmation C # sont apparus, les programmes informatiques compilé ou interprété. 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é?

Compilation

Pour écrire un programme, procédez comme suit:

  1. Modifier le programme
  2. Compilez le programme dans des fichiers de code machine.
  3. Liez les fichiers de code machine dans un programme exécutable (également connu sous le nom d'exe).
  4. Déboguer ou exécuter le programme

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

instagram viewer
code source qui ont 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, cela s'appelle une build.

La liaison est un processus techniquement compliqué où tous les appels de fonction entre différents modules sont reliés entre eux, des emplacements de mémoire sont alloués pour les variables et tout le code est disposé en mémoire, puis écrit sur le disque comme un 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.

Interprétariat

Les étapes pour exécuter un programme via un interpréteur sont les suivantes:

  1. Modifier le programme
  2. Déboguer ou exécuter le programme

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.

Entrez Java et C #

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 programmes écrits soit dans d'autres processeurs, tant qu'un interprète a été écrit pour cela 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, anciennement Microsoft Intermediate Language MSIL). Il est géré 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 la compilation Just-In-Time.

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 base de données interroge alors la différence de vitesse est à peine perceptible.

Qu'est-ce que cela signifie pour moi?

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.