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 ALGOL-60.
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.