TECNOLOGÍA Y CIENCIA |
|
¿Te gusta escribir? PIXABAY ¿Ordenadores o programación?, Ante el dilema clásico sobre que fue antes si el huevo o la gallina, afortunadamente aquí la respuesta es sencilla, concretamente: la programación, además con nombre y apellidos: Joseph Jacquard y sus tarjetas perforadas para telares (personalmente no voy a considerar un telar como un “ordenador” pero más de uno acepta “pulpo” como animal de compañía, así que no entraré a discutir), conjuntamente Charles Babagge y Ada Lovelace sentaron las bases del concepto máquina-programación, pero el dilema iniciático ya estaba resuelto. De todas maneras el texto que van a leer a continuación se aproxima más bien a la resolución moderna de las primeras fases del desarrollo de la programación. Cuando comenzaron a desarrollarse las primeras computadoras electrónicas la necesidad de programarlas, o sea almacenar en memoria la información sobre la tarea que iban a ejecutar era uno de los primeros problemas a resolver, así las primeras máquinas se plantearon como meras calculadoras simples, es decir se le indicaban los pasos del proceso de cálculo, uno por uno según un modelo secuencial. John Von Neumann (Budapest 1903 - Washington 1957). WIKIPEDIA En este proceso inicial encontramos a John Von Neumann (Budapest 1903 - Washington 1957), la vida de este genial matemático austro-norteamericano daría para una bibliografía enciclopédica no solo por su increíble contribución en distintas materias donde realizó contribuciones fundamentales como física cuántica, teoría de conjuntos, economía, análisis numérico, cibernética y muchos otros, si no por su calidad como ser humano, pero eso ya es otra historia que algún día me gustaría relatar. Continuando con el tema, Neumam desarrolló este modelo para describir el concepto de programa almacenado en el cual se plantea la memoria como un conjunto de celdas, que almacenan simplemente números, los cuales pueden representar dos cosas por un lado los datos, sobre los que va a trabajar el programa o bien el programa en sí. Pero claro, había que describir un programa con números, se tenía el problema de representar las acciones que iba a realizar el ordenador, y aplicarlos en la memoria que estaba compuesta por switches correspondientes al concepto de bit y solo permitía almacenar números binarios. Neumann tenía que optar entre varios caminos pero al final tomó la siguiente opción consistente en que a cada acción que sea capaz de realizar nuestra computadora habría que asociarle un número el cual sería invariablemente su código de operación (opcode). Así si planteamos una calculadora programable se podría asignar los siguientes códigos de operación (opcodes – operation codes) a las distintas operaciones básicas de cálculo: Supongamos que queremos realizar la operación 6 * 9 - 7, en la calculadora descrita arriba para introducir dicho código en la memoria podemos escribir el programa de la siguiente forma: En el esquema podemos ver lo simple que es expresar las operaciones de las que es capaz el ordenador y almacenarlas en la memoria. La descripción y uso de estos opcodes es lo que llamaremos el lenguaje de máquina, o sea el listado de códigos que el ordenador va a interpretar como instrucciones, este código describe las capacidades de programación que tendrá dicho hardware es el lenguaje más básico que tendrá un ordenador y dependerá directamente del hardware, es decir de las capacidades físicas que tendrá un ordenador para realizar unas determinadas operaciones y lo que exigirá del programador que conozca el funcionamiento de la máquina al más bajo nivel posible. Por tanto los primeros lenguajes fueron los lenguajes de máquina (Código máquina). Puesto que el hardware se desarrollaba antes que el software y cualquier software finalmente tenía que poder expresarse en el lenguaje que manejaba la máquina, por ello, la programación en esos primeros momentos era sumamente agotadora, porque el programador tenía que "bajarse" al nivel de la máquina y decirle, paso a paso, cada punto de las instrucciones que tenía que ejecutar. Para colmo debía expresarlo en forma numérica lo cual además aumentaba la probabilidad de error en el proceso, con lo que la productividad del programador era escasa y los errores frecuentes provocando largas pérdidas de tiempo comprobando la fidelidad del código. El Lenguaje Ensamblador y el nacimiento de las primeras herramientas automáticas para generar el código máquina redujo los errores triviales, como podía ser el código que correspondía a una operación, fáciles de cometer pero sumamente difíciles de detectar, pero aún así era fácil para el programador perderse y cometer errores de lógica, pues debía bajar al nivel de la forma en que piensa el procesador y entender muy bien todo lo que sucede en el proceso de cálculo. Fortran (The IBM Mathematical Formula Translating System) es un lenguaje de programación de alto nivel desarrollado por IBM en 1957 para su equipo IBM 704. WIKIPEDIA El paso de los años trabajos de más elevado nivel y el aumento de la potencia de los ordenadores al igual que su aplicación en más ramas del saber aunque seguía siendo terriblemente complicado trabajar con lenguaje Ensamblador en vez de con las diversa fórmulas de sus respectivas áreas, lo que llevó al nacimiento de los lenguajes de alto nivel con el primer compilador de FORTRAN (FORmula TRANslation) que como podemos ver en su nombre se inició como un esfuerzo de traducir las fórmulas matemáticas al lenguaje ensamblador y por consiguiente al lenguaje primario de los ordenadores. A raíz del desarrollo del lenguaje FORTRAN y su increíble éxito al eliminar la necesidad de conocer el funcionamiento interno de un ordenador determinado y agilizar por varios enteros la programación de un dispositivo con un número de errores significativamente más bajo, se desarrollaron innumerables lenguajes que perseguían la misma idea de buscar la mayor abstracción posible para facilitar la vida del programador, aumentando así su productividad dejando el trabajo a los compiladores o intérpretes de traducir el lenguaje de alto nivel, al lenguaje natural del ordenador Por supuesto existen lenguajes que combinan características de ambos niveles, el ejemplo más significativo de esta evolución y además uno de los lenguajes más extendidos a día de hoy sería probablemente el C, inicialmente fue diseñado para hacer sistemas operativos, ya que contiene estructuras de programación de alto nivel y la facilidad de usar librerías que también son características de alto nivel pero curiosamente fue diseñado con muy pocas instrucciones, sencillas y fáciles de traducir al lenguaje de la máquina lo cual requiere de un entendimiento exhaustivo y exacto de cómo funciona la máquina por lo que muchas personas consideran al lenguaje C como el lenguaje definitivo que aúna los dos mundos. Konrad Zuse (22 de junio de 1910 Berlín, Alemania - 18 de diciembre de 1995 Hünfeld, Hesse, Alemania). WIKIPEDIA Pero hasta llegar aquí desde los años 40 se tuvieron que dar muchos pasos para alcanzar el primer lenguaje de alto nivel, normalmente el primer paso significativo se le asigna en 1946 a Konrad Zuse , un ingeniero Alemán que mientras trabajaba en los Alpes de Baviera, desarrolló el lenguaje Plankalkul, aunque nunca fue implementado en la práctica desde luego muchos le atribuyen sin duda, terminar la primera computadora controlada por programas que funcionaban, la Z3, aunque no tuviera un propósito general. Más o menos por la misma época nos encontraríamos con el código de programación del ENIAC entre el año 1943 y 1946 entre otros por el propio John von Newman y Alan Turing que daría al final en 1949 tras el ENIAC Short Code al C10 gracias a Betty Holberton, que viene a ser el primer lenguaje que fue usado en un dispositivo de cómputo electrónico, aunque se debería advertir que se trataba de un lenguaje igualmente traducido a mano. De aquí ya saltaríamos a Grace Hopper, sin duda uno de los personajes más apasionantes entre los pioneros de la informática, (tan solo diré a modo anecdótico que es la única mujer con el grado de almirante en Estados Unidos) pues bien, trabajando para el desarrollo de la Remington Rand (uno de los modelos de las célebres máquinas de cálculo UNIVAC) comenzó el diseño del primer compilador conocido ampliamente, el A-0 con el cual en 1957, realizó el primer compilador para procesamiento de datos que usaba órdenes en inglés, el FLOW MATIC.. En 1952 Alick E. Glennie junto a los planteamientos de Alan Turing, durante su tiempo libre en la Universidad de Manchester, concibió un sistema de programación llamado AUTOCODE, que vendría ya a ser un compilador muy rudimentario. Un IBM 701, la Universidad de California (Livermore) desarroló un compilador para su IBM 701, llamado el “KOMPILER”. IBM no desarrolló un compilador FORTRAN hasta la aparición del IBM 704. Foto del archivo de IBM
En 1954 John W Bacus comenzaba en IBM el desarrollo del concepto teórico del lenguaje FORTRAN cuyo trabajo se prolongó durante aproximadamente dos años mientras que John McCarthy y sus colaboradores iniciaban el desarrollo teórico del lenguaje LISP otro de los lenguajes fundacionales, es considerado el segundo más viejo de la historia de la informática y se desarrolló en el MIT (Instituto Técnico de Massachusetts) , hasta que por fin llega 1957 donde ya aparece el FORTRAN “I” diseñado originalmente para el IBM 704 por John W. Bacus recibiendo el honor de ser el primer lenguaje de programación de la historia. Poco después aparecerían el LISP, el ALGOL 58 en 1958 y el COBOL en 1959 que junto al progresivo aumento de la potencia de los equipos al amparo del avance económico e industrial durante los años de la guerra fría daría lugar a todo un abanico de lenguajes y versiones cada vez más amplio y específico para determinados campos. Desenmarañar la autoría y describir con claridad los primeros años resulta una tarea difícil de realizar a causa de las atribuciones y acusaciones cruzadas en muchos casos que existieron, además existe todavía cierta confusión sobre los descubrimientos realizados en el bloque del Este que complicarían quizás un poco la descripción de la línea temporal, aunque espero haber sintetizado al menos con un mínimo claridad esos primeros momentos del nacimiento de los lenguajes de programación. Candidatos, ¿Te gusta escribir? Iván Reyes C. - Barcelona Temas relacionados: ¿Te gusta escribir?, Arqueología informática, Historia de la Tecnología Reconocimientos y más información sobre la obra gráfica ADVERTENCIA: En este foro, no se admitirán por ninguna razón el lenguaje soez y las descalificaciones de ningún tipo. Se valorará ante todo la buena educación y el rigor sobre el tema a tratar, así que nos enorgullece reconocer que rechazaremos cualquier comentario fuera de lugar.
1 Comentario
Vicho333
8/3/2017 11:34:17
Gracias a los avances en tecnología y a las personas que los llevan a cabo se van simplificando más los trabajos para una mayor productividad y facilidad. Los avances en la programación han sido muy importantes. No sé qué haríamos sin ellos. Buen artículo
Responder
Deja una respuesta. |