Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Альтернативы
Недавние
Show all languages
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Из Википедии — свободной энциклопедии

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

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

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

В языках Си и Си++

В языках программирования Си и Си++ единица трансляции (англ. translation unit) — подаваемый на вход компилятора исходный текст (файл с расширением .c или .cpp) со всеми включёнными в него файлами.

В отличие от многих других языков программирования (Паскаль, Java, C#), в Си единицы трансляции компилируются по отдельности, никак не пересекаясь. За «стыковкой» единиц в программу следит исключительно компоновщик. Есть две технологии написания программ на Си: «множество единиц трансляции» и «одна единица трансляции».

Множество единиц трансляции

Традиционная техника, при которой каждый c-файл компилируется по отдельности, после чего объектные файлы собираются в исполняемый файл компоновщиком.

Одна единица трансляции

Техника, при которой несколько c-файлов объединяются не компоновщиком, а с помощью #include. Например:

// compile_me.cpp
#include "foo.cpp"
#include "bar.cpp"
// foo.cpp
#include <iostream> // Крупный стандартный заголовок
#include "bar.hpp" // Заголовок функции 'bar'

int main()
{ 
  bar();
}
// bar.cpp
#include <iostream> // Всё тот же крупный заголовок (второй раз подключен не будет!)

void bar()
{
  ...
}

Плюсы такой структуры: ускоряется полная сборка, расширяется диапазон возможных оптимизаций. Упрощается адаптация чужих библиотек под экзотические компиляторы (например, Embarcadero C++ Builder в режиме __fastcall)[1]. Минус — при небольших изменениях в коде перекомпилируется вся программа.

В виде одной единицы трансляции часто выпускают крупные открытые библиотеки (например, SQLite). При этом программируют их «по старинке», огромным количеством единиц, а из одного вида в другой переводят несложным препроцессором.

В прочих языках

  • Фортран: единицей трансляции является отдельная программная единица (основная программа, подпрограмма или функция) или модуль вместе с включенными файлами. Т.о. в Фортране один файл может содержать несколько единиц трансляции.
  • Паскаль: единицей трансляции является программа или модуль.
  • PHP, Perl: единиц трансляции нет, оттранслировать можно только программу целиком.
  • Java: единица трансляции — класс.

См. также

Примечания

  1. Для версии XE2 приходится отключать предупреждения, а #include стандартной библиотеки оборачивать в соглашение о вызове __cdecl.
Эта страница в последний раз была отредактирована 2 ноября 2023 в 10:44.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).