Самостоятельный хостинг (компиляторы) - Self-hosting (compilers)

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

Если система настолько нова, что для нее не было написано никакого программного обеспечения, тогда программное обеспечение развитый в другой системе с собственным хостингом, часто используя кросс-компилятор, и поместили на место хранения устройство, которое может читать новая система. Разработка продолжается до тех пор, пока новая система не сможет надежно разместить собственное развитие. Написание новых инструментов разработки программного обеспечения без использования другой хост-системы - редкость.

В контексте управление сайтом и онлайн-публикации, термин "самостоятельный хостинг" используется для описания практики запуска и обслуживания веб-сайта с использованием частный веб-сервер.[1]

История

Первый компилятор с собственным хостингом (без ассемблеров) был написан для Лисп Харт и Левин из Массачусетского технологического института в 1962 году. Они написали компилятор Лиспа на Лиспе, тестируя его внутри существующего Лиспа. устный переводчик. Как только они улучшили компилятор до такой степени, что он мог компилировать собственный исходный код, он стал самостоятельным хостингом.[2]

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

— Памятка AI 39[2]

Этот метод обычно применим только тогда, когда уже существует интерпретатор для того самого языка, который должен быть скомпилирован; хотя это возможно, крайне редко приходится скомпилировать компилятор сам с собой.[3] Эта концепция напрямую заимствована из и является примером более широкого понятия запуска программы на самой себе в качестве входных данных, которое также используется в различных доказательствах в теоретическая информатика, например, доказательство того, что проблема остановки неразрешима.

Примеры

Кен Томпсон начал разработку на Unix в 1968 году путем написания и компиляции программ на GE-635 и перенести их в PDP-7 для тестирования. После исходного ядра Unix интерпретатор команд, редактор, ассемблер и несколько утилит были завершены, операционная система Unix была самостоятельной - программы можно было писать и тестировать на самой PDP-7.[4]

Дуглас Макилрой написал TMGкомпилятор-компилятор ) в TMG на листе бумаги и «решил дать свой лист бумаги своему листу бумаги», выполнив вычисления самостоятельно, тем самым скомпилировав компилятор TMG в сборка, который он напечатал и собрал на PDP-7 Кена Томпсона.[3]

Развитие GNU система во многом полагается на GCC (GNU C Компилятор ) и GNU Emacs (популярный редактор), что делает возможным самостоятельное, поддерживаемое и устойчивое развитие бесплатно программное обеспечение для Проект GNU.

Много языки программирования имеют автономные реализации: компиляторы, работающие как на одном языке, так и для него. К таким языкам относятся Ада, БАЗОВЫЙ, C, C ++[5], C #[6], ClojureScript[7], CoffeeScript, Кристалл, D, Дилан, F #, FASM, Четвертый, Гамбас, Идти, Haskell, HolyC, Ява, Лисп, Модула-2, OCaml, Оберон, Паскаль, Python, Ржавчина, Scala, Болтовня, Машинопись, Вала, и Visual Basic.[6]

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

Смотрите также

Рекомендации

  1. ^ "Самостоятельный хостинг |". Архивировано из оригинал на 2017-05-15. Получено 2017-05-07.
  2. ^ а б Тим Харт и Майк Левин. «AI Memo 39-Новый компилятор» (PDF). Получено 2008-05-23.[постоянная мертвая ссылка ]
  3. ^ а б Кен Томпсон. «VCF East 2019 - Брайан Керниган берет интервью у Кена Томпсона». Получено 2019-10-28.
  4. ^ Деннис М. Ричи.«Развитие языка Си».1993.
  5. ^ gcc 4.8, LLVM / clang
  6. ^ а б Моно gmcs и Microsoft Roslyn
  7. ^ ClojureScript Далее