Perché il mio IDE non esegue compilazioni / compilazioni in background?


13

Oggi sviluppo su un computer abbastanza complesso, ha più core, unità SSD e cosa no. Tuttavia, la maggior parte delle volte sto programmando il computer senza fare nulla. Quando ho bisogno di compilare ed eseguire / distribuire un progetto alquanto complesso al massimo ci vogliono ancora un paio di secondi. Perché? Ora che viviamo sempre più nell'era dell'istante, perché non posso premere F5 in Visual Studio e avviare / distribuire la mia applicazione all'istante?

Un paio di secondi potrebbe non sembrare così male, ma è comunque l'attrito cognitivo e il tempo a sommare, e francamente rende la programmazione meno divertente. Quindi, come può la compilazione essere istantanea?

Bene, le persone tendono a modificare i file in diversi assembly, cosa succederebbe se Visual Studio / L'IDE eseguisse costantemente la compilazione / e la costruzione di tutto ciò che modificavo ogni volta che poteva essere appropriato. Diamine se avessero voluto andare davvero avanti potevano fare compilation per classe. La compilazione potrebbe non funzionare ma potrebbe non fare nulla in silenzio (tranne aggiungere messaggi di errore alla finestra degli errori).

Sicuramente il computer odierno potrebbe dedicare un paio di core a questo compito, e se qualcuno lo trovasse fastidioso potrebbe essere disabilitato dall'opzione. So che probabilmente ci sono un migliaio di problemi tecnici e alcune fantasiose copie shadow che dovrebbero essere risolte perché questo sia fluido e pratico, ma sicuramente renderebbe la programmazione più fluida.

C'è qualche motivo pratico per cui questo scenario non è possibile? L'usura della scrittura continua di file binari sarebbe troppo? Non è stato possibile tenere in memoria gli assembly fino alla distribuzione / esecuzione?


Visual Studio lo fa per vb.net e almeno parzialmente per c #. Questo è in realtà un punto del dibattito eterno c # / vb.net: codinghorror.com/blog/2007/06/…
Matthieu,

sì, ho guardato quell'articolo. Ciò è principalmente nel contesto dell'analisi / compilazione per i messaggi di errore, e non tanto per la distribuzione istantanea / l'esecuzione di applicazioni
Homde

@konrad, VB.NET non offre anche compilation in background?
Pacerier,

Risposte:


6

Eclipse esegue compilazioni e compilazioni automatiche. Potresti voler controllare come lo fanno. È open source. Penso che si compili ogni volta che salvi un file.


1
Evviva Eclipse!
MattC

Ottimo, chiunque lo usi? fa la differenza?
Homde,

2
Fa una differenza enorme. Ed è estremamente utile per la programmazione rapida: può generare dichiarazioni di metodi tramite una chiamata che scrivi al volo. L'ho usato per anni dallo sviluppo di applicazioni Java alle applicazioni Web 2.0 basate su Java, sviluppo ed estensione ffmpeg (in C e C ++), PERL e Python. Hanno plug-in per quasi ogni lingua immaginabile.
Brian,

6

Hai mai pensato a quante sequenze di tasti fai prima di portare un file in uno stato che può essere compilato? Seriamente, guarda cosa succederebbe se provassi a compilare la classe f, la classe fo, la classe foo, ecc. Quando vorresti che l'IDE ti dicesse di correggere un errore di battitura invece di lasciare che finisse di scrivere? Mi metterei in dubbio quanto hai pensato bene nel creare qualcosa da zero poiché è lì che ho potuto vedere che questo è davvero molto doloroso.


Non sto suggerendo che sta compilando il file / classe che sto effettivamente modificando. Ma altri assemblaggi che ho modificato dovrebbero essere un gioco equo, e anche altre classi nello stesso assemblaggio se potessi eseguire una compilazione parziale (che probabilmente sarebbe un compito complesso). Probabilmente ci sarebbero alcuni problemi con la risoluzione delle dipendenze, ma non dovrebbe essere insormontabile. Oltre al caso peggiore è che si compila come al solito, fintanto che il thread di compilazione non impantana troppo l'interfaccia o il computer non dovrebbe essere un grosso problema
Homde

2

Visual Studio non ha fornito la funzione di compilazione automatica. Sì, alcuni IDE come Eclipse eseguono la compilazione automatica quando si salva un file. Spero che nelle future versioni di Visual Studio Microsoft aggiungerà questa funzionalità.


1

Indovina un po '... se stai usando un IDE moderno che ti dà avvertimenti, sta facendo una compilazione in background. Ecco come sa che quegli elementi non verranno compilati così come sono.


7
Sta eseguendo l' analisi in background . Non è lo stesso della compilation completa.
Mason Wheeler,

si certo, ma sembra che si fermino di un passo. Se una compilazione / analisi viene eseguita comunque, perché non andare fino in fondo e utilizzarlo nel processo di compilazione / esecuzione?
Homde,

1
@MKO: AFAIK, in molti IDE, l'albero di analisi viene utilizzato nel processo di compilazione (anziché ripetere l'analisi per il compilatore) se l'origine non è cambiata da quando è stata generata.
Anon.

1

È sempre possibile suddividere un progetto in componenti precompilati. Preferisco le compilazioni del mio computer su Commmand. L'attrito cognitivo di un uomo è il tempo di un altro uomo per riflettere e prendere un caffè.


1

Se usi Visual Studio e sviluppi in c # o VB Reshaper può farlo per te. http://www.jetbrains.com/resharper/ Risparmio un sacco di tempo conoscendo tutti i luoghi in cui le mie modifiche a un'interfaccia rompono il codice senza dover ricompilare manualmente.

(Penso anche che Resharper sia la merda per molte altre ragioni.)


Suppongo che intendi che reSharper ti parlerà di eventuali errori di compilazione. Per quanto ne so, in realtà non genererà un file binario per te.
entro il

1

Non lo so, mi piace un po 'dover compilare le cose. È gentile da parte mia maneggiare il mio codice e dire al computer: " Ah! Vediamo che respingi QUESTO! "

Poi ricevo un errore di compilazione, lo aggiusto, quindi " Ah! Ora vediamo che respingi QUESTO! "

Quindi si compila e prendo del caffè. Sentirsi bene. :)


Ti senti bene ..... Tranne quando devi farlo 6500 volte in un solo giorno.
Pacerier,

0

Nota: questo è tratto dalla mia esperienza con Netbeans (Java), quindi potrebbe non essere applicabile a Visual Studio

TMK questo viene fatto in qualche modo in background quando inizi a modificare il file. A meno che l'IDE non conosca ogni singolo errore di compilazione e su come rilevarlo, suppongo che compili la classe in background e quindi riporti eventuali errori.

Il problema è quando vuoi costruire l'intero progetto. A volte immagino che non tutti gli errori possano essere colti con questa compilazione "live", quindi ricostruisce tutto. Potrebbe anche essere che la classe compilata live contenga informazioni extra di cui l'IDE ha bisogno ma che non dovrebbero essere distribuite in un file binario.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.