Durante años he considerado profundizar en lo que considero idiomas de "bajo nivel". Para mí esto significa C y montaje. Sin embargo, todavía no tuve tiempo para esto, y NUNCA ha sido necesario.
Ahora, como no veo surgir ninguna necesidad, siento que debería programar algún momento en el que estudiaré el tema o abandonaré el plan para siempre.
Mi posición
Durante los últimos 4 años me he centrado en las "tecnologías web", que pueden cambiar, y soy un desarrollador de aplicaciones, que es poco probable que cambie.
En el desarrollo de aplicaciones, creo que la usabilidad es lo más importante. Usted escribe aplicaciones para ser "consumidas" por los usuarios. Cuanto más utilizables sean esas aplicaciones, más valor tendrá.
Para lograr una buena usabilidad, creo que las siguientes cosas son viables
- Buen diseño : características bien pensadas accesibles a través de una interfaz de usuario bien pensada.
- Corrección : el mejor diseño no vale nada, si no se implementa correctamente.
- Flexibilidad : una aplicación A debe evolucionar constantemente, de modo que sus usuarios no necesiten cambiar a una aplicación B diferente, que tenga nuevas características, que A pueda implementar. Las aplicaciones que abordan el mismo problema no deberían diferir en características sino en filosofía.
- Rendimiento : el rendimiento contribuye a una buena experiencia de usuario. Lo ideal es que una aplicación siempre responda y realice sus tareas razonablemente rápido (según su frecuencia). El valor de la optimización del rendimiento más allá del punto en que el usuario lo percibe es cuestionable.
Creo que la programación de bajo nivel no me va a ayudar con eso, excepto por el rendimiento. Pero escribir una aplicación completa en un lenguaje de bajo nivel en aras del rendimiento es una optimización prematura para mí.
Mi pregunta
¿Qué podría enseñarme la programación de bajo nivel, qué otros lenguajes no me enseñarían? ¿Me estoy perdiendo algo, o es solo una habilidad, que es de muy poca utilidad para el desarrollo de aplicaciones? Por favor, comprenda que no estoy cuestionando el valor de C y el ensamblaje. Es solo que en mi vida cotidiana, estoy bastante feliz de que todas las complejidades de ese mundo se abstraigan y gestionen para mí (principalmente por capas escritas en C / C ++ y ensambladas). Simplemente no veo ningún concepto, eso podría ser nuevo para mí, solo detalles con los que tendría que pensar. Entonces, ¿qué hay para mí?
Mi conclusión
Gracias a todos por sus respuestas. Debo decir que nadie realmente me sorprendió, pero al menos ahora estoy bastante seguro de que abandonaré esta área de interés hasta que surja la necesidad.
Según tengo entendido, escribir ensamblajes en estos días para los procesadores, ya que están en uso en las CPU actuales, no solo es innecesariamente complicado, sino que corre el riesgo de tener un rendimiento de tiempo de ejecución más pobre que una contraparte en C. La optimización manual es casi imposible debido a OOE, mientras que no obtienes todo tipo de optimizaciones que un compilador puede hacer automáticamente. Además, el código es portátil, ya que utiliza un pequeño subconjunto de comandos disponibles o está optimizado, pero probablemente solo funcione en una arquitectura.
Escribir C ya no es tan necesario, como lo era en el pasado. Si tuviera que escribir una aplicación en C, utilizaría bibliotecas y marcos probados y establecidos, lo que me permitiría implementar rutinas de copia de cadenas, algoritmos de clasificación y otro tipo de cosas que sirven como ejercicio en la universidad. Mi propio código se ejecutaría más rápido a costa de la seguridad de tipo. No estoy interesado en volver a inventar la rueda en el curso del desarrollo normal de aplicaciones, ni en tratar de depurar mirando los volcados del núcleo: D
Actualmente estoy experimentando con idiomas e intérpretes, así que si hay algo que me gustaría publicar, supongo que Transmitiría un concepto de trabajo a C, aunque C ++ también podría funcionar.
Nuevamente, gracias a todos por sus respuestas y su visión.