[38] Higher- idiomas de nivel y el diseño de programas Aunque considerablemente más fácil que en lenguaje de máquina, escribir programas largos en lenguaje ensamblador es a menudo difícil y es también propenso a errores. Por lo tanto, los programas más prácticos están escritos en lenguajes de programación de alto nivel más abstracto que son capaces de expresar las necesidades del programador más convenientemente (y de ese modo ayudar a reducir el error del programador).
Lenguajes de alto nivel son por lo general "compilados" en lenguaje de máquina (o, a veces en lenguaje ensamblador y luego en lenguaje de máquina) usando otro programa de computadora llamado compilador. [39] Los lenguajes de alto nivel son menos relacionados con el funcionamiento del equipo de destino que el lenguaje ensamblador y más relacionado con el lenguaje y la estructura del problema (s) a ser resuelto por el programa final.
Por tanto, es a menudo posible utilizar diferentes compiladores para traducir el mismo programa de lenguaje de alto nivel en el lenguaje de máquina de muchos tipos diferentes de equipo. Esto es parte de los medios por los que el software como juegos de video puede estar disponible para diferentes arquitecturas de computadora tales como computadoras personales y varias consolas de videojuegos. La tarea de desarrollar sistemas de software grandes representa un desafío intelectual significativa.
La producción de software con un aceptablemente alta fiabilidad dentro de un horario predecible y el presupuesto ha sido históricamente difícil; la disciplina académica y profesional de la ingeniería de software se concentra específicamente en este desafío.
(4)