¿Puede un mayor uso de lenguajes de programación cada vez más altos llevar a un déficit de programadores con conocimientos de arquitectura de computadoras?

14

Cita de Wikipedia del artículo "Lenguaje de programación de alto nivel":

  

Un lenguaje de programación de alto nivel es un lenguaje de programación con una fuerte abstracción de los detalles de la computadora. En comparación con los lenguajes de programación de bajo nivel, puede usar elementos del lenguaje natural, ser más fácil de usar o más portátil a través de plataformas. Dichos lenguajes ocultan los detalles de las operaciones de la CPU, como los modelos de acceso a la memoria y la administración del alcance.

Es decir, a medida que aumenta el nivel del lenguaje de programación, cuanto más lejos se va el programador del hardware en el que se ejecuta el programa.

Ahora no conozco las estadísticas de uso de idiomas en todos los niveles, pero sospecho que los idiomas de nivel superior están reemplazando a los idiomas de nivel inferior. Si es así, ¿puede esto conducir a un déficit de programadores con conocimientos de arquitectura de computadoras? ¿Sería esto un problema para la industria?

    
pregunta gablin 01.10.2010 - 15:21
fuente

4 respuestas

16

Puede , pero es probable que no genere un problema.

Es solo economía. Si la gran mayoría de las personas pierden la capacidad de entender la arquitectura subyacente, y aún existe una gran necesidad de entender la arquitectura subyacente, entonces los que sí lo harán tendrán un trabajo y recibirán un salario más alto, mientras que los que no lo hagan solo tendrán trabajos donde eso no es necesario (y aún así se les puede pagar más ... ¿quién sabe?).

¿Es útil saber? Absolutamente. Probablemente sea mejor. ¿Es necesario en la mayoría de los casos? No. Es por eso que la abstracción es tan grande, nos apoyamos en los hombros de gigantes sin tener que ser gigantes nosotros mismos (pero siempre habrá gigantes alrededor).

    
respondido por el Ryan Hayes 01.10.2010 - 15:52
fuente
9

Creo que sí. Es una tendencia que me tiene preocupado. No hay abstracción perfecta ; Si hubiera una manera perfecta de simplificar cualquier problema complejo, reemplazaría el original muy rápidamente. (Eso sucedió en el pasado, ocasionalmente con computadoras, y mucho más frecuentemente en otros campos que no se preocupan tanto por la compatibilidad con versiones anteriores como la física).

Lo que esto significa es que cada vez que usas una abstracción, hay algo importante de complejidad esencial que se te esconde. Si no sabes qué es eso, por qué está ahí y qué está haciendo, terminas escribiendo accidentalmente grandes accidentes de tren, y no saber cómo solucionarlos porque no sabes lo que realmente está pasando.

Cualquiera que intente decirle lo contrario está vendiendo aceite de serpiente o simplemente no tiene mucha experiencia con software serio. En el trabajo, trabajo en un programa que ejecuta un buen porcentaje de todas las estaciones de radio y televisión en los Estados Unidos. A medida que las estaciones y las redes se vuelven más grandes y complejas, las técnicas rápidas y sucias que funcionaron bien para diseñar un producto para una estación pequeña terminan impactando en grandes muros técnicos cuando se implementan para una red con 50 estaciones y 200 canales. Sin una comprensión profunda de cómo funciona el lenguaje (y un lenguaje eficiente en primer lugar) y una comprensión profunda de cómo funciona la base de datos, nuestros codificadores nunca habrían podido hacer la escala del producto con éxito.

Esto tampoco es una historia aislada. El software continúa haciéndose cada vez más complejo, no más simple, y me temo que este nivel de experiencia técnica se convertirá en una especie de arte perdido, y los programas de mañana serán peores que los de hoy, no mejores.

    
respondido por el Mason Wheeler 01.10.2010 - 16:25
fuente
5

Sí, creo que la gente entenderá el hardware mucho menos a medida que avanzan los idiomas (y, de manera similar, a medida que la instrucción establece el progreso). Pero como se ha señalado en muchos otros lugares, la restricción principal en la mayoría de los programas en estos días no es el tiempo o la eficiencia de la CPU, sino el tiempo del programador. Si las personas que diseñan idiomas continúan haciendo su trabajo para hacer que la abstracción sea eficiente, y si las personas siguen usando estas abstracciones correctamente, entonces no es del todo necesario comprender la arquitectura de la computadora. al menos un conocimiento completo no es fundamental para ser un buen programador en estos días.

    
respondido por el David Hollman 01.10.2010 - 15:54
fuente
1

No, no conducirá a un déficit de programadores con conocimientos de arquitectura de computadoras. Los idiomas se utilizan para resolver problemas en un dominio particular. Si desea resolver un problema en particular, use el lenguaje apropiado o uno lo suficientemente bueno dados sus recursos.

En realidad, ¿qué dominios realmente necesitan conocimiento de la arquitectura de la computadora? ¿Eso necesita estar ligado a una arquitectura de hardware particular? ¿Sistemas operativos? ¿Controladores de dispositivo? Claro, pero incluso entonces solo partes de dicho código necesitan conocimientos arquitectónicos específicos.

¿Mejora del rendimiento? Sí, puede aplicar el conocimiento de la arquitectura de la computadora para mejorar el rendimiento de los algoritmos. Pero otros dos factores tienen un mayor impacto en el rendimiento: el uso de mejores algoritmos y el conocimiento del entorno de ejecución del idioma.

En esencia, los lenguajes de programación más abstractos resuelven problemas para los que no son necesarios los detalles de la arquitectura de la computadora. Permiten resolver más problemas. Las personas que los usan no los están utilizando para resolver problemas dependientes de la máquina. Las personas que necesitan resolver problemas dependientes de la máquina continuarán usando lenguajes con capacidad de máquina. Esto no es un problema de suma cero.

    
respondido por el Huperniketes 21.10.2010 - 15:04
fuente