You are on page 1of 21

HISTORIA Y TIPOS DE

SOFTWARE

ING. OCTAVIO ALBERTO SANTIAGO DELGADO


CONTENIDO
Definicion de Software
Historia
Tipos de Software
Sistemas Operativos
Lenguajes de Programacion
Programas de Aplicacion
Definicion de SOFTWARE
Software: palabra proveniente del ingles (literalmente: partes blandas
o suaves), que en nuestro idioma no posee una traducción adecuada al
contexto, por lo cual se utiliza asiduamente sin traducir y fue admitida
por la Real Academia Española (RAE).

La palabra «software» se refiere al equipamiento lógico o soporte


lógico de un computador digital, comprende el conjunto de los
componentes lógicos necesarios para hacer posible la realización de
una tarea específica, en contraposición a los componentes físicos del
sistema (hardware).
HISTORIA

La historia del software como se ha visto, no surge con los equipos


electrónicos, -aunque es con ellos que adopta el nombre- está
presente desde el empleo de ábacos o sumadoras mecánicas.

Sin embargo, en estos casos, el software no se encuentra


incorporado en el equipo. Es aportado por el operario.

La máquina analítica de Charles Babbage, incidentalmente, tuvo su


software, y fue una amiga de éste, la legendaria lady Lovelace,
quien aportó el software que no se llegó a usar, dado que la
máquina nunca se completó. En el ENIAC el control de las
operaciones estaba parcialmente integrado en el equipo.
Dicho control era realizado por un circuito que requería un alambrado específico
para cada aplicación. Imaginemos lo engorroso que resultaba realambrar el
circuito cada vez que cambiaba el uso del ENIAC.

Hasta este momento, no se percibía una diferencia sustancial entre el equipo y el


control de las operaciones. El concepto de programa de control almacenado en
memoria, aportación popularmente atribuida a John von Neumann, precipitó el
desarrollo de software.
En éste se perfilaron dos tendencias de desarrollo: los programas de aplicación y
los de servicio. Estos últimos tenían como propósito facilitar el desarrollo de
programas a partir de programas.

Algunos programas de servicio fueron simples cargadores que permitieron


emplear notaciones como el octal o hexadecimal más compactas que el binario.
Otros como los ensambladores simplificaron más el proceso al reemplazar
las notaciones numéricas con los símbolos mnemónicos que aportaron
para describir a cada instrucción de la máquina. El siguiente paso
significativo fue la traducción de fórmulas, que permitió el desarrollo de
la historia del software y la descripción de los algoritmos con el empleo
de expresiones algebraicas.

Dicha traducción se realiza con programas que se denominan


compiladores, generan programas que al ejecutarse producen los
resultados. Es importante destacar que en tanto los programas de
aplicación saturaron los recursos de los equipos, imponiendo sus
requerimientos en cuanto a velocidad, precisión en la aritmética y
capacidad en los almacenamientos; los programas de servicio
repercutieron en la evolución de la arquitectura de los equipos (hardware).
En los principios de la historia del software, los sistemas operativos
brotan como extensiones de los lenguajes. Posteriormente, el
fenómeno se invierte de modo que los sistemas operativos
configuren el ambiente en el que se desempeñan las aplicaciones y
los programas de servicio.
TIPOS DE SOFTWARE
Los tipos de software han paulatinamente adquirió mayor
importancia que el hardware. En un principio, la proporción favorecía
al equipo físico, pero progresivamente, el componente inmaterial
adquirió una mayor relevancia hasta hacerse el más importante.
Para facilitar su análisis, los tipos de software se clasifica
generalmente en tres grandes rubros:

Sistemas operativos
Lenguajes de programación
Programas de aplicación.
SISTEMAS OPERATIVOS

El software de sistema es el software básico o Sistema Operativo. Es un


conjunto de programas cuyo objeto es facilitar el uso del computador (aísla
de la complejidad de cada dispositivo, y presenta al exterior un modelo
común de sistema de manejo para todos los dispositivos) y conseguir que se
use eficientemente (ejemplo: realizar operaciones mientras se ejecuta un
programa). Administra y asigna los recursos del sistema (hard-ware).

Los Sistemas Operativos, surgen como extensiones de los lenguajes de


programación, tal es el sistema FAP elaborado para la IBM 709 que
orbitaba en torno al lenguaje Fortran, con una mínima participación del
operador, estableció un flujo controlado automáticamente para el proceso
de lotes de aplicaciones (batch).
Con el aumento tanto de los equipos como de los programas de servicio, las
funciones y características de los sistemas operativos se ampliaron y
sofisticaron, al grado de adquirir su propio dialecto o lenguaje, tal es el
caso del OS/360 para la serie 360 de la IBM, con su JCL (Job Control
Language) como lenguaje de control.

Algunos sistemas aportaron el concepto de la multiprogramación como


una medida para incrementar la productividad de la computadora como el
OS/360, otros, la interacción con el usuario representa esfuerzos
intelectuales de consideración, el sistema operativo para la serie 370 de la
IBM, tuvo un costo de 5 millones de horas hombre.
La interacción con el usuario dió una nueva dimensión al uso de los equipos y
con ello, produjo el concepto de tiempo compartido. Entre los sistemas que
aplicaron esta filosofía de operación destacan: CTSS (Compatible Time Sharing
System) desarrollado en el MIT para una IBM 7090. TOPS-10 para la PDP-10
de la Digital Equipment Corporation (DEC) MULTICS, elaborado también en el
MIT para equipos de General Electric y Honeywell.

En las minicomputadoras destacan el OS para la PDP-8 desarrollado por la DEC


y UNIX, un sistema operativo para la PDP-11 de DEC, desarrollado por dos
investigadores en los laboratorios de la Bell Telephone.
LENGUAJES DE PROGRAMACION

Un lenguaje de programacion es un conjunto de símbolos y reglas sintacticas y


semanticas que definen su estructura y el significado de sus elementos y expresiones, y
es utilizado para controlar el comportamiento físico y lógico de una máquina.

Aunque muchas veces se usan los términos 'lenguaje de programación' y ‘lenguaje


informatico' como si fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes
informáticos engloban a los lenguajes de programación y a otros más, como, por
ejemplo, el HTML (lenguaje para el marcado de paginas web que no es propiamente un
lenguaje de programación).

Un lenguaje de programación permite a uno o más programadores especificar de


manera precisa sobre qué datos debe operar una computadora, cómo estos datos deben
ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de
circunstancias.
Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje
humano o natural, tal como sucede con el lenguaje Lexico.

Una característica relevante de los lenguajes de programación es precisamente que más de


un programador puedan tener un conjunto común de instrucciones que puedan ser
comprendidas entre ellos para realizar la construcción del programa de forma colaborativa.

Los procesadores usados en las computadoras son capaces de entender y actuar según lo
indican programas escritos en un lenguaje fijo llamado lenguaje de maquina. Todo
programa escrito en otro lenguaje puede ser ejecutado de dos maneras:
Mediante un programa que va adaptando las instrucciones conforme son encontradas. A
este proceso se lo llama interpretar y a los programas que lo hacen se los conoce como
interpretes.

Traduciendo este programa al programa equivalente escrito en lenguaje de máquina. A ese


proceso se lo llama compilar y al programa traductor se le denomina compilador.
CLASIFICACION DE LOS LENGUAJES DE PROGRAMACION

Los lenguajes de programación se pueden clasificar atendiendo a


varios criterios:

Según el nivel de abstracción

Según la forma de ejecución


Según su nivel de abstracción:

Lenguajes Maquina:

Están escritos en lenguajes directamente inteligibles por la maquina (computadora), ya que


sus instrucciones son cadenas binarias (0 y 1). Da la posibilidad de cargar (transferir un
programa a la memoria) sin necesidad de traducción posterior lo que supone una velocidad de
ejecución superior, solo que con poca fiabilidad y dificultad de verificar y poner a punto los
programas.

Lenguajes de bajo nivel:

Los lenguajes de bajo nivel son lenguajes de programación que se acercan al funcionamiento
de una computadora. El lenguaje de más bajo nivel por excelencia es el codigo maquina. A
éste le sigue el lenguaje ensamblador, ya que al programar en ensamblador se trabajan con los
registros de memoria de la computadora de forma directa.
Lenguajes de medio nivel:
Hay lenguajes de programación que son considerados por algunos expertos como lenguajes de
medio nivel (como es el caso del lenguaje C) al tener ciertas características que los acercan a
los lenguajes de bajo nivel pero teniendo, al mismo tiempo, ciertas cualidades que lo hacen un
lenguaje más cercano al humano y, por tanto, de alto nivel.

Lenguajes de alto nivel:


Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por
elementos de lenguajes naturales, como el inglés. En BASIC, uno de los lenguajes de alto
nivel más conocidos, los comandos como "IF CONTADOR = 10 THEN STOP" pueden
utilizarse para pedir a la computadora que pare si el CONTADOR es igual a 10. Esta forma
de trabajar puede dar la sensación de que las computadoras parecen comprender un lenguaje
natural; en realidad lo hacen de una forma rígida y sistemática, sin que haya cabida, por
ejemplo, para ambigüedades o dobles sentidos.
Según la forma de ejecución

Lenguajes compilados:

Naturalmente, un programa que se escribe en un lenguaje de alto nivel también tiene


que traducirse a un código que pueda utilizar la máquina. Los programas traductores
que pueden realizar esta operación se llaman compiladores. Éstos, como los programas
ensambladores avanzados, pueden generar muchas líneas de código de máquina por
cada proposición del programa fuente. Se requiere una compilación antes de ejecutar las
instrucciones de un problema.

Los compiladores son aquellos cuya función es traducir un programa escrito en un


determinado lenguaje a un idioma que la computadora entienda (lenguaje máquina con
código binario).

Al usar un lenguaje compilado (como lo son, por ejemplo, los lenguajes del popular
Visual Studio de Microsoft), el programa desarrollado nunca se podrá ejecutar mientras
haya errores, sino hasta que tras haber compilado el programa, ya no aparecen errores
en el código.
Lenguajes interpretados:

Se puede también utilizar una alternativa diferente de los compiladores para traducir lenguajes de alto nivel. En
vez de traducir el programa fuente y grabar en forma permanente el código objeto que se produce durante la
compilación para utilizarlo en una ejecución futura, el programador sólo carga el programa fuente en la
computadora junto con los datos que se van a procesar.

A continuación, un programa interprte, almacenado en el sistema operativo del disco, o incluido de manera
permanente dentro de la máquina, convierte cada proposición del programa fuente en lenguaje de máquina
conforme vaya siendo necesario durante el procesamiento de los datos. El código objeto no se graba para
utilizarlo posteriormente.
La siguiente vez que se utilice una instrucción, se la deberá interpretar otra vez y traducir a lenguaje máquina.
Por ejemplo:

Durante el procesamiento repetitivo de los pasos de un ciclo o bucle, cada instrucción del bucle tendrá que volver
a ser interpretada en cada ejecución repetida del ciclo, lo cual hace que el programa sea más lento en tiempo de
ejecución (porque se va revisando el código en tiempo de ejecución) pero más rápido en tiempo de diseño (porque
no se tiene que estar compilando a cada momento el código completo).

El intérprete elimina la necesidad de realizar una de compilación después de cada modificación del programa
cuando se quiere agregar funciones o corregir errores; pero es obvio que un programa objeto compilado con
antelación deberá ejecutarse con mucha mayor rapidez que uno que se debe interpretar a cada paso durante una
ejecución del código.
PROGRAMAS DE APLICACION
El software de Aplicación es aquel que hace que el computador coopere con el
usuario en la realización de tareas típicamente humanas, tales como gestionar una
contabilidad o escribir un texto.

La diferencia entre los programas de aplicación y los de sistema estriba en que los
de sistema suponen ayuda al usuario para relacionarse con el computador y hacer
un uso más cómo del mismo, mientras los de aplicación son programas que
cooperan con el usuario para la realización de las actividades mencionadas.

Es en este software de Aplicación donde se aprecia en forma más clara la ayuda


que puede suponer un computador en las actividades humanas, ya que la máquina
se convierte en un auxiliar del hombre, liberándole de las tareas repetitivas.

Los programadores de aplicaciones, a diferencia de los programadores de


sistemas, no necesitan conocer a fondo el modo de funcionamiento interno del
hardware.
Basta con que conozcan las necesidades de información de sus aplicaciones y cómo
usar el sistema operativo, para conseguir satisfacer estas necesidades.

Sus programas deben ser independientes del hardware específico que se utilice y
deben ser transportados sin grandes problemas de adaptación a otras computadoras y
otros entornos operativos.

Dentro de los programas de aplicación, puede ser útil una distinción entre
aplicaciones verticales, de finalidad específica para un tipo muy delimitado de
usuarios (médicos, abogados, arquitectos…), y aplicaciones horizontales, de utilidad
para una amplísima gama de usuarios de cualquier tipo.
Algunos ejemplos de software aplicaciones son:

•Procesadores de texto. (Bloc de Notas)

•Editores. (PhotoShop para el Diseño Gráfico)

•Hojas de Cálculo. (MS Excel)

•Sistemas gestores de bases de datos. (MySQL)

•Programas de comunicaciones. (MSN Messenger)

•Paquetes integrados. (Ofimática: Word, Excel, PowerPoint…)

•Programas de diseño asistido por computador. (AutoCAD)