Todo sobre el software

Historia del software

El primero se refiere al desarrollo de un algoritmo pensado para una máquina en específico, como era en su época la ‘máquina analítica’ a mediados del siglo XIX. Esta máquina al final no se llegó a realizar y el algoritmo no se puso en práctica. La programadora de la primera ‘protopieza’ de software fue Ada Lovelace, la primera mujer programadora de la historia.

El segundo suceso que se dio fue un trabajo de Alan Turing que se basaba en números computables, por lo que estaríamos ante la primera teoría del software de todos los tiempos. Esto ocurrió poco antes de mediados del siglo XX.

Etapa anterior a 1950: Son décadas en las que se sientan las primeras bases y pinceladas del software. Como se ha mencionado en el epígrafe anterior, Ada Lovelace y Alan Turing son los precursores del concepto ‘software’.

Década de los 50’ 60’ y 70’: En estos años el software pasó de ser un concepto teórico y abstracto a ser reconocido como un factor indispensable para la invención y desarrollo de dispositivos o máquinas. Se acuña por primera vez en una conferencia de la OTAN el término ‘ingeniería de software’. Esto es la primera muestra de una de las ciencias y profesiones más estudiadas y demandadas correspondientemente. En aquella época los lenguajes que más se utilizaban eran COBOL y FORTRAN.

Década de los 80’ y 90’: En estas dos décadas se identifica un problema, y es que la gran demanda superaba la oferta de profesionales en la industria. Además, los profesionales no podían abarcar tantas áreas de conocimiento sin especialización previa. Surgieron los primeros colapsos en proyectos y trabajos de complejidad avanzada. Sin ir más lejos, en esta época se lanzan Windows en 1985 y Linux en 1992. Además la aparición del lenguaje HTML es gracias al auge del World Wide Web (WWW), uno de los principales hitos de la era digital.

Siglo XXI: Desde principios del siglo XXI se han dado grandes avances en todos los campos que abarca el software. Desde la aparición de los revolucionarios smartphone, con un software integrado que hace que un único dispositivo pueda realizar tareas en las que antes se necesitaba un ordenador. Por otra parte, también se han llegado a niveles de desarrollo en tecnologías aún por investigar y desarrollar como lo son la IA o las ya tan conocidas criptomonedas. 

(Jonathan Llamas, 2020)

Software y tecnologías de la información

Concepto de Software

El software es el conjunto de programas, instrucciones, datos y reglas lógicas que permiten que un dispositivo electrónico, como una computadora o un teléfono móvil, ejecute tareas específicas y funcione correctamente. Es la parte intangible de un sistema informático. El software es la base que permite que los dispositivos electrónicos realicen funciones útiles, ya que sin él el hardware no tendría instrucciones para operar ni podría ejecutar ninguna tarea.


Función y utilidad

El software no solo es conjunto de programas e instrucciones; cumple funciones clave que permiten que un dispositivo electrónico realice tareas útiles para el usuario y aproveche al máximo sus recursos. Estas funciones han sido descritas por fuentes especializadas en informática y tecnología:

Facilita la comunicación entre usuario y máquina

El software actúa como intermediario entre el usuario y el hardware, proporcionando una interfaz (gráfica o de comandos) que permite al usuario dar instrucciones y recibir respuestas del dispositivo de forma comprensible. Esto hace posible que funciones complejas se realicen de forma simple y accesible para personas sin conocimientos técnicos avanzados. (inesdi.com)

Organiza y administra los recursos del sistema

Una de las funciones fundamentales del software, especialmente del sistema operativo, es gestionar los recursos del hardware (como la memoria, la CPU y los dispositivos de entrada/salida) para que distintos programas puedan ejecutarse al mismo tiempo sin conflictos y de manera eficiente. Esto optimiza el uso de los recursos disponibles en el equipo. (TechTarget)

Automatiza acciones y procesos

El software permite automatizar tareas repetitivas o complejas, reduciendo la intervención manual del usuario y aumentando la eficiencia. Por ejemplo, programas de cálculo automático, impresión de informes o edición de datos realizan acciones por sí solos siguiendo las instrucciones programadas. (Get a professor)

Optimiza el rendimiento del sistema

Al organizar y controlar cómo se utilizan los recursos y al automatizar tareas, el software mejora el rendimiento general del dispositivo, haciendo que funciones como abrir programas, procesar información o ejecutar múltiples tareas ocurran de forma más rápida y estable. (TechTarget)

Características del software de sistema




Gestión de recursos (Información ampliada con fuentes confiables)

La gestión de recursos es una de las funciones principales del software de sistema.  El software de sistema especialmente el sistema operativo es responsable de controlar las operaciones básicas del computador y coordinar el uso del hardware para que funcione de manera eficiente.

El sistema operativo administra recursos fundamentales como la memoria, el procesador y los dispositivos de entrada y salida, asegurando que los programas se ejecuten correctamente y sin conflictos.


Administración de memoria

El software de sistema controla cómo se asigna la memoria RAM a cada programa en ejecución. Supervisa qué procesos están usando memoria, libera espacio cuando ya no es necesario y evita que un programa interfiera con otro. Esta gestión permite estabilidad y mejor rendimiento del equipo.


Administración de procesos

Organiza y supervisa las tareas que ejecuta el procesador (CPU). Decide qué proceso se ejecuta primero, cuánto tiempo utiliza el procesador y cómo se alternan varias tareas al mismo tiempo (multitarea). Esto permite que el usuario pueda usar varias aplicaciones sin que el sistema colapse.


Control de dispositivos de entrada y salida

El software de sistema también coordina la comunicación entre el hardware y el sistema mediante controladores. Gestiona dispositivos como teclado, mouse, monitor, impresoras y almacenamiento, permitiendo que funcionen correctamente y respondan a las órdenes del usuario.

 Tipos de sistema

Sistemas Monotarea (Single-tasking)

Son sistemas que solo ejecutan una tarea a la vez: no se puede iniciar otro programa hasta que no termine el actual. También se les llama single-tasking o sistemas de procesamiento único. Estos sistemas fueron comunes en las primeras computadoras y se usan todavía en entornos muy simples o embebidos donde no se necesita multitarea. 


Sistemas Multitarea (Multitasking)

Permiten ejecutar varias tareas “al mismo tiempo” mediante un mecanismo de reparto de tiempo del procesador, aunque internamente solo se ejecute una instrucción por ciclo de CPU. Esto se logra con un planificador que asigna “rebanadas de tiempo” (time slices) entre los procesos. 


Sistemas en Tiempo Real (Real-time)

Son sistemas diseñados para aplicaciones donde el tiempo de respuesta es crítico: deben responder dentro de límites temporales estrictos. Este tipo de sistemas no solo procesa operaciones, sino que lo hace con determinismo y baja latencia, es decir, el tiempo de respuesta es predecible y garantizado. Se usan en ambientes donde un retraso puede causar fallos graves: control industrial, sistemas médicos, robótica, etc. (oacampusvirtual.uadec.mx)


Sistemas Distribuidos (Distributed)

En un sistema distribuido, varias computadoras independientes coordinan su trabajo a través de una red para que parezca un único sistema funcional. Esto permite compartir recursos y cargas de trabajo, mejorando escalabilidad y potencia de cálculo.  Los usuarios pueden acceder a archivos, procesos y servicios distribuidos como si fueran locales.


Software de desarrollo y lenguaje

El éxito en el desarrollo de software depende, en gran medida, de elegir el lenguaje adecuado para el proyecto. A continuación, exploramos los lenguajes que están liderando la industria y que prometen tener un impacto significativo en el futuro.

Python:

Python sigue siendo un pilar en áreas como la ciencia de datos, la inteligencia artificial y la automatización. Su sintaxis sencilla y su extensa biblioteca de herramientas lo convierten en una opción popular tanto para principiantes como para expertos.

JavaScript

JavaScript es el estándar de facto para el desarrollo web y uno de los lenguajes más utilizados a nivel global. Su capacidad para ejecutarse tanto en el lado del cliente como en el servidor (gracias a Node.js) le otorga una versatilidad única.

Rust

Rust ha emergido como una opción clave en el desarrollo de sistemas gracias a su enfoque en la seguridad y el rendimiento. Su capacidad para gestionar la memoria sin necesidad de un recolector de basura lo hace ideal para aplicaciones donde la eficiencia es crítica, como sistemas embebidos, motores de juegos y blockchain.

Go (Golang)

Go, también conocido como Golang, fue desarrollado por Google para simplificar el desarrollo de aplicaciones escalables. Este lenguaje se ha posicionado como una opción destacada para proyectos backend, aplicaciones en la nube y microservicios, gracias a su alto rendimiento y capacidad para manejar tareas concurrentes.

 

Software de aplicación



Un software de aplicación es un tipo específico de programas, también llamado “aplicación”, cuya función es permitir al usuario llevar a cabo tareas de distinto tipo y finalidad, como pueden ser trabajos, cálculos, navegación web, videojuegos y cualquier otro fin distinto al mantenimiento del sistema. En esto se diferencia del software de sistema.

Forman parte del software de aplicación todos aquellos programas que no tienen que ver con el funcionamiento de la computadora, sino que se incorporan al sistema para que funcione como herramienta de trabajo (como hojas de cálculo, procesador de palabras o programas de diseño gráfico), de ocio (como videojuegos, reproductores de audio o video) o de información (como enciclopedias digitales o navegador de internet), entre muchas otras funciones posibles.

 

Normalmente, el software de aplicación es diseñado y comercializado aparte del resto de la computadora, y su selección e instalación en el sistema es a elección del usuario. Asimismo, puede ofrecerse como parte de proyectos abiertos o colaborativos de descarga gratuita en internet.

Jonathan Llamas, J. F. (1 de 11 de 2020). economipedia. Obtenido de Historia del software: https://economipedia.com/definiciones/historia-del-software.html

Comentarios