¿Por qué mi IDE no compila / construye en segundo plano?

13

Hoy me desarrollo en una computadora bastante compleja, tiene múltiples núcleos, unidades SSD y demás. Aún así, la mayoría de las veces estoy programando que la computadora no hace nada. Cuando necesito compilar y ejecutar / implementar un proyecto un tanto complejo, en el mejor de los casos todavía me toma un par de segundos. ¿Por qué? Ahora que vivimos más y más en la "era del instante", ¿por qué no puedo presionar F5 en Visual Studio e iniciar / implementar mi aplicación al instante?

Puede que un par de segundos no suene tan mal, pero sigue siendo la fricción cognitiva y el tiempo lo que se suma, y ​​francamente hace que la programación sea menos divertida. Entonces, ¿cómo podría ser la compilación instantánea?

Bueno, las personas tienden a editar archivos en diferentes ensamblajes, ¿qué pasaría si Visual Studio / The IDE compilara constantemente y construyera todo lo que modificara en cualquier momento que pudiera ser apropiado? Diablos, si querían avanzar realmente, podrían hacer una compilación por clase. Es posible que la compilación no funcione, pero no podría hacer nada en silencio (excepto agregar mensajes de error a la ventana de error).

Seguramente la computadora de hoy podría dedicar uno o dos núcleos a esta tarea, y si alguien lo encontrara molesto, podría deshabilitarse por opción. Sé que probablemente haya miles de problemas técnicos y algunas instantáneas sofisticadas que tendrían que resolverse para que esto sea fluido y práctico, pero seguro que haría que la programación sea más fluida.

¿Hay alguna razón práctica por la que este escenario no sea posible? ¿Sería demasiado el desgaste de escribir continuamente binarios? ¿No se pueden mantener los ensamblados en la memoria hasta que se implementen / ejecuten?

Homde
fuente
Visual Studio lo hace para vb.net, y al menos parcialmente para c #. Este es realmente un punto en el debate eterno de c # / vb.net: codinghorror.com/blog/2007/06/…
Matthieu
Sí, miré ese artículo. Eso es principalmente en el contexto del análisis / compilación de mensajes de error, y no tanto para la implementación instantánea / ejecución de aplicaciones
Homde
@konrad, ¿VB.NET tampoco ofrece compilación en segundo plano?
Pacerier

Respuestas:

6

Eclipse hace compilación y construcción automática. Es posible que desee ver cómo lo hacen. Es de código abierto. Creo que se compila cada vez que guarda un archivo.

Brian
fuente
1
¡Hooray Eclipse!
MattC
Eso es genial, ¿alguien lo usa? ¿Hace alguna diferencia?
Homde
2
Se hace una gran diferencia. Y es extremadamente útil para programar rápidamente: puede generar declaraciones de métodos mediante una llamada que usted escribe sobre la marcha. Lo usé durante años desde el desarrollo de aplicaciones Java, hasta aplicaciones Web 2.0 basadas en Java, desarrollo y extensión de ffmpeg (en C y C ++), PERL y Python. Tienen complementos para casi todos los idiomas imaginables.
Brian
6

¿Alguna vez has pensado en cuántas pulsaciones de teclas haces antes de que un archivo llegue a un estado que pueda compilarse? En serio, mira lo que sucedería si intentas compilar class f, class fo, class foo, etc. ¿Cuándo quieres que el IDE te diga que arregles un error tipográfico en lugar de dejar que uno termine de escribir? Me preguntaría qué tan bien has pensado esto al crear algo desde cero, ya que es donde realmente puedo ver que esto es bastante doloroso.

JB King
fuente
No estoy sugiriendo que compile el archivo / clase que estoy editando. Pero otros ensamblajes que he editado deberían ser un juego justo, y otras clases en el mismo ensamblaje también si pudieran realizar una compilación parcial (lo que probablemente sería una tarea compleja). Probablemente habría algunos problemas con la resolución de dependencias, pero no debería ser insuperable. Además, el peor de los casos es que se compila como de costumbre, siempre que el hilo de compilación no
empañe
2

Visual Studio no ha dado la facilidad de compilación automatice. Pero sí, algunos IDE como Eclipse hacen la compilación automática cuando guardas cualquier archivo. Espero que en futuras versiones de Visual Studio Microsoft agregue esta característica.

MitAmr
fuente
1

Adivina qué ... si estás usando un IDE moderno que te da advertencias, está haciendo una compilación en segundo plano. Así es como se sabe que esos elementos no se compilarán tal como están.

Jesse McCulloch
fuente
77
Está haciendo análisis de fondo . Eso no es lo mismo que la compilación completa.
Mason Wheeler
Sí, por supuesto, pero parece que se detienen un paso. Si se realiza alguna compilación / análisis de todos modos, ¿por qué no seguir todo el camino y usarlo en el proceso de compilación / ejecución?
Homde
1
@MKO: AFAIK, en muchos IDEs, el árbol de análisis se usa en el proceso de compilación (en lugar de volver a analizar el compilador) si la fuente no ha cambiado desde que se generó.
Anon
1

Siempre puede dividir un proyecto en componentes precompilados. Prefiero mi computadora compila en comando. La fricción cognitiva de un hombre es el tiempo de otro hombre para reflexionar y tomar café.

JeffO
fuente
1

Si usa Visual Studio y desarrolla en c # o VB Reshaper puede hacerlo por usted. http://www.jetbrains.com/resharper/ Ahorro mucho tiempo al conocer todos los lugares donde mis cambios en una interfaz rompen el código sin tener que volver a compilar manualmente.

(También creo que Resharper es la mierda por muchas otras razones también).

Alex
fuente
Supongo que quiere decir que reSharper le informará sobre cualquier error de compilación. Por lo que sé, en realidad no generará un binario para ti.
thelem
1

No sé, me gusta tener que compilar cosas. Es como si yo manejara mi código y le dijera a la computadora: " ¡Ja! ¡Vamos a ver que rechazas ESTO! "

Luego recibo un error de compilación, corríjalo, luego, " ¡Ja! ¡Ahora veamos que rechazas ESTO! "

Luego se compila y tomo un poco de café. Se siente bien. :)


fuente
Se siente bien ... Excepto cuando tienes que hacer eso 6500 veces en un solo día.
Pacerier
0

Nota: Esto está tomado de mi experiencia con Netbeans (Java), por lo que podría no aplicarse a Visual Studio

TMK esto se hace en segundo plano cuando comienzas a editar el archivo. A menos que el IDE conozca cada error de compilación y cómo detectarlo, asumiría que compila la clase en segundo plano y luego informa cualquier error.

El problema es cuando quieres construir todo tu proyecto. A veces supongo que no todos los errores pueden detectarse con esta compilación "en vivo", por lo que simplemente reconstruye todo. También podría ser que la clase compilada en vivo contiene información adicional que necesita el IDE pero que no debe distribuirse en un binario.

TheLQ
fuente