Какие инструменты создаются с использованием самих себя?[закрыто]

StackOverflow https://stackoverflow.com/questions/258740

  •  06-07-2019
  •  | 
  •  

Вопрос

Мне любопытно, какие инструменты используются для создания следующей версии самих себя.

Например, Delphi уже давно утверждает, что "Delphi написан на Delphi".

Я предполагаю, что Visual Studio написана с использованием Visual Studio.

Каковы некоторые другие примеры инструментов, которые написаны сами по себе?

Другие советы

Интересно, что VB.NET & amp; Сами компиляторы C # написаны на неуправляемом C ++ (что приводит к футболке команды C ++: «Мой компилятор скомпилировал ваш»). Команда C # надеется получить полностью управляемый компилятор C # на C # для VS2010.

Это не по теме, но, строго говоря, это пример инструмента, который собирается сам.

reprap - машина для создания трехмерных прототипов с открытым исходным кодом, которая недавно "родила" свою первую полную рабочую реплицированную копию ".

Я люблю такие вещи.

Вообще говоря, компиляторы C обычно написаны на ядрах C ... * nix, скомпилированы на * nix и т. д.

Кроме того, есть pypy проект, который предоставляет интерпретатор Python написано на Python.

Когда gcc (компилятор Gnu C http://gcc.gnu.org/ ) не было широко доступный, вам пришлось скомпилировать его из исходного кода, скомпилировав компилятор stage1, затем скомпилировать stage2 с помощью stage1, пока у вас не будет окончательного компилятора. Я предполагаю, что это должно быть то же самое сегодня.

Вот еще один пример: компилятор C # Mono сам хостинг - т.е. он написан в C # и используется для компиляции.

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

Многим нравится смотреть на то, как Lisp может быть реализован в Lisp .

Squeak - это реализация Smalltalk-80, написанная сама по себе.

  

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

Java-компилятор Sun уже давно написан на Java. Однако недавняя работа также пишет JIT-компилятор на Java. Это компонент JVM, который преобразует байт-код Java в собственные инструкции процессора.

Мы используем для разработки с использованием RealBasic. IDE написана сама по себе, или так мне поверили.

ghc, компилятор Haskell, в основном написан на Haskell.

tcc - это другой компилятор C с самостоятельным размещением для x86 и ARM. Он претендует на славу, ну, крошечный (около 100 тыс. Для препроцессора, компилятора, ассемблера и компоновщика).

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

  • некоторые языки программирования, особенно скомпилированные
  • Иды
  • текстовые редакторы
  • системы контроля версий
  • средства отслеживания ошибок
  • построение систем

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

Для AmigaOS был сторонний интерпретатор Basic (не помню имя), для которого вы могли позже купить компилятор. Компилятор был доставлен как исходный код, поэтому вам пришлось использовать интерпретатор для запуска компилятора, чтобы скомпилировать себя ...

Чтобы процитировать Кент Бек:

  

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

Visual Studio и Team Foundation Server создаются самостоятельно. Это называется dogfooding , термин, который, если не возник в Microsoft, безусловно, лайки

Oracle Application Express - инструмент разработки веб-приложений это встроено в себя.

Eclipse IDE обычно создается и разрабатывается с использованием Eclipse IDE.

Довольно типично иметь компилятор языков, написанный на его собственном языке. Это называется собственный хостинг или начальная загрузка .

Maven2 создан с использованием Maven2. Хорошо, он не собран (т.е. записан ) с использованием самого себя, поскольку это инструмент для сборки (то есть compile ) проекта, но он использует свой собственный код для компиляции .. .

Я был поражен JSLint

Короче говоря, он был описан как Javascript " компилятор " используя JavaScript.

Я создаю генератор кода на основе IDE и использую его для сборки самого себя. На самом деле, как это сделал Страуструп, я сначала строю правильную модель генератора и использую препроцессор для сборки окончательного кода C ++ для компиляции. Как только у меня будет хорошая рабочая версия среды IDE, я начну использовать ее для создания дальнейших версий.

Это все равно что придать новое измерение смыслу "рекурсивного программирования"!

AFAIK создает OpenJDK сначала с установленной Java, а затем с самим собой.

Естественно, команда Jetbrains использует собственную IDE IntelliJ IDEA для разработки этой IDE.

Я предполагаю, что это верно для большинства поставщиков IDE.

Насколько я знаю, при сборке EMACS из исходного кода весь код ELISP загружается. Я нашел это весьма примечательным.

Не совсем то, что вы просите, но вся среда разработки для Revolution http://www.runrev.com построен с использованием самой Revolution, а источник (за исключением небольших частей, которые приводят в действие лицензию) полностью представлен в виде исходного кода. Так что если вам не нравится, как реализована среда разработки, вы можете ее изменить. Найдите ошибку, исправьте ее. Вы также можете легко создавать дополнительные инструменты разработки и интегрировать их.

Ада и Форт

Я дал ответ Smalltalk-80. Лучший, самый элегантный пример, который я могу придумать. Этот вопрос также напоминает мне о слегка связанной проблеме, которая раньше была популярной: напишите программу, которая выводит сама себя. Не тот же самый уровень начальной загрузки, но забавная небольшая программная головоломка для вашего развлечения. Может быть, это возможно не на всех языках?

Старый компилятор Watcom C / C ++ был построен с использованием самого себя.

Краген Ситакер Ur-Scheme является прекрасным примером Небольшой нетривиальный компилятор написан сам по себе. На этой странице есть ссылки на еще несколько хороших источников в этом духе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top