You are on page 1of 29

Por qu estudiamos conceptos de

Lenguajes de Programacin?
Para incrementar nuestra capacidad de
expresar ideas (la hiptesis Sapir-Whorf)
Para mejorar nuestra formacin en lo
referente a cmo elegir los lenguajes ms
apropiados

Por qu estudiamos conceptos de


Lenguajes de Programacin?
Para mejorar nuestra capacidad de
aprender nuevos lenguajes de
programacin
Para incrementar nuestra capacidad para
disear nuevos lenguajes de
programacin
Para contribuir al avance general de la
ciencia de la computacin

Definicin de Lenguaje de
Programacin
Un lenguaje es un conjunto sistemtico de
reglas para comunicar ideas.
Un lenguaje de programacin es un
lenguaje que se pretende sea utilizado por
una persona para expresar un proceso
mediante el cual una computadora puede
resolver un problema.

Palabras clave en la definicin


de un lenguaje de programacin
Conjunto de reglas (sintaxis),
normalmente llamadas instrucciones,
las cuales se usan de una cierta manera
(semntica) para hacer que la
computadora realice una cierta tarea.
Este conjunto de reglas es finito y tiene
que aplicarse en una forma sistemtica
para obtener el efecto deseado.

Palabras clave en la definicin


de un lenguaje de programacin
Esto significa que el dominar la sintaxis de
un lenguaje de programacin es una
parte vital del proceso de aprendizaje del
lenguaje mismo.

Palabras clave en la definicin


de un lenguaje de programacin
En algunos paradigmas, como el
funcional, una de las metas es tratar de
disminuir la cantidad de tiempo que se
emplea en aprender la sintaxis del
lenguaje, de manera que se ponga ms
atencin al diseo de los algoritmos, lo
cual es realmente la razn por la cual se
aprende a escribir programas.

Palabras clave en la definicin


de un lenguaje de programacin
Proceso: Actividad que es descrita por un programa.
Cada tarea que una computadora puede realizar se
considera un proceso.
Procesador (o computadora): Es la mquina que llevar
a cabo el proceso descrito por el programa. Hay que
recordar que el procesamiento es la principal tarea de
una computadora.
Problema: Es lo que queremos resolver usando una
computadora. Normalmente, el problema tendr que ser
expresado en la forma de un algoritmo a fin de que sea
traducido a un lenguaje de programacin.

Conclusin
Hay que recordar que aunque desde la
perspectiva terica todos los lenguajes de
programacin son equivalentes, su
sintaxis y/o conjunto de instrucciones
puede hacerlos ms o menos adecuados
para una cierta tarea en particular. Por lo
tanto, saber ms sobre lenguajes nos
permitir elegir el ms adecuado para una
cierta aplicacin.

Evolucin de los lenguajes de


programacin
Los Aos Oscuros: El lenguaje mquina
(40s y principios de los 50s). En esta
poca, no existan lenguajes de
programacin o cualquier otra herramienta
confiable para escribir software. La
programacin se haca en binario
(lenguaje mquina). Los ensambladores
(lenguaje mquina que usaba etiquetas
simblicas) vino despus.

Evolucin de los lenguajes de


programacin
El pseudo-cdigo fue una de las primeras
herramientas de la poca, y fue motivado
principalmente por la necesidad de contar
con rutinas de punto flotante y facilidades
para indizacin, las cuales no se
proporcionaban en hardware en aquel
entonces.

Evolucin de los lenguajes de


programacin
Primera Generacin: FORTRAN (1957). Fue el
primer lenguaje de programacin importante.
Era muy dependiente de la computadora y muy
primitivo, pero altamente eficiente.
Fue un gran xito y ha sobrevivido a pesar de
haberse creado hace ms de 40 aos. Sin
embargo, ha evolucionado hasta convertirse en
un lenguaje ms regular (FORTRAN 90).

Evolucin de los lenguajes de


programacin
Segunda Generacin: ALGOL-60 (1960). Este fue uno
de los logros ms importantes de todos los tiempos en
trminos de diseo de lenguajes de programacin.
Pequeo y bien diseado, este lenguaje fue un gran
logro tcnico, pero desafortunadamente, fracas en su
intento por desplazar a FORTRAN, ya que nunca logr
volverse tan popular como se esperaba.
ALGOL-60 fue uno de los lenguajes ms influyentes de
la historia, pues ha afectado el diseo de la mayora de
los lenguajes estructurados modernos tales como
Pascal, C, Modula-2, Ada y Oberon.

Evolucin de los lenguajes de


programacin
Tercera Generacin: Pascal (1972). Este lenguaje fue
inicialmente diseado como una implementacin
particular de ALGOL-60, pero en la cual se resolvieron
algunas inconsistencias y se realizaron algunos cambios
importantes en su sintaxis.
Pascal fue diseado originalmente para escribir
compiladores, pero su mayor xito rebas en mucho las
expectativas de su diseador, convirtindose en uno de
los lenguajes de programacin ms importantes de
todos los tiempos. A lo largo de los aos, se han
desarrollado muchas versiones y dialectos distintos de
Pascal alrededor del mundo.

Evolucin de los lenguajes de


programacin
Cuarta Generacin: Ada (1980). Este lenguaje fue
diseado por un comit del Departamento de Defensa
de los Estados Unidos. Se volvi una contribucin
importante a los lenguajes estructurados puesto que
resuelve la mayor parte de los problemas presentes en
las generaciones previas y resulta ser en cierta forma, el
futuro de los lenguajes estructurados.
Aunque es gigantesco, Ada se considera uno de los
mejores lenguajes de programacin jams diseados y
su similitud con Pascal lo hacen relativamente fcil de
aprender, aunque es difcil de dominar debido a la gran
cantidad de instrucciones que posee.

Evolucin de los lenguajes de


programacin
Quinta Generacin: ??????. Todava no
sabemos cul ser la siguiente generacin
de lenguajes de programacin. Los
candidatos principales son: lenguajes
paralelos, lenguajes de flujo de datos,
lenguajes restringidos, lenguajes de
dominio especfico, lenguajes para
programacin mvil, funcionales,
orientados a objetos y lgicos.

Paradigmas de Programacin

Programacin Estructurada
Programacin Orientada a Objetos
Programacin Orientada a las Funciones
Programacin Orientada a la Lgica

Programacin Estructurada
Ejemplos: ALGOL-60, Ada, Pascal, C,
Modula-2, BASIC, FORTRAN. En este
caso, el bloque es la estructura principal
del lenguaje. Normalmente, se usan dos
smbolos (tales como { y } en C) o
palabras reservadas (tales como BEGIN
y END en Pascal) para indicar el
principio y el final de un bloque. Estos
lenguajes son descendientes de ALGOL60.

Programacin
Orientada a Objetos
Ejemplos: C++, Smalltalk, Eiffel. En estos
lenguajes, la unidad bsica de codificacin
es el objeto, que es una entidad que
tiene su propia identidad y oculta
informacin innecesaria del resto del
mundo. El concepto de clase se origin
con el Simula 60 y fue adoptado
posteriormente en lenguajes como C++.

Programacin
Orientada a las Funciones
Ejemplos: Scheme, LISP, Haskell, ML. En estos
lenguajes, las funciones son la principal entidad del
lenguaje, y stas son tratadas como ciudadanos de
primera clase, lo que significa que pueden ser
regresadas de una funcin, asignadas a otra funcin y
pasadas como argumento a cualquier funcin.
Los lenguajes funcionales puros no tienen variables,
saltos incondicionales (gotos), ni ciclos. En lugar de
eso, se usan acoplamientos estticos (static
bindings) y la recursin se usa para las iteraciones.
Scheme y LISP no tienen tipos y escribir un compilador
para ellos resulta, por tanto, una tarea difcil.

Programacin
Orientada a la Lgica
Ejemplo: PROLOG. En estos lenguajes es
posible alcanzar el ms alto nivel de abstraccin
(al menos tericamente), puesto que el estilo de
programacin es declarativo.
Esto significa que en vez de tener que escribir
programas, el usuario escribe clusulas con
aserciones y reglas, y el lenguaje se encarga de
decidir cul es la respuesta (o respuestas) a una
cierta consulta. Los lenguajes orientados a la
lgica todava distan bastante de la perfeccin y
se requiere mucho trabajo para volverlos tiles
en la prctica.

Dominios de la Programacin

Aplicaciones Cientficas
Aplicaciones de Negocios
Inteligencia Artificial
Lenguajes para Programacin de
Sistemas
Lenguajes de Propsito Especial

Aplicaciones Cientficas
FORTRAN, ALGOL-60 y la mayor parte
de sus descendientes han sido usados
para este propsito. La eficiencia es la
mayor motivacin detrs de estos
lenguajes. Deben proporcionarse en la
versin estndar de estos lenguajes
operaciones de punto flotante, as como
buenas bibliotecas matemticas.

Aplicaciones de Negocios
COBOL y herramientas modernas tales como Power
House, FoxBase, CLIPPER,
Oracle, Paradox, etc. Los sistemas manejadores de
bases de datos y muchas otras herramientas han sido
ampliamente utilizadas por los usuarios finales
recientemente para escribir sus propias aplicaciones.
El nfasis de este tipo de lenguajes es su facilidad de
uso. Normalmente cuentan con muchas funciones
orientadas al manejo de bases de datos, funciones muy
elaboradas para entrada y salida y manejo de precisin
fija (muy importante para contabilidad).

Inteligencia Artificial
LISP y PROLOG son los principales lenguajes de
programacin usados en esta rea. El objetivo de tratar
de escribir programas inteligentes es muy ambicioso,
pero los lenguajes que para ello se utilizan son de muy
alto nivel y permiten un gran nivel de abstraccin.
El procesamiento simblico es el principal nfasis de
estos lenguajes, en vez del procesamiento numrico, el
cual se considera secundario en este caso. El uso de
abstraccin y capacidad de incorporar conocimiento
fcilmente es la principal motivacin detrs del diseo
de estos lenguajes.

Lenguajes para
Programacin de Sistemas
Ensamblador, C, Modula-2, etc. Estos lenguajes estn
destinados a la escritura de sistemas operativos y
software relacionado con ellos (p.ej., editores,
depuradores, etc.). En este caso se requiere tener
acceso a operaciones de bajo nivel de una forma
eficiente y confiable.
Los lenguajes de este grupo son normalmente ms
difciles de aprender y extremadamente difciles de
dominar, dado el alto nmero de inconsistencias y
excepciones contenidas en sus gramticas, las cuales
dan pie a sofisticados trucos de programacin que
lenguajes de ms alto nivel no permiten.

Lenguajes de Propsito Especial


Mathematica, Auto-LISP, RPG, GPSS,
MatLab, etc. Lenguajes destinados a una
tarea especfica. Normalmente son
pequeos y simples, y la motivacin
detrs de ellos es permitir que usuarios
finales diseen sus propios programas
dentro de un cierto ambiente de software.

Un lenguaje de programacin es un lenguaje hecho para describir


programas.
Hay muchos lenguajes que la gente usa para controlar e interactuar
con la computadora:
Esos lenguajes los conoceremos como lenguajes de computadora.
Muchos otros lenguajes se usan para propsitos especiales, por
ejemplo, para editar textos, llevar transacciones con un banco, o
generar reportes, esos lenguajes no son lenguajes de programacin
porque no se usan para hacer programas en general.
Nos reservaremos el trmino lenguaje de programacin para los
lenguajes de computadora que se puedan usar, al menos en
principio, para expresar cualquier programa de computadora.

Las diferencias
entre los lenguajes de programacin
Por la misma definicin, cualquier lenguaje de
programacin se puede usar para expresar cualquier
programa, entonces todos los lenguajes de
programacin son igualmente poderosos -cualquier
programa que pueda ser escrito en uno que tambin
puede ser escrito en otro.
Porqu entonces hay muchos lenguajes de
programacin? y porqu debemos estudiar sus
diferencias?
La razn es que, aunque es posible escribir cualquier
programa en cualquier lenguaje de programacin, no es
igualmente fcil de hacerlo

La importancia del estudio


de los lenguajes de programacin
Los lenguajes de programacin son importantes para los
estudiantes en todas las disciplinas porque es la principal
herramienta para programar es decir resolver de manera
sistemtica y efeciente sin margen de error las distintas actividades
en las distintas rea de las ciencias.
Como un resultado, el progreso de las ciencias de la computacin
se puede ver en la evolucin de los lenguajes de programacin.
Esto es particularmente cierto en las metodologas de
programacin, donde los avances en los lenguajes van mano a
mano.
La razn es simple: Los lenguajes de programacin son la
herramienta principal para resolver los problemas va el ordenador.

You might also like