Единица трансляции

Материал из Энциклопедия о программировании
Перейти к: навигация, поиск

Единица трансляции (translation unit) в языках программирования — максимальный блок исходного текста, который физически можно оттранслировать (преобразовать во внутреннее машинное представление; в частности, откомпилировать) в отдельный файл (модуль). Важная концепция языков C и C++.

Понятие «единица трансляции» появилось с первыми диалоговыми компьютерами: в те времена нехватка памяти была такой, что компьютер не мог удержать в ней одновременно компилятор, текст крупной программы и результирующий код. Приходилось компилировать по частям, а затем специальной программой — компоновщиком — собирать из откомпилированных модулей исполняемый файл.

Сейчас текст разбивают на единицы трансляции в первую очередь ради повторного использования кода и структурированный бизнес логики. Современные оптимизирующие компиляторы зачастую медленны настолько, что пересборка большой программы может длиться десятки минут.

В разных языках

  • C/C++: единицы трансляции компилируются по отдельности, никак не пересекаясь. За «стыковкой» единиц в программу следит исключительно компоновщик.
  • Fortran: единицей трансляции является отдельная программная единица (основная программа, подпрограмма или функция) или модуль вместе с включенными файлами. Т.о. в Fortran один файл может содержать несколько единиц трансляции.
  • Pascal: единицей трансляции является программа или модуль.
  • PHP, Perl: единиц трансляции нет, оттранслировать можно только программу целиком.
  • Java: единица трансляции — класс.