El software de computadora es un programa que permite que una computadora realice una tarea específica, en oposición a los componentes físicos del sistema (hardware). Esto incluye el software de sorteos de aplicación, como un procesador de texto, que permite al usuario realizar una tarea, y el software del sistema, como un sistema operativo, que permite que otro software se ejecute correctamente, al interactuar con el hardware y con otro software.

El término “software” fue utilizado por primera vez en este sentido por John W. Tukey en 1957. En ciencias de la computación e ingeniería de software, el software de sorteos es todos los programas de computadora. Charles Babbage inventó el concepto de leer diferentes secuencias de instrucciones en la memoria de un dispositivo para controlar los cálculos como parte de su motor de diferencia. La teoría que es la base de la mayoría del software moderno fue propuesta por primera vez por Alan Turing en su ensayo de 1935.

El software es una secuencia ordenada de instrucciones para cambiar el estado del hardware de la computadora en una secuencia particular. Por lo general, está escrito en lenguajes de programación de alto nivel que son más fáciles y más eficientes para que los humanos los usen (más cerca del lenguaje natural) que el lenguaje de máquina. Los lenguajes de alto nivel se compilan o interpretan en código objeto de lenguaje máquina. El software de sorteos también se puede escribir en un lenguaje ensamblador, esencialmente, una representación mnemónica de un lenguaje de máquina usando un alfabeto de lenguaje natural. El lenguaje ensamblador debe ensamblarse en código objeto a través de un ensamblador.

Tipos
Los sistemas informáticos prácticos dividen el software en tres clases principales: software de sistema, software de programación y software de aplicación, aunque la distinción es arbitraria y a menudo difusa.

El software del sistema ayuda a ejecutar el hardware y el sistema informático. Incluye sistemas operativos, controladores de dispositivos, herramientas de diagnóstico, servidores, sistemas de ventanas, utilidades y más. El propósito del software de sorteos de sistemas es aislar al programador de aplicaciones tanto como sea posible de los detalles del complejo informático particular que se utiliza, especialmente la memoria y otras características de hardware, y dispositivos accesorios como comunicaciones, impresoras, lectores, pantallas, teclados, etc.
El software de programación generalmente proporciona herramientas para ayudar a un programador a escribir programas de computadora y software de sorteos usando diferentes lenguajes de programación de una manera más conveniente. Las herramientas incluyen editores de texto, compiladores, intérpretes, vinculadores, depuradores, etc. Un entorno de desarrollo integrado (IDE) fusiona esas herramientas en un paquete de software, y un programador puede no necesitar escribir múltiples comandos para compilar, interpretar, depurar, rastrear, etc., porque el IDE generalmente tiene una interfaz gráfica de usuario avanzada.
El software de sorteos de aplicación permite a los humanos realizar una o más tareas específicas (no relacionadas con la computadora). Las aplicaciones típicas incluyen automatización industrial, software comercial, software educativo, software médico, bases de datos y juegos de computadora. Las empresas son probablemente los mayores usuarios del software de aplicación, pero casi todos los campos de la actividad humana ahora utilizan algún tipo de software de aplicación. Se utiliza para automatizar todo tipo de funciones.