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://domingogallardo.github.io/apuntes-lpp/teoria/tema01-historia-lenguajes-programacion/tema01-historia-lenguajes-programacion.html

https://platzi.com/blog/como-funcionaban-computadoras/#:~:text=Los%20primeros%20equipos%20se%20programaban,ser%20le%C3%ADdas%20por%20rodillos%20magn%C3%A9ticos.

https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/compilador-e-interprete/

https://otroespacioblog.wordpress.com/2012/09/02/lenguajes-de-programacion-compilados-vs-interpretados/

http://ferestrepoca.github.io/paradigmas-de-programacion/paralela/paralela_teoria/index.html#:~:text=Es%20un%20proceso%20para%20aumentar,arquitecturas%20similares%20con%20diferentes%20recursos.

 

Comentarios

  1. 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!!

    ResponderEliminar
  2. El 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.

    ResponderEliminar
  3. Entendido, 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 ?

    ResponderEliminar
    Respuestas
    1. Tiene 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.

      Eliminar
  4. El 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

    ResponderEliminar
  5. Todos 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

Publicar un comentario

Entradas populares de este blog

Arquitectura de Computadores - Practica #6