Imagina el mundo actual, en el que no exista ningún lenguaje de programación que conocemos, donde no hay sistemas operativos ni computadoras sobre donde ejecutarlos, la interactividad entre usuario y computadora no existe porque no hay ningún programa con el cual se pueda interactuar, compras o reservaciones de aviones o cualquier otro servicio se tienen que hacer como en la vieja escuela, llenando registros a mano por que no se pueden efectuar transacciones, ahora también borra de tu mente los conceptos de hipermedia, virtualización, recolector de basura y conectividad.
Todos estos conceptos tienen mucha importancia, ya que se fue desencadenando una especie de efecto domino, en el cual el desarrollo de una cosa nos llevó del punto A hacia el punto B y ese desarrollo ha venido creciendo de manera significativa hasta lo que actualmente conocemos.
1. El lenguaje de programación.
En la actualidad existe una variedad de lenguajes de programación C++, C#, Java, Phyton solo por mencionar algunos. Cada uno de estos lenguajes desciende del lenguaje FORTRAN, el cual está formado por una abreviación en ingles de las palabras FORmula TRANslator. Este lenguaje se utilizaba para pasar formulas algebraicas en código ejecutable.
- Año:1955
- Motivación: Grace Hopper, John Backus, Alick Glennie vieron la oportunidad de poder automatizar algunas tareas como las traducciones de ecuaciones a lenguaje máquina, esto dio origen a que se creara el lenguaje de programación.
- Concepto: El lenguaje de programación es una pieza de software que automáticamente traduce un bloque de texto en código ejecutable.
- Beneficios: La existencia de los lenguajes de programación dio origen a la abstracción.
- Ejemplos: Lisp, Forth, C.
- Inconvenientes: En la actualidad todos los lenguajes de programación tienen el mismo principio de subrutinas y funciones que tenía FORTRAN en sus inicios, si se tiene algún error lo agarra el compilador, pero hasta ahora no se ha diseñado un lenguaje que se base en evitar los errores.
2. El Sistema Operativo.
Windows, Ubuntu, Mac OS, Android, sistemas operativos para computadoras o dispositivos móviles, puedes elegir el que más se adapte a tus necesidades, pero en los años 50 eso no existía. General Motors y la North American Aviation Monitor auguraban la creación de los sistemas operativos.
- Año: 1955
- Motivación: Antes de que existieran los sistemas operativos, se tenía que hacer una especie de ritual entre máquina y hombre, en la que un programador escribía el programa en una hoja de codificación, este entregaba las hojas a un perforista que se encargaba de pasar el programa a una máquina perforadora de tarjetas, después el programador recogía las tarjetas perforadas y esperaba a pasarlas por el lector de tarjetas, el lector de tarjetas era el medio por el cual se enviaba el programa hacia la computadora, donde hacia acto de presencia el compilador imprimiendo los posibles errores, si no había errores el programa se podía ejecutar pero si no se debía de iniciar de nuevo todo el proceso.
- Concepto: Un sistema operativo es una pieza de software que facilita la ejecución de múltiples programas en una computadora, usando un estándar de entradas y salidas.
- Beneficios: Múltiples programas pueden correr por lote, los programadores pueden entender rutinas de entrada y salida.
- Ejemplos: CP/M, ProDOS
- Inconvenientes: Los programas fueron diseñados para usar toda la capacidad que tenga la computadora en la que es usada, la misión del sistema operativo es determinar las prioridades de los programas que se están ejecutando hasta que se finalice.
3. Interactividad.
En el verano de 1958 se instalaba en el MIT la TX-0, esta computadora contaba con un monitor, teclado y un dispositivo para apuntar, tal vez fue una de las primeras computadoras en contar con una interfaz física que en la actualidad podríamos reconocer.
- Año: 1958
- Motivación: La TX-0 tuvo sus orígenes gracias a la Fuerza Aérea Norteamericana, para el proyecto SAGE, tenían un ambicioso objetivo sobre la electrónica, automatización y una red de misiles de defensa y un sistema de radar. Esto permitió la evolución de los radares analógicos a los radares de display, se permitía una interacción en tiempo real entre máquina y humano, esto le costó al gobierno la ridícula cantidad de $3 Millones de dolares.
- Concepto: Un programa interactivo es aquel que necesita una entrada para producir una salida,
- Beneficios: en la medida de lo posible se pudo realizar un trabajo más creativo sobre una computadora
- Ejemplos: Sketchpad, VisiCalc, Emacs
- Inconvenientes: Si un programa está esperando algún tipo de entrada, ¿Qué pasa si un tipo de entrada diferente lo reemplaza, este problema sigue apareciendo
4. Transacciones
En la actualidad toda la información que generamos día a día se guarda en bases de datos, la cantidad de datos que se genera con el manejo de millones de registros sería difícil de imaginar si no existieran las bases de datos.
Las aerolíneas en el pasado ya no tenían problemas con sus aviones, ahora la bola de nieve que crecía era como hacer más eficiente su manera de hacer reservaciones. IBM realizo esta tarea al darse cuenta de la idea básica detrás de SAGE y resolvieron el problema y dio como resultado a SABRE. El núcleo del sistema operativo SABRE se conoció mas tarde como TPF (Transaction Processing Facility)
- Año: 1959
- Motivación: El concepto de transacciones se originó para eliminar las inconsistencias del sistema de aviación, ¿Cómo saber si dos vuelos salen a la misma hora y no tengan inconveniente en salir a la misma hora en la pista?
- Concepto: Las transacciones son operaciones, cada una garantiza no fallar sin ningún efecto, o en su caso ejecutarse definitivamente en un estricto orden.
- Beneficios: Las transacciones hicieron posible la idea del desarrollo de nuevos sistemas como las bases de datos.
- Ejemplos: Ingres, ZFS, git, Ethereum.
- Inconvenientes: Algunas veces el resultado incorrecto ocasional no es tanto problema como el rendimiento general.
5. Recolector de basura.
Hablando en el tema de programación hoy nos basta con escribir en una sola línea para invocar al recolector de basura y que haga su trabajo, esto evitara que al terminar de ejecutar cualquier programa se siga consumiendo memoria, esto también ha sido una de las cosas que han ido evolucionando.
- Año: 1960
- Motivación: Anteriormente cuando se elaboraban programas, se tenía que manejar de manera manual el recurso de la memoria, el programador tenía que hacer sus programas basado en la premisa de asignar o quitar memoria.
- Concepto: El recolector de basura es una pieza de software que mantiene una estructura de datos presentado en un espacio de memoria disponible y marca una ubicación de memoria dada como disponible cuando ya no se hace referencia.
- Beneficios: El programador ya se olvida por completo de asignar o quitar memoria al momento de estar haciendo su trabajo.
- Ejemplos: Genera, LuaJIT
- Inconvenientes: El rendimiento puede hacerse impredecible al igual que el uso de memoria.
6. Virtualización
Atlas Supervisor fue el nombre que se le dio a una enorme computadora que incluía equipos periféricos, desarrollada en la Universidad de Manchester, a esta computadora se le llamo en ser la primer computadora en tener un sistema operativo reconocible en la actualidad. Es considerado como el avance más significativo en la historia de los sistemas operativos.
- Año: 1961
- Motivación: Los constructores de sistemas querían la capacidad de ejecutar varios programas a la vez pero no podían hacerlo, ya que como se vio anteriormente para que se ejecutar un programa se hacía de uno por vez, lo que se necesitaba era crear un entorno virtual para los programas.
- Concepto: La virtualización facilita la ejecución de programas, dentro de la ejecución de estos se incluye la memoria virtual, máquina virtual y una virtualización completa.
- Beneficios: La memoria virtual hace posible copiar solamente los datos de las capas lentas de almacenaje, la memoria virtual permite mantener los datos directamente del almacenamiento volátil al almacenamiento no volátil en el segundo plano sin manipulación, la memoria virtual hace posible que los procesos compartan la memoria sin la comunicación fuera de banda, las máquinas virtuales tienen garantías de seguridad más fuertes.
- Ejemplos: Multics, Plan 9, Xen, LuaJIT.
- Inconvenientes: La memoria virtual debería de haberse extendido a los recursos de red, pero al momento esto no ha sucedido.
7. Hipermedia
Doug Engelbart desarrollo los conceptos de enlaces de hipertexto, lenguaje de marcado, control de versión de documentos, videoconferencia, correo electrónico con hipermedia, publicidad con hipermedia, ventanas en modo flexible. Estos conceptos son los antecesores de lo que conocemos hoy como internet, el lenguaje de marcado es lo que conocemos como HTML y que ha evolucionado hasta llegar al HTML5. ¿Qué sería de la actualidad si no contáramos con las páginas web?
- Año: 1968
- Motivación: Se estaba en la búsqueda de alguna forma de proveer la forma de resolver problemas.
- Concepto: Hipermedia se refiere a cualquier medio de comunicación comprende sistemas interactivos, es un conjunto de cosas que tienen algo en común, estas pueden estar compuestas por texto, imágenes, audio, video, pero tienen la particularidad de que otros usuarios pueden interactuar con esto.
- Beneficios: Hacer un medio de comunicación no lineal es mucho más fácil, podría permitir a la gente organizar sus propios pensamientos.
- Ejemplos: Hypercard, Twine, Wikipedia.
- Inconvenientes: es fácil implementar mala hipermedia como HTML.
8. Interconexión
ARPANet es la red informática por excelencia, originalmente se llamaba Intergalactic Computer Network y después simplemente como Internet. ¿Qué sería de todo el comercio electrónico sin Internet?, entretenimiento, información. ¿Dónde buscaríamos todo eso?
- Año: 1969
- Motivación: Tres terminales de ARPA en tres diferentes programas, el departamento de desarrollo en Santa Monica, Berkeley y después el MIT, la necesidad de que se pudieran comunicar entre sí dio origen a ARPANET.
- Concepto: Una interconexión es un set de canales de comunicaciones entre computadoras, donde cada computadora ejecuta un servicio que enruta mensajes de entrada a otro canal de comunicación, de modo que cada mensaje llega a su destinatario.
- Beneficios: Correo electrónico global instantáneo, Hipertexto global instantáneo, Bases de datos con aplicaciones globales instantáneo, archivos compartidos globalmente.
- Ejemplos: Protocolo de internet.
- Inconvenientes: el internet clásico no fue económico de construir, el resultado de esto es que las grandes corporaciones solo podían acceder a internet.
Conclusión
Las cosas que utilizamos hoy en día, pareciera que siempre han estado ahí y que no son de mayor importancia, al mencionar solo estas innovaciones de software, podemos observar que cada una de ellas han sido de mucha importancia para la vida actual, comercio, comunicación, entretenimiento, servicios son algunas de las cosas que puedo mencionar que no serían lo mismo sin estas innovaciones.
Tal vez se habrían desarrollado otras formas de resolver estos problemas y se habrían resuelto, como el manejo de la información, pero puede que otras cosas como el Internet nunca vieran la luz del día y no lo conoceríamos.
Con la ayuda de estas innovaciones se seguirá teniendo ese efecto, esa bola de nieve que viene creciendo desde los años 50 y que ha permitido gran parte del desarrollo que tenemos en el presente y que ayudara en el futuro.
Te esperamos en los siguientes artículos en donde hablaremos mas acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.