~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 10A84762B75EE93144C99B0541E0A001__1718383020 ✰
Заголовок документа оригинал.:
✰ Self-hosting (compilers) - Wikipedia ✰
Заголовок документа перевод.:
✰ Самостоятельный хостинг (компиляторы) — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Self-hosting_(compilers) ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/10/01/10a84762b75ee93144c99b0541e0a001.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/10/01/10a84762b75ee93144c99b0541e0a001__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 06:51:54 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 14 June 2024, at 19:37 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Самостоятельный хостинг (компиляторы) — Википедия Jump to content

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

Из Википедии, бесплатной энциклопедии

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

Операционные системы [ править ]

Операционная система является автономной, если набор инструментов для ее создания работает в этой же операционной системе. Например, Windows может быть построена на компьютере под управлением Windows.

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

Решением этой проблемы является кросс-компилятор (или кросс-ассемблер при работе с языком ассемблера). Кросс-компилятор позволяет компилировать исходный код на одной платформе для другой машины или операционной системы, что позволяет создать операционную систему для машины, для которой еще не существует самостоятельный компилятор. После написания программное обеспечение может быть развернуто в целевой системе с использованием таких средств, как EPROM , дискета , флэш-память (например, флэш-накопитель USB) или устройство JTAG . Это похоже на метод, используемый для написания программного обеспечения для игровых консолей или портативных устройств, таких как сотовые телефоны или планшеты, которые не имеют собственных инструментов разработки.

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

Компиляторы [ править ]

Разработка программного обеспечения с использованием компилятора или интерпретаторов также может осуществляться самостоятельно, если компилятор способен компилировать себя сам. [1]

Поскольку автономные компиляторы страдают от тех же проблем с загрузкой, что и операционные системы, компилятор для нового языка программирования необходимо писать на существующем языке. Таким образом, разработчик может использовать что-то вроде языка ассемблера, C/C++ или даже языка сценариев, такого как Python или Lua, для создания первой версии компилятора. Как только язык станет достаточно зрелым, разработка компилятора может перейти на родной язык компилятора, что позволит компилятору построить себя самостоятельно.

История [ править ]

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

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

Памятка ИИ 39 [2]

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

Примеры [ править ]

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

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

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

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

имеющих самостоятельные компиляторы Список языков ,

Следующие языки программирования имеют автономные компиляторы: [ нужна цитата ]

См. также [ править ]

Ссылки [ править ]

  1. ^ Хитон, Роберт. «Что такое самостоятельный компилятор?» . robertheaton.com/ .
  2. ^ Перейти обратно: а б Тим Харт и Майк Левин. «AI Memo 39-Новый компилятор» (PDF) . Архивировано из оригинала (PDF) 13 декабря 2020 г. Проверено 23 мая 2008 г.
  3. ^ Перейти обратно: а б Кен Томпсон. «VCF East 2019 — Брайан Керниган берет интервью у Кена Томпсона» . YouTube . Проверено 28 октября 2019 г.
  4. ^ Деннис М. Ричи. «Развитие языка Си» . 1993.
  5. ^ Пример начальной загрузки компилятора BASICO
  6. ^ ClojureScript Далее
  7. ^ «плоский ассемблер» . Проверено 7 января 2022 г. Плоский ассемблер является автономным и включает в себя полный исходный код.
  8. ^ «Отчет о сообществах и деятельности Haskell» .
  9. ^ https://www.pyret.org. Архивировано 10 апреля 2018 г. на Wayback Machine.
  10. ^ «Реализовать TCL в TCL» . Архивировано из оригинала 4 июня 2017 г. Проверено 19 сентября 2017 г.
  11. ^ «Вергилий» .
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 10A84762B75EE93144C99B0541E0A001__1718383020
URL1:https://en.wikipedia.org/wiki/Self-hosting_(compilers)
Заголовок, (Title) документа по адресу, URL1:
Self-hosting (compilers) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)