Lenguajes de Programación e infraestructura Computacional
El avance humano siempre ha venido de la mano de la tecnología, brindando agilidad y facilidad en el desarrollo e investigación que ha logrado estos grandes progresos. Esta cooperación con la tecnología, más específicamente en el área de la informática, por ejemplo, en el uso de computadoras para los cálculos matemáticos, tiene ciertos aspectos que valen la pena ser estudiados, como la comunicación “humano – máquina”. Aquí, es donde aparecen los Lenguajes de Programación, con los cuales podemos transmitir instrucciones a la computadora para poder trabajar eficazmente.
Las primeras máquinas se
programaban por medio de tarjetas perforadas, como el motor analítico de
Charles Babbage, más adelante, fueron apareciendo las primeras máquinas
electrónicas, estas al igual que sus antecesoras aún se programaban
manualmente, pero con la diferencia que funcionaban electrónicamente
proporcionando una mayor precisión. Su programación consistía en la variación
del cableado redirigiendo la electricidad y variando además los valores para
transmitir diversa cantidad de instrucciones directamente a su procesador, este
tipo de lenguaje electrónico es más conocido como “Lenguaje Maquina”.
El Lenguaje Maquina es la forma
básica de comunicación con la computadora, de hecho, es el único que esta
entiende. Este Lenguaje funciona por medio de un conjunto de instrucciones
binarias, 1 y 0, siendo más específico, por un conjunto de tensiones en
representación de los anteriores valores, teniendo en cuenta lo anterior y que
los componentes del dispositivo son todos circuitos digitales se puede ver que es
posible trabajar con lógica booleana en el diseño de su funcionamiento. Un dato
interesante es que, aunque el lenguaje maquina varía según la arquitectura
siempre se fundamenta en el mismo tipo de instrucciones, las binarias.
Aunque ya existía esta forma de
comunicación directa con el equipo, era muy tedioso transmitir instrucciones en
lenguaje máquina, por lo cual se vio la necesidad de crear una forma más ágil y
comprensible para ambas partes, naciendo así lenguajes de medio y alto nivel
siendo la máquina el más bajo. Estos nuevos lenguajes utilizan un alfabeto más
cercano al de un ser humano abarcando un conjunto de caracteres ya definidos
como ASCII O EBCDIC. El primero utiliza 8 bits abarcando un total de 256
caracteres y es el más popular.
Las instrucciones o programas
escritos de forma simbólica no son suficiente para ser ejecutados, aún deben
ser traducidos al lenguaje máquina, esto se hace a través de ensambladores,
intérpretes y compiladores denominados procesadores de lenguaje. Los
ensambladores aún se relacionan con un nivel bajo, estos varían según la
arquitectura física siendo definido cada lenguaje ensamblador por el
fabricante, pero implementación simbólica del código máquina según la
arquitectura de procesador.
Hablando de los lenguajes de alto
nivel es necesario trabajar con los intérpretes y compiladores. En esta parte
los programas o instrucciones escritas son conocidos como código Fuente.
Entonces, un intérprete es aquel que analiza, traduce y ejecuta dicho código
construido en el lenguaje Fuente. Puede imaginárselo como una caja negra que
recibe el programa y unas entradas de datos retornado unos resultados.
La estructura del interprete está
compuesta por varios módulos como el traductor, la Representación Interna,
tabla de símbolos, evaluador de RI, tratamiento de errores.
En
cuanto a los compiladores, estos transforman el código Fuente en código Objeto
el cual puede decirse queda a la espera de datos para retornar resultados en su
ejecución.
El intérprete y el compilador
tienen ciertas similitudes tienen además analizadores léxicos, semánticos y
sintáctico. Un dato que cabe mencionar, es que el intérprete mantiene
consumiendo recursos como memorias, discos etc. Por otro lado, el compilador
después crear el código Objeto, el único que consumirá será este último al
ejecutarse y no el compilador.
Algunos Lenguajes:
Muchos de estos aspectos deben
considerarse al escoger un lenguaje de programación teniendo en cuenta los recursos
del sistema, los objetivos del proyecto, el tipo de proyecto, etc. Por ejemplo,
suponiendo una situación en la que debo escoger entre un lenguaje interpretado
como Python y por otro lado, uno compilado como C++, para el primero se tiene más
simplicidad y facilidad al programar a comparación de C++, en cambio para el
segundo hay mayor velocidad de ejecución que el primero, la decisión ya
dependería de otros factores, ya sea si el programa va a ser utilizado con
mucha o poca frecuencia o si se trata de un proyecto web, sirviendo Python en
este caso o si es para una app de escritorio siendo preferible C++ por el
tamaño de archivos de este tipo de proyectos.
Dejando a un lado el tema de intérpretes
y compiladores, para introducir un dato interesante sobre rendimiento en los
proyectos de programación, existe una práctica denominada “Programación
Paralela”. En el pasado un programador no se preocupaba mucho por el
rendimiento de sus códigos ya que con el tiempo la velocidad de las
computadoras iría incrementando. Según la Ley de Moore, el número de
transistores en un circuito integrado se va duplicando cada 18 meses aproximadamente,
lo cual conlleva a mas MHz, pero como se ha visto el rendimiento no ha cambiado
tan drásticamente en los últimos años, por otro lado, los fabricantes de
microprocesadores han implementado dicha cantidad de transistores en la creación
de más núcleos para la CPU. Así de esta manera es cómo surge dicha práctica, la
cual consiste en la utilización de múltiples recursos simultáneamente para
obtener mayor rendimiento.
http://di002.edv.uniovi.es/~cueva/publicaciones/monografias/35_InterpretesDLP.pdf
https://sites.google.com/site/03fmeautomatismos/home/lenguaje-maquina
https://sg.com.mx/content/view/630
https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/compilador-e-interprete/

Me pareció interesante conocer que en un principio las primeras máquinas se programaban por medio de tarjetas perforadas y luego de todo un proceso se llegó al lenguaje máquina, y que a dónde quiera que miremos, puede que a simple vista este lenguaje varíe según la arquitectura de la máquina, pero que todas tengan en similitud la misma base binaria. Gracias por el post!!
ResponderEliminarEl aumento del nivel de los lenguajes de programación usados es evidencia de la evolución de la computación en si misma. Se evidencia cada vez mas la tendencia de hacer que los computadores se parezcan mas a las personas, evolucionando desde lenguajes completamente básicos y lo mas mecánicos posibles a lenguajes que cada vez son mas entendibles por mas personas. Especulo que llegara el día en que cualquier persona, sin necesidad de aprender a programar, tendrá acceso a lenguajes de programación tan avanzado que podrán ejecutar sentencias comunes para crear una aplicación o pagina web que desee crear.
ResponderEliminarEntendido, entonces a la hora de elegir un lenguaje de programación no solo debemos basarnos en la agilidad que este nos brinda, sino que debemos ver los requerimientos del proyecto que debemos realizar para que el lenguaje que elijamos nos brinde la herramientas adecuadas, muy importante ese punto a aclarar, pero tengo una pregunta ¿ si tengo un proyecto a realizar y elijo un lenguaje no tan apropiado para dicha tarea pero sin embargo logro realizara, cuales son los posibles fallos que este me puede presentar a la hora de ejecutarla ? tengo entendido que puedo realizar cualquier tarea con cualquier lenguaje, eso esta claro pero hay preferencias de proyectos por su requerimientos entonces ?
ResponderEliminarTiene razón al decir que cualquier lenguaje puede ejecutar cualquier tarea, al escoger cierto lenguaje se tienen en cuenta muchos factores, ya sea el tipo de proyecto, si se va a utilizar mucho o poco el programa, entre otras. Dependiendo de lo anterior estos fallos tienen relación con el bajo rendimiento y desempeño según la situación. Además, teniendo en cuenta si se trabaja con un lenguaje compilado o interpretado, este ultimo siempre tendrá que realizar la traducción a lenguaje maquina, teniendo mas procesos en al ejecución. Como ya se menciono, esta elección puede variar demasiado. Por ejemplo, si queremos programar un algoritmo complejo en rendimiento y de forma simple, puede usarse uno interpretado si este no va a ser constamente ejecutado, pero si es programa que va a ser distribuido a millones de usuarios conviene utilizar un lenguaje compilado con el fin de optimizar su rendimiento.
EliminarEl futuro de los lenguajes de programación pinta interesante, con el hecho de posiblemente impulsar segmentos importantes, es un hecho que la innovación y el cambio no se de tienen. Gracias, buen articulo
ResponderEliminarTodos los procesos que realizan los computadores desde el momento en el que le damos a compilar al código me parece algo sorprendente, pues no nos estamos dando cuenta de todas estas operaciones que ocurren en el fondo, esto se puede notar aun mas en los lenguajes de alto nivel, donde en algunos casos nosotros como ususarios no tenemos la necesidad de presionar un botón de compilar
ResponderEliminar