HISTORIA Y TIP HISTORIA TIPOS OS 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 resultaba realambrar realambrar el el circuito cada vez que cambiaba el uso del ENIAC.
Hasta este momento, no se percibía una diferencia d iferencia sustancial diferencia sustancial entre entre el el equipo equipo y el control de las operaciones. El concepto de programa p rograma de control almacenado en programa memoria, aportación popularmente atribuida a John von Neumann, 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 propó sito facilitar propósito facilitar el 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. 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 softwa re 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). (h ard-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 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 ampliaron yy 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 I BM 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 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 l lamado lenguaje de maquina. Todo programa escrito en otro lenguaje puede ser ejecutado e jecutado de dos maneras: Mediante un programa que va adaptando las instrucciones i nstrucciones conforme son encontradas. A este proceso se lo llama interpretar interpretar y 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 compilar y 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 le nguajes 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 c omprender 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 del bucle bucle tendrá tendrá que que volver 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) ( MySQL) •Programas de comunicaciones. (MSN Messenger) •Paquetes integrados. (Ofimática: Word, Excel, PowerPoint…) •Programas de diseño asistido por computador. (AutoCAD)