Si estás pensando en estudiar una carrera de diseño de software o informática, debes conocer la diferencia entre la informática y la ingeniería de sistemas. Una licenciatura en informática se centra en la programación secuencial y el diseño de software, mientras que la carrera de ingeniería de sistemas se centra en la programación de alto y bajo nivel. Una licenciatura en ciencias de la computación también cubre los fundamentos de la programación de bajo nivel, pero muy pocos desarrolladores de software tienen un conocimiento práctico del lenguaje ensamblador y del diseño de la arquitectura de los ordenadores.
La diferencia entre programación de alto y bajo nivel
La programación de alto nivel es lo que la mayoría de la gente piensa cuando habla de ingeniería de software. Es el mejor enfoque que los informáticos han ideado para desarrollar aplicaciones de escritorio y móviles porque organiza el complicadísimo proceso en un conjunto de reglas y convenciones relativamente fáciles de entender. Sin embargo, construir software sobre múltiples capas de abstracción tiene un costo de rendimiento, y hace que el código de alto nivel orientado a objetos se ejecute más lentamente que el código de bajo nivel que no necesita ser interpretado para ser entendido por el procesador.
Relativamente pocos programadores diseñan software de bajo nivel, y el proceso es completamente diferente al de la programación de alto nivel. En los inicios de la informática, toda la programación era de bajo nivel, y los matemáticos de los laboratorios universitarios operaban directamente en las tripas de los ordenadores para hacerlos responder a preguntas sobre álgebra lineal y estadística que a un humano le llevaría toda una vida resolver. Las instrucciones del ordenador se introducían directamente en el procesador central, y si se hubieran escrito, sólo parecerían secuencias de unos y ceros. Le decían al ordenador que realizara tareas muy sencillas, como cambiar ceros por unos y desplazar unos hacia la izquierda un determinado número de posiciones, y combinando 30 o 40 de estas sencillas instrucciones, los programadores podían decirle al ordenador que hiciera cosas complicadas como dividir 32 entre 8 o elevar 2 a la 16ª potencia.
Lo que hacen los programadores de bajo nivel
Como las instrucciones binarias parecían todo un alboroto para los humanos, eran propensas a cometer errores y, finalmente, los informáticos desarrollaron una forma de programación de bajo nivel legible para los humanos llamada lenguaje ensamblador. Los programadores todavía tenían que pensar en términos de estas instrucciones tan simples, pero ahora podían escribir las instrucciones con palabras significativas como “sumar” y “restar”. Hoy en día, el lenguaje ensamblador se sigue utilizando para escribir el código fuente de los sistemas operativos, y mientras los procesadores realicen las operaciones de una en una, el sistema operativo les proporcionará instrucciones simples y binarias.
Los ingenieros de sistemas tienen que saber diseñar hardware y software de bajo nivel para resolver problemas de la industria y la ingeniería que requieren ordenadores. Suelen trabajar en la fabricación, la logística y otros entornos industriales para diseñar ordenadores especializados para la automatización y el montaje de productos. Sólo necesitan conocimientos básicos de programación de alto nivel para diseñar una interfaz de usuario u otra aplicación utilizable por el ser humano. Los ingenieros de software se especializan en esta materia, pero en realidad es una ciencia pura con raíces en las matemáticas. En otras palabras, no es un campo de la ingeniería en absoluto, sino un campo de investigación que se ocupa de la teoría de los algoritmos y las matemáticas de las series y secuencias.
La ingeniería de software es actualmente el principal foco de innovación porque tiene el mayor potencial de desarrollo. El crecimiento del empleo para los ingenieros informáticos y los programadores de bajo nivel es más limitado que para los informáticos.