Самодостаточность (компиляторы)

Cамодостаточность (англ. self-hosting) в разработке программного обеспечения — это использование программы для создания новых версий той же самой программы. Чаще всего данное понятие применяется в отношении компиляторов, которые могут скомпилировать собственный исходный код. Также к самодостаточным программам обычно относятся ядра операционных систем, интерпретаторы командной строки и системы контроля версий.

История

Первый самодостаточный компилятор был написан для языка программирования Lisp Хартом и Левиным в Массачусетском технологическом институте в 1962 году. Они написали компилятор для исходного кода Lisp на Lisp и тестировали его внутри уже существовавшего на тот момент интерпретатора. Со временем компилятор стал самодостаточным и смог компилировать собственный исходный код.

Примеры

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

Дуглас Макилрой написал TMG (компилятор компиляторов) с помощью TMG на листе бумаги, выполнил трансформацию в машинный код вручную, и перенес этот машинный код на PDP-7 Кена Томпсона.[2]

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

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

См. также

Примечания

  1. Dennis M. Ritchie. «The Development of the C Language». 1993.
  2. Ken Thompson. VCF East 2019 — Brian Kernighan interviews Ken Thompson. Дата обращения: 28 октября 2019.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.