SOFTWARE PARTE 1 HARDWARE: parte tangible del ordenador SOFTWARE: (término acuñado como antónimo de hardware), parte del ordenador que no se puede tocar El software es quizás la parte menos conocida aunque la más empleada, y está relacionada con aspectos de índole comercial. Ada Lovelace - Considerada la primera programadora de la historia. - Ideó un lenguaje de programación en un intento de sacar más rendimiento a la máquina analítica de Babbage. Intentaba adaptar esa máquina a diversas situaciones. Esa máquina inicialmente trataba de solucionar problemas numéricos, y ella pretendió adaptarla a otras facetas. - Formuló el concepto de subrutina, base actual de todos los desarrollos que existen: pequeñas partes de programas que se pueden reutilizar en muchas aplicaciones. Sin embargo, quedó desestimada en su tiempo (tanto por ser mujer como porque en la época no había el suficiente desarrollo del hardware como para poner sus teorías en marcha). SOFTWARE Conjunto de programas, procedimientos, algoritmos y datos relacionados que proporcionan al computador las instrucciones sobre lo que tiene que hacer y cómo. Puede proporcionar instrucciones bien directamente al hardware o bien a otras partes del software. Actualmente hay varios niveles de software que consiguen que cada vez sea más fácil llegar a realizar aplicaciones muy complejas usando el concepto de subrutina. Hay un nivel básico de software que contacta directamente con la parte física del que no somos prácticamente conscientes. Está muy por debajo del nivel de aplicación del programa concreto que usamos y es imprescindible para la comunicación con la parte física. Ese nivel unido al hardware se viene usando desde los inicios de la informática. A continuación están los niveles de interacción que nos sirve ya para interaccionar con el ordenador. User Application Operating system Hardware Gran parte del desarrollo de la informática se debe a que se consiguió trasladar la información a un sistema que fuese fácilmente manejable por máquinas. Se basa en la utilización de interruptores. El desarrollo mecánico se ha basado en aumentar el número de esos interruptores. Antes del bit los ordenadores eran analógicos (trataban señales variables). La ventaja principal del uso de las señales variables era que se aproximaba mucho a aquellas cosas que quería medir, pero la desventaja es que presuponía una complejidad muy grande de los sistemas y además esos sistemas eran muy cerrados (había que cambiarlos para que actuaran de otra manera). Representación de la información: - Bit: estado lógico . Podría ser la dualidad verdadero/falso ó 1/0 en binario, o interruptor encendido o apagado Byte: 8 bits Palabra o 16 bits o 32 bits o 64 bits A partir del interruptor se inicia un desarrollo para pasar de pocos interruptores (transistores) a miles de millones de ellos en cada uno de los procesadores. GENERACIONES DE SOFTWARE Relacionadas con las generaciones de hardware. 1ª generación: - Los primeros ordenadores se programaban cambiando cables o interruptores, uno por cada bit. Cambiar de programa suponía rediseñar el ordenador, cambiar el cableado (el software coincidía prácticamente con el hardware). - El código utilizado para programar el ordenador era directamente código máquina (secuencias de 1 y 0 que el ordenador es capaz de entender, se sigue usando en la actualidad). Una secuencia seguida de interruptores apagados o encendidos determina un código, una orden para el ordenador. Es el único código que realmente entiende cualquier ordenador a nivel de hardware. - El siguiente paso fue sustituir los interruptores por cintas de papel perforadas: el ordenador leía cada línea. La luz pasaba por los agujeros y el ordenador leía las líneas de luces que se formaban (parecido a los lectores de exámenes actuales). 2ª generación - Se basa en un modelo desarrollado por Von Neumann. Definió una arquitectura que facilitaría el manejo de los ordenadores mediante el desarrollo del software. Su arquitectura de ordenadores contenía 2 aspectos fundamentales: Técnica de programa almacenado (stored program) = hardware simple más software complejo (separar de alguna forma los elementos del hardware para que hubiera la posibilidad de memorizar un programa). Definió una estructura con un elemento central de proceso (hoy en día todavía se llama CPU o procesador) con una serie de elementos entre los cuales habría una unidad aritmética y un contador de programas. Separado del procesador habría una memoria (para almacenar software). Nos permite desarrollar software más complejos. Simplificando, se usaría un hardware sencillo y común, y un software que es el que cambia, cada vez se hace más complejo. Control condicional del contador = el programa puede tener más de una secuencia: • Bifurcación (elegir el hacer una tarea u otra) • Bucles (repetir alguna de las secuencias, por ejemplo para hacer una suma) En los primeros ordenadores la primera secuencia se ejecutaba con la segunda, ésta con la tercera y así sucesivamente. A partir de la arquitectura de Von Neumann cabe la posibilidad de incrustar la lógica en algún punto y de repetir alguna de las secuencias. El desarrollo del software permitió que el ordenador pudiese ejecutar diferentes tareas. o - - Para meter los programas en este modelo: igual que en el anterior, pero podíamos ir memorizando línea a línea, aunque el sistema de entrada salida sigue siendo de nivel bastante bajo (todavía estaba esa secuencia de interruptores que se activaban). Uso de símbolos: ensamblador (dio la posibilidad de que más gente pudiera programar ordenadores sin saber cómo funciona el ordenador “por dentro”, pues se cambió el código máquina por símbolos, que en realidad son combinaciones de interruptores, de encendidos y apagados). Se ha seguido hasta la actualidad. El ensamblador traduce los encendidos y apagados del interruptor a un código máquina. El programador no necesita la secuenciación de bits. Transferencia a un lenguaje natural. Código máquina Inst. 1: 01001101 Inst. 2: 01101111 … Inst. 10: 10010101 Ensamblador: Ins1: load A Inst 2: Load B Inst.3: load AB 3ª generación El paso de unas generaciones a otras transcurrió en poco espacio de tiempo. Actualmente se siguen usando 3ª, 4ª y 5ª generación. - Primeros pasos hacia el LENGUAJE NATURAL - Lenguajes de alto nivel (se consideraron a partir de 1970 más o menos, dejando atrás a los de bajo nivel): o FORTRAN (Formula Translation o “traducción de fórmula”): de planteamiento matemático, uno de los primeros lenguajes de alto nivel que se creó. Al sumar por ejemplo 5 elementos o o o o o se simplifica mucho de lo anterior. Necesita de traductores por debajo para llegar a un código máquina. Basic (Beginner´s All-purpose Symbolic Instruction Code): intento de código universal, se ha seguido usando desde que se creó (actualmente lo hay en muchos tipos de ordenadores como en algunos de Microsoft). Se pretendía que no fuese muy especializado. No vale para programar grandes programas. Abajo tenemos la misma operación que antes pero para Basic: cogemos 5 valores, asignamos variables, damos valor a una variable y en un bucle se van sumando los valores. PASCAL: junto con ALGOL, estaban destinados a cosas más especializadas como la gestión. ALGOL (ALgorithmic Language) C: quizás uno de los más importantes en el desarrollo de la informática. Se desarrolló a partir del B. En él se pueden escribir subrutinas o subprogramas que pueden usar muchas aplicaciones o programas. A partir de él se han programado la mayor parte de los sistemas operativos actuales. ADA (en honor a Ada Lovelace): se orienta hacia la inteligencia artificial, facilitando la incrementación de programas de inteligencia artificial. Todos estos lenguajes son un avance en el camino hacia la idea de que todo el mundo sea capaz de programar. FORTRAN INTEGER :: x(5) = (/1,2,3,4,5/) Print*,SUM(x) BASIC DIM x(5) A=0 FOR I=1 TO 5 A=AmásI NEXT PRINT A 4ª generación Quizás una de las que más usamos a diario la mayor parte de la gente. - Programación por parte del usuario final - Uso de interfaces visuales (ventanas, gráficos, etc.) - El programa consiste en decir al ordenador QUÉ tiene que hacer, no el CÓMO - Ventajas: o Rapidez en el desarrollo: es muy fácil el decir al ordenador lo que tiene que hacer (por ejemplo a una hoja de cálculo decirle que nos haga una suma) o Menor especialización del programador - Desventajas: o Exige un hardware muy potente 5ª generación - Lenguaje natural: busca llegar a usarlo para comunicarnos con el ordenador - Aproximación intuitiva al problema - Primeros pasos del futuro Prolog: - Descendiente(X,Y) : - hijo (X,Y). - Descendiente(X,Y) :-descendiente(X,Z), hijo(Z,Y) - Hijo(bart, homer) - Hijo(homer, abuelo) Resultado: - ¿-descendiente (bart, W). - W =homer - W = abuelo Ejemplo del intento de acercarse a todo esto en un lenguaje de programación. SOFTWARE Aplicaciones Programación Sistema Hardware Hay una parte del software que tiene que ser específica para el hardware con el que trabaja. Trabajamos con aplicaciones como el Word, por debajo de las cuales está el sistema (hace que la máquina entienda lo que estamos escribiendo), y todo esto va encima del harware. Como paralelo a software de aplicaciones y sistemas estaría el software de programación (como el lenguaje C, que ha permitido el desarrollo de Windows o Linux). La informática ha llegado a lo que es hoy en día porque en un determinado momento se ha escogido un camino y no otro. La mayor parte de los ordenadores tienen una pantalla y un teclado, y esto es porque el primer software a nivel comercial se realizó para tratar de simplificar el trabajo de trabajadores de oficina. Es fundamental esta idea, ya que la informática actualmente es lo que es porque en algún momento se tendió hacia una cosa y no hacia otra.