Разлики между съставители и преводачи

Преди Ява и се появиха езици за програмиране на C #, само компютърните програми компилиран или тълкува. Езици като език за сглобяване, C, C ++, Fortran, Pascal почти винаги се компилират в машинен код. Езици като Basic, VbScript и JavaScript обикновено се интерпретират.

И така, каква е разликата между съставена програма и интерпретирана такава?

Съставяне

За да напишете програма, предприема следните стъпки:

  1. Редактирайте програмата
  2. Компилирайте програмата в файлове с машинен код.
  3. Свържете файловете с машинен код в изпълнима програма (известна също като exe).
  4. Отстраняване на грешки или стартиране на програмата

С някои езици като Turbo Pascal и Delphi стъпки 2 и 3 са комбинирани.

Файловете с машинен код са самостоятелни модули на машинен код, които изискват свързване заедно, за да се изгради крайната програма. Причината за отделни файлове с машинен код е ефективността; компилаторите трябва само да прекомпилират програмен код които са се променили. Файловете с машинен код от непроменени модули се използват повторно. Това е известно като подаване на заявлението. Ако искате да прекомпилирате и възстановите целия изходен код, тогава той е известен като Build.

instagram viewer

Свързването е технически сложен процес, при който всички функционални обаждания между различни модули са свързани помежду си, местата на паметта са разпределени за променливи и целият код се поставя в паметта, след това се записва на диска като цялостна програма. Това често е по-бавна стъпка от компилирането, тъй като всички файлове с машинен код трябва да бъдат прочетени в паметта и свързани помежду си.

Тълкуване

Стъпките за стартиране на програма чрез преводач са

  1. Редактирайте програмата
  2. Отстраняване на грешки или стартиране на програмата

Това е много по-бърз процес и той помага на начинаещите програмисти да редактират и тестват кода си по-бързо, отколкото да използват компилатор. Недостатъкът е, че интерпретираните програми работят много по-бавно от компилираните програми. До 5-10 пъти по-бавно, тъй като всеки ред код трябва да се препрочита, след което да се преработи отново.

Въведете Java и C #

И двата езика са полукомпилирани. Те генерират междинен код, който е оптимизиран за интерпретация. Този междинен език не зависи от основния хардуер и това улеснява пренасянето програми, написани или в други процесори, стига да е писан преводач за това хардуер.

Когато се компилира, Java произвежда байта код, който се интерпретира по време на изпълнение от Java виртуална машина (JVM). Много JVM използват компилатор Just-In-Time, който преобразува байтовия код в родния машинен код и след това изпълнява този код, за да увеличи скоростта на интерпретация. В действителност изходният код на Java се компилира в двуетапен процес.

C # се компилира в Common Intermediate Language (CIL, който преди беше известен като Microsoft Intermediate Language MSIL). Това се управлява от Common Language Runtime (CLR), част от .NET рамката, среда, която предоставя услуги за поддръжка като събиране на боклука и компилация Just-In-Time.

И Java, и C # използват техники за ускоряване, така че ефективната скорост е почти толкова бърза, колкото чистият компилиран език. Ако приложението прекарва много време, правейки вход и изход, като четене на дискови файлове или стартиране база данни запитвания, тогава разликата в скоростта е едва забележима.

Какво означава това за мен?

Освен ако нямате много специфична нужда от скорост и трябва да увеличите честотата на кадрите с няколко кадъра в секунда, можете да забравите за скоростта. Всеки от C, C ++ или C # ще осигури достатъчна скорост за игри, компилатори и операционни системи.