2. HISTORIA DE LOS LENGUAJES DE PROGRAMACION Los lenguajes de programación surgen debido a un problema de comunicación entre el hombre y la computadora. El hombre emplea un lenguaje natural (idioma o dialecto) como lenguaje propio de comunicación, mientras que la computadora emplea un lenguaje artificial (lenguaje de máquina) como lenguaje propio de comunicación. Los primeros programadores programaban las computadoras usando lenguaje de máquina, lo cual provocaba que incurrieran en muchos errores, haciendo pobre su productividad. Un lenguaje de programación actúa como una interface de comunicación entre el hombre y la computadora. La implementación de un lenguaje de programación puede ser en base a un traductor o a un intérprete. Los lenguajes de programación nacen alrededor de los años cincuenta, en la que destacaremos las distintas etapas de la historia de los lenguajes de programación
3. ETAPAS DE LA HISTORIA PRIMERA ETAPA Con la llegada de las computadoras electrónicas se vio la necesidad de programarlas, es decir, de almacenar en memoria la información sobre lo que se iba a ejecutar, en esta nacieron las calculadoras simples en la que se les indicaba los pasos de calculo uno por uno. John Von Neumann desarrolló el modelo que lleva su nombre, para describir este concepto de "programa almacenado". En este modelo, se tiene una abstracción de la memoria como un conjunto de celdas, que almacenan simplemente números. Estos números pueden representar dos cosas: los datos, sobre los que va a trabajar el programa; o bien, el programa en sí. Se tenía el problema de representar las acciones que iba a realizar la computadora, y que la memoria, al estar compuesta por switches correspondientes al concepto de bit, solamente nos permitía almacenar números binarios.
4. ETAPAS DE LA HISTORIA La solución que se tomó fue la siguiente: a cada acción que sea capaz de realizar nuestra computadora, asociarle un número, que será su código de operación (opcode). Por ejemplo, una calculadora programable simple podría asignar los opcodes: 1 = SUMA, 2 = RESTA, 3 = MULTIPLICA, 4 = DIVIDE. Virtualmente, cada computador personal, microcomputador, minicomputador y supercomputador es una máquina de von Neumann.
5. PARTES DE LA MAQUINA DE NEUMANN La memoria: constaba de 4096 palabras, cada una de las cuales contenía 40 bits que podían ser 1 o 0. cada palabra contenía dos instrucciones de 20 bits o bien un entero con signo de 40 bits. Ocho bits de cada instrucción estaban dedicados a indicar el tipo de instrucción y 12 bits se dedicaban a especificar una de las 4096 palabras de memoria. La unidad aritmética: dentro de aquí había un registro interno de 40 bits llamado acumulador. Una instrucción típica sumaba una palabra de la memoria al acumulador o almacenaba el contenido del acumulador a la memoria. La unidad de control. El equipo de entrada y salida.
6. ETAPAS DE LA HISTORIA SEGUNDA ETAPA El gran ejemplo que siguió esta segunda generación fue el lenguaje ensamblador esta implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. Esta representación es usualmente definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria, y otras características del lenguaje. Según esto se dio la creación de herramientas automáticas para generar el código maquina. Esto redujo los errores triviales de los números que correspondían a una operación, que son fáciles de cometer y difíciles de ubicar.
7. ETAPAS DE LA HISTORIA TERCERA ETAPA Se dio en los años sesenta en el que se desarrollaban algoritmos de mas elevado nivel y hardware de mas alto poder, en la que se utilizaban para distintas ramas como la física, química y otras similares, pero no de computación ya que este funcionaba con formulas pero estos trabajaban con lenguaje ensamblador. De esto nace los lenguajes de alto nivel con el primer compilador de FORTRAN ( FORmulaTRANslation) en la que este nación con un simple esfuerzo de traducir un lenguaje de formulas al lenguaje ensamblador y por consiguiente al lenguaje de maquina Este fue el paso para que se crearon innumerables lenguajes que siguen el mismo concepto, en la que buscan la mayor abstracción posible y facilitar la vida al programador aumentando la productividad Hay que notar la existencia de lenguajes que combinan características de los de alto nivel y los de bajo nivel (es decir, Ensamblador) Un ejemplo es C: contiene estructuras de programación de alto nivel, y la facilidad de usar librerías que también son características de alto nivel; sin embargo, fue diseñado con muy pocas instrucciones, las cuales son sumamente sencillas, fáciles de traducir al lenguaje de la máquina; y requiere de un entendimiento apropiado de cómo funciona la máquina, el uso de la memoria, etcétera. Por ello, muchas personas consideramos a lenguajes como C (que fue diseñado para hacer sistemas operativos), lenguajes de nivel medio.
8. ETAPAS DE LA HISTORIA CUARTA ETAPA Los idiomas de la cuarta generación parecen según las instrucciones a las de la tercera generación. Lo nuevo de estas lenguajes son conceptos como clases, objetos y eventos que permiten soluciones más fáciles y lógicos. Lenguajes como C++, java y C# se llaman lenguajes orientadas al objeto. La mayoría de los idiomas modernos son objetivas orientado, que permite que mí modele el mundo verdadero que usa mi idioma. Además, puedo limitar el acceso para modelar las restricciones de mundo verdadero en datos. La llave es que usé el término "mundo verdadero." Por la primera vez, yo modelo mi solución en términos del problema. Quiero que mi solución sea orientado de problema, para que la solución refleje el mundo verdadero en términos de estructuras de datos y acceso a los datos. Yo también puedo aplicar directamente y para poder modelar objetos de mundo verdadero usando las clases (en C + + o Java).