1. QUÉ ES UN SOFTWARE?
1.1. Parte intangible de un sistema informático
1.2. Su función es comunicarse con el hardware
1.3. 2 TIPOS DE CLASIFICACIÓN
1.3.1. **Según la tarea realizada**
1.3.2. Software de sistema
1.3.2.1. *Es utilizado para gestionar y controlar los componentes del hardware *
1.3.3. Software de aplicación
1.3.3.1. *Permite al usuario del sistema completar una o varias tareas *
1.3.4. Software de programación
1.3.4.1. *Permite a los desarrolladores utilizar lenguajes de programación necesaria para crear, mantener o ejecutar programas *
1.3.5. **Según la manera en la que se distribuya**
1.3.6. Software multimedia
1.3.7. Software de uso específico/ a medida
1.3.7.1. *Es una o varias aplicaciones según sus requerimientos u organismo *
1.3.8. Adware
1.3.8.1. *Descargan o instalan publicidad en sus versiones gratuitas *
1.3.9. Freeware
1.3.9.1. *Gratuito *
1.3.10. Shareware
1.3.10.1. *Periodo de prueba o que tiene una modalidad gratuita y el resto de funcionalidades son de pago *
2. QUÉ ES UN PROGRAMA?
2.1. Serie de instrucciones ordenadas con una finalidad determinada
2.2. QUÉ ES UNA APLICACIÓN ?
2.3. Están formadas por varios programas
2.4. Está en contacto con el hardware
3. Licencas de software
3.1. Software libre
3.1.1. *Todo software que se puede utilizar, copiar, modificar y distribuir libremente *
3.1.2. *Gratuíto o sobre un bajo precio *
3.1.3. *Puede ser distribuído comercialmente *
3.2. Software de propietario
3.2.1. *No existe forma libre de acceso a su código de fuente *
3.2.2. *No se permite su modificación, adaptación o lectura de forma libre *
3.3. Licencias de software
3.3.1. *Más utilizadas son GPL y GNU *
3.3.2. *Da el derecho al usuario de modificarlo y usarlo a cambio de hacer públicas sus modificaciones *
4. Lenguajes de programación
4.1. **Son lenguajes artificiales creados para dar instrucciones a la máquina en su lenguaje**
4.2. **Tienen sintaxis y conjuntos de normas para facilitar la traducción **
4.3. TIPOS DE LENGUAJES DE PROGRAMACION
4.3.1. **Lenguaje máquina**
4.3.1.1. Lenguaje de bajo nivel
4.3.1.2. Instrucciones complejas compuestas de 0 y 1
4.3.1.3. No necesita ser traducido
4.3.1.4. 1er lenguaje utilizado
4.3.1.5. El código es único para cada máquina
4.3.2. **Lenguaje medio nivel o ensamblador**
4.3.2.1. Sustituyó al lenguaje máquina
4.3.2.2. Se utiliza usando mnemotécnicos
4.3.2.3. Necesita compilarse y traducirlo
4.3.2.4. Trabaja con registros de procesador y direcciones físicas
4.3.3. **Lenguajes alto nivel**
4.3.3.1. Mayoría de lenguajes actuales
4.3.3.2. Forma intuitiva y simple de utilizar
4.3.3.3. Suelen tener librerías y funciones predeterminadas
4.3.3.4. Ofrecen frameworks para una programación más eficiente y rápida
4.3.3.4.1. Un Framework es un conjunto de conceptos y prácticas para enfocar un tipo de problema particular que sirve como ejemplo para resolver nuevos problemas similares
4.3.3.5. Trabajan con abstracción y orientación a objetos
4.3.4. DEPENDIENDO DE LA FORMA EN LA CUAL SON EJECUTADOS
4.3.5. **Lenguajes virtuales **
4.3.5.1. El código generado tras la compilación es intermedio o bytecode y se ejecuta en una máquina virtual
4.3.6. **Lenguajes interpretados **
4.3.6.1. Necesita un programa que se encarga de leer las instrucciones, interpretarlas y ejecutarlas
4.3.7. **Lenguajes compilados **
4.3.7.1. Necesitan un programa que traduzca (*compilador*) para convertir el código fuente en un código máquina