Sei sulla pagina 1di 8

Actualmente nos encontramos en un punto clave dentro de nuestro desarrollo como humanidad,

gracias al conocimiento acumulado durante miles de generaciones es que ahora finalmente los
muchos y grandes beneficios de la ciencia pueden ser aplicados para el bienestar de la mayoría de
los habitantes del mundo. En este largo camino al progreso se han suscitado diversos hechos clave
que han conseguido acelerar nuestro avance, tal es el caso de la creación del método científico o
el nacimiento de la ingeniería moderna durante la revolución industrial, sin embargo
probablemente ninguno de dichos avances haya tenido la misma repercusión que la generada por
las computadoras, cuyo potencial nos ha permitido realizar en minutos cálculos y procesos que de
hacerse manualmente nos tomarían incluso años, ganándose así con merecida razón su papel
actual como herramienta esencial dentro del desarrollo de cualquier rama del conocimiento, y no
solo ahí sino dentro de casi cualquier ámbito de la vida cotidiana. Si nos ponemos a analizar el
¿por qué los ordenadores han conseguido generar tan alto impacto dentro de la sociedad
moderna? Seguramente llegaremos a la conclusión de que como primer factor fundamental de
dicho éxito se encuentra el hecho de que un solo ordenador posee la capacidad de resolver una
numerosa cantidad de problemas, esto no sería posible si no tuviéramos la posibilidad de
controlar los procesos que el ordenador debe realizar a fin de asignarle labores definidas, esta
asignación de labores es lo que comúnmente llamamos “programar” la computadora. Habiendo
fijado así las bases respecto a la trascendencia de la programación dentro de los múltiples y
variados ámbitos concernientes a la actividad humana, en el presente escrito procederemos a
analizar más a detalle la evolución y ejecución de la labor de programación.

Según la Real Academia de la Lengua Española se define el acto de programar como preparar
ciertas máquinas o aparatos para que empiecen a funcionar en el momento y en la forma
deseados, en este sentido el primer hombre en desarrollar un sistema de programación fue Joseph
Marie Jacquard quien en 1801 buscando acelerar el proceso de tejido creo un telar capaz de
replicar cualquier patrón de tejido, para programar el telar el usuario debía introducir lo que
Jacquard llamó “tarjetas perforadas” estas eran una especie de tablas que en cada porción de
espacio “analizada” por la máquina podían contener un agujero o bien un espacio en blanco; cada
tarjeta perforada contenía la información de una línea de tela, por lo que para crear un tejido
completo era requerida una cadena de tarjetas perforadas. Con este invento Jacquard no solo
logró mejorar la velocidad de producción del tejido sino que desarrolló el primer sistema de
transmisión de datos del hombre a la máquina, hecho que sentó las bases de lo que serían las
primeras máquinas programables.

En 1834 el francés Charles Babbage, padre de la computación, diseña su máquina analítica, una
máquina capaz de realizar operaciones matemáticas y ser programada mediante tarjetas
perforadas, si bien Babbage nunca construyó su máquina analítica principalmente por cuestiones
políticas, el valor de su diseño radica en la capacidad de este para transformar cualquier clase de
dato a un formato entendible y manipulable por la máquina, colocando así la codificación como un
acto fundamental para el manejo de información por parte de las máquinas.

En 1890 el estadounidense Herman Hollerith, padre de la informática, crea su máquina tabuladora


eléctrica, esta máquina era capaz de registrar información en tarjetas perforadas, con esta
máquina se podían tabular de 50 a 75 tarjetas por minuto y se podían llevar a cabo conteos que
manualmente hubieran requerido años, hecho que fue corroborado tras su aplicación en el censo
estadounidense de 1890, censo que se realizó en dos años y medio, cinco años menos que el
censo de 1880. Fue así como gracias a Hollerith se dio un gran paso en el desarrollo de las
computadoras tal como las conocemos hoy, siendo considerada la primera persona en desarrollar
un sistema de tratamiento automático de la información, de hecho su compañía de máquinas
tabuladoras posteriormente se fusionaría con otras empresas para formar lo que sería conocido
como International Business Machine (IBM).

En 1938 el alemán Konrad Zuse desarrolla la Z1, considerada la primera electrocomputadora


mecánica programable, básicamente se trataba de una calculadora automática con capacidad para
operaciones de 22 bits de tipo flotante y una velocidad de procesamiento de 1 Hz proveída por un
motor eléctrico, si bien esta máquina producto de una mezcla entre electricidad y mecánica nunca
tuvo una verdadera aplicación a ningún ámbito de la vida, su importancia radica en haber
implementado el sistema binario como sistema de codificación, un hecho que sería clave dentro
de todos los siguientes avances hacia las actuales computadoras.

Hasta 1950 las computadoras continuaron siendo programadas con código binario, también
conocido como lenguaje máquina, durante ese tiempo la labor de programación resultaba
sumamente compleja y tardada, por lo que resulto evidente la necesidad de desarrollar un
lenguaje de programación más fácil de entender por las personas, es así como se crea el lenguaje
ensamblador, el cual empleaba diversos comandos para ejecutar instrucciones básicas, acelerando
así la labor de programación.

En este punto es necesario tomarnos un momento para dar un panorama conceptual de lo que
estaba ocurriendo, como primer punto tenemos el nacimiento del termino “lenguaje de
programación”, entendemos el lenguaje de programación como una serie de sentencias y
símbolos capaces de ser interpretados por la computadora como una serie de instrucciones
gracias a su codificación a lenguaje máquina. El segundo punto surge como una consecuencia
lógica del desarrollo de un lenguaje de programación, de haber sido delegada la tarea de
codificación de lenguaje ensamblador a lenguaje máquina a la labor humana la creación de un
lenguaje para acelerar y facilitar la tarea de programación no habría cobrado sentido, es por ello
que en 1951 casi paralelo a la creación del lenguaje ensamblador Grace Murray Hopper desarrolla
el primer compilador AO, creando así un nuevo concepto clave dentro de la programación
moderna. Un compilador es un sistema que posibilita la transformación de un código fuente
escrito en un lenguaje de programación a sistema binario a fin de dar al procesador la serie de
instrucciones necesarias para su correcto funcionamiento.

Si bien es cierto que el lenguaje ensamblador acelero la labor de programación esto no significa
que dicha labor se haya convertido en tarea fácil puesto que aun requería un grado de atención y
una dedicación de tiempo considerable, por ello habiendo fijado la posibilidad de codificar
instrucciones en sentencias más simples John Backus se dio a la labor de crear un nuevo lenguaje
de programación dando como producto en 1953 el lenguaje de programación speedcoding cuyo
propósito viene descrito en su propio nombre, acelerar la velocidad de programación gracias a una
sintaxis mucho más simple y entendible por el programador, por esto speedcoding es considerado
el primer lenguaje de programación de alto nivel, entendiendo al lenguaje de alto nivel como
aquel capaz de expresar algoritmos de una manera adecuada para la capacidad cognitiva humana,
mientras que un lenguaje de bajo nivel es aquel que ejerce un control directo sobre el hardware y
por ende su entendimiento se dificulta mucho más a la razón humana.
Hasta este punto todos los lenguajes de programación tenían el inconveniente de que su
aplicación se encontraba limitada a un tipo especifico de ordenador puesto que cada computador
poseía diferencias inherentes a su propia arquitectura a la hora de procesar la información, por
ejemplo speedcoding estaba diseñado únicamente para la IBM 701. Por esta razón en 1957 John
Backus, científico de IBM desarrolla FORTRAN (Formula Translation) el primer lenguaje de
programación de alto nivel universal cuyo propósito era la expresión clara y concisa de fórmulas y
ecuaciones matemáticas de cálculo. Cabe destacar que FORTRAN es el lenguaje de programación
más viejo que actualmente sigue en uso.

Con el cada vez mayor número de lenguajes de programación desarrollados se abría un panorama
más amplio sobre lo que es la programación y sobre como puede ser llevada a cabo, es por ello
que ahora habiendo definido los orígenes de la programación procederemos a describir los nuevos
conceptos que se iban formulando y cuyo impacto fue significativo en la tarea de programar.

Lenguajes compilados e interpretados


Como ya hemos mencionado para que el lenguaje de programación pudiera ser ejecutado por el
ordenador antes debía pasar por el proceso de compilación que como ya se ha explicado no es
mas que la codificación a partir del código fuente al lenguaje máquina, tras este proceso llevado a
cabo por los ya mencionados compiladores se genera un archivo ya en binario llamado ejecutable,
cabe destacar que es requerido un archivo ejecutable diferente para cada sistema operativo.
Hasta este punto todos los lenguajes mencionados anteriormente cumplían con ese sistema de
codificación, sin embargo en 1958 con el nacimiento del lenguaje LISP se crea una nueva forma de
codificar a máquina, esto es la interpretación. La interpretación al igual que la compilación no es
más que el proceso de transformar el código fuente en lenguaje máquina, con la diferencia de que
un lenguaje interpretado va siendo codificado a medida que es ejecutado, por lo que a diferencia
de los lenguajes compilados, los interpretados carecen de la necesidad de un ejecutable. Las
ventajas de los lenguajes interpretados radican como primer punto en que durante la fase de
programación se pueden realizar pruebas constantemente sin necesidad de generar ejecutables
cada vez que se realiza un cambio, y como segundo punto en la posibilidad de ejecutar el mismo
código en dos diferentes sistemas operativos sin realizar ningún proceso al código. Las ventajas de
los lenguajes compilados radican primero en que una vez generado el ejecutable este será
ejecutado por la computadora más rápido debido a que ya se encuentra en lenguaje máquina y
segundo en que una vez generado el ejecutable la computadora no necesitará ninguna
herramienta adicional para ejecutarlo, a diferencia del interpretado que para ser ejecutado
requiere la presencia de un intérprete instalado.

Modelos de programación
Se considera un modelo de programación o paradigma de programación al enfoque particular
utilizado en el diseño de soluciones, por lo que cada paradigma posee sus propios métodos para la
resolución de problemas. Hasta este punto todos los lenguajes mencionados han pertenecido al
modelo imperativo, en este modelo se describe a la programación como una secuencia de
instrucciones o comandos que cambian el estado de un programa. En 1962 se crea el modelo
orientado a objetos gracias al nacimiento del lenguaje SIMULA, casi 20 años después de su
desarrollo este modelo pasaría a ser consolidado como el modelo más usado en el mundo gracias
a la influencia de C++, en este modelo cada entidad del programa es vista como un objeto, los
objetos pueden poseer atributos que les permitan interactuar con diversos métodos y pueden ser
ordenados en clases según sus propiedades y comportamiento. En 1972 con la creación del
lenguaje PROLOG se crea el modelo declarativo cuya principal característica es que en este tipo de
lenguajes son descritas una serie de conocimientos y una serie de reglas a fin de que el ordenador
sea capaz de calcular mediante procesos lógicos cualquier aspecto del tema tratado no
importando la serie de pasos efectuados para llegar a dicha conclusión.

En la actualidad la programación ha pasado de ser la compleja labor que era en sus orígenes a una
tarea que si bien dependiendo de lo que se busca realizar puede ser desafiante ahora se encuentra
al alcance de cualquier persona que disponga de un ordenador de capacidad media. Por supuesto
la tendencia natural de la programación ha avanzado en dirección a la simplicidad por lo que los
lenguajes más modernos han ido implementando sentencias mucho más fáciles de entender por el
usuario, y no solo eso sino que paralelo a la evolución de los lenguajes se desarrollaron múltiples y
diversas herramientas a fin de hacer de la programación una tarea mucho más amigable, ahora
procederemos a describir algunas de dichas herramientas.

Editor de código fuente


Un editor de código fuente consiste en una interfaz donde el usuario puede escribir su código y el
programa realizara de forma automática ciertas acciones como autocompletar sentencias, resaltar
en colores el código en base a su sintaxis y parear las llaves, todo esto a fin de hacer el código más
legible y permitir la detección de errores mucho más fácilmente.

Compiladores modernos
Si bien ya hemos mencionado que el primer compilador fue creado en 1951 también hay que
mencionar que aquel compilador y sus primeros sucesores difieren enormemente de lo que
actualmente son los compiladores. Hoy en día los compiladores ejecutan su labor dividiendo su
tarea en dos fases.

Fase 1 Análisis: En esta fase se lleva a cabo la comprobación de la corrección del programa fuente,
e incluye las fases correspondientes al Análisis léxico (que consiste en la descomposición del
programa fuente en componentes léxicos), Análisis sintáctico (agrupación de los componentes
léxicos en frases gramaticales) y Análisis semántico (comprobación de la validez semántica de las
sentencias aceptadas en la fase de Análisis Sintáctico).

Fase 2 Síntesis: En esta fase se realiza la conversión del código fuente a código objeto dicha etapa
suele estar formada por una o varias combinaciones de fases de Generación de Código y de
Optimización de código.

Actualmente los compiladores gracias a la fase de análisis son capaces de detectar errores e
indicar al programador la línea de código en que se encuentra dicho error, siendo los errores más
comunes los siguientes:

Errores de sintaxis: Se presenta cuando hay un error en la escritura de expresiones o cuando se


usan variables no declaradas.

Errores de enlazado: Normalmente se refieren a funciones que no están definidas en ninguno de


los ficheros objetos ni en las bibliotecas.
Errores de ejecución: En el caso de los errores de ejecución normalmente no obtendremos
mensajes de error muy específicos o incluso puede que no obtengamos ningún error, sino que
simplemente el programa terminará inesperadamente, se trata de un error que se efectúa una vez
ejecutado el código y que tienden a estar relacionados directamente con la lógica del programa,
para su detección son prácticos los debuggers, programas que permiten la ejecución paso por
paso del programa.

Errores de diseño: Son los errores inherentes a nuestro planteamiento del algoritmo, por lo que en
estos casos es probable que el programa sea ejecutado sin problema pero no realice lo esperado,
en estos casos la única solución es analizar donde se encuentra nuestro error en el procedimiento.

Librerías
En programación se le conoce como bibliotecas o librerías a un conjunto de implementaciones
funcionales codificadas en un lenguaje de programación y cuya función es ser utilizadas por un
programa, pudiendo complementarlo, refinarlo o alterarlo. Dicho de otra forma, las librerías son
un conjunto de múltiples segmentos de código que contienen una serie de instrucciones que
pueden ser ejecutadas por el programa sin necesidad de escribirlas por completo. Por lo general
cada lenguaje posee su propia librería estándar, sin embargo habitualmente existen múltiples
librerías para un mismo lenguaje.

Tras analizar la historia, características y evolución de la programación podemos llegar a la


conclusión de que sin lugar a duda dicho trabajo se desempeña como la pieza fundamental dentro
del manejo de ordenadores, consiguiendo un alcance solo limitado por nuestra capacidad creativa
puesto que actualmente disponemos de herramientas para delegar a las computadoras casi
cualquier tarea. Es gracias a este mismo éxito alcanzado por la programación moderna que hoy día
la tecnología en informática ha alcanzado su auge extendiéndose a cada vez más áreas de la vida.
Seguramente en los años por venir continuaremos reestructurando nuestra visión sobre lo que es
la programación en el mismo sentido que el seguido hasta ahora, el de simplificar la tarea
probablemente hasta llegar a los extremos casi intuitivos.
http://metabase.uaem.mx/bitstream/handle/123456789/2996/Bu%CC%81squeda%20y%20consul
ta%20de%20informacio%CC%81n.pdf?sequence=1&isAllowed=y

http://tiempodelosderechos.es/docs/jun12/sq.pdf

https://blogthinkbig.com/z1-historia-primera-electrocomputadora-programable

https://dle.rae.es/programar

https://s3.amazonaws.com/academia.edu.documents/39464959/brevehistoriainformatica.pdf?
response-content-disposition=inline%3B%20filename%3DBrevehistoriainformatica.pdf&X-Amz-
Algorithm=AWS4-HMAC-SHA256&X-Amz-
Credential=AKIAIWOWYYGZ2Y53UL3A%2F20200119%2Fus-east-1%2Fs3%2Faws4_request&X-
Amz-Date=20200119T020800Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-
Signature=27d50a4a3c71d0dbb84a19b6f946b4a538768fbca1fda389c0824dc95963daf0

https://www.ecured.cu/LISP

http://trajano.us.es/~antonio/FdeT/curso2010_11/Tema_1[1][1].pdf

https://www.ecured.cu/Programaci%C3%B3n_Orientada_a_Objetos

https://domingogallardo.github.io/apuntes-lpp/teoria/tema01-historia-lenguajes-
programacion/tema01-historia-lenguajes-programacion.html

https://desarrolloweb.com/colecciones/editores-codigo

http://www.ictea.com/cs/index.php?rp=/knowledgebase/8817/iQue-es-un-programa-
compilador.html

https://www.programarya.com/Cursos/Fundamentacion/Errores

Potrebbero piacerti anche