Pourquoi mon IDE ne fait-il pas de compilation / construction en arrière-plan?

13

Aujourd'hui, je développe sur un ordinateur assez complexe, il a plusieurs cœurs, des disques SSD et autres. Pourtant, la plupart du temps, je programme l'ordinateur sans rien faire. Quand j'ai besoin de compiler et d'exécuter / déployer un projet quelque peu complexe au mieux, cela prend encore quelques secondes. Pourquoi? Maintenant que nous vivons de plus en plus dans «l'ère de l'instant», pourquoi ne puis-je pas appuyer sur F5 dans Visual studio et lancer / déployer mon application instantanément?

Quelques secondes peuvent ne pas sembler si mauvaises, mais c'est toujours une friction cognitive et du temps qui s'additionne, et franchement, cela rend la programmation moins amusante. Alors, comment la compilation pourrait-elle être instantanée?

Eh bien, les gens ont tendance à éditer des fichiers dans différents assemblys, et si Visual Studio / l'EDI faisait constamment la compilation / et la construction de tout ce que je modifiais à chaque fois que cela pouvait être approprié. Heck s'ils voulaient aller vraiment avancé, ils pourraient faire une compilation par classe. La compilation peut ne pas fonctionner, mais elle ne peut rien faire en silence (sauf l'ajout de messages d'erreur à la fenêtre d'erreur).

L'ordinateur d'aujourd'hui pourrait certainement consacrer un ou deux éléments à cette tâche, et si quelqu'un trouvait cela ennuyeux, il pourrait être désactivé par option. Je sais qu'il y a probablement un millier de problèmes techniques et quelques clichés instantanés fantastiques qui devraient être résolus pour que cela soit transparent et pratique, mais cela rendrait la programmation plus transparente.

Y a-t-il une raison pratique pour laquelle ce scénario n'est pas possible? L'usure de l'écriture continue de binaires serait-elle trop importante? Les assemblys ne pouvaient-ils pas être conservés en mémoire avant d'être déployés / exécutés?

Homde
la source
Visual Studio le fait pour vb.net, et au moins partiellement pour c #. C'est en fait un point dans le débat éternel c # / vb.net
Matthieu
ouais, j'ai regardé cet article. C'est principalement dans le contexte de l'analyse / compilation pour les messages d'erreur, et pas tant pour le déploiement instantané / l'exécution d'applications
Homde
@konrad, VB.NET ne propose-t-il pas également une compilation en arrière-plan?
Pacerier

Réponses:

6

Eclipse effectue la compilation et la construction automatiques. Vous voudrez peut-être vérifier comment ils le font. C'est open source. Je pense qu'il se compile chaque fois que vous enregistrez un fichier.

Brian
la source
1
Hourra Eclipse!
MattC
C'est super, quelqu'un l'utilise? Est-ce que cela fait une différence?
Homde
2
Cela fait une énorme différence. Et il est extrêmement utile pour la programmation rapide - il peut générer des déclarations de méthodes par un appel que vous écrivez à la volée. Je l'ai utilisé pendant des années du développement d'applications Java aux applications Web 2.0 basées sur Java, le développement et l'extension ffmpeg (en C et C ++), PERL et Python. Ils ont des plug-ins pour à peu près toutes les langues imaginables.
Brian
6

Avez-vous déjà pensé au nombre de frappes que vous effectuez avant d'obtenir un fichier dans un état où il peut être compilé? Sérieusement, regardez ce qui se passerait si vous essayez de compiler la classe f, la classe fo, la classe foo, etc. Quand voudriez-vous que l'EDI vous dise de corriger une faute de frappe plutôt que d'en laisser une finir de taper? Je me demande dans quelle mesure vous avez bien réfléchi à la création de quelque chose à partir de zéro, car c'est là que je pouvais vraiment voir cela être très douloureux.

JB King
la source
Je ne suggère pas que ce soit en train de compiler le fichier / la classe que je modifie actuellement. Mais d'autres assemblys que j'ai édités devraient être équitables, ainsi que d'autres classes du même assemblage si vous pouviez réaliser une compilation partielle (ce qui serait probablement une tâche complexe). Il y aurait probablement des problèmes avec la résolution des dépendances mais cela ne devrait pas être insurmontable. De plus, le pire des cas est qu'il compile comme d'habitude, tant que le thread de compilation n'embourbe pas trop l'interface ou l'ordinateur, cela ne devrait pas être un
gros
2

Visual Studio n'a pas fourni la fonction de compilation automatice. Mais oui, certains IDE comme Eclipse effectuent une compilation automatique lorsque vous enregistrez un fichier. J'espère que les futures versions de Visual studio Microsoft ajouteront cette fonctionnalité.

MitAmr
la source
1

Devinez quoi ... si vous utilisez un IDE moderne qui vous donne des avertissements, il fait une compilation en arrière-plan. Voilà comment il sait que ces éléments ne seront pas compilés tels quels.

Jesse McCulloch
la source
7
Il fait une analyse en arrière-plan . Ce n'est pas la même chose que la compilation complète.
Mason Wheeler
oui bien sûr, mais il semble qu'ils s'arrêtent un peu. Si une compilation / analyse est effectuée, pourquoi ne pas aller jusqu'au bout et l'utiliser dans le processus de construction / exécution?
Homde
1
@MKO: AFAIK, dans de nombreux IDE, l'arborescence d'analyse est utilisée dans le processus de génération (au lieu d'une nouvelle analyse pour le compilateur) si la source n'a pas changé depuis sa génération.
Anon.
1

Vous pouvez toujours diviser un projet en composants précompilés. Je préfère que mon ordinateur compile sur commande. La friction cognitive d'un homme est le temps d'un autre homme pour réfléchir et prendre un café.

JeffO
la source
1

Si vous utilisez Visual Studio et développez en c # ou VB Reshaper peut le faire pour vous. http://www.jetbrains.com/resharper/ Je gagne beaucoup de temps en connaissant tous les endroits où mes modifications apportées à une interface cassent le code sans avoir à recompiler manuellement.

(Je pense aussi que Resharper est la merde pour de nombreuses autres raisons aussi.)

Alex
la source
Je suppose que vous voulez dire que reSharper vous informera de toute erreur de compilation. Pour autant que je sache, il ne générera pas réellement de binaire pour vous.
thelem
1

Je ne sais pas, j'aime un peu devoir compiler des choses. C'est une sorte de moi brandissant mon code et disant à l'ordinateur: " Hah! Voyons voir que vous rejetez CECI! "

Ensuite, je reçois une erreur de compilation, corrigez-la, puis, " Hah! Voyons maintenant vous rejetez CECI! "

Ensuite, il se compile et je prends du café. Ça fait du bien. :)


la source
Ça fait du bien ..... Sauf quand vous devez le faire 6500 fois en une seule journée.
Pacerier
0

Remarque: Ceci est tiré de mon expérience avec Netbeans (Java), donc cela peut ne pas s'appliquer à Visual Studio

TMK cela se fait un peu en arrière-plan lorsque vous commencez à modifier le fichier. À moins que l'EDI ne connaisse chaque erreur de compilation et comment la détecter, je suppose qu'il compile la classe en arrière-plan, puis signale toute erreur.

Le problème est quand vous voulez construire votre projet entier. Parfois, je suppose que toutes les erreurs ne peuvent pas être détectées avec cette compilation "en direct", donc elle reconstruit tout. Il se peut également que la classe compilée en direct contienne des informations supplémentaires dont l'EDI a besoin mais qui ne doivent pas être distribuées dans un binaire.

TheLQ
la source