Anda di halaman 1dari 8

4. Lenguajes actuales de programacin.

Caractersticas
tcnicas.
Gramtica
Compilacin
Anlisis
o Lxico
o Sintctico
o Semntico
Sntesis
o Generacin cdigo objeto
o Generacin de cdigo intermedio, para evitar la dependencia
del HW y SO de la compilacin (virtualizacin)
Primera pasada: fuente a la abstraccin
Segunda pasada: abstraccin al detalle
Optimizacin: mejorar el cdigo intermedio, de modo que resulte un
cdigo mquina ms rpido de ejecutar
Enlazado: se enlaza el cdigo de bajo nivel generado de todos los ficheros
y subprogramas que se han mandado compilar y se aade el cdigo de las
funciones que hay en las bibliotecas del compilador para que el ejecutable
pueda comunicarse directamente con el sistema operativo.

Lenguaje mquina: ejecucin directa, fuerte dependencia del HW (binario


puro)
Lenguajes simblicos: distanciarnos del HW
Lenguaje ensamblador: utiliza nemnicos o nemotcnicos que
sustituyen a un cdigo de operacin, necesita traduccin, no es
portable depende del HW, programacin de controladores.
1

Lenguajes de alto nivel


o Instrucciones que representan la lgica del problema
Programacin estructurada utiliza las estructuras bsicas
de programacin: secuencial + condicional + iterativa
o Estructuras de datos

Portabilidad
Dependencia del HW y SO
Para pasar a otra mquina necesito compilar el cdigo fuente
Especializacin
Propsito general
o APIs del lenguaje resuelven la mayor parte de los problemas:
Visual Basic (Basic), Delphi (Pascal), C++ (C), Java, C#
Propsito especfico
o Gestin: COBOL (Cobol .NET), RPG, PL1, SQL
o Cientfico: Fortran, MathLab, R (estadstico o big data)
o Inteligencia artificial o sistemas expertos: Lisp (funcional),
Prolog (lgico)
o Aplicaciones Web: PHP, Perl, Python, JavaScript, Vb script ->
siguen el modelo de traduccin por interprete, adems el
navegador web tiene un parser
Paradigmas de programacin
Representa un enfoque particular o filosofa para disear soluciones
Normas y procedimientos que indican la forma de organizar las tareas de
un programa compartidas por un conjunto de lenguajes de programacin
Actualmente, el paradigma de programacin ms utilizado es el paradigma
de la programacin orientada a objetos.
En general la mayora son variantes de los dos tipos principales, imperativa
y declarativa:
Al nivel mquina: lenguaje mquina y ensamblador
o Ejecutivas: sumas, desplazamientos, XOR
o De control: salto incondicional (goto) y condicional
o De E/S
Paradigma imperativo o por procedimientos (cmo?): modular
(mxima cohesin y mnimo acoplamiento) y estructurada (se
desaprueba el uso de goto). Es el ms usado en general, se basa en
dar instrucciones al ordenador de como hacer las cosas en forma de
algoritmos. La programacin imperativa es la ms usada y la ms
antigua,ejemplos de lenguajes puros de este paradigma seran el
Fortran, COBOL, C, ADA, BASIC o Pascal, pero tambin Eiffel, Java, C+
+, C#, Python

Paradigma declarativo: est basado en describir el problema


declarando propiedades y reglas que deben cumplirse, en lugar de
instrucciones. Hay lenguajes para la programacin funcional, la
programacin lgica, o la combinacin lgico-funcional. Unos de los
primeros lenguajes funcionales fueron Lisp y Prolog.
o

Programacin funcional: basada en la definicin los


predicados y es de corte ms matemtico, est representado
por Scheme (una variante de Lisp) o Haskell.
2

Programacin lgica: basado en la definicin de relaciones


lgicas, est representado por Prolog.

Programacin con restricciones: Similar a la lgica usando


ecuaciones. Casi todos los lenguajes son variantes del Prolog.

Lenguaje especfico del dominio o DSL: Se denomina as a los


lenguajes desarrollados para resolver un problema especfico,
pudiendo entrar dentro de cualquier grupo anterior. El ms
representativo sera SQL para el manejo de las bases de datos, de
tipo declarativo, pero los hay imperativos como el Logo.

Paradigma Orientacin a objetos (OO), primero fue el lenguaje


o

Est basada en el imperativo, pero encapsula elementos


denominados objetos que incluyen tanto variables como
funciones. Est representado por C++ o el Java, pero el ms
puro sera el Smalltalk.

Clase: conjunto de objetos con atributos y mtodos

Abstracta

Objeto: instanciacin de una clase, solo existen en tiempo de


ejecucin

Tipo abstracto de datos

Encapsular (interface)

Operadores de alcance

Public: visible para todos los objetos en el mismo


mbito de visibilidad

Private: solo visible para el objeto al que


pertenece (las clases hijas no van a heredar nunca
los atributos y mtodos privados de la clase
padre)

Protected: solo es visible ese atributo o mtodo


desde una de las clases hijas y no desde otra
clase

Por defecto: si no especificamos ningn


modificador de acceso se utiliza el nivel de acceso
por defecto, que consiste en que el elemento
puede ser accedido slo desde las clases que
pertenezcan al mismo paquete.

Static: no sirve para crear constantes, sino para


crear miembros que pertenecen a la clase, y no a
una instancia de la clase. No es necesario crear un
objeto de la clase para poder acceder a estos
atributos y mtodos. Este es el motivo por el cual
es obligatorio que main se declare como static; de
esta forma no tenemos que ofrecer un constructor
vaco para la clase que contiene el mtodo, o
indicar de alguna forma a la mquina virtual cmo
instanciar la clase. Un uso del modificador static
sera, por ejemplo, crear un contador de los
objetos de la clase que se han creado,
incrementando la variable esttica en el
constructor.

Native: es un modificador utilizado cuando un


determinado mtodo est escrito en un lenguaje
distinto a Java, normalmente C, C++ o
ensamblador para mejorar el rendimiento. La
forma ms comn de implementar estos mtodos
es utilizar JNI (Java Native Interface).

volatile y synchronized. Volatile es, junto con


synchronized, uno de los mecanismos de
sincronizacin bsicos de Java. Se utiliza este
4

modificador sobre los atributos de los objetos para


indicar al compilador que es posible que dicho
atributo vaya a ser modificado por varios threads
de forma simultanea y asncrona, y que no
queremos guardar una copia local del valor para
cada thread a modo de cach, sino que queremos
que los valores de todos los threads estn
sincronizados en todo momento, asegurando as
la visibilidad del valor actualizado a costa de un
pequeo impacto en el rendimiento. Volatile es
ms simple y ms sencillo que synchronized, lo
que implica tambin un mejor rendimiento. Sin
embargo volatile, a diferencia de synchronized, no
proporciona atomicidad, lo que puede hacer que
sea ms complicado de utilizar.

Abstract. Un viejo conocido para la mayora de


los programadores Java. La palabra clave abstract
indica que no se provee una implementacin para
un cierto mtodo, sino que la implementacin
vendr dada por las clases que extiendan la clase
actual. Una clase que tenga uno o ms mtodos
abstract debe declararse como abstract a su vez.

Final. Indica que una variable, mtodo o clase no


se va a modificar, lo cul puede ser til para
aadir ms semntica, por cuestiones de
rendimiento, y para detectar errores. Si una
variable se marca como final, no se podr asignar
un nuevo valor a la variable. Si una clase se marca
como final, no se podr extender la clase. Si es un
mtodo el que se declara como final, no se podr
sobreescribir.

Una variable con modificadores static y final


sera lo ms cercano en Java a las constantes de
otros lenguajes de programacin

Polimorfismo y sobrecarga

Polimorfismo es una palabra de origen griego que


significa muchas formas. Este termino se utiliza en la
POO para referirse a la propiedad por la que es posible
enviar mensajes sintcticamente iguales
a objetos de tipos distintos. Para metodos y
propiedades.

Las Interfaces sirven para establecer la forma que debe


de tener una clase (implements).

Clase abstracta pura, con todos sus mtodos abstractos,


es decir, obligatoriamente se implementan en las clases
hijas.
5

Herencia (extends): una clase asume como propios los atributs


y mtodos definids por otra (clase padre)

Herencia mltiple

Enlace dinmico o dynamic binding o enlace tardo. Retrasar


hasta el instante de ejecucin la asociacin tipo y objeto, en
cualquier otro paradigma se realiza en tiempo de compilacin.

Paradigma de la programacin orientada a Aspectos: es un


paradigma de programacin relativamente nuevo (aspect-oriented
programming AOP) cuya intencin es permitir una adecuada
modularizacin de las aplicaciones y posibilitar una mejor separacin
de responsabilidades (obligacin o correspondencia de hacer algo).
Se pueden encapsular los diferentes conceptos que componen una
aplicacin en entidades bien definidas, eliminando las dependencias
entre cada uno de los mdulos. De esta forma se consigue razonar
mejor sobre los conceptos, se elimina la dispersin del cdigo y las
implementaciones resultan ms comprensibles, adaptables y
reusables. Ejemplos:
o
o

o
o

Sobrecarga (@Override), especializacin de mtodos,


cuando en na clase existen dos mtodos con idntico
nombre pero con distintos parmetros.

C++ -> AspectC++


Java
AspectJ es una extensin Java del proyecto Eclipse.
AOP con SpringFramework 2.5 es un Framework de Java
que permite programar en el paradigma de Aspectos
utilizando Anotacin Java
Perl -> Aspect, disponible en CPAN.
PHP
PHP-AOP (AOP.io) es una lib.
phpAspect es una extensin PHP para implementar el
paradigma de la POA, mediante rboles de decisin XML.
FLOW3 es un framework MVC de PHP incluye un mdulo
AOP.
Python -> Aspyct AOP.

Programacin multiparadigma: es el uso de dos o ms


paradigmas dentro de un programa. Es realmente comn el diseo
de lenguajes que soporten mltiples paradigmas de programacin.
Estos lenguajes son aquellos que soportan al menos dos
paradigmas.
o

Scala: Imperativo, orientado a objetos, funcional, genrico y


concurrente

Erlang: Funcional, concurrente y distribuido

Perl: Imperativo, orientado a objetos y funcional


6

PHP: Imperativo, orientado a objetos, funcional y reflexivo

JavaScript: Imperativo, orientado a objetos (prototipos) y


funcional

Java: Imperativo, orientado a objetos, reflexivo y genrico

Python y Ruby: Imperativo, orientado a objetos, reflexivo y


funcional

C++: Imperativo, orientado a objetos, funcional y genrico

C#: Imperativo, orientado a objetos, funcional (lambda),


reflexivo y genrico

Lisp: orientado a objetos, funcional, declarativo

Prolog: lgico y declarativo

Estos son algunos ejemplos, existen lenguajes como Oz que soporta


nueve paradigmas de programacin, para algunos es un acierto y
para otros un error.
Un ejemplo son los lenguajes multiplataforma.

ALGORITMO
Conjunto de acciones o secuencia de operaciones que ejecutadas en un
determinado orden resuelven el problema
PSEUDOCODIGO -> lenguaje natural
DIAGRAMA DE FLUJO U ORDINOGRAMA
INSTRUCCIN
Tarea elemental
PROGRAMA
Conjunto de instrucciones -> E + (declaracin variables instrucciones) + S
LENGUAJE DE PROGRAMACION
Conjunto de normas que permiten escribir un programa
SUBRUTINA O SUBPROGRAMA
Fragmento de programa que resuelve un subproblema
FUNCION -> subprograma de n entradas y 1 salida
PROCEDIMIENTO -> subprograma de n entradas y n salidas
COMPILADOR
Traductor lenguaje alto nivel -> programa objeto en cdigo mquina
INTERPRETE
Traductor que realiza la compilacin paso a paso (no genera cdigo
intermedio)
LENGUAJES MAQUINA (binario puro Ejecutivas, de control y de E/S)
LENGUAJES SIMBOLICOS
ENSAMBLADOR -> cada instruccin lenguaje maquina un nombre
nemotcnico
LENGUAJES DE ALTO NIVEL (LAN)
LENGUAJES ORIENTADOS A OBJETOS (LOOS)
Clase
Objetos
Tipos abstractos de datos (TDA) o encapsulacin
Polimorfismo/Sobrecarga
Herencia
Enlace dinmico
Tipos de LOOS
LENGUAJE MULTIPLATAFORMA (Java, C#, Python)
LENGUAJES DE CUARTA GENERACION: SQL (4GL)
DDL
DML
DCL

Anda mungkin juga menyukai