¿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?


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.


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.


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.


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.


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é.


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).


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. :)


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.