Cuando Joel Spolsky y Jeff Atwood comenzaron el desacuerdo en su podcast sobre si los programadores deberían aprender C, independientemente de su industria y plataforma de entrega, centelleó un debate bastante explosivo dentro de la comunidad de desarrolladores que probablemente todavía desata entre ciertos grupos hoy en día. He estado leyendo varios pasajes de un número de bloggers programadores con su opinión sobre el asunto. Los argumentos de ambos lados sin duda tienen peso, lo que no encontré es una perspectiva única desde el punto de vista de los desarrolladores de enfocados en .NET Framework. Prácticamente todos comentaban desde el punto de vista del programador general.¿Deberían los programadores de .NET * realmente * pasar tiempo aprendiendo C para la exposición de bajo nivel?
¿Qué estoy tratando de obtener? Recuerde la opinión de Jeff Atwood de que la mayoría de las veces que los desarrolladores en niveles tan altos gastarían en aprender negocio/dominio, además de lo que sea necesario para aprender las tecnologías para lograr esos requisitos de dominio. En mi experiencia laboral, esta es una descripción muy precisa de la vida laboral de muchos. Ahora, suponiendo que los desarrolladores de .NET puedan ahorrar tiempo para el aprendizaje "extracurricular", ¿debería ser C?
Para el registro, aprendí a C de nuevo en la escuela, y puedo comprender y apreciar completamente lo que los defensores están razonando. Pero, al pensarlo bien, personalmente siento que los desarrolladores de .NET no deberían sumergirse directamente en C. Porque, lo que deseo que más desarrolladores tomen un tiempo para aprender es - MSIL y CLR.
Tal vez estoy atascado con el un montón inusual de los colegas, no sé, pero me parece que mucha gente no tenga un conocimiento consciente que su código C# o VB compila en IL primero antes de que llegue JIT y lo convierte en código de máquina sin formato. La mayoría no conoce IL, y no tiene ningún interés en cómo exactamente el CLR maneja el código que escriben. La lectura de CLR de Jeffrey Richter a través de C# fue bastante impactante para mí en tantas áreas; Me alegro de haberlo leído a pesar de que los colegas lo descartaron como "de muy bajo nivel". No soy un experto en IL, pero con el conocimiento de los conceptos básicos, me encontré siguiendo su texto más fácil, ya que ya estaba familiarizado con el comportamiento de la pila de IL. Me encuentro desmontando ensambles para ver cómo resulta IL cuando escribo cierto código.
aprendo el CLR y MSIL porque sé que es la capa directa debajo de mí. La capa que me permite llevar a cabo mi propia capa de trabajo. C, en realidad está más abajo. Más cerca de nuestra "realidad" está el CLR y MSIL. Es por eso que recomendaría a otros que se ocupen de eso, porque no veo suficientes personas investigando esa capa. O bien, ¿su equipo ya está familiarizado con MSIL?
Sí, es un área notable donde el conocimiento de WIN32 ayuda mucho. – icelava
Creo que esta respuesta se refiere a la API Win32 en lugar del lenguaje de programación C. – MarkJ
@ Markk, creo que debe recordar que esto se pide desde el punto de vista práctico de los desarrolladores de .NET que profundizan en Windows. – icelava