No creo que tenga sentido distinguir entre un programador de alto nivel y un programador de bajo nivel.
Cuando trabajas con un lenguaje de alto nivel, trabajas en un conjunto de abstracciones. Por eso es un lenguaje de alto nivel. Sin embargo, las abstracciones “gotean”. Siempre hay casos extremos donde la realidad que trataste de abstraer brilla. Por ejemplo, en Java todo es una referencia. Una de las abstracciones de Java es que la memoria es igual y su única preocupación es tener suficiente.
Como resultado, puede escribir código que no se vea mal, pero que resulte en un rendimiento horrible porque la memoria no es igual. La memoria en los registros es más rápida que la memoria en las memorias caché, que es más rápida que la memoria principal, y la localidad de los datos, la forma de sus estructuras y muchos otros detalles que Java le ciega pueden tener un impacto serio en su rendimiento. Y cuando necesita corregir su rendimiento, necesita saber por qué su código aparentemente correcto funciona lentamente, lo que significa que debe mirar más allá de sus abstracciones y comprender lo que realmente está sucediendo.
- ¿Es una mala idea ir a un campo de entrenamiento antes de comenzar mi licenciatura en informática?
- ¿Qué debe hacer uno si está atrapado en ECE pero le encanta la codificación?
- ¿Qué asignaturas de nivel CIE A se deben tomar para estudiar economía, negocios, informática e ingeniería de software en una universidad?
- ¿Qué son buenos menores para la informática?
- ¿Qué hago ahora que he descubierto que no puedo convertirme en programador de computadoras?
Y en un nivel más fundamental, ser un buen programador de alto nivel requiere que comprenda su idioma de elección, y eso significa comprender las abstracciones que proporciona. Y para saber cuáles son esas abstracciones, debe saber qué está haciendo realmente la computadora subyacente y qué se está abstrayendo.