Pergunta

Estou curioso sobre o que ferramentas são usadas para construir a próxima versão de si mesmos.

Por exemplo, Delphi há muito tempo afirmou que " Delphi está escrito em Delphi " .

Eu assumo Visual Studio é escrito usando o Visual Studio.

O que são alguns outros exemplos de ferramentas que escritos em si?

Foi útil?

Solução

Bjarne Stroustrup mencionado na The Design e Evolução da C ++ que o primeiro compilador C ++ foi escrito em C ++.

Eu só notei isso é também uma questão em sua FAQ :

O primeiro compilador C ++ (Cfront) foi escrita em C ++. Para construir isso, eu primeiro C utilizada para escrever um "C com Classes "-para-C de pré-processamento." C com Classes" era um dialeto C que se tornou o antepassado imediato para C ++. Este pré-processador traduzida "C com Classes" construções (tal como as classes e construtores) em C. Foi uma pré-processador tradicional, que não fez compreender toda a linguagem, esquerda a maior parte do tipo de controlo para o C compilador para fazer, e traduzido construções individuais sem completa conhecimento. Eu, então, escreveu o primeiro versão do Cfront em "C com Classes".

Outras dicas

Curiosamente, os VB.NET e C # próprios compiladores são escritos em C ++ não gerenciado (levando a T-shirt da equipe do C ++ de: "meu compilador seu compilados"). As esperanças C # da equipe para ter um totalmente gerenciado-C # hospedado C # compilador para VS2010.

Esta é off-topic, mas estritamente falando, é um exemplo de uma ferramenta que se constrói.

O RepRap - uma máquina de prototipagem 3D de código aberto, que recentemente deu 'nascimento' para "seu primeiro trabalho completo replicado cópia".

Eu amo esse tipo de coisa.

Genericamente falando, compiladores C geralmente são escritos em C ... * nix kernels são compilados em * nix, etc.

Além disso, há o PyPy projeto que fornece um interpretador Python escrito em Python.

Quando gcc (GNU C compilador http://gcc.gnu.org/ ) não estava amplamente disponível, você tinha que compilar a partir da fonte, compilação compilador stage1, então stage2 de compilação com stage1, até que você tem o seu compilador final. Presumo que deve ser o mesmo hoje.

Aqui está outro exemplo: C # compilador de Mono é auto hospedagem - ou seja, ele é escrito em C # e usado para compilar em si.

fooding cão refere-se à prática mais geral de uma empresa usando o seu próprio produto internamente, especialmente durante o seu desenvolvimento.

Muita gente gosta de olhar como Lisp pode ser implementado em Lisp .

Squeak é um Smalltalk-80 implementação escrita em si.

mesmo a sua máquina virtual é inteiramente escrito em Smalltalk tornando mais fácil de depurar, analisar e mudança.

compilador Java da Sun há muito tem sido escrito em Java. No entanto, recente trabalho está escrevendo um compilador JIT em Java também. Este é o componente JVM que converte código Java byte de instruções do processador nativo.

Nós usamos para desenvolver usando RealBasic. O IDE é escrito em si, ou então eu tenho sido levados a acreditar.

ghc, o compilador Haskell, é principalmente escrito em Haskell.

tcc é outro compilador auto-hospedagem C para x86 e ARM. Sua reivindicação à fama está sendo, assim, minúsculo (100k ou assim para pré-processador, compilador, assembler e linker).

Eu diria que praticamente qualquer ferramenta que é parte do processo de desenvolvimento típico estaria envolvido em seu próprio desenvolvimento, em qualquer medida possível. Isto inclui:

  • certas linguagens de programação, especialmente os compilados
  • IDEs
  • editores de texto
  • sistemas de controle de versão
  • seguidores de bugs
  • sistemas de compilação

Se você estiver em uma equipe construção de uma destas ferramentas, e você não está desenvolvendo-o para um nicho específico que não se aplica a sua equipe, eu não sei por que você não iria utilizá-lo para construir em si. Tendo desenvolvedores ser usuários do produto é uma das melhores maneiras de encontrar possíveis melhorias.

Para os AmigaOS havia um terceiro intérprete básico (não me lembro o nome) para o qual você pode mais tarde comprar um compilador. O compilador foi entregue como fonte, então você tinha que usar o interpretador para executar o compilador para compilar-se ...

Para citar Kent Beck:

... pode parecer um pouco como realizar uma cirurgia no cérebro em si mesmo.

Visual Studio e Team Foundation Server construir-se. É chamado dogfooding , um termo que se não originários Microsoft, certamente gosta

Oracle Application Express é uma ferramenta de desenvolvimento de aplicações web que é construído em si mesmo.

Eclipse IDE é geralmente construído e desenvolvido usando Eclipse IDE.

É bastante comum ter um compilador línguas escritas na sua própria língua. Isso é chamado auto-hospedagem ou bootstrapping .

Maven2 é construído usando Maven2. Ok, não é construído (ou seja, escrita ), utilizando-se, como é uma ferramenta para construir (ou seja, compilação ) projeto, mas ele está usando seu próprio código para compilar .. .

Fiquei espantado com JSLint

Em suma, tem sido descrito como "compilador" Javascript usando javascript.

Estou construindo um gerador de código baseado em IDE, e estou usando-o para construir-se. Se o fato, como Stroustrup fiz, eu estou primeira construção de um modelo gerador válido e usando um pré-processador para construir o código final C ++ para compilar. Assim que eu tiver uma boa versão do IDE trabalhando, eu vou começar a usá-lo para construir novas versões de si mesmo.

É como dar uma nova dimensão ao significado de "programação recursiva"!

AFAIK faz o OpenJDK construir-se primeiro com o java instalado e depois com ele mesmo.

Naturalmente, a equipe JetBrains usa seu próprio IDE IntelliJ IDEA para desenvolver este IDE.

Eu assumo isto é verdade para a maioria dos fornecedores de IDE.

Tanto quanto eu sei, quando a construção de EMACS a partir da fonte, todo o código Elisp é bootstrapped. Descobri que bastante notável.

Não é bem o que você está pedindo, mas todo o ambiente de desenvolvimento para a Revolução http://www.runrev.com é construído usando própria Revolução, ea fonte (exceto para pequenas partes que impõem a licença) é completamente exposta em forma de fonte. Então, se você não gosta da forma como o ambiente de dev é implementado, você pode mudá-lo. Encontre um erro, corrigi-lo. Você também pode facilmente construir ferramentas de desenvolvimento adicionais e integrá-los.

Ada and Forth

Eu dei a resposta Smalltalk-80 um pequeno aumento. Melhor, o exemplo mais elegante que eu posso pensar. A questão também me faz lembrar de um problema ligeiramente relacionado que costumava ser popular: escrever um programa que saídas em si. Não é o mesmo nível de bootstrapping, mas um pouco de diversão de quebra-cabeça de programação para sua diversão. Talvez não seja possível em todas as línguas?

compilador O velho Watcom C / C ++ foi construída utilizando-se.

Ur-Esquema de Kragen Sitaker é um bom exemplo de um pequena não trivial compilador escrito em si. Que páginas apontam para várias mais boas fontes localizadas nesse sentido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top