Está en la página 1de 20

TRABAJO PRACTICO

¿QUE SON LOS LENGUAJES DE PROGRAMACION?

Estudiante:
Farrachol Guerra Fernando Javier
Docente:
Rodmy Orellana Illanes
Materia:
Programación I
La Paz – Bolivia
2022
INDICE

1. Lenguajes de programación

1.1. Historia del lenguaje de la programación

1.2. Paradigmas de la Programación

1.3. Clasificación de los lenguajes de Programación

2. Código objeto y Código Fuente

2.1 Código objeto en el lenguaje de programación

2.2 Código Fuente

3. Lenguajes de Alto nivel

3.1. Lenguajes de Bajo nivel

3.2. Programación orientada a objetos

3.3. Conceptos fundamentales de la Programación orientada a objetos

3.4. Características principales de la programación orientada a objetos

4. Que son los traductores en programación

4.1. Interpretes

4.2. Compiladores

4.3. Intermedios

5. Datos de interés

6. Línea de tiempo de los lenguajes de programación

7. Diagrama de resumen
LENGUAJES DE PROGRAMACIÓN

1. Lenguajes de programación

Un lenguaje de programación es un sistema estructurado de comunicación, conformado por un

conjunto de símbolos, reglas y palabras (léxicos, sintaxis y semántica) que permiten un

entendimiento entre el programador y la máquina.

Hablamos del conjunto de instrucciones y algoritmos, dadas por el programador, que

controlan el comportamiento físico y lógico de una computadora, con el fin de indicar qué

tipos de datos actúan y qué acciones tomar bajo una gama de circunstancias. La codificación

de un algoritmo en un programa de computadora se denomina programación, y el algoritmo

escrito en un lenguaje de programación se denomina código fuente (Joyanes, 2008).

Estos lenguajes son interpretados y validados en un proceso que se llama compilación, para

que la computadora los entienda. Se clasifican en tres tipos:

El lenguaje máquina, utiliza el alfabeto binario que consta de dos únicos símbolos: 0 y 1,

denominado bits. Es el lenguaje que la Unidad de Control de la computadora “comprende”

directamente, siendo instrucciones de grupos de bit, por ejemplo 00001111, 11100000, que

indican las acciones a realizar. El lenguaje máquina es muy difícil de programar directamente.

Descifrar el significado de las instrucciones es tedioso para los humanos (Hernández, 2013).
El lenguaje ensamblador, o lenguaje de bajo nivel, contiene instrucciones en símbolos

nemotécnicos que son palabras en inglés que facilitan el desarrollo de los programas, ya que

reemplazan a las instrucciones en el lenguaje binario (Joyanes, 2008).

Los lenguajes de programación de alto nivel, son instrucciones en lenguaje humano, que

se escribe para que la computadora realice acciones y operaciones específicas de acuerdo a un

algoritmo o Pseudocódigo. Ya que la computadora no reconoce las órdenes escritas en lenguaje

de alto nivel, se requiere de un programa que traduzca las instrucciones a lenguaje máquina.

Estos programas de traducción se denominaron técnicamente, compiladores (Joyanes, 2008).

1.1 Historia de los lenguajes de programación

La historia de los lenguajes de programación comienza cuando Charles Babbage trabajó en el

proyecto de una “Maquina diferencial” y después la “Maquina analítica”, en el año 1842. Esta

máquina alteraba sus procesos controlados por un programa. Realizaba ciclos repetitivos y

también diferentes procedimientos de acuerdo a instrucciones de condición. Trabajaba con una

tarjeta perforada para los procesos aritméticos, otra para las constantes numéricas y otra para

procesos con la memoria de datos (Rojas, 2011).

Según el avance de la electrónica y la programación, se construye la computadora ENIAC


en 1942. Esta máquina se programaba sobre la base de interruptores.

Uno de los primeros lenguajes de programación de alto nivel que se crearon fue el

FORTRAN (Formula Translation), en el año 1957. En 1958 se crea el lenguaje de programación

de alto nivel LISP (Proceso de lista), diseñado para la investigación de inteligencia artificial.

El lenguaje de programación de alto nivel PASCAL se crea en el año 1968, lenguaje que era

ideal para la enseñanza de programación por su codificación fuertemente estructurada. En 1972

se crea el lenguaje C, por Dennis Ritchie, para el desarrollo del sistema operativo Linux. Hoy

en día se cuenta con un sinnúmero de lenguajes enfocados a diferentes objetivos, apareciendo

nuevos paradigmas, como el orientado a objetos y otros más. La siguiente figura muestra la

evolución de los lenguajes de programación a lo largo del tiempo (Rojas, 2011).

1.2 Paradigmas de la programación

En la evolución de la programación han surgido diversas técnicas de programación que se han

ido adaptando a las necesidades tecnológicas e informáticas del momento. Aunque la forma de

enfocar la elaboración de los programas es diferente en cada una de ellas, el objetivo es el

mismo: facilitar la creación y el mantenimiento de programas informáticos.

Estas técnicas se han traducido en diferentes filosofías de creación de programas, que son

los denominados paradigmas de programación. Un Paradigma de programación se define como


métodos, formas de organización y estructuración de los procesos que debe realizar cualquier

programa. Se tienen varios paradigmas, como los paradigmas por procedimientos o Paradigma

imperativo, tales como PASCAL o el lenguaje C, el paradigma orientado a objetos como el

JAVA, C++ (Joyanes, 2008).

1.3. CLASIFICACIÓN DE LOS LENGUAJES DE PROGRAMACIÓN.

Existen muchas clasificaciones: en función de su Aplicación, Tipo de proceso de datos, etc.

La clasificación que se detalla a continuación es la generalmente aceptada.

a. LENGUAJES ESTRUCTURADOS

Es el paradigma de programación más extendido y utilizado, orientado a mejorar la

claridad, la calidad y el tiempo de desarrollo, utiliza sub rutinas y esencialmente 3 estructuras:

La secuencia, la Selección e iteración, se eliminó por completo la sentencia GOTO, que fue la

causa de muchos problemas de programación. Surgió a inicios de 1960, siendo su mayor

exponente para entonces el ALGOL.

b. LENGUAJES IMPERATIVOS

Su origen es la propia arquitectura de von Neumann, que consta de una secuencia de

celdas (memoria) en las cuales se pueden guardar datos e instrucciones, y de un procesador

capaz de ejecutar de manera secuencial una serie de operaciones (ó comandos) principalmente

aritméticas y booleanas. En general, un lenguaje imperativo ofrece al programador conceptos


que se traducen de forma natural al modelo de la máquina.

c. LENGUAJES FUNCIONALES

Los matemáticos resuelven problemas usando el concepto de función, que convierte

datos en resultados. Sabiendo cómo evaluar una función, usando la computadora, podríamos

resolver automáticamente muchos problemas. Este fue el pensamiento que llevó a la creación

de los lenguajes de programación funcionales. Además, se aprovechó la posibilidad que tienen

las funciones para manipular datos simbólicos, y no solamente numéricos, y la propiedad de las

funciones que les permite componer, creando de esta manera, la oportunidad para resolver

problemas complejos a partir de las soluciones a otros más sencillos. También se incluyó la

posibilidad de definir funciones recursivamente.

d. LENGUAJES LÓGICOS

Otra forma de razonar para resolver problemas en matemáticas se fundamenta en la lógica de

primer orden. El conocimiento básico de las matemáticas se puede representar en la lógica en

forma de axiomas, a los cuales se añaden reglas formales para deducir cosas

verdaderas (teoremas). Gracias al trabajo de algunos matemáticos, de finales de siglo pasado y

principios de éste, se encontró la manera de automatizar computacionalmente el razonamiento

lógico -particularmente para un subconjunto significativo de la lógica de primer orden- que

permitió que la lógica matemática diera origen a otro tipo de lenguajes de programación,

conocidos como lenguajes lógicos.


También se conoce a estos lenguajes, y a los funcionales, como lenguajes declarativos,

porque para solucionar un problema el programador solo tiene que describirlo con axiomas y

reglas de deducción en el caso de la programación lógica y con funciones en el caso de la

programación funcional.

e. LENGUAJES ORIENTADOS A OBJETOS

A mediados de los años 60 se empezó a usar las computadoras para la simulación de

problemas del mundo real. Pero el mundo real está lleno de objetos, en la mayoría de los casos

complejos, los cuales difícilmente se traducen a los tipos de datos primitivos de los lenguajes

imperativos. Así surgió el concepto de objeto y sus colecciones (clases de objetos), que

permitieron introducir abstracciones de datos a los lenguajes de programación.

La posibilidad de reutilización del código y sus indispensables modificaciones, se

reflejaron en la idea de las jerarquías de herencia de clases. También surgió el concepto de

polimorfismo introducido vía procedimientos virtuales. Todos estos conceptos (que hoy

identificamos como conceptos del modelo de objetos) fueron presentados en el lenguaje Simula

67, desde el año 1967, aunque este lenguaje estaba enfocado a aplicaciones de simulación

discreta.

Fue en los años 80 cuando surgieron lenguajes de programación con conceptos de

objetos encabezada por Smalltalk, C++, Eiffel, Modula-3, Ada 95 y terminando con Java.
2. Código Objeto y Código Fuente

En programación, se llama código objeto al código que resulta de la compilación del código

fuente. Puede ser en lenguaje máquina o bytecode, y puede distribuirse en varios archivos que

corresponden a cada código fuente compilado. Luego un enlazador (linker) se encarga de juntar

todos los archivos de código objeto para obtener el programa ejecutable. Código objeto:

Conjunto de instrucciones y datos escritos en un lenguaje que entiende el ordenador

directamente: binario o código máquina. Provienen de la traducción de cierto código fuente, es

un fragmento del programa final y es específico de la plataforma de ejecución.

Consiste en lenguaje máquina o bytecode y se distribuye en varios archivos que corresponden a

cada código fuente compilado. Para obtener un programa ejecutable se han de enlazar todos los

archivos de código objeto con un programa llamado enlazador (linker).

2.1 Código Objeto en el lenguaje de programación

Un claro ejemplo de lenguaje de programación que usa código objeto en sus bibliotecas es

Pascal. Esto le permite aumentar la velocidad de compilación de los programas y reducir su


tamaño (ya que cada biblioteca objeto puede ser comprimida), también permite a programadores

compartir sus bibliotecas y funciones sin tener la necesidad de liberar su código fuente original.

Incluso puede permitir a distintos lenguajes de programación compartir funciones sin necesidad

de tener que reescribir el código plano a sus respectivas sintaxis.

2.2 Código Fuente

Por código fuente se entiende todo texto legible por un ser humano y redactado en un lenguaje de

programación determinado. El objetivo del código fuente es crear normas y disposiciones claras

para el ordenador y que este sea capaz de traducirlas a su propio lenguaje. De este modo, el texto

fuente es la base de los programas y de las páginas web.

3. Lenguajes de Alto Nivel

Son lenguajes más afines con el programador en los que una instrucción puede representar varias

instrucciones en lenguaje máquina. Incluyen los lenguajes estructurados y no estructurados.

Como ejemplos tenemos: Basic, Pascal, C, APL, FORTRAN (Aplicaciones Científicas),

COBOL (para aplicaciones de procesamiento de datos), LISP Y PROLOG (para Inteligencia

Artificial), etc.

Los lenguajes de alto nivel necesitan de un traductor que puede ser interpretador o compilador.

Los interpretadores o intérpretes, necesitan de un programa auxiliar que traduce en tiempo real

las instrucciones al lenguaje máquina, por lo tanto, cada vez que un programa interpretado se

ejecuta debe ejecutarse también su interprete. Ejemplos de lenguajes interpretados: Basic,

PROLOG, LISP, entre otros.

Los lenguajes compilados son aquellos que necesitan de un compilador para la traducción al

lenguaje máquina. La traducción o compilación se hace solo una vez, y el resultado es un código
objeto entendible por la máquina. Para ejecutar un programa compilado no se necesita de su

compilador. Ejemplos de lenguajes compilados: Pascal, C, Fortran, Cobol, Modula-2 (evolución

del Pascal), etc.

Algunas de las características de los lenguajes de alto nivel:

- Depuración más sencilla: Debido a que el código es más legible, la depuración también se

hace más fácil. Con la ayuda editores (IDEs – Entornos de Desarrollo Integrados) la

compilación, depuración y ejecución se hacen más fácilmente.

- Productividad aceptable: son más productivos que los lenguajes de alto nivel.

- Algunos permiten la Portabilidad: generalmente los interpretados.

Los lenguajes estructurados, existen controles que le dan secuencia ordenada a la ejecución del

código. Dichos controles se implementan con estructuras definidas que permiten bifurcaciones

condicionadas o ciclos repetitivos. Los lenguajes estructurados hacen que el programador

desarrolle sus algoritmos disciplinadamente.

Una rama de los lenguajes de alto nivel son los lenguajes procedurales, donde la unidad

funcional es el procedimiento. Los procedimientos implementan la lógica de caja negra donde

existen unas entradas y unas salidas y al programador que usa el procedimiento no le interesa su

funcionamiento interno sino su funcionalidad.

Java y los lenguajes .Net de Microsoft también forman parte de los lenguajes de alto nivel, pero

para este artículo es más importante su clasificación dentro de los lenguajes Orientados a

Objetos.

3.1. Lenguajes de Bajo Nivel


Un lenguaje de programación de características de bajo nivel o de primera generación, es aquel

en el que sus instrucciones ejercen un control directo sobre el hardware y están condicionados

por la estructura física de las computadoras que lo soportan. El uso de la palabra bajo en su

denominación no implica que el lenguaje sea menos potente que un lenguaje de alto nivel, sino

que se refiere a la reducida abstracción entre el lenguaje y el hardware

Los lenguajes de bajo nivel tales como el lenguaje ensamblador pueden ser más difíciles de

programar que los lenguajes de alto nivel debido a que están más íntimamente relacionados con

las características técnicas del hardware. Además, estos suelen carecer de abstracciones de mayor

nivel. No es posible una abstracción fuera de lo estipulado para el conjunto de los microcódigos

del microprocesador de un ordenador. Por otro lado, es más fácilmente traducible a lenguaje de

máquina, tarea que realiza esencialmente un compilador.

Al hablar de lenguaje de bajo nivel no nos referimos a uno en concreto, de hecho, este término

engloba a tres tipos diferentes de lenguaje de bajo nivel, aunque todos ellos comparten

características similares.

 El primero que nos encontramos es el famoso Código Binario. Seguro que has oído

hablar en más de una ocasión de él y es que es el lenguaje más básico que forma parte de

todos los sistemas informáticos. Es muy habitual por ser bastante sencillo de utilizar. Tan

solo se usan dos números para formar el código, el 1 que representa al “todo” y el 0 que

por el contrario es el “nada”.

 En un segundo escalón se encuentra el lenguaje máquina. También bastante utilizado

puesto que, como su propio nombre indica, este va a ser el código por el que se va a

comunicar instrucciones a la máquina. Es indispensable el uso de este lenguaje, ya que

con él se envían de forma literal todas las tareas que hay que llevar a cabo.
 Por último, tenemos el lenguaje ensamblador, algo más complicado porque los códigos

que utiliza no los descifra directamente el ordenador, por lo que habrá que pasarlo a

lenguaje de máquina para que la computadora entienda la orden que estamos queriendo

transmitirle. Es un tipo de lenguaje muy ligado al hardware y además necesita

herramientas especiales para convertirlo a otro lenguaje.

3.2 Programación orientada a objetos

Programar con la metodología estructurada se complicaba cuando el problema era demasiado

complejo. Debido a ello, la programación fue evolucionando conceptualmente, apareciendo un

nuevo paradigma al que se le denominó programación orientada a objetos, que define todas las

entidades de un programa, en objetos que contienen datos (atributos) y comportamientos

(métodos). Estos objetos, según características similares, se agrupan en clases (Booch, 2013).

Son lenguajes de programación orientados a objetos, aquellos que implementan los conceptos

fundamentales, definidos por la programación orientada a objetos. El lenguaje JAVA de Oracle,

el lenguaje C++ diseñado por Bjarne Stroustrup, el lenguaje Python, el Visual Basic .NET

diseñado por MICROSOFT, el JavaScript desarrollado para páginas WEB, el PHP diseñado por

Rasmus Lerdorf, el lenguaje Objective-C, son algunos de los lenguajes más utilizados en la

actualidad.

Existen muchos lenguajes de programación orientado a objetos, como:

 Simula 67: El primer lenguaje orientado a objeto. Desarrollado por los noruegos

Krinsten Nygaard y Ole-Johan Dahl, fue presentado en el año 1967. Fue el primer

lenguaje que presentó las nociones de clase y herencia jerárquica. No se admite la

herencia múltiple.
 Smalltalk: A principio de los años 70, en el centro de investigación "Palo Alto Xerox "

crearon Smalltalk. Fue el primer lenguaje en usar clases y objetos. A través de mensajes,

los objetos se comunican entre sí y pueden realizar varias y diferentes operaciones.

 C++: Creado por Bjarne Stroustrup en 1983, permite la manipulación de objetos. C++ es

un lenguaje multiparadigma, ya que en su desarrollo se añadieron conceptos de la

programación estructurada y objetos.

 Eiffel: Es un lenguaje de POO diseñado por Bertrand Meyer en 1985. Este lenguaje

dispone de diseño por contrato, que facilita la detección de errores y la depuración de

códigos. Las clases son la unidad básica, su gestión de memoria es automática y es

implementada por el recolector de basura.

 Java: Es un lenguaje de programación orientado a objetos que fue creado en 1995 (es una

extensión de C++), se popularizo en 1996 por el lanzamiento comercial de su primera

versión, la JDK 1.0. Posee los conceptos de herencia polimorfismo, encapsulamiento, etc.

3.3 Conceptos fundamentales de la Programación orientada a objetos

Los objetos: Son conceptos de las cosas que vemos y sentimos de nuestro alrededor y el mundo,

razonando y reflexionando sobre ellas. Los objetos pueden ser reales, como un colegio, una carta

o abstractos.

El concepto fundamental, en los lenguajes de POO, es que los objetos contienen datos que

pueden ser textos, números, registros, etc. Sobre estos datos y sus atributos, operan funciones o

procedimientos que permiten el comportamiento del programa de acuerdo a las necesidades del

usuario o programador (Ramirez, 2007).

En POO, las clases de cosas que pueden ser objetos, pueden ser:
Objetos físicos:

Barcos, autos: En sistemas de transporte

Elementos de interfaces gráficos de usuario:

Mouse, ventanas de diálogo, objetos gráficos, menú, lista desplegable

Alimentos y animales

Pasteles, frutas, carne, animales vertebrados y animales invertebrados

Cabe mencionar que en POO todas las cosas del mundo real, dentro de un conjunto, se

denominan instancias y que estas tienen las mismas características y siguen las mismas reglas.

Los objetos constan de estados (atributos) y operaciones o comportamientos (métodos invocados

por el mensaje). En la figura 7 se muestran ejemplos típicos de objetos.

Desde el punto de vista del mundo real, un objeto tiene dos propiedades esenciales: un estado y

un comportamiento:

El estado: Son los datos asociados con el objeto, los cuales indican su situación interna en un

momento dado; por ejemplo, velocidad, calificación, color, capacidad, encendido/apagado, etc.

El comportamiento: Es la manera en la que el objeto responde a estímulos del exterior; por

ejemplo, lo que sucede cuando se oprime el botón “inicio”, lo que sucede cuando se hace un

retiro de una cuenta bancaria o cuando se oprime el botón “reiniciar” en un contador.

Desde el punto de vista computacional:

Los atributos. Son los datos que pertenecen al objeto y que representan el estado de este, en

función de los valores que tienen.


Los métodos: Definen el comportamiento del objeto y son funciones que se pueden invocar

desde otros objetos. Los métodos pueden modificar el estado del objeto cuando cambian el valor

de alguno de los atributos.

3.4 Características principales de la Programación orientada a objetos

Abstracción.

Los objetos tienen cualidades, que se pueden separar sobre la base de un proceso de

Abstracción mental. Conseguimos, a partir de un tema determinado, generalizar y obtener una

visión global del tema. El enfoque de la POO es agrupar en clases a un grupo de objetos

abstrayendo sus métodos y datos comunes. Debido a ello, en programación se facilitaría agregar

o borrar un objeto (Joyanes, 2008).

Encapsulamiento.

Esta propiedad permite ocultar los procesos internos de un objeto, de tal modo que el

usuario o programador puede acceder solamente a lo que requiere. Debido a ello, el usuario

puede ser controlado internamente, evitando cualquier conflicto, por un acceso no autorizado.

También permite realizar modificaciones sin afectar cómo los usuarios van a utilizar las

instrucciones. Para encapsular se requiere declarar como públicas o privadas los atributos o

métodos de un objeto (Ramirez, 2007).

Modularidad.

Una aplicación puede dividirse en subprogramas o módulos más pequeños, cada subprograma

procesa las tareas encomendadas, independientemente del otro. Todos ellos se conectan entre sí,

pero su compilación se puede realizar por separado.


Polimorfismo y herencia.

El polimorfismo define comportamientos distintos para un método. Es decir, un objeto puede

comportarse diferente ante mensajes distintos, dependiendo de la interacción con otros objetos.

4. QUE SON LOS TRADUCTORES EN PROGRAMACION

El traductor es una herramienta esencial en la programación o desarrollo, encargándose de

convertir código fuente de un determinado lenguaje de programación a código máquina que

puede «entender» directamente el ordenador.

De acuerdo al modo en que llevan a cabo el proceso de conversión, los traductores se dividen en

dos conjuntos: intérpretes y compiladores.

4.1. INTERPRETES

Un intérprete es un traductor que ejecuta las líneas de código que conforman un programa una a

una y directamente. Es un programa que va leyendo el código fuente de otro programa y lo va

ejecutando según lo lee.

El código máquina generado en el momento de la traducción no es almacenado para su posterior

ejecución cuando se solicite. Por tanto, el programa realizado con un lenguaje de programación
traducido por un intérprete, siempre necesitará a éste para poder ejecutarse. No existe

independencia entre la fase de traducción y ejecución.

Cada vez que el programa necesite ejecutarse, el traductor tendrá que convertir el código fuente a

código máquina (interpretar). Esta característica hace que, por regla general, los lenguajes que

usan este tipo de traductor ofrezcan un menor rendimiento.

En contrapartida, ofrecen un mejor entorno de programación, depuración y mantenimiento que el

otro conjunto de traductores: los compiladores.

4.2. COMPILADORES

Los traductores de tipo compilador convierten el código fuente de un programa en código

máquina, generando en el camino un recurso adicional (un ejecutable) que será el que

utilizaremos para ejecutar el programa.

En realidad, el programa fuente (programa con el código fuente, valga la redundancia) será

convertido, sentencia a sentencia, a código máquina, creando un programa objeto o código

objeto.

Sin embargo, para crear el programa final, autoejecutable, será necesario un proceso adicional: el

enlazado o montaje (realizado por el programa montador, enlazador o linker).

El resultado final, será un programa autoejecutable que no necesitará ninguna herramienta

adicional para hacerlo. Simplemente le indicaremos que se ejecute cuando lo deseemos y así lo

hará.

4.3. INTERMEDIOS
Existen otros traductores que producen un código intermedio entre el código fuente y la máquina.

Son, por tanto, una mezcla de interpretados y compilados.

En el lenguaje Java, por ejemplo, se genera un recurso bytecode: código precompilado que

necesita interpretarse por la JVM o máquina virtual de Java para ejecutarse.

5. DATOS DE INTERES

Los lenguajes de programación permiten comunicarnos con la computadora, sin ellos sería

imposible instruirla para que realice una acción determinada y resolver problemas tan complejos

que hoy en día la sociedad exige en el comercio, la industria, el ocio, etc.

A través de la historia han aparecido nuevos paradigmas y lenguajes de programación que han

desarrollado su filosofía completamente o han coexistido para crear un sinnúmero de programas

y aplicaciones específicos para cada tarea diferente.

La programación orientada a objetos es el nuevo paradigma que ha permitido el avance de los

lenguajes de programación, ya que sus conceptos se asemejan al “mundo real”, permitiendo un

programa confiable, comprensible y eficiente en términos de tiempo de ejecución y consumo de

espacio. El desarrollo de los lenguajes de programación va evolucionado, existiendo una gran

gama de lenguajes y aplicaciones que hoy en día las escuelas deben de usarlas para el desarrollo

de la enseñanza y aprendizaje de los estudiantes.

6. LÍNEA DE TIEMPO DE LOS LENGUAJES DE PROGRAMACIÓN.

En la siguiente ilustración, se detalla una línea de tiempo referida a los más utilizados e

importantes lenguajes de programación desde sus inicios. Es evidente que existen muchos más.
7. DIAGRAMA DE RESUMEN.

En la siguiente ilustración se muestra un resumen de los conceptos detallados en el

presente capítulo, muchos términos y definiciones se desarrollarán en los siguientes temas.

También podría gustarte