Tipos de lenguaje de programación

Lenguajes de Programación

  • 810

    Algoritmo

    Algoritmo
    Años 780-850
    El matemático y astrónomo persa Musa al-Juarismi (780-850), inventó el algoritmo, es decir, la resolución metódica de problemas de álgebra y cálculo numérico mediante una lista bien definida, ordenada y finita de operaciones.
    – vivió en Bagdad en 780 – 850 aC
    – matemático del Califa
    – autor de “Breve introducción al cálculo usando reglas de completitud y reducción”
    – eliminar unidades negativas de la ecuación añadiendo la misma cantidad en el otro miembro
  • Calculo del Pensamiento

    Calculo del Pensamiento
    Gottfried Wilhelm Leibniz
    – 1646 - 1716
    – Inventor del cálculo y del sistema binario
    – "Calculus ratiocinator": el razonamiento se puede reducir a un lenguaje formal simbólico, y todos los argumentos se pueden resolver mediante la manipulación mecánica de conceptos lógicos
    – inventó la calculadora mecánica
  • El telar de Jacquard

    El telar de Jacquard
    • Demo en 1801
    • Se programaban los diseños en el telar mediante tarjetas perforadas
    • Totalmente pegado al hardware: cada hueco se correspondía con una acción del telar
    • No estaba hardcodeado
  • Motor Analítico

    Motor Analítico
    • Charles Babbage
    (1791 –1871) inventa (pero nunca llega a construir) la primera computadora (no sólo calculadora) programable
    • podría hacer bucles y condicionales, tenía memoria integrada
    • la primera máquina Turing-­‐completa?
  • Secuencia Computadora mecánica

    Secuencia Computadora mecánica
    Ada Lovelace (1815 – 1852) implementó el primer algoritmo para el computador mecánico, para calcular una secuencia de números de Bernoulli
  • El tabulador Estático

    El tabulador Estático
    • Herman Hollerith (1860-­‐1929)
    desarrolla un tabulador para obtener estadísticas de grandes cantidades de datos
    • Funda la Tabulating Machine Company, que termina fusionándose para formar IBM
    • es el padre del procesamiento automático de datos
  • Lògica de Predicados

    Lògica de Predicados
    –Gottlöb Frege (1848-1925)
    –base formal para la Teoría de la demostración y la prueba de teoremas automatizada
    –la computación como deducción
  • Algoritmos de Markov

    Algoritmos de Markov
    Andrey Markov (1903-1979)
    En la teoría de la probabilidad, se conoce como cadena de Márkov o modelo de Márkov a un tipo especial de proceso estocástico discreto en el que la probabilidad de que ocurra un evento depende solamente del evento inmediatamente anterior. Esta característica de falta de memoria recibe el nombre de propiedad de Markov.
  • Funciones recursivas y autómatas

    Funciones recursivas y autómatas
    Stephen Kleene (1909-1994) Durante la Segunda Guerra Mundial, Kleene fue Capitán de Corbeta en la Armada de los Estados Unidos. Además, fue instructor de navegación en la US Naval Reserve’s Midshipmen’s School en Nueva York, y después director de proyecto en la Laboratorio de Investigación Naval de los Estados Unidos en Washington D. C.
    En 1946 regresó a Wisconsin, convirtiéndose en profesor en 1948. Ahí fue presidente de Matemáticas y Ciencias Computacionales en 1962 y 1963.
  • Lògica Combinatoria

    Lògica Combinatoria
    Moses Schönfinkel (1889-1942)
    Schönfinkel desarrolló un sistema formal que evitaba el uso de variables ligadas . Su sistema era esencialmente equivalente a una lógica combinatoria basada en los combinadores B , C , I , K y S. Schönfinkel pudo demostrar que el sistema podía reducirse solo a K y S y describió una prueba de que una versión de este sistema tenía el mismo poder que la lógica de predicados
  • Lambda Càlculo

    Lambda Càlculo
    –Alonzo Church (1903-1995)
    –base formal para todos los lenguajes funcionales, semántica, teoría de tipos
    El cálculo lambda es un sistema formal diseñado para investigar la definición de función, la noción de aplicación de funciones y la recursión. Fue introducido por Alonzo Church y Stephen Kleene en la década de 1930; Church usó el cálculo lambda en 1936 para resolver el Entscheidungsproblem. Puede ser usado para definir de manera limpia y precisa qué es una "función computable".
  • Tesis de Chruch-Turing

    Tesis de Chruch-Turing
    En la década de 1930, uno de los problemas era el Entscheidungsproblem propuesto por David Hilbert: dada una proposición en un sistema formal, ¿existe un algoritmo tal que pueda decidir si la proposición es cierta (y por tanto es un teorema del sistema) o por el contrario es falsa? En 1936 Alonzo Church y Alan Turing probaron, de forma independiente, la imposibilidad de la existencia de tal algoritmo, usando el cálculo lambda en el caso de Church y la máquina de Turing en el caso de Turing.
  • Màquina de Post

    Màquina de Post
    Emil Leon Post (1897-1954 )
    Creó el sistema formal llamado Máquina de Post, el cual es equivalente a la Máquina de Turing.
    Este modelo a veces se llama "máquina de Post" o máquina de Post-Turing , pero no debe confundirse con las máquinas de etiquetas de Post u otros tipos especiales de sistema canónico de Post.
    Post ideó un método de 'símbolos auxiliares' mediante el cual podía representar canónicamente cualquier lenguaje Postgenerativo, y de hecho cualquier función o conjunto computable.
  • Máquinas de Turing

    Máquinas de Turing
    –Alan Turing (1912-1954) –secuencias de comandos, transiciones entre estados explícitas, actualización mediante asignación.
    Una máquina de Turing es un dispositivo que manipula símbolos sobre una tira de cinta de acuerdo con una tabla de reglas. A pesar de su simplicidad, una máquina de Turing puede ser adaptada para simular la lógica de cualquier algoritmo de computador y es particularmente útil en la explicación de las funciones de una CPU dentro de un computador.
  • Lenguajes Ensamblador

    Lenguajes Ensamblador
    •la evolución de las tarjetas perforadas
    •los inventan los diseñadores de hardware a principio de los 1950 •usan nombres que se pueden recordar en lugar de binarios push ebp

    mov ebp, esp

    sub esp, 4

    push edi
    •tienen macros reusables y subrutinas
  • FORTRAN

    FORTRAN
    •Lenguaje procedural imperativo
    –todavía se usa en computación científica
    •desarrollado en IBM en los 1950s por John Backus (1924-2007) –Backus aboga por la programación funcional en su charla del premio Turing 1977 “No sabíamos lo que queríamos y cómo hacerlo. Simplemente creció. La primera lucha fue sobre cómo se vería el lenguaje. Entonces, ¿cómo analizar las expresiones? Era un gran problema ...”
    •BNF: forma de Backus-Naur para definir gramáticas independientes de contexto
  • LISP

    LISP
    •Inventado por John McCarthy
    •Notación formal para lambda-cálculo
    •la primera instanciación de muchos conceptos de lenguajes de programación:
    –manejo de memoria automatizado (garbage collection)
    –tipado dinámico
    –no se distingue entre el código y los datos •todavía se usa: ACL2, Scheme, ... etc
  • Algol 60

    Algol 60
    tuvo una gran influencia en la mayoría de los lenguajes de programación posteriores como Pascal, C y ADA .
    • Diseñado en 1958-1960
    • Gran influencia en lenguajes modernos
    -especifican la sintaxis formalmente

    -alcance léxico: begin end or
    -procedimientos modulares, recursivos, declaración del tipo de las variables
    • Nacimiento de la informática computer Dijkstra
    • Un lenguaje tan adelantado a su tiempo que no solo fue una mejora en su predecesores, pero también en casi todos sus sucesores
  • COBOL

    COBOL
    •diseñado 1959, estándar en 1968

    •Grace Hopper y el Departamento de Defensa de los Estados Unidos

    •trata de imitar el lenguaje natural, para facilitar su uso por no computólogos y ser su propia documentación
    •tremendamente verboso
    •muy poco estructurado
    •muy utilizado históricamente, y hoy en sistemas legacy
  • Basic

    Creado por estudiantes de Dartmouth College, el denominado BASIC fue diseñado como un lenguaje simplificado para aquellos que no tenían como base fuertes conocimientos técnicos o matemáticos. Una versión modificada, escrita por Bill Gates y Paul Allen, llegó a ser el primer producto de Microsoft. Fue vendido al M.I.T.S. para el Altair..
    Dentro de sus principales caracteristicas se destacan la faciidad de usar para los principiantes,ser un lenguaje de propósito general,ser interactivo.
  • BCPL / B / C

    BCPL / B / C
    • nacido de la frustración con grandes sistemas operativos y grandes lenguajes (Multics, PL/I, Algol 68)
    • mantiene alcance léxico y recursión
    • acceso al bajo nivel de la máquina
    – manejo de memoria manual
    – manejo de punteros explícito
    – tipado débil
    • programación de sistemas operativos para máquinas con poca memoria
    – PDP-7, PDP-11, later VAX, Unix workstations y PCs
    – un lenguaje ensamblador portable
  • SIMULA 67

    SIMULA 67
    • el primer lenguaje orientado a objetos (1962)
    Objetos y clases, herencia, polimorfismo procedimientos virtuales
    Sin embargo, el primer lenguaje orientado a objetos puro es Smalltalk, cuya primera versión pública data de 1980.
    Dado que Simula 67 es un lenguaje ya un poco añejo, los conceptos que maneja son un poco distintos a los actualmente utilizados por la comunidad de programación orientada a objetos. Las instancias a las que estamos habituados corresponden a los objetos inactivos.
  • El desarollo de la ARPANET

    El desarollo de la ARPANET
    Es un hecho innegable que ARPANET fue la precursora de la moderna Internet. Comenzó en una serie de notas escritas por JCR Licklider e inicialmente denominado "Intergalactic Computer Network." Sin el desarrollo de ARPANET, el paisaje de TI sería radicalmente diferente.
  • Pascal

    Pascal
    • revisa el sistema de tipos de Algol
    – buenos conceptos de estructuras de datos
    • Records, variantes, subrangos
    – más restrictivo que Algol 60/68
    • los parámetros de procedimiento no pueden tener
    parámetros de procedimiento
    • lenguaje popular para enseñanza
    • dificulta el reuso del código:
    – el parámetro tiene que tener un tipo
    – losTipos no pueden tener variables
    • no es útil para proyectos industriales, el foco está en la enseñanza
  • La creación de Unix

    La creación de Unix
    Aunque muchos aseguran que Windows es el sistema operativo más importante jamás creado, UNIX debería tener ese título. Comenzó como un proyecto entre el MIT y AT&T Bell. Su mayor logro, crear un entorno multiusuario, al ser el primer sistema operativo que permitía que más de un usuario accediera a la vez.
  • C

    C
    • Bell Labs 1972 (Dennis Ritchie)
    • desarrollo relacionado con UNIX
    • añade tipado débil a B
    – int, char, y sus tipos punteros
    • Compila a código nativo
    •Núcleo del lenguaje simple
    •Es un lenguaje estructurado, .
    •En su primera edición no había advertencias sobre asignar a una variable un valor un tipo distinto
    •Usa un lenguaje de preprocesado, el preprocesador de C.
    •Acceso a memoria de bajo nivel mediante el uso de apuntadores o punteros.
    •Manejo de Interrupciones mediante la biblioteca
  • Evolución de C

    Evolución de C
    • 1973-1980: nuevas características; se porta el
    compilador
    • 1978: K&R C book published
    • 1989: ANSI C standardization
    – Function prototypes as in C++
    • 1999: ISO 9899:1999 also known as C99
    – Inline functions, C++-like decls, bools, variable
    arrays
    • C concurrente, Objective C, C*, C++, C#
    • Lenguaje ensamblador portable: muchos
    lenguajes se traducen a C
    – primeras etapas de C++, Modula-3, fuente de Eiffel
  • C++

    C++
    • Bell Labs 1979 (Bjarne Stroustrup)
    – C con clases (C++ desde 1983)
    • influenciado por Simula
    • originalmente se traducía a C con
    Cfront, después tenía compiladores
    nativos (GNU g++)
    • incorpora:
    – herencia múltiple
    – Templates / genéricos
    – manejo de excepciones
  • El primero ordenador portátil

    El primero ordenador portátil
    La primera computadora portátil fue la Epson HX-20 desarrollada en 1981. Demostró sus grandes beneficios para el trabajo de científicos, militares, empresarios, y otros profesionales. La Osborne 1 salió al mercado comercial en abril de 1981. En 1985 el Departamento I&D de CMET desarrolló Microtor I, un computador portátil basado en la CPU 6502. En 1995, con la llegada de Windows 95, la venta de las portátiles se incrementó notablemente.
  • Python

    Python
    Creado por Guido van Rossum, es un lenguaje de programación multiparadigma, permitiendo varios estilos de programación como ser la programación orientada a objetos, estructurada y funcional.
    Permite dividir el programa en módulos reutilizables ,viene con una gran colección de módulos estándar,se utiliza como lenguaje de programación interpretado, lo que ahorra un tiempo considerable en el desarrollo del programa,El intérprete se puede utilizar de modo interactivo.
  • Java

    Java
    El lenguaje Java se creó con cinco objetivos principales: Debería usar el paradigma de la programación orientada a objetos.
    Debería permitir la ejecución de un mismo programa en múltiples sistemas operativos.
    Debería incluir por defecto soporte para trabajo en red.
    Debería diseñarse para ejecutar código en sistemas remotos de forma segura.
    Debería ser fácil de usar y tomar lo mejor de otros lenguajes orientados a objetos, como C++.
  • JavaScript

    JavaScript
    Es un lenguaje ligero e interpretado, orientado a objetos con funciones de primera clase, más conocido como el lenguaje de script para páginas web, pero también usado en muchos entornos sin navegador, tales como node.js, Apache CouchDB y Adobe Acrobat.
    Es un lenguaje script multi-paradigma, basado en prototipos, dinámico, soporta estilos de programación funcional, orientada a objetos e imperativa.
  • PHP

    PHP
    Rasmus Lerdoff desarrolló PHP para reemplazar unos scripts de Perl usados para mantener su web personal. Hoy en día, PHP ha crecido hasta llegar a ser parte de una arquitectura web integrada en 20 millones de websites. Facebook lo usa actualmente.
  • Ruby On Rails

    Ruby On Rails
    Fue extraído por David Heinemeier Hansson de su trabajo en Basecamp, un proyecto dirigido por 37 señales. Hasson lanzó Ruby On Rails, en principio, como código abierto, en 2004, pero no compartió los derechos hasta febrero de 2005. Ahora está en su versión 3.0.7 y tiene más de 1.800 contribuyentes.