Warum kompiliert / erstellt meine IDE keinen Hintergrund?


13

Heute entwickle ich auf einem ziemlich komplexen Computer, es hat mehrere Kerne, SSD-Laufwerke und was nicht. Trotzdem mache ich die meiste Zeit, in der ich den Computer programmiere, mühelos nichts. Wenn ich ein etwas komplexes Projekt kompilieren und ausführen / bereitstellen muss, dauert es bestenfalls noch ein paar Sekunden. Warum? Warum kann ich in Visual Studio nicht F5 drücken und meine Anwendung sofort starten / bereitstellen, da wir immer mehr im "Zeitalter des Augenblicks" leben?

Ein paar Sekunden klingen vielleicht nicht so schlecht, aber es ist immer noch kognitive Reibung und Zeit, die sich summieren, und ehrlich gesagt macht das Programmieren weniger Spaß. Wie kann die Kompilierung also sofort erfolgen?

Nun, die Leute neigen dazu, Dateien in verschiedenen Assemblys zu bearbeiten. Was wäre, wenn Visual Studio / The IDE ständig alles kompiliert / und erstellt, was ich geändert habe, wann immer es angebracht erscheint. Zum Teufel, wenn sie wirklich fortgeschritten sein wollen, können sie eine klassenbezogene Zusammenstellung machen. Die Kompilierung funktioniert möglicherweise nicht, kann jedoch im Hintergrund nichts bewirken (außer dem Hinzufügen von Fehlermeldungen zum Fehlerfenster).

Sicherlich könnte der heutige Computer ein oder zwei Kerne für diese Aufgabe verwenden, und wenn jemand dies als störend empfand, könnte dies optional deaktiviert werden. Ich weiß, dass es wahrscheinlich tausend technische Probleme und ausgefallene Schattenkopien gibt, die gelöst werden müssten, damit dies nahtlos und praktisch ist, aber es würde die Programmierung auf jeden Fall nahtloser machen.

Gibt es einen praktischen Grund, warum dieses Szenario nicht möglich ist? Wäre es zu langwierig, ständig Binärdateien zu schreiben? Konnten Assemblys nicht im Speicher gehalten werden, bis sie bereitgestellt / ausgeführt wurden?


Visual Studio erledigt dies für vb.net und zumindest teilweise für c #. Dies ist tatsächlich ein Punkt in der ewigen Debatte von c # / vb.net: codinghorror.com/blog/2007/06/…
Matthieu

Ja, ich habe mir diesen Artikel angesehen. Dies geschieht hauptsächlich im Zusammenhang mit dem Parsen / Kompilieren von
Fehlernachrichten

@konrad, Bietet VB.NET nicht auch eine Hintergrundkompilierung an?
Pacerier

Antworten:


6

Eclipse kompiliert und erstellt automatisch. Vielleicht möchten Sie überprüfen, wie sie es tun. Es ist Open Source. Ich denke, es kompiliert, wann immer Sie eine Datei speichern.


1
Hurra Finsternis!
MattC

Das ist großartig, jemand, der es benutzt? macht es einen unterschied
Homde

2
Es macht einen großen Unterschied. Und es ist äußerst nützlich für die schnelle Programmierung - es kann Methodendeklarationen durch einen Aufruf generieren, den Sie im Handumdrehen schreiben. Ich habe es jahrelang von der Entwicklung von Java-Anwendungen bis zu Web 2.0-Anwendungen auf der Basis von Java, ffmpeg-Entwicklung und -Erweiterung (in C) verwendet und C ++), PERL und Python. Sie haben Plug-Ins für nahezu jede erdenkliche Sprache.
Brian

6

Haben Sie jemals darüber nachgedacht, wie viele Tastenanschläge Sie ausführen, bevor Sie eine Datei in einen Zustand versetzen, in dem sie kompiliert werden kann? Schauen Sie sich im Ernst an, was passieren würde, wenn Sie versuchen, Klasse f, Klasse fo, Klasse foo usw. zu kompilieren. Ich würde fragen, wie gut Sie das durchdacht haben, als Sie etwas von Grund auf neu geschaffen haben, da ich sehen konnte, dass dies wirklich sehr schmerzhaft ist.


Ich schlage nicht vor, dass es die Datei / Klasse kompiliert, die ich gerade bearbeite. Aber andere Assemblys, die ich bearbeitet habe, sollten ein faires Spiel sein, und andere Klassen in derselben Assembly, wenn Sie eine teilweise Kompilierung durchführen könnten (was wahrscheinlich eine komplexe Aufgabe wäre). Wahrscheinlich gibt es einige Probleme beim Auflösen von Abhängigkeiten, die jedoch nicht unüberwindbar sein sollten. Abgesehen von dem schlimmsten Fall, dass es wie gewohnt kompiliert wird, sollte es kein großes Problem sein
Homde

2

Visual Studio hat die automatische Kompilierungsfunktion nicht bereitgestellt. Aber ja, einige IDEs wie Eclipse kompilieren automatisch, wenn Sie eine Datei speichern. Hoffe, in zukünftigen Versionen von Visual Studio wird Microsoft diese Funktion hinzufügen.


1

Ratet mal, was ... Wenn Sie eine moderne IDE verwenden, die Warnungen ausgibt, wird eine Hintergrundkompilierung durchgeführt. So weiß es, dass diese Elemente nicht so kompiliert werden, wie sie sind.


7
Es analysiert den Hintergrund . Das ist nicht dasselbe wie eine vollständige Zusammenstellung.
Mason Wheeler

ja natürlich, aber es scheint, als ob sie einen Schritt zu kurz kommen. Wenn trotzdem etwas kompiliert / analysiert wird, warum nicht den ganzen Weg gehen und es im Build / Run-Prozess verwenden?
Homde

1
@MKO: AFAIK, in vielen IDEs, der Parsing - Baum wird in dem Build - Prozess (anstelle von Re-Parsing für den Compiler) , wenn die Quelle geändert hat nicht verwendet , da es erzeugt wurde.
Anon.

1

Sie können ein Projekt jederzeit in vorkompilierte Komponenten aufteilen. Ich bevorzuge es, wenn mein Computer auf Befehl kompiliert. Die kognitive Reibung eines Mannes ist die Zeit eines anderen Mannes zum Nachdenken und zum Kaffeetrinken.


1

Wenn Sie Visual Studio verwenden und in C # oder VB Reshaper entwickeln, können Sie dies für Sie tun. http://www.jetbrains.com/resharper/ Ich spare viel Zeit, indem ich alle Stellen kenne, an denen meine Änderungen an einer Benutzeroberfläche den Code beschädigen, ohne ihn manuell neu kompilieren zu müssen.

(Auch ich denke, Resharper ist aus vielen anderen Gründen die Scheiße.)


Ich gehe davon aus, dass Sie meinen, dass reSharper Sie über Kompilierungsfehler informiert. Soweit ich weiß, wird es für Sie keine Binärdatei generieren.
31.

1

Ich weiß nicht, ich mag es, Dinge zu kompilieren. Es ist so, dass ich meinen Code verwende und dem Computer sage: " Hah! Mal sehen, wie du DIESES ablehnst! "

Dann erhalte ich einen Kompilierungsfehler, behebe ihn und frage : " Hah! Jetzt wollen wir sehen, wie Sie DIESES ablehnen! "

Dann kompiliert es und ich nehme einen Kaffee. Fühlt sich gut an. :)


Fühlt sich gut an ..... Außer wenn Sie das 6500 Mal an einem einzigen Tag tun müssen.
Pacerier

0

Hinweis: Da dies aus meiner Erfahrung mit Netbeans (Java) stammt, gilt dies möglicherweise nicht für Visual Studio

TMK Dies geschieht etwas im Hintergrund, wenn Sie mit der Bearbeitung der Datei beginnen. Wenn die IDE nicht jeden einzelnen Kompilierungsfehler kennt und nicht weiß, wie man ihn erkennt, gehe ich davon aus, dass sie die Klasse im Hintergrund kompiliert und dann alle Fehler meldet.

Das Problem ist, wenn Sie Ihr gesamtes Projekt erstellen möchten. Manchmal denke ich, dass mit dieser "Live" -Kompilierung nicht alle Fehler abgefangen werden können, sodass einfach alles neu erstellt wird. Es kann auch sein, dass die live kompilierte Klasse zusätzliche Informationen enthält, die die IDE benötigt, die aber nicht in einer Binärdatei verteilt werden sollten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.