Lenguaje Programacion

29
 ¿Por qué estudiamos conceptos de Lenguajes de Programación? Para incrementar nuestra capacidad de expresar ideas (la hipótesis Sapir-Whorf) Para mejorar nuestra formación en lo referente a cómo elegir los lenguajes más apropiados

description

Lenguaje de Programacion, conceptos. Sistemas de Computacion

Transcript of Lenguaje Programacion

  • 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.