Por que meu IDE não faz a compilação / construção em segundo plano?


13

Hoje eu desenvolvo em um computador bastante complexo, que possui vários núcleos, unidades SSD e o que não. Ainda assim, na maioria das vezes estou programando o computador sem fazer nada. Quando eu preciso compilar e executar / implantar um projeto um pouco complexo, na melhor das hipóteses, ainda leva alguns segundos. Por quê? Agora que estamos vivendo cada vez mais na "era do instante", por que não consigo pressionar F5 no Visual studio e iniciar / implantar meu aplicativo instantaneamente?

Alguns segundos podem não parecer tão ruins, mas ainda há atrito cognitivo e tempo, e, francamente, torna a programação menos divertida. Então, como a compilação pode ser instantânea?

Bem, as pessoas tendem a editar arquivos em diferentes assemblies, e se o Visual Studio / The IDE constantemente fizesse a compilação / construção de tudo o que eu modificava a qualquer momento que fosse apropriado. Heck se eles queriam ir realmente avançado, eles poderiam fazer compilação por classe. A compilação pode não funcionar, mas silenciosamente não pode fazer nada (exceto adicionar mensagens de erro à janela de erro).

Certamente, o computador de hoje pode dedicar um ou dois núcleos a essa tarefa e, se alguém o achar irritante, poderá ser desativado por opção. Sei que provavelmente existem milhares de questões técnicas e algumas cópias de sombra sofisticadas que precisariam ser resolvidas para que isso fosse contínuo e prático, mas com certeza tornaria a programação mais contínua.

Existe alguma razão prática para esse cenário não ser possível? O desgaste de escrever continuamente binários seria muito? Os assemblies não podiam ser mantidos na memória até serem implantados / executados?


O Visual Studio faz isso para vb.net e pelo menos parcialmente para c #. Este é realmente um ponto no debate eterno do c # / vb.net: codinghorror.com/blog/2007/06/…
Matthieu

Sim, eu olhei para esse artigo. Isso é principalmente no contexto de análise / compilando para mensagens de erro, e não tanto para instantâneas de implantação / aplicativos em execução
Homde

@ konrad, o VB.NET também não oferece compilação em segundo plano?
Pacerier 28/08/14

Respostas:


6

O Eclipse faz compilação e construção automáticas. Você pode querer verificar como eles fazem isso. É de código aberto. Eu acho que ele compila sempre que você salva um arquivo.


1
Viva Eclipse!
MattC

Isso é ótimo, alguém está usando? Isso faz diferença?
Homde

2
Faz uma grande diferença. E é extremamente útil para programar rapidamente - ele pode gerar declarações de métodos através de uma chamada que você escreve em tempo real. Usei-a durante anos desde o desenvolvimento de aplicativos Java até aplicativos Web 2.0 baseados em Java, desenvolvimento e extensão ffmpeg (em C e C ++), PERL e Python. Eles têm plug-ins para praticamente todos os idiomas imagináveis.
Brian

6

Você já pensou em quantas teclas você digita antes de colocar um arquivo em um estado em que ele possa ser compilado? Sério, observe o que aconteceria se você tentasse compilar classe f, classe fo, classe foo, etc. Quando você gostaria que o IDE dissesse para corrigir um erro de digitação em vez de permitir que um terminasse de digitar? Eu questionaria até que ponto você pensou nisso ao criar algo do zero, pois é onde eu poderia ver isso sendo realmente doloroso.


Não estou sugerindo que seja compilar o arquivo / classe que estou editando. Mas outras assembléias que eu editei devem ser justas, e outras classes na mesma assembléia, se você puder fazer a compilação parcial (o que provavelmente seria uma tarefa complexa). Provavelmente haveria alguns problemas com a resolução de dependências, mas não deveria ser insuperável. Além pior caso é que ele compila como de costume, enquanto o segmento de compilação não atolar o interface ou computador demais não deve ser um grande problema
Homde

2

O Visual Studio não forneceu o recurso de compilação automática. Mas sim, alguns IDEs como o Eclipse fazem compilação automática quando você salva qualquer arquivo. Espero que nas versões futuras do Visual studio a Microsoft adicione esse recurso.


1

Adivinha o quê ... se você estiver usando um IDE moderno que fornece avisos, ele está fazendo uma compilação em segundo plano. É assim que se sabe que esses itens não serão compilados como estão.


7
Está fazendo uma análise em segundo plano . Isso não é o mesmo que compilação completa.
Mason Wheeler

sim, é claro, mas parece que eles param um pouco. Se alguma compilação / análise é feita de qualquer maneira, por que não percorrer todo o caminho e usá-lo no processo de compilação / execução?
Homde

1
@MKO: AFAIK, em muitos IDEs, a árvore de análise é usada no processo de compilação (em vez de analisar novamente o compilador) se a fonte não mudou desde que foi gerada.
Anon.

1

Você sempre pode dividir um projeto em componentes pré-compilados. Prefiro que meu computador seja compilado por comando. O atrito cognitivo de um homem é tempo de outro homem para refletir e tomar café.


1

Se você usa o Visual Studio e desenvolve em c # ou o VB Reshaper pode fazer isso por você. http://www.jetbrains.com/resharper/ Economizo muito tempo conhecendo todos os lugares em que minhas alterações em uma interface quebram o código sem precisar recompilar manualmente.

(Também acho que Resharper é a merda por muitas outras razões também.)


Suponho que você queira dizer que o reSharper informará sobre qualquer erro de compilação. Tanto quanto sei, não irá gerar um binário para você.
Thelem 31/10/14

1

Eu não sei, eu meio que gosto de ter que compilar coisas. É como se eu estivesse usando meu código e dizendo ao computador: " Hah! Vamos ver você rejeitar ISSO! "

Então eu recebo um erro de compilação, corrija-o e, em seguida, " Hah! Agora vamos ver você rejeitar ISSO! "

Então ele compila e eu pego um café. Parece bom. :)


É bom ... Exceto quando você precisa fazer isso 6500 vezes em um único dia.
Pacerier 28/08/14

0

Nota: Isso foi retirado da minha experiência com o Netbeans (Java), portanto, isso pode não se aplicar ao Visual Studio

TMK, isso é feito em segundo plano quando você começa a editar o arquivo. A menos que o IDE conheça todos os erros de compilação e como detectá-lo, eu assumiria que ele compila a classe em segundo plano e então relata quaisquer erros.

O problema é quando você deseja criar todo o seu projeto. Às vezes, acho que nem todos os erros podem ser capturados com essa compilação "ao vivo", portanto, apenas reconstrói tudo. Também pode ser que a classe compilada ao vivo contenha informações extras que o IDE precisa, mas não deve ser distribuída em um binário.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.