Download Lenguajes de programación - Presentación UVEG

Document related concepts
Transcript
 IF0010_M2AA1L1_Lenguajes
Lenguajes de programación por Iván Cruz
A través de la historia, el hombre siempre ha buscado la manera de comunicarse con otros seres vivos,
debido a ello se crearon diversas formas de comunicación, tales como el lenguaje oral, el lenguaje basado
en señas, el sistema Braille, entre otros. El establecer un lenguaje común entre diversas personas ha
permitido la colaboración, intercambio de ideas, intercambio de conocimiento y demás beneficios dentro de
una sociedad. A continuación, en la Figura 1, se presenta un esquema de comunicación entre dos
personas, las cuales utilizan un lenguaje como canal de comunicación en el que ambos pueden participar
como emisor y receptor de mensajes de manera indistinta.
Figura 1.Comunicación por medio de un lenguaje entre dos personas. (Microsoft, 2007).
Por otra parte, para poder comunicarnos con una computadora, la cual, aunque no es un ser vivo, nos
ayuda a realizar una infinidad de actividades relacionadas con el trabajo o con las relaciones humanas,
utilizamos un determinado canal de comunicación, este canal es muchas veces conocido como lenguaje
de computadora o de programación el cual es un conjunto predefinido de sentencias que utilizan una
determinada sintaxis, para establecer una comunicación hombre-máquina. La Figura 2 presenta un
esquema de comunicación entre el hombre y la computadora por medio de un lenguaje de programación.
Figura 2. Esquema de interacción entre computadora y persona.
©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o
sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por
escrito de la Universidad Virtual del Estado de Guanajuato.
1
IF0010_M2AA1L1_Lenguajes
Desde la aparición de los lenguajes de programación, el hombre ha buscado la manera de que la
comunicación hombre-máquina sea lo más fácil posible. Por lo tanto, han aparecido infinidad de estos
lenguajes y continúan apareciendo cada vez más, siempre en busca de que esta comunicación sea lo más
parecida a la que utilizamos en nuestra vida cotidiana. A continuación se presenta como ha sido esta
evolución de los lenguajes de programación desde hace ya más de medio siglo.
Evolución de los lenguajes de programación Desde los años 40, la evolución de los lenguajes de programación ha quedado de manifiesto. En la Figura
3, se presenta un esquema de esta evolución, el cual clasifica estos lenguajes en dos grandes grupos, los
de bajo y alto nivel, a su vez se divide cada uno de ellos en diferentes metodologías para resolver un
problema y finalmente cada metodología muestra un fragmento del lenguaje que la representa.
Figura 3. Evolución de los lenguajes de programación.
©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o
sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por
escrito de la Universidad Virtual del Estado de Guanajuato.
2
IF0010_M2AA1L1_Lenguajes
El primer lenguaje de programación utilizado fue el lenguaje máquina, debido a que es el único lenguaje,
aún actualmente, que puede ser utilizado por una computadora, todos los lenguajes de programación
posteriores a éste, tienen que ser traducidos a lenguaje máquina para que la computadora pueda efectuar
la operación indicada, por lo tanto este lenguaje es el más rápido en ejecución, pero a su vez es el más
difícil de utilizar para los programadores. A continuación se describen las diferentes metodologías que los
lenguajes de programación utilizan para resolver un problema, así como ejemplos de la sintaxis que
utilizan cada uno de ellos.
Lenguaje máquina Este lenguaje de programación pertenece a la familia de los lenguajes de bajo nivel, debido a que son
dependientes del diseño y estructura operacional (arquitectura) de la máquina, lo que significa que el
mismo código que escriba un programador en una máquina puede que no se ejecute en otra. En la Figura
4 se presenta un ejemplo de un programa en código máquina.
Figura 4. Ejemplo de código binario o máquina.
Este lenguaje únicamente está conformado por cadenas de bits de 0 y 1, lo cual los convierte en un gran
problema en cuanto a búsqueda de errores, mantenimiento, depuración, entre otros aspectos. Debido a
ello, se buscó la manera de hacer más efectivo el desarrollo de programas usando este lenguaje, dando
paso con ello a la creación de lenguajes que hacían recordar más fácilmente las operaciones y así facilitar
el trabajo de los programadores, estos lenguajes fueron denominados mnemotécnicos, los cuales son
secuencias de números o datos que pueden ser identificados por una palabra específica.
Lenguaje con mnemotécnicos A este lenguaje también se le conoce como simbólico o ensamblador y fue el sucesor del lenguaje
máquina. Este lenguaje utiliza sentencias con una secuencia lógica, además utiliza un programa llamado
ensamblador (es por ello que toma su nombre), el cual traduce de lenguaje ensamblador a lenguaje
máquina, como se muestra en la Figura 5.
©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o
sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por
escrito de la Universidad Virtual del Estado de Guanajuato.
3
IF0010_M2AA1L1_Lenguajes
Figura 5. Ejemplo de traducción de lenguaje ensamblador.
Este lenguaje brindó una mejor experiencia para los programadores, pero aún existía mucho trabajo por
realizar, así que os esfuerzos por lograr lenguajes de programación más amigables para los
programadores continuaron y en los años 60 se desarrollaron los primeros lenguajes de alto nivel.
Con la aparición de los lenguajes de alto nivel se mejoró la amigabilidad entre la máquina y el
programador, debido a que estos lenguajes son más parecidos en algunos aspectos al lenguaje
convencional utilizado entre personas, pero a su vez mantienen un lazo muy fuerte con el lenguaje
simbólico, debido a que ambos requieren un paso intermedio que traduzca el código fuente de estos
lenguajes a código máquina, este proceso es llamado compilación para los lenguajes de alto nivel.
Lenguaje imperativo Estos lenguajes forman parte de la familia de los lenguajes de alto nivel, debido a que son independientes
de la arquitectura de la máquina. Recibieron el nombre de lenguajes imperativos ya que cada instrucción
escrita por el programador tiene una función o tarea especifica a ser realizada por la computadora. Los
lenguajes de programación que han popularizado a esta metodología son Fortran, Cobol, Pascal, C, entre
otros. A continuación, en la Figura 6 se presenta un ejemplo de un código fuente escrito en lenguaje C, el
cual le suma el IVA del 16 % a una determinada cantidad.
Figura 6. Ejemplo de código fuente en lenguaje C.
©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o
sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por
escrito de la Universidad Virtual del Estado de Guanajuato.
4
IF0010_M2AA1L1_Lenguajes
Como se puede apreciar los lenguajes imperativos superan en legibilidad a los lenguajes de bajo nivel, por
lo tanto son mas fáciles de mantener y menos proclives a errores. Otro tipo de lenguajes también
pertenecientes a los de alto nivel son los funcionales, los cuales se presentan a continuación.
Lenguaje funcional El lenguaje de programación funcional más destacado es LISP, el cual fue diseñado en los 60 en el MIT
(Massachusetts Institute of Technology). Este lenguaje hace un uso extensivo de la recursividad, lo que
permite que el código sea más claro y con una escritura matemática formal, además este lenguaje tiene
como una de sus grandes ventajas el crear funciones nuevas a partir de las ya integradas en él, por lo que
lo ha hecho un lenguaje ampliamente utilizado en el área de la inteligencia artificial.
En la Figura 7 se presenta un simple código fuente escrito en LISP que despliega un comentario hacia el
usuario.
Figura 7. Ejemplo de código fuente en lenguaje LISP.
Otra metodología de los lenguajes de alto nivel es la de los lógicos, el cual utiliza cálculo de predicados
como se presenta a continuación.
Lenguaje lógico El lenguaje de programación lógico más popular es Prolog (programación en lógica), el cual se basa en
una lógica formal declarativa, utilizando siempre un razonamiento estrictamente lógico, en la Figura 8 se
presenta un fragmento de un código en el cual se le realiza una pregunta y el intérprete es capaz de
responder a ésta.
©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o
sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por
escrito de la Universidad Virtual del Estado de Guanajuato.
5
IF0010_M2AA1L1_Lenguajes
Figura 8. Ejemplo de interacción con Prolog.
Este tipo de lenguaje da la sensación de tener una plática formal con la máquina, debido a que al ingresar
la sentencia ?- 30 is 5*6 el lenguaje está preparado para responder en su caso Yes o No a la declaración
formal del programador, pero claro debemos recordar que sólo puede resolver algunas preguntas
aritméticas, ya que para eso fue creado.
Lenguaje orientado a objetos Los lenguajes orientados a objetos utilizan una metodología en la cual todo es un objeto (ente del mundo
real), y su paradigma es muy distinto a los anteriores. Este tipo de lenguajes utiliza algunos principios
como son:
Clase: Es una abstracción de objetos del mundo real que contiene datos, además de un conjunto de
funciones para su manipulación.
Objeto: Es la instancia de una clase.
Encapsulamiento: Busca que los datos o variables no sean visibles para cualquier clase y define
algunos accesos en base a su tipo como pueden ser privado, público y protegido.
Herencia: Es la propiedad que permite a las clases reutilizar el código creado en otras evitando
realizar duplicaciones o esfuerzo innecesario, por ejemplo si tenemos la clase padre podemos heredar
a la clase hijo el atributo apellido, entre otros elementos.
Polimorfismo: Es la capacidad de los objetos de diferentes clases de poder ser invocados con el
mismo nombre pero con distintos parámetros.
A continuación se presenta en la Figura 9 un ejemplo de código fuente en el lenguaje de programación
Java.
©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o
sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por
escrito de la Universidad Virtual del Estado de Guanajuato.
6
IF0010_M2AA1L1_Lenguajes
Figura 9. Ejemplo de código en lenguaje Java.
Finalmente tenemos los lenguajes de programación que no tienen una metodología bien definida, ya sea
por ser multiparadigmas o simplemente no se les ha clasificado.
Lenguaje sin categoría definida Este tipo de lenguajes generalmente se deben a dos circunstancias, una de ellas es que pertenezcan a
más de un paradigma a la vez como es el caso del lenguaje de programación Python, o en su caso por ser
de carácter específico para una tareas como es el caso de los lenguajes como HTML, LaTex, entre otros.
Un ejemplo de lenguajes multiparadigmas es el que se muestra a continuación en la Figura 10, en donde
muestra una interacción a modo consola con Python para realizar simples operaciones de cálculo
numérico. La consola es el medio interactivo de programación que se utiliza para realizar algunos cálculo
no muy extensos, además de utilizarse para ejecutar los archivos creados con extensión .py, como por
ejemplo escribir en la consola python archivo.py, lo cual ejecutará el archivo.py para ser utilizado por el
usuario de una computadora.
Figura10. Interacción con la consola de Python realizando cálculos numéricos.
©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o
sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por
escrito de la Universidad Virtual del Estado de Guanajuato.
7
IF0010_M2AA1L1_Lenguajes
Dentro de los lenguajes de carácter específico para determinadas tareas, se presenta la Figura 11
mostrando fragmentos de código escrito en los lenguajes de programación HTML y LaTex.
Figura 11. Fragmentos de código en los lenguajes HTML y LaTex.
Los fragmentos de código de la Figura 11 muestran como estos lenguajes son explícitamente utilizados
solo para lo que fueron creados, es decir, que tienen un propósito en específico, ya sea el de crear una
página web rápidamente o el de crear textos de índole científica o de divulgación masiva como libros o
revistas a diferencia de los lenguajes que revisamos previamente los cuales permiten crear prácticamente
cualquier tipo de desarrollo en tecnologías de información.
Conclusión
A lo largo de esta lectura se logró ver de manera simplificada como el hombre ha realizado la
evolución de los lenguajes de programación, siempre en busca de lograr una mejor interacción con
las computadoras.
Actualmente se están desarrollando algunos lenguajes de programación que permiten en muy poca
medida la interacción hombre-máquina por medio de un idioma como el inglés, a los cuales muchos
denominan como lenguajes naturales, pero aún están en fase de análisis y desarrollo por lo cual, no
son viables en la actualidad.
©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o
sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por
escrito de la Universidad Virtual del Estado de Guanajuato.
8
IF0010_M2AA1L1_Lenguajes
Referencias Deitel, M. (2004). Cómo programar en C/C++ y Java. México:
Pearson Educación. [Versión electrónica].Recuperado el 29 de
julio de 2010, de la base de datos de Bibliotechnia. Recurso de la
Biblioteca Digital de la UVEG.
Deitel, M. (2004). Cómo programar en Java. México: Pearson
Educación. [Versión electrónica]. Recuperado el 29 de julio de
2010, de la base de datos de Bibliotechnia. Recurso de la
Biblioteca Digital de la UVEG.
Langsam, Y. (1997). Estructuras de datos con C y C++. México:
Prentice Hall. [Versión electrónica].Recuperado el 29 de julio de
2010, de la base de datos de Bibliotechnia. Recurso de la
Biblioteca Digital de la UVEG.
Forouzan, B. (2003) Introducción a la ciencia de la computación
(L. Peralta, Trad.). México: Thompson.
Sedgewick, R. (2000). Algoritmos en C++. México: Pearson
Educación. [Versión electrónica]. Recuperado el 29 de julio de
2010, de la base de datos de Bibliotechnia. Recurso de la
Biblioteca Digital de la UVEG.
©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o
sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por
escrito de la Universidad Virtual del Estado de Guanajuato.
9