Que ferramentas são construídos utilizando-se? [fechadas]
-
06-07-2019 - |
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?
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 ??em>), 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.