Lenguajes de programación - linea de tiempo 2021 PDF

Title Lenguajes de programación - linea de tiempo 2021
Course Paradigmas de Programacion
Institution Universidad Nacional de La Rioja
Pages 14
File Size 516.1 KB
File Type PDF
Total Downloads 34
Total Views 127

Summary

Lenguajes de programación
Son lenguajes formales artificiales, destinados a permitir la comunicación hombrecomputadora.
Tal comunicación es expresada a través de sentencias y/o declaraciones que
constituyen el programa, que debe ser traducido a lenguaje máquina para poder ser ejecu...


Description

Lenguajes de programación Son lenguajes formales artificiales, destinados a permitir la comunicación hombrecomputadora. Tal comunicación es expresada a través de sentencias y/o declaraciones que constituyen el programa, que debe ser traducido a lenguaje máquina para poder ser ejecutadas por una computadora.

Clasificación de los lenguajes según su nivel El nivel de un lenguaje de programación indica su proximidad al hardware o bien su grado de abstracción. A los lenguajes se los puede clasificar en: Bajo nivel: es aquel que proporciona poco o ningún nivel de abstracción del microprocesador

de una computadora, en consecuencia es fácilmente trasladable al lenguaje de máquina. La palabra “bajo” se refiere a la reducida abstracción entre el lenguaje y el hardware. El lenguaje ensamblador “puro” (no enriquecido, sin directivas) se lo puede clasificar dentro de esta categoría. Alto nivel: Lenguajes de propósito general y específicos. Dentro de los específicos, se pueden

encontrar con orientación a la creación de aplicaciones científicas y de gestión administrativa. El lenguaje C pertenece a los de alto nivel. Algunos autores agregan a los dos niveles mencionados, uno intermedio, dentro del cual ubican al macro-ensamblador (ensamblador enriquecido) y al C. El macroensamblador y otros similares, se los considera de alto nivel, ya que incorporan características que aumentan su nivel de abstracción.

Lenguaje máquina El lenguaje máquina (también llamado lenguaje de primera generación) (el alfabeto binario) es el único que entiende la computadora. Fue el primer lenguaje utilizado en la programación de computadoras. Ejemplo, en el recuadro izquierdo:

0000 0001 1010 0001

01 A1

1000 1001 1001 1010

89 9A

0011 1010 1001 1100

3A 9C

0111 0100 0111 0000

74 70

1110 1001 0010 0000

E9 20

Una forma de simplificar la programación y los datos en binario, fue agrupar ceros y unos en cifras hexadecimales u octales. En una arquitectura hipotética, la columna hexadec izquierda podrían ser las operaciones y la derecha los datos.

Paradigmas y Lenguajes LSI / Paradigmas de Programación ISI Pag. 21

Este lenguaje fue sustituido por otros que fueron evolucionando, a fin de brindarle al programador una interface más amigable (más fácil de aprender y utilizar).

Lenguaje ensamblador El lenguaje ensamblador4, (considerado lenguaje de segunda generación) fue el primer intento de sustituir el lenguaje máquina, por otro más aproximado al utilizado por las personas. En este lenguaje cada instrucción del lenguaje de máquina es representada por un mnemónico (o abreviación mnemotécnica, ej. CMP por compare) en lugar de cadenas de bits. A continuación, se muestra un ejemplo de un trozo fuente en macroensamblador, que realiza 10 loops:

INICIO:

FIN:

MOV BX, 00h

; Inicializa BX en 0

MOV DX, 0Ah

; Asigna el valor 10 (0Ah) a DX

ADD BX, 01h

; Suma 1 a BX

CMP DX, BX

; compara AX y BX, Actualiza la ZF

JE FIN

; salta FIN si DX=BX, IDEM JZ mismo opcode, Si ZF=0

JMP INICIO

; salto incondicional a INICIO

MOV AX, 4C00h ; Sevicio 4C -> Terminar con código de retorno INT 21h

; Llamada a servicio DOS

¿Qué pasa una vez que es ensamblado, enlazado y cargado en memoria para ser ejecutado? CS:IP

ASM

OPCODE en Hexadec.

0722:0000

MOV BX,0000

BB0000

0722:0003

MOV DX,000A

BA0A00

0722:0006

ADD BX,01

83C301

0722:0009

CMP DX,BX

3BD3

0722:000B

JE 0Fh

7402

0722:000D

JMP 06h

EBF7

0722:000F

MOV AX,4C00

B8004C

0722:0012

INT 021h

CD21

20 bytes Este código hace 10 bucles y termina el programa

El programa ejecutable generado a partir del lenguaje ensamblador, tiene como ventaja la mayor performance, lograda por su bajo requerimiento de memoria y el menor tiempo de ejecución, en comparación con los resultados de aplicaciones similares programadas en lenguajes de alto nivel.

4

Al programa que traduce el lenguaje ensamblador a código de máquina, también se le llama “Ensamblador”, es decir, tiene el mismo nombre del lenguaje.

Paradigmas y Lenguajes LSI / Paradigmas de Programación ISI Pag. 22

Inconvenientes de Ensamblador



Cada modelo de microprocesador tiene su propio ensamblador, diferente del resto, razón por la cual un programa sólo puede utilizarse en el modelo máquina (microprocesador) para el cual se programó.



El programador de bajo nivel debe tener un gran conocimiento del hardware, ya que maneja directamente las posiciones de memoria, los registros del procesador y demás recursos físicos.



Todas las instrucciones son elementales, y por lo tanto los programas fuentes serán extensos, debido a que el programa debe describir con máximo nivel de detalle, todas las operaciones que llevará a cabo en la máquina.



Se requiere mucho tiempo de construccion, depuración, para programar de una pequeña aplicación.

Lenguajes de alto nivel Los lenguajes de alto nivel (tercera generación), evolucionaron pretendiendo abstraer u ocultar la complejidad del ensamblador, teniendo estos como principales premisas: 

Portable (Portability): Lograr que el programa tenga independencia del hardware. De esta forma poder utilizar un mismo programa fuente, en diferentes equipos, con la única condición de disponer del compilador del lenguaje asociado a la nueva plataforma. Dicho en otras palabras, no se necesita conocer en detalle la plataforma, en el que correrá el programa.



Amigable (Friendliness): Aproximar el lenguaje de programación al lenguaje natural, para que el programa se pueda escribir, leer y entender en forma sencilla.



Estructurado: La codificación que respeta a las estructuras lógicas, facilita la programación, su mantenimiento y documentación.

Asimismo, es importante resaltar que como consecuencia de su nivel y ser estructurado, es más fácil su depuración y manteniento.

Intérpretes y Compiladores Hay dos tipos principales de traductores de lenguaje fuente a lenguaje de máquina:

Paradigmas y Lenguajes LSI / Paradigmas de Programación ISI Pag. 23

Compiladores: Durante la compilación, se analiza el programa fuente y se genera el código objeto, código nativo (o código de máquina reubicable). Este código antes de poder ser ejecutado, necesita pasar una fase adicional, denominada enlace. Intérpretes: Cada vez que se ejecuta el programa, cada línea del programa fuente es analizada, se la traduce a código de máquina y se la ejecuta. Híbridos (o JIT Just in Time - Interpreta una máquina virtual). La máquina virtual analiza el programa durante su ejecución y al detectar partes

del

código

que

se

ejecutan

frecuentemente las compila al código nativo en particular, de ahí en adelante, usará ese porción de código nativo para la ejecución (basado en la compilación dinámica).

Java utiliza esta modalidad, combina compilación e interpretación. El programa fuente en Java es compilado primero en “código intermedio” también llamado bytecodes. Los bytecodes son luego interpretados por la máquina virtual. Una ventaja de esta disposición es que los bytecodes compilados en una máquina se pueden interpretar en otras máquinas y distintas modalidades.

Paradigmas y Lenguajes LSI / Paradigmas de Programación ISI Pag. 24

Evolución histórica de los Lenguajes de programación

Paradigmas y Lenguajes LSI / Paradigmas de Programación ISI Pag. 25

Periodo

Influencias

Lenguajes

1950 - 1955

Computadoras primitivas

Lenguajes ensamblador. Lenguajes experimentales de alto nivel

1956 - 1960

1961 - 1965

Computadoras caras y lentas

FORTRAN

Cintas magnéticas.

ALGOL 58 y 60

Compiladores e intérpretes

COBOL

Optimización del código.

LISP

Computadoras grandes y caros

FORTRAN IV

Discos magnéticos

COBOL 61 Extendido

Sistemas operativos

ALGOL 60 Revisado

Lenguajes de propósito general.

RPG APL

1966 - 1970

Computadoras

de

diferentes

tamaños, velocidades, y costos.

FORTRAN 66 (estándar)

Sistemas caros de almacenamiento masivo de datos.

COBOL 65 (estándar) ALGOL 68

Sistemas operativos multitarea e interactivos.

SIMULA 67 BASIC

Compiladores Lenguajes

PL/I

con

optimización.

estándar,

flexibles

y

C APL/360

generales. 1971 - 1975

Microcomputadoras.

PASCAL

Sistemas pequeños y baratos de COBOL 74 almacenamiento masivo de datos. PL/I Programación estructurada. Ingeniería del software. Lenguajes sencillos.

Paradigmas y Lenguajes LSI / Paradigmas de Programación ISI Pag. 26

1976 - 1980

Ordenadores baratos y potentes. ADA Sistemas distribuidos. FORTRAN 77 Programación interactiva.

PROLOG

Abstracción de datos.

C

Programación confiable y de fácil mantenimiento.

1980 – 1990

Computadoras

más

baratas

y SmallTalk, OOCOBOL, C++, Erlang

potentes.

Objective C, Object Pascal (Delphi)

Mayor abstracción de datos.

Bash, Perl, Visual Basic, Visual Fox,

Menor costo de memorias.

Haskell

Programación Orientada a Objetos. Introducción a plataformas visuales. Aplicaciones Cliente-Servidor. Más cerca del Orientación con énfasis en lo visual. presente

Gestores de Bases de Datos. Aplicaciones

Web.

Intranets

extranets.

PowerScript(PowerBuilder1991), Phyton(1991), R(1993), Java(1995),

y Ruby(1995), D(1999),

PHP(1995),

JS(1997),

ActionScript(2000),

F#(2002), Groovy(2003), Sistemas Operativos y programas C#(2001), Scala(2003), Factor(2003), móviles. Clojure(2007), Reia(2008), Go(2009), Rust(2010), Elixir(2011), Dart(2011), Opa(2011), Kotlin(2012), Swift(2014), Hack(2014), Ring(2016)…

Lenguajes más representativos Existe una gran cantidad de lenguajes, cada uno con características definidas y a su vez dentro de estos existen diferentes versiones o dialectos. A continuación, se amplían algunos de los más tradicionales y representativos y como evolucionaron. Fortran

Abreviatura de Formula Translator (traductor de fórmulas). Este lenguaje fue definido en 1955 en Estados Unidos por la compañía IBM. Es el más antiguo de los lenguajes de alto

Paradigmas y Lenguajes LSI / Paradigmas de Programación ISI Pag. 27

nivel, pues previo a su aparición, todos los programas se escribían en lenguaje ensamblador o en lenguaje máquina. Es un lenguaje especializado en aplicaciones técnicas y científicas, caracterizándose por su potencia para cálculos matemáticos, y sus limitaciones en las aplicaciones de gestión administrativa, manejo de archivos, tratamiento de cadenas de caracteres y edición de informes. A lo largo de su existencia han aparecido diferentes versiones, entre las que destaca la realizada en 1966 por ANSI (American National Standard Institute) en la que se definieron nuevas reglas del lenguaje y se efectuó la independencia del mismo con respecto a la máquina, es decir, comenzó la portabilidad del lenguaje. Esta versión se denominó FORTRAN IV o FORTRAN 66. En 1977, apareció una nueva versión más evolucionada que se llamó FORTRAN V o FORTRAN 77, esta versión está reflejada en el documento «ANSI X3.9-1978: Programming Language FORTRAN» y define dos niveles del lenguaje denominados FORTRAN 77 completo y FORTRAN 77 básico, siendo el segundo, un subconjunto del primero. Esta última versión incluye además instrucciones para el manejo de cadenas de caracteres y de archivos, así como otras para la utilización de técnicas de programación estructurada. Lisp

Lenguaje funcional (ubicado dentro del paradigma declarativo basado en la definición funciones). El origen de su nombre surge de la contracción de “List Processing” (procesamiento de listas). Fue especificado originalmente en 1958 por John McCarthy y sus colaboradores en el Massachusetts Institute of Technology (MIT). Se constituyó en unos de los lenguajes más importantes en los Estudios de Inteligencia Artificial. Con el se manejan naturalmente estructuras de datos dinámicas como listas y árboles. Este fue el primer lenguaje que tenía la propiedad en que la representación primaria de una estructura de datos se define con primitivas del lenguaje. Del Lisp Surgieron muchos dialectos, que fueron estandarizados por ANSI en 1994, bajo el nombre de “Common Lisp”. Cobol

Fue el lenguaje más usado en las aplicaciones de gestión, creado en 1960 por un comité denominado CODASYL, patrocinado por el Departamento de Defensa de los Estados Unidos, a fin de disponer de un lenguaje universal para aplicaciones comerciales como expresa su nombre (Common Business Oriented Language). Paradigmas y Lenguajes LSI / Paradigmas de Programación ISI Pag. 28

Entre sus características se pueden citar su parecido al lenguaje natural (inglés), es autodocumentado y tiene gran capacidad en el manejo de archivos, así como en la edición de informes escritos. Entre sus inconvenientes están sus rígidas reglas de formatos de escritura, la necesidad de describir todos los elementos al máximo detalle, la extensión excesiva en sus sentencias e incluso duplicación en algunos casos y la inexistencia de funciones matemáticas. PL/1

Fue creado a mediados de los años 60 por IBM para ser usado en sus equipos del sistema 360. El PL/1 (Programming Language 1) se desarrolló inspirándose en los lenguajes ALGOL, COBOL y FORTRAN, tomando las mejores características de los anteriores y añadiendo algunas nuevas, con el objetivo de obtener un lenguaje lo más general posible, útil para aplicaciones técnico-científicas, comerciales, de proceso de textos, de bases de datos y de programación de sistemas. Entre sus novedades está su gran libertad en el formato de escritura de los programas, soportar la programación estructurada y el diseño modular. No obstante, no ha superado a sus progenitores en sus aplicaciones específicas, debido en parte a su amplitud y por ello al tamaño de su compilador, que hasta ahora sólo se podía instalar en grandes equipos. BASIC

Fue diseñado por los profesores John G. Kemeny y Thomas E. Kurtz del Dartmouth College en 1965 con el objetivo principal de conseguir un lenguaje fácil de aprender para los principiantes, como se indica en su nombre Beginner’s All-purpose Symbolic Instruction Code (Código de instrucción simbólico de propósito general para principiantes). Entre sus principales novedades están las de ser un lenguaje interpretado y de uso conversacional, útil para aplicaciones técnicas y de gestión. Estas características, unidas a la popularización de las microcomputadoras y computadoras personales, han hecho que su utilización se haya extendido enormemente, a la vez que ha propiciado el surgimiento de una gran diversidad de versiones. Existen una multitud de intérpretes y compiladores de este lenguaje. Pascal

Fue creado por el matemático suizo Niklaus Wirth en 1970, basándose en el lenguaje AL-GOL, en cuyo diseño había participado en los años 60. Su nombre proviene del filósofo y

Paradigmas y Lenguajes LSI / Paradigmas de Programación ISI Pag. 29

matemático francés, del siglo XVII, Blaise Pascal, que inventó la primera máquina mecánica para sumar. Aunque en principio la idea del diseñador era proporcionar un lenguaje adecuado para la enseñanza de los conceptos y técnicas de programación, con el tiempo ha llegado a ser un lenguaje ampliamente utilizado en todo tipo de aplicaciones, poseyendo grandes facilidades para la programación de sistemas y diseño de gráficos. Aporta los conceptos de tipo de datos, programación estructurada y diseño descendente, entre otros, además de haberse convertido en predecesor de otros lenguajes más modernos, como MODULA-2, ADA y Delphi. SmallTalk

Este lenguaje diseñado por Alan Key entre otros, y fue publicado en 1990, si bien su desarrollo comenzó en 1969. Smalltalk es considerado el primero de los lenguajes orientados a objetos puro, aunque en realidad el primero en implementar programación orientada a objetos fue Simula. Ada

Fue un intento de obtener un único lenguaje para todo tipo de aplicaciones e incluye los últimos avances en técnicas de programación. Su diseño fue encargado por el Departamento de Defensa de los Estados Unidos a la empresa Honeywell-Bull después de una selección rigurosa entre varias propuestas realizadas sobre una serie de requerimientos del lenguaje y de haber evaluado negativamente veintitrés lenguajes existentes. De éstos se seleccionaron como base para la creación del nuevo lenguaje el PASCAL, el ALGOL y el PL/I. La estandarización del lenguaje se publicó en 1983. El nombre ADA es en honor a la, hoy considerada, primera programadora de la historia, Augusta Ada Byron (1815-1852), condesa de Lovelace, hija del famoso poeta Lord Byron. Entre las características del lenguaje se encuentran la compilación separada, los tipos abstractos de datos, programación concurrente, programación estructurada, libertad de formatos de escritura, etc., presentando como principal inconveniente su gran extensión. C

En 1967 Martin Richards en Cambridge desarrolló un lenguaje denominado BCPL (Basic Combined Programming Language) que pretendía, de alguna forma, simplificar el CPL creado en 1963. En 1970 surge un lenguaje denominado B, como un intento de simplificar

Paradigmas y Lenguajes LSI / Paradigmas de Programación ISI Pag. 30

aún más el CPL de lo que hizo el BCPL, fue desarrollado por Ken Thompson en los Laboratorios Bell para una primera implementación de UNIX, en lenguaje de alto nivel. En 1971, un nuevo lenguaje denominado C, se convierte en sucesor del lenguaje B. Desarrollado por Brian Kernighan y Dennis Ritchie. Fue implementado por primera vez en una PDP-11 corriendo UNIX. Este se convierte en el primer estándar de C (El C de K&R). En 1973, el kernel del sistema operativo UNIX, se rescribe casi totalmente en C. El desarrollo lo llevaron a cabo Ritchie y Thompson.En 1980 Bjarne Stroustrup, crea el C++ como una mejora del C de K&R, que daba apoyo a la programación orientada a objetos. En 1983 un Comité del ANSI (American National Standard Institute) definió un nuevo estándar, el ANSI C, teniendo como fin la normalización de las distintas versiones del C que estaban en circulación. En 1991 James Gosling de la empresa Sun Microsystems, crea un lenguaje denominado inicialmente OAK, más tarde en 1995 se lo denomina Java. Este es un lenguaje potente, interpretado, e independiente del hardware.

Estándares del C y el C++ En el ANSI (Instituto Nacional Estadounidense de Estándares) se realizó la primera estandarización del lenguaje C, en el Comité X3J11, formalizado como ANSI X3.159-1989, o ANSI C. La ISO adoptó...


Similar Free PDFs