SlideShare une entreprise Scribd logo
1  sur  5
Télécharger pour lire hors ligne
80    Historia del software en computación aplicado a la informática educativa.


     realiza cualquier acción con el software que no esté permitida se produciría una
     piratería de software. Estas licencias llegan hasta el punto de regular el número de
     copias que pueden ser instaladas e incluso los fines concretos para los cuales puede
     ser utilizado. La mayoría de estas licencias limitan fuertemente la responsabilidad
     derivada de fallos en el programa. Normalmente, los fabricantes de programas
     sometidos a este tipo de licencias ofrecen servicios de soporte técnico y
     actualizaciones durante el tiempo de vida del producto.

      Algunos ejemplos de este tipo de licencias son las llamadas CLUFs (Contrato de
     Licencia para Usuario Final) o EULAs (End User License Agreement) por sus siglas en
     Inglés.

      El software de dominio público, es decir, que no dispone de licencia, puede ser
     utilizado, copiado, modificado y redistribuido con o sin fines de lucro.




                    3.6. Eras del software.
             Hasta ahora hemos visto que hay diferentes tipos de software. En este punto
     veremos cómo ha ido cambiando su importancia y utilidad desde el inicio de la
     computación. Podemos decir que el software ha evolucionado a través de eras o
     generaciones que coinciden aproximadamente con las décadas. Por ahora hay cinco
     eras o generaciones que explicaremos a continuación.



     3.6.1. Primera Era (1945-55).[7][37][32][19][11][9]
           Como ya se ha dicho en la introducción de la evolución del software durante los
     primeros años de la aparición de las computadoras, el software se contemplaba como
     un añadido. Desde entonces hasta ahora, el software se ha desarrollado
     tremendamente.

      El software se desarrollaba sin ninguna planificación anterior y con un alto coste
     monetario, ya que el coste de los programadores asociados a un centro de
     computación superaba el coste del ordenador, en una escala creciente, pues la
     tecnología iba bajando de precio, y con ello descendían los precios de los ordenadores.
     El software se realizaba virtualmente y a menudo los planes no salían como ellos
     querían. Los programadores intentaban hacer bien todas las operaciones pero esto
     requería mucho esfuerzo, aunque a menudo les salían con éxito. Los problemas que
     debían resolver eran técnicos y se centraban principalmente en expresar algoritmos
     conocidos en algún lenguaje de programación. El software era realizado por una sola
     persona, lo escribía, lo ejecutaba y lo depuraba.


     Daniel Merchán López. 2013
Historia del software en computación aplicado a la informática educativa.   81


 Debido a este entorno, el diseño era un proceso implícito, realizado en la mente de
alguien, y la documentación normalmente no existía. Los vendedores exageraban
tanto sus prestaciones, en la peor tradición comercial engañosa, que resultaron
contraproducentes y generaron un amplio escepticismo hacia estos sistemas.

 Podemos decir que en esta generación el hardware era de propósito general mientras
que el software se diseñaba a medida para cada aplicación y tenía una distribución
relativamente pequeña.

 Los computadores de la primera generación no disponían de sistema operativo, el
programador interactuaba directamente con el hardware del computador. La
introducción y control de la ejecución de programas se hacía manualmente y uno a
uno. Para interactuar con estas máquinas se disponía de una consola compuesta por
conmutadores, indicadores luminosos, un dispositivo de entrada (por ejemplo un
lector de tarjetas) y una impresora. Los programas, que estaban hechos en código
máquina, se cargaban desde el dispositivo de entrada. Cuando se producía algún error,
éste se indicaba a través de los indicadores luminosos. Así el programador podía
determinar la causa del error examinando los registros y la memoria principal. Cuando
el programa se ejecutaba correctamente proporcionaba los resultados a través de la
impresora.

 Como hemos dicho anteriormente el programa era ejecutado uno a uno y
manualmente. Esto lo hacía un solo programador que era el que en ese momento
accedía a la máquina. Uno de los principales problemas era que en ésta generación el
computador estaba la mayor parte del tiempo desocupado pues tardaba mucho
tiempo en realizar las transferencias de datos con los periféricos de entrada/salida. El
tiempo de cada programador era anotado en una hoja de reservas; cada operador
reservaba el tiempo que él creía que tardaría en terminar la tarea. Para empezar a
operar el programador debía insertar su tablero de conmutación en la computadora y
cuando terminaba antes de la hora prevista dejaba el computador desocupado. La
mayoría de las operaciones consistían en cálculos numéricos directos, como la
producción de tablas de senos y cosenos.

 Otro gran problema era el tiempo de preparación de los programas también, llamado
trabajo. Para cada uno se cargaba un compilador y se guardaba en la memoria, salvaba
el programa compilado y por último cargaba y montaba el programa objeto junto con
las funciones comunes. Aparte de toda esta tarea, que se realizaba a mano y por
cualquier error debía volver al inicio del proceso, el programador debía tener cuidado
con los tubos de vacío, era fácil que alguno fallara y tuvieran que realizar todas las
operaciones más de una vez. Esto implicaba una pérdida considerable de tiempo. Este
modo de operación lo podemos denominar proceso en serie puesto que refleja el
hecho de que los usuarios accedían al computador en serie.


Daniel Merchán López. 2013
82    Historia del software en computación aplicado a la informática educativa.


      En esta generación, los computadores se programaban en lenguaje máquina, estando
     por tanto, cada instrucción constituida por una secuencia de números, con los
     consiguientes inconvenientes en cuanto a legibilidad, falta de versatilidad,
     dependencia del computador, etc. Es de destacar el concepto de subrutina. La
     subrutina ya estaba presente en esta primera etapa, y con ellas los programadores no
     tenían que reprogramar módulos comunes a un mismo programa, o lo que es lo mismo
     disponían de subrutinas abiertas.

      El programa "Hola mundo" escrito en código binario (Utilizo el código ASCII extendido
     de 8 bits) sería:

            0100 1000 = H

            0110 1111 = o

            0110 1100 = l

            0110 0001 = a

            0010 0000 = espacio()

            0110 1101 = m

            0111 0101 = u

            0110 1110 = n

            0110 0100 = d

            0110 1111 = o

        Hola = 0100 1000 - 0110 1111 - 0110 1100 - 0110 0001          Espacio () = 0010 0000

             mundo = 0110 1101 - 0111 0101 - 0110 1110 - 0110 0100 - 0110 1111

      A comienzos de 1950 se idean los primeros lenguajes simbólicos, con los que las
     operaciones se pueden representar por nemónicos. Un nemónico es un dato simbólico
     que identifica a un comando generalmente numérico (binario, octal, hexadecimal) de
     una forma más sencilla que su numeración original, lo cual facilita radicalmente la
     memorización de este comando para el programador. La rutina había mejorado un
     poco con la introducción de las tarjetas perforadas. Ahora era posible escribir
     programas en tarjetas e introducirlas para ser leídas, en lugar de usar tableros de
     conmutación; por lo demás, el procedimiento era el mismo.




     Daniel Merchán López. 2013
Historia del software en computación aplicado a la informática educativa.   83


 En 1952, Grace Hopper (Fig.
48), desarrolló un sistema de
programación automática con
un primer compilador: A-0, del
que más adelante salieron
nuevas versiones como, A-1 y
A-2, siendo ésta última la que
en 1953 se puso a disposición
de los clientes del UNIVAC I.
Para Hopper este compilador
era solamente una rutina que
produce       un      programa
específico para un problema
particular, o lo que es lo
mismo, este compilador servía
para copiar unas determinadas
subrutinas     en    el   lugar
apropiado del nuevo programa
realizado.

                                            Fig. 48. Grace Hopper con el UNIVAC 1.
 En 1953 Nathan Rochester diseñó el primer lenguaje ensamblador e implementó el
programa correspondiente que traducía instrucciones simbólicas en instrucciones
máquina. Con los lenguajes ensambladores se cometían menos errores y el consumo
de tiempo de la programación era menor que en los lenguajes de primera generación
utilizados por los primeros computadores, liberando a los programadores de trabajos
como recordar códigos numéricos o cálculo de direcciones. Un lenguaje ensamblador
conocido de la época fue el SOAP utilizado para el computador IBM 650.

 Este sería el programa "Hola Mundo" escrito en lenguaje ensamblado x86 para
GNU/Linux:

section .data

 msg      db "¡Hola Mundo!", 0Ah
 len      equ     $ - msg

 section .text

 global _start

 _start:
        mov        eax,   04h
        mov        ebx,   01h
        mov        ecx,   msg
        mov        edx,   len
        int        80h
        mov        eax,   01h
        mov        ebx,   00h
        int        80h



Daniel Merchán López. 2013
84    Historia del software en computación aplicado a la informática educativa.


      Se desarrollaron otras ayudas en la programación como generadores de programas
     (Short Code, Speedcoding, Sort-Merge Generator, Autocode) y los primeros esbozos de
     compiladores (serie A de Remington Rank). El Short Code era de John Mauchly, éste
     operaba originariamente en un BINAC como lenguaje interpretado. Las rutinas
     correspondientes a los símbolos se encontraban en memoria y eran invocadas por el
     sistema. El UNIVAC heredó este sistema. Los programas escritos en este lenguaje
     interpretado eran unas 50 veces más lentos que el mismo programa en el lenguaje
     máquina. Por su parte, el Sort-Merge Generator era una aplicación desarrollada para el
     UNIVAC, que producía el programa en código máquina para ordenar y mezclar ficheros
     que contenían las operaciones de entrada y salida, aunque antes había que especificar
     los ficheros con los que iba a operar.

      Laning y Zieler desarrollaron un programa para traducir ecuaciones matemáticas para
     el Whirlwind I de Jay Forrester en el MIT (una máquina que se terminó de construir en
     el año 1951), y construyeron el primer compilador que no tuvo un nombre específico.
     En enero de 1954, el MIT distribuyó copias de este compilador a unos pocos usuarios
     del Whirlwind.




            Fig. 49. Computador Whirlwind para el que desarrollaron el programa de traducir ecuaciones.

      Estos primeros sistemas también llamados sistemas de programación automática
     (automatic programming systems), se limitaban a proporcionar códigos de operación
     mnemotécnicos y direcciones simbólicas, o a obtener subrutinas de una biblioteca de
     rutinas e insertar el código previa sustitución de las direcciones de los operandos.
     Algunos sistemas permitían la interpretación de operaciones de coma flotante y de
     indexación (indexing). De todas maneras, con excepción del compilador A-2 y el
     sistema algebraico de Laning y Zierler, hasta el año 1954 ni siquiera los sistemas más
     potentes proporcionaban más que una maquina sintética con un código diferente al de
     la máquina real.


     Daniel Merchán López. 2013

Contenu connexe

Tendances

Concepto de programacion
Concepto de programacionConcepto de programacion
Concepto de programacionalanqueeman
 
Programación
 Programación Programación
Programaciónrehoscript
 
Software de aplicacion
Software de aplicacion Software de aplicacion
Software de aplicacion MaryLustres14
 
Introducción a la Informática básica
Introducción a la Informática básicaIntroducción a la Informática básica
Introducción a la Informática básicaJoaquin Lara Sierra
 
Introducción a la Informática básica
Introducción a la Informática básicaIntroducción a la Informática básica
Introducción a la Informática básicaEdumatica Consulting
 
Clasificación de los lenguajes de programación
Clasificación de los lenguajes de programaciónClasificación de los lenguajes de programación
Clasificación de los lenguajes de programaciónDennys Silva
 
Fundamentos de Programación: Definiciones y terminologia basica de programación
Fundamentos de Programación: Definiciones y terminologia basica de programaciónFundamentos de Programación: Definiciones y terminologia basica de programación
Fundamentos de Programación: Definiciones y terminologia basica de programaciónRoberto Hernandez
 
Introducccion programacion
Introducccion programacionIntroducccion programacion
Introducccion programacionAnaisMar22
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacionJoel Boya
 
Intro ProgramacióN
Intro ProgramacióNIntro ProgramacióN
Intro ProgramacióNAlfonso
 
Conceptos de programacion oriente
Conceptos de programacion orienteConceptos de programacion oriente
Conceptos de programacion orienteshariweya
 
Preguntas y Respuestas
Preguntas y RespuestasPreguntas y Respuestas
Preguntas y RespuestasFede Garcia
 
Niveles de lenguajes de programacion
Niveles de lenguajes de programacionNiveles de lenguajes de programacion
Niveles de lenguajes de programacionJhonayker2811
 

Tendances (19)

Concepto de programacion
Concepto de programacionConcepto de programacion
Concepto de programacion
 
Michael guti
Michael gutiMichael guti
Michael guti
 
Introduccion web tecnologia
Introduccion web tecnologiaIntroduccion web tecnologia
Introduccion web tecnologia
 
Programación
 Programación Programación
Programación
 
Software de aplicacion
Software de aplicacion Software de aplicacion
Software de aplicacion
 
Leccion1 2
Leccion1 2Leccion1 2
Leccion1 2
 
Introducción a la Informática básica
Introducción a la Informática básicaIntroducción a la Informática básica
Introducción a la Informática básica
 
Introducción a la Informática básica
Introducción a la Informática básicaIntroducción a la Informática básica
Introducción a la Informática básica
 
El computador
El computadorEl computador
El computador
 
Clasificación de los lenguajes de programación
Clasificación de los lenguajes de programaciónClasificación de los lenguajes de programación
Clasificación de los lenguajes de programación
 
Contenido
ContenidoContenido
Contenido
 
Fundamentos de Programación: Definiciones y terminologia basica de programación
Fundamentos de Programación: Definiciones y terminologia basica de programaciónFundamentos de Programación: Definiciones y terminologia basica de programación
Fundamentos de Programación: Definiciones y terminologia basica de programación
 
Introducccion programacion
Introducccion programacionIntroducccion programacion
Introducccion programacion
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
Intro ProgramacióN
Intro ProgramacióNIntro ProgramacióN
Intro ProgramacióN
 
Conceptos de programacion oriente
Conceptos de programacion orienteConceptos de programacion oriente
Conceptos de programacion oriente
 
Preguntas y Respuestas
Preguntas y RespuestasPreguntas y Respuestas
Preguntas y Respuestas
 
Niveles de lenguajes de programacion
Niveles de lenguajes de programacionNiveles de lenguajes de programacion
Niveles de lenguajes de programacion
 
Tecnologia es saber
Tecnologia es saberTecnologia es saber
Tecnologia es saber
 

Similaire à Historia del software educativo

Lenguaje de programacióndiapost1.
Lenguaje de programacióndiapost1.Lenguaje de programacióndiapost1.
Lenguaje de programacióndiapost1.Dominga Quispe Diaz
 
Un sistema operativo caraballo luis
Un sistema operativo caraballo luisUn sistema operativo caraballo luis
Un sistema operativo caraballo luisuplo45
 
Un sistema operativo caraballo
Un sistema operativo caraballoUn sistema operativo caraballo
Un sistema operativo caraballouplo45
 
Un sistema operativo caraballo1assss
Un sistema operativo caraballo1assssUn sistema operativo caraballo1assss
Un sistema operativo caraballo1assssuplo45
 
Un sistema operativo caraballo1assss
Un sistema operativo caraballo1assssUn sistema operativo caraballo1assss
Un sistema operativo caraballo1assssJavier Sabogal Campos
 
Un sistema operativo caraballo
Un sistema operativo caraballoUn sistema operativo caraballo
Un sistema operativo caraballoMIGUELITO-1
 
Un sistema operativo luis
Un sistema operativo luisUn sistema operativo luis
Un sistema operativo luisuplo45
 
Un sistema operativo caraballo1
Un sistema operativo caraballo1Un sistema operativo caraballo1
Un sistema operativo caraballo1uplo45
 
Un sistema operativo caraballo
Un sistema operativo caraballoUn sistema operativo caraballo
Un sistema operativo caraballouplo45
 
Un sistema operativo caraballo
Un sistema operativo caraballoUn sistema operativo caraballo
Un sistema operativo caraballouplo45
 
Un sistema operativo caraballo luis
Un sistema operativo caraballo luisUn sistema operativo caraballo luis
Un sistema operativo caraballo luisuplo45
 
Un sistema operativo caraballo luis
Un sistema operativo caraballo luisUn sistema operativo caraballo luis
Un sistema operativo caraballo luisuplo45
 
Historia de los sistemas operativos
Historia de los sistemas operativosHistoria de los sistemas operativos
Historia de los sistemas operativosdemoniac23
 

Similaire à Historia del software educativo (20)

Software
SoftwareSoftware
Software
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativo
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativo
 
sistemas operativos
sistemas operativossistemas operativos
sistemas operativos
 
So1
So1So1
So1
 
Lenguaje de programacióndiapost1.
Lenguaje de programacióndiapost1.Lenguaje de programacióndiapost1.
Lenguaje de programacióndiapost1.
 
Un sistema operativo luis caraballo
Un sistema operativo luis caraballoUn sistema operativo luis caraballo
Un sistema operativo luis caraballo
 
Un sistema operativo caraballo luis
Un sistema operativo caraballo luisUn sistema operativo caraballo luis
Un sistema operativo caraballo luis
 
Un sistema operativo caraballo
Un sistema operativo caraballoUn sistema operativo caraballo
Un sistema operativo caraballo
 
Un sistema operativo caraballo1assss
Un sistema operativo caraballo1assssUn sistema operativo caraballo1assss
Un sistema operativo caraballo1assss
 
Un sistema operativo caraballo1assss
Un sistema operativo caraballo1assssUn sistema operativo caraballo1assss
Un sistema operativo caraballo1assss
 
Un sistema operativo caraballo
Un sistema operativo caraballoUn sistema operativo caraballo
Un sistema operativo caraballo
 
Un sistema operativo luis
Un sistema operativo luisUn sistema operativo luis
Un sistema operativo luis
 
Un sistema operativo caraballo1
Un sistema operativo caraballo1Un sistema operativo caraballo1
Un sistema operativo caraballo1
 
Un sistema operativo caraballo
Un sistema operativo caraballoUn sistema operativo caraballo
Un sistema operativo caraballo
 
Un sistema operativo caraballo
Un sistema operativo caraballoUn sistema operativo caraballo
Un sistema operativo caraballo
 
Un sistema operativo caraballo luis
Un sistema operativo caraballo luisUn sistema operativo caraballo luis
Un sistema operativo caraballo luis
 
Un sistema operativo caraballo luis
Un sistema operativo caraballo luisUn sistema operativo caraballo luis
Un sistema operativo caraballo luis
 
Historia de los sistemas operativos
Historia de los sistemas operativosHistoria de los sistemas operativos
Historia de los sistemas operativos
 
aa
aaaa
aa
 

Plus de Daniel Merchan

13. ingeniería del software
13. ingeniería del software13. ingeniería del software
13. ingeniería del softwareDaniel Merchan
 
12. virus y antivirus informáticos
12. virus y antivirus informáticos12. virus y antivirus informáticos
12. virus y antivirus informáticosDaniel Merchan
 
13. ingeniería del software
13. ingeniería del software13. ingeniería del software
13. ingeniería del softwareDaniel Merchan
 
12. virus y antivirus informáticos
12. virus y antivirus informáticos12. virus y antivirus informáticos
12. virus y antivirus informáticosDaniel Merchan
 
6. software libre y software propietario
6. software libre y software propietario6. software libre y software propietario
6. software libre y software propietarioDaniel Merchan
 
6. software libre y software propietario
6. software libre y software propietario6. software libre y software propietario
6. software libre y software propietarioDaniel Merchan
 
4. la etapa electromecánica
4. la etapa electromecánica4. la etapa electromecánica
4. la etapa electromecánicaDaniel Merchan
 
4. la etapa electromecánica
4. la etapa electromecánica4. la etapa electromecánica
4. la etapa electromecánicaDaniel Merchan
 

Plus de Daniel Merchan (20)

13. ingeniería del software
13. ingeniería del software13. ingeniería del software
13. ingeniería del software
 
12. virus y antivirus informáticos
12. virus y antivirus informáticos12. virus y antivirus informáticos
12. virus y antivirus informáticos
 
13. ingeniería del software
13. ingeniería del software13. ingeniería del software
13. ingeniería del software
 
12. virus y antivirus informáticos
12. virus y antivirus informáticos12. virus y antivirus informáticos
12. virus y antivirus informáticos
 
11. quinta era
11. quinta era11. quinta era
11. quinta era
 
11. quinta era
11. quinta era11. quinta era
11. quinta era
 
10. cuarta era
10. cuarta era10. cuarta era
10. cuarta era
 
10. cuarta era
10. cuarta era10. cuarta era
10. cuarta era
 
9. tercera era
9. tercera era9. tercera era
9. tercera era
 
8. segunda era
8. segunda era8. segunda era
8. segunda era
 
9. tercera era
9. tercera era9. tercera era
9. tercera era
 
8. segunda era
8. segunda era8. segunda era
8. segunda era
 
7. primera era
7. primera era7. primera era
7. primera era
 
6. software libre y software propietario
6. software libre y software propietario6. software libre y software propietario
6. software libre y software propietario
 
5. tipos de software
5. tipos de software5. tipos de software
5. tipos de software
 
6. software libre y software propietario
6. software libre y software propietario6. software libre y software propietario
6. software libre y software propietario
 
5. tipos de software
5. tipos de software5. tipos de software
5. tipos de software
 
Modo de utilizar
Modo de utilizarModo de utilizar
Modo de utilizar
 
4. la etapa electromecánica
4. la etapa electromecánica4. la etapa electromecánica
4. la etapa electromecánica
 
4. la etapa electromecánica
4. la etapa electromecánica4. la etapa electromecánica
4. la etapa electromecánica
 

Historia del software educativo

  • 1. 80 Historia del software en computación aplicado a la informática educativa. realiza cualquier acción con el software que no esté permitida se produciría una piratería de software. Estas licencias llegan hasta el punto de regular el número de copias que pueden ser instaladas e incluso los fines concretos para los cuales puede ser utilizado. La mayoría de estas licencias limitan fuertemente la responsabilidad derivada de fallos en el programa. Normalmente, los fabricantes de programas sometidos a este tipo de licencias ofrecen servicios de soporte técnico y actualizaciones durante el tiempo de vida del producto. Algunos ejemplos de este tipo de licencias son las llamadas CLUFs (Contrato de Licencia para Usuario Final) o EULAs (End User License Agreement) por sus siglas en Inglés. El software de dominio público, es decir, que no dispone de licencia, puede ser utilizado, copiado, modificado y redistribuido con o sin fines de lucro. 3.6. Eras del software. Hasta ahora hemos visto que hay diferentes tipos de software. En este punto veremos cómo ha ido cambiando su importancia y utilidad desde el inicio de la computación. Podemos decir que el software ha evolucionado a través de eras o generaciones que coinciden aproximadamente con las décadas. Por ahora hay cinco eras o generaciones que explicaremos a continuación. 3.6.1. Primera Era (1945-55).[7][37][32][19][11][9] Como ya se ha dicho en la introducción de la evolución del software durante los primeros años de la aparición de las computadoras, el software se contemplaba como un añadido. Desde entonces hasta ahora, el software se ha desarrollado tremendamente. El software se desarrollaba sin ninguna planificación anterior y con un alto coste monetario, ya que el coste de los programadores asociados a un centro de computación superaba el coste del ordenador, en una escala creciente, pues la tecnología iba bajando de precio, y con ello descendían los precios de los ordenadores. El software se realizaba virtualmente y a menudo los planes no salían como ellos querían. Los programadores intentaban hacer bien todas las operaciones pero esto requería mucho esfuerzo, aunque a menudo les salían con éxito. Los problemas que debían resolver eran técnicos y se centraban principalmente en expresar algoritmos conocidos en algún lenguaje de programación. El software era realizado por una sola persona, lo escribía, lo ejecutaba y lo depuraba. Daniel Merchán López. 2013
  • 2. Historia del software en computación aplicado a la informática educativa. 81 Debido a este entorno, el diseño era un proceso implícito, realizado en la mente de alguien, y la documentación normalmente no existía. Los vendedores exageraban tanto sus prestaciones, en la peor tradición comercial engañosa, que resultaron contraproducentes y generaron un amplio escepticismo hacia estos sistemas. Podemos decir que en esta generación el hardware era de propósito general mientras que el software se diseñaba a medida para cada aplicación y tenía una distribución relativamente pequeña. Los computadores de la primera generación no disponían de sistema operativo, el programador interactuaba directamente con el hardware del computador. La introducción y control de la ejecución de programas se hacía manualmente y uno a uno. Para interactuar con estas máquinas se disponía de una consola compuesta por conmutadores, indicadores luminosos, un dispositivo de entrada (por ejemplo un lector de tarjetas) y una impresora. Los programas, que estaban hechos en código máquina, se cargaban desde el dispositivo de entrada. Cuando se producía algún error, éste se indicaba a través de los indicadores luminosos. Así el programador podía determinar la causa del error examinando los registros y la memoria principal. Cuando el programa se ejecutaba correctamente proporcionaba los resultados a través de la impresora. Como hemos dicho anteriormente el programa era ejecutado uno a uno y manualmente. Esto lo hacía un solo programador que era el que en ese momento accedía a la máquina. Uno de los principales problemas era que en ésta generación el computador estaba la mayor parte del tiempo desocupado pues tardaba mucho tiempo en realizar las transferencias de datos con los periféricos de entrada/salida. El tiempo de cada programador era anotado en una hoja de reservas; cada operador reservaba el tiempo que él creía que tardaría en terminar la tarea. Para empezar a operar el programador debía insertar su tablero de conmutación en la computadora y cuando terminaba antes de la hora prevista dejaba el computador desocupado. La mayoría de las operaciones consistían en cálculos numéricos directos, como la producción de tablas de senos y cosenos. Otro gran problema era el tiempo de preparación de los programas también, llamado trabajo. Para cada uno se cargaba un compilador y se guardaba en la memoria, salvaba el programa compilado y por último cargaba y montaba el programa objeto junto con las funciones comunes. Aparte de toda esta tarea, que se realizaba a mano y por cualquier error debía volver al inicio del proceso, el programador debía tener cuidado con los tubos de vacío, era fácil que alguno fallara y tuvieran que realizar todas las operaciones más de una vez. Esto implicaba una pérdida considerable de tiempo. Este modo de operación lo podemos denominar proceso en serie puesto que refleja el hecho de que los usuarios accedían al computador en serie. Daniel Merchán López. 2013
  • 3. 82 Historia del software en computación aplicado a la informática educativa. En esta generación, los computadores se programaban en lenguaje máquina, estando por tanto, cada instrucción constituida por una secuencia de números, con los consiguientes inconvenientes en cuanto a legibilidad, falta de versatilidad, dependencia del computador, etc. Es de destacar el concepto de subrutina. La subrutina ya estaba presente en esta primera etapa, y con ellas los programadores no tenían que reprogramar módulos comunes a un mismo programa, o lo que es lo mismo disponían de subrutinas abiertas. El programa "Hola mundo" escrito en código binario (Utilizo el código ASCII extendido de 8 bits) sería: 0100 1000 = H 0110 1111 = o 0110 1100 = l 0110 0001 = a 0010 0000 = espacio() 0110 1101 = m 0111 0101 = u 0110 1110 = n 0110 0100 = d 0110 1111 = o Hola = 0100 1000 - 0110 1111 - 0110 1100 - 0110 0001 Espacio () = 0010 0000 mundo = 0110 1101 - 0111 0101 - 0110 1110 - 0110 0100 - 0110 1111 A comienzos de 1950 se idean los primeros lenguajes simbólicos, con los que las operaciones se pueden representar por nemónicos. Un nemónico es un dato simbólico que identifica a un comando generalmente numérico (binario, octal, hexadecimal) de una forma más sencilla que su numeración original, lo cual facilita radicalmente la memorización de este comando para el programador. La rutina había mejorado un poco con la introducción de las tarjetas perforadas. Ahora era posible escribir programas en tarjetas e introducirlas para ser leídas, en lugar de usar tableros de conmutación; por lo demás, el procedimiento era el mismo. Daniel Merchán López. 2013
  • 4. Historia del software en computación aplicado a la informática educativa. 83 En 1952, Grace Hopper (Fig. 48), desarrolló un sistema de programación automática con un primer compilador: A-0, del que más adelante salieron nuevas versiones como, A-1 y A-2, siendo ésta última la que en 1953 se puso a disposición de los clientes del UNIVAC I. Para Hopper este compilador era solamente una rutina que produce un programa específico para un problema particular, o lo que es lo mismo, este compilador servía para copiar unas determinadas subrutinas en el lugar apropiado del nuevo programa realizado. Fig. 48. Grace Hopper con el UNIVAC 1. En 1953 Nathan Rochester diseñó el primer lenguaje ensamblador e implementó el programa correspondiente que traducía instrucciones simbólicas en instrucciones máquina. Con los lenguajes ensambladores se cometían menos errores y el consumo de tiempo de la programación era menor que en los lenguajes de primera generación utilizados por los primeros computadores, liberando a los programadores de trabajos como recordar códigos numéricos o cálculo de direcciones. Un lenguaje ensamblador conocido de la época fue el SOAP utilizado para el computador IBM 650. Este sería el programa "Hola Mundo" escrito en lenguaje ensamblado x86 para GNU/Linux: section .data msg db "¡Hola Mundo!", 0Ah len equ $ - msg section .text global _start _start: mov eax, 04h mov ebx, 01h mov ecx, msg mov edx, len int 80h mov eax, 01h mov ebx, 00h int 80h Daniel Merchán López. 2013
  • 5. 84 Historia del software en computación aplicado a la informática educativa. Se desarrollaron otras ayudas en la programación como generadores de programas (Short Code, Speedcoding, Sort-Merge Generator, Autocode) y los primeros esbozos de compiladores (serie A de Remington Rank). El Short Code era de John Mauchly, éste operaba originariamente en un BINAC como lenguaje interpretado. Las rutinas correspondientes a los símbolos se encontraban en memoria y eran invocadas por el sistema. El UNIVAC heredó este sistema. Los programas escritos en este lenguaje interpretado eran unas 50 veces más lentos que el mismo programa en el lenguaje máquina. Por su parte, el Sort-Merge Generator era una aplicación desarrollada para el UNIVAC, que producía el programa en código máquina para ordenar y mezclar ficheros que contenían las operaciones de entrada y salida, aunque antes había que especificar los ficheros con los que iba a operar. Laning y Zieler desarrollaron un programa para traducir ecuaciones matemáticas para el Whirlwind I de Jay Forrester en el MIT (una máquina que se terminó de construir en el año 1951), y construyeron el primer compilador que no tuvo un nombre específico. En enero de 1954, el MIT distribuyó copias de este compilador a unos pocos usuarios del Whirlwind. Fig. 49. Computador Whirlwind para el que desarrollaron el programa de traducir ecuaciones. Estos primeros sistemas también llamados sistemas de programación automática (automatic programming systems), se limitaban a proporcionar códigos de operación mnemotécnicos y direcciones simbólicas, o a obtener subrutinas de una biblioteca de rutinas e insertar el código previa sustitución de las direcciones de los operandos. Algunos sistemas permitían la interpretación de operaciones de coma flotante y de indexación (indexing). De todas maneras, con excepción del compilador A-2 y el sistema algebraico de Laning y Zierler, hasta el año 1954 ni siquiera los sistemas más potentes proporcionaban más que una maquina sintética con un código diferente al de la máquina real. Daniel Merchán López. 2013