You are on page 1of 10

Historia de la Programacin

Sobre los ltimos 50 aos, los idiomas que programan han evolucionado del cdigo binario de mquina a herramientas poderosas que crean las abstracciones complejas. Es importante entender por qu los idiomas han evolucionado, y qu capacidades que los idiomas ms nuevos nos dan. "Tan largo como no haba mquinas, programar era ningn problema; cuando tuvimos unos pocas computadoras dbiles, programar lleg a ser un problema templado y ahora que tenemos las computadoras gigantescas, programar ha llegado a ser un problema igualmente gigantesco. En este sentido que la industria electrnica no ha resuelto un solo problema, tiene slo los cre - ha creado el problema de usar su producto". [Edsger. W. Dijkstra. "El Programista Humilde" (la Conferencia del Premio de Turing), Comunicaciones del ACM, Vol 15, No. 10 (el octubre 1972).] E. W. Dijkstra habl estas palabras profticas casi hace 28 aos en su es la conferencia del Premio de Turing. En aquel momento, el 'las computadoras gigantescas l radio de probablemente tenido entre 64 y 128 kilobytes de la memoria verdadera, y a lo ms unos pocos megaoctetos de artefactos de almacenamiento de acceso directo. Si l pens que el problema era gigantesco entonces... Uno de las llaves a programar exitoso son el concepto de la abstraccin. La abstraccin es la llave a la construccin sistemas complejos de software. Como el tamao de nuestros problemas crece, la necesidad para la abstraccin dramticamente aumentos. En sistemas sencillos, caracterstica de idiomas usados en el 1950s y '60s, un solo programista podra entender el problema entero, y por lo tanto manipula todas estructuras del programa y datos. Los programistas son hoy incapaces de entender todos los programas y los datos es apenas demasiado grande. La abstraccin se requiere a permitir que el programista para agarrar los conceptos necesarios. La mayora de los libros y el reglamento en la historia de programar los idiomas tienden a discutir los idiomas en trminos de generaciones. Esto es un arreglo til para clasificar los idiomas por la edad. Primera Generacin Al desarrollarse las primeras computadoras electrnicas, se vio la necesidad de programarlas, es decir, de almacenar en memoria la informacin sobre la tarea que iban a ejecutar. Las primeras se usaban como calculadoras simples; se les indicaban los pasos de clculo, 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 abstraccin de la memoria como un conjunto de celdas, que almacenan simplemente nmeros. Estos nmeros pueden representar dos cosas: los datos, sobre los que va a trabajar el programa; o bien, el programa en s. Cmo es que describimos un programa como nmeros? Se tena 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 permita almacenar nmeros binarios. La solucin que se tom fue la siguiente: a cada accin que sea capaz de realizar nuestra computadora, asociarle un nmero, que ser su cdigo de operacin (opcode) . Por ejemplo, una calculadora programable simple podra asignar los opcodes : 1 = SUMA, 2 = RESTA, 3 = MULTIPLICA, 4 = DIVIDE. Supongamos que queremos realizar la operacin 5 * 3 + 2, en la calculadora descrita arriba. En memoria, podramos "escribir" el programa de la siguiente forma:

Podemos ver que con esta representacin, es simple expresar las operaciones de las que es capaz el hardware (en este caso, nuestra calculadora imaginaria), en la memoria. La descripcin y uso de los opcodes es lo que llamamos lenguaje de mquina. Es decir, la lista de cdigos que la mquina va a interpretar como instrucciones, describe las capacidades de programacin que tenemos de ella; es el lenguaje ms primitivo, depende directamente del hardware, y requiere del programador que conozca el funcionamiento de la mquina al ms bajo nivel.

Los lenguajes ms primitivos fueron los lenguajes de mquina. Esto, ya que el hardware se desarroll antes del software, y adems cualquier software finalmente tiene que expresarse en el lenguaje que maneja el hardware. La programacin en esos momentos era sumamente tediosa, pues el programador tena que "bajarse" al nivel de la mquina y decirle, paso a pasito, cada punto de la tarea que tena que realizar. Adems, deba expresarlo en forma numrica; y por supuesto, este proceso era propenso a errores, con lo que la productividad del programador era muy limitada. Sin embargo, hay que recordar que en estos momentos, simplemente an no exista alternativa. Segunada Generacin El primer gran avance que se dio, como ya se coment, fue la abstraccin dada por el Lenguaje Ensamblador, y con l, el nacimiento de las primeras herramientas automticas para generar el cdigo mquina. Esto redujo los errores triviales, como poda ser el nmero que corresponda a una operacin, que son sumamente engorrosos y difciles de detectar, pero fciles de cometer. Sin embargo, an aqu es fcil para el programador perderse y cometer errores de lgica, pues debe bajar al nivel de la forma en que trabaja el CPU, y entender bien todo lo que sucede dentro de l. ejemplo ensamblador: Hola Mundo!

Tercera Generacin Con el desarrollo en los 50s y 60s de algoritmos de ms elevado nivel, y el aumento de poder del hardware, empezaron a entrar al uso de computadoras cientficos de otras ramas; ellos conocan mucho de Fsica, Qumica y otras ramas similares, pero no de Computacin, y por supuesto, les era sumamente complicado trabajar con lenguaje Ensamblador en vez de frmulas. As, naci el concepto de Lenguaje de Alto Nivel, con el primer compilador de FORTRAN (FORmula TRANslation), que, como su nombre indica, inici como un "simple" esfuerzo de traducir un lenguaje de frmulas, al lenguaje ensamblador y por consiguiente al lenguaje de mquina. A partir de FORTRAN, se han desarrollado innumerables lenguajes, que siguen el mismo concepto: buscar la mayor abstraccin posible, y facilitar la vida al programador, aumentando la productividad, encargndose los compiladores o intrpretes de traducir el lenguaje de alto nivel, al lenguaje de computadora. Hay que notar la existencia de lenguajes que combinan caractersticas de los de alto nivel y los de bajo nivel (es decir, Ensamblador). Mi ejemplo favorito es C: contiene estructuras de programacin de alto nivel, y la facilidad de usar libreras que tambin son caractersticas de alto nivel; sin embargo, fue diseado con muy pocas instrucciones, las cuales son sumamente sencillas, fciles de traducir al lenguaje de la mquina; y requiere de un entendimiento apropiado de cmo funciona la mquina, el uso de la memoria, etctera. Por ello, muchas personas consideramos a lenguajes como C (que fue diseado para hacer sistemas operativos), lenguajes de nivel medio.

Cuarta Generacin Los idiomas de la cuarta generacin parecen segn las instrucciones a las de la tercera generacin. Lo nuevo de estas lenguajes son conceptos como clases, objetos y eventos que permiten soluciones ms fciles y lgicos. Lenguajes como C++, java y C# se llaman lenguajes orientadas al objeto.

Los idiomas modernos, tal como C++ y Java, no slo permite las abstracciones, pero permite la implementacin impuesta de restricciones en abstracciones. La mayora de los idiomas modernos son objetivas orientado, que permite que m modele el mundo verdadero que usa mi idioma. Adems, puedo limitar el acceso para modelar las restricciones de mundo verdadero en datos. La llave es que us el trmino "mundo verdadero." Por la primera vez, yo modelo mi solucin en trminos del problema. Quiero que mi solucin sea orientado de problema, para que la solucin refleje el mundo verdadero en trminos de estructuras de datos y acceso a los datos. Yo tambin puedo aplicar directamente y para poder modelar objetos de mundo verdadero usando las clases (en C + + o Java).

Quinta Generacin Como la quinta generacin estn conocidos los Lenguajes de inteligencia artificial. Han sido muy valorados al principio de las noventa - mientras ahora el desarrollo de software toma otras caminos. Lo que veremos en el futuro es menos dependencia en el idioma, y ms en el modelando herramientas, tal como el Unificado Modelando el Idioma (UML). La salida del modelando herramienta producir mucho de nuestro cdigo para nosotros; en el muy menos, producir arquitectnico y los modelos del diseo y la estructura de nuestro cdigo. Esto producir un diseo (y posiblemente cdigo) eso puede ser validado por el cliente antes de completar la implementacin y probar. Cuando los problemas diarios que resolvemos llegan a ser ms grande, nosotros tenemos cada vez menos tiempo "volver a hacer" el cdigo. Los das de decir, "acabamos de escribir una versin de Beta y el cliente entonces pueden decir nosotros lo que ellos quieren realmente," son pasados. Las organizaciones que fallan de obtener completa y corrige los requisitos de cliente antes de escribir el cdigo saldr del negocio. Por qu? Porque toma demasiado largo, y cuesta tambin mucho, para escribir cdigo dos o ms vez. Las organizaciones que tienen un compromiso a la comprobacin y la validacin antes de producir cdigo prosperarn - los otros fallarn. ejemplo Flowchart

ejemplo UML

Pasos importantes de las lenguajes de programacin

Tipos de datos estndar de C y C++

Todos los programas gestionan algunos tipos de informacin que normalmente se pueden representar utilizando uno de los ocho (8) tipos de datos bsicos de C y C++: texto o char, valores enteros o int, valores de coma flotante o flota, valores en como flotante de doble precisin o double (long double), enumerados o enum, sin valor o void, punteros y booleanos.

1.

Texto (tipo de dato char) est constituido por caracteres simples, como a, Z, , 3 y cadenas, como Esto es una prueba (nor*malmente, de 8 bits o un byte por carcter, con un rango de 0 a 255).

2.

Los valores enteros (tipo de dato int) son aquellos nmeros que se aprendieron a contar (1, 4, -2, 1354); normalmente, tienen un tamao de 16 bits, 2 bytes o una palabra, con rango de -32768 a 32767. En Windows 98 y Windows NT, los valores enteros tienen un tamao de 32 bits con un rango de -2147483648 a 2147483647.

3.

Los valores en coma flotante (tipo de dato float) son nmeros que tienen una parte fraccional, como por ejemplo pi (3,14159), y exponentes (7,563
1021

). Tambin se conocen como nmeros reales

(normalmente, son de 32 bits, 4 bytes o 2 palabras, con un rango de +/-3,4E-38 a 3,4E+38). 4. Los valores en coma flotante de doble precisin (tipo de dato double) tienen un rango superior (normalmente de 64 bits, 8 bytes 4 palabras, con un rango de 1, 7E-308 a 1, 7E+308). Los valores en coma flotante long double (doble. precisin largos) son incluso ms precisos (normalmente, tamao de 80 bits 5 palabras, con un rango de +/-1,18E-4932 a 1,18E-4932). 5. 6. los tipos de datos enumerados (tipo de dato enum) permiten al usuario definir tipos de datos. El tipo void se utiliza para especificar valores que ocupan cero bits y no tienen valor (este tipo tambin se puede utilizar para la creacin de punteros genricos. 7. El tipo de dato puntero no contiene informacin en el mismo sentido que el resto de los tipos de datos; en su lugar, cada puntero contiene la direccin de la posicin de memoria que almacena el dato actual. 8. El tipo de dato bool, al que se le puede asignar las constantes true (verdadero) y false (falso).

Rango de los tipos de datos

Tipo

Tam. Dgitos de Bits precisin 8 8 8 8 16 16 32 32 32 32 64 0 2 2 2 4 4 9 9 9 9

Rango Min 0 -128 -128 0 -32,768 0 -2,147,483,648 0 -2,147,483,648 0 Max 1 127 127 255 32,767 65,535 2,147,483,647 4,294,967,295 2,147,483,647 4,294,967,295

Bool Char Signed char unsigned char short int unsigned short int Int unsigned int long int unsigned long int long long int

18 -9,223,372,036,854,775,808 9,223,372,036,854,775,807 18 6 15 18 0 18,446,744,073,709,551,615 1.17549e-38 2.22507e-308 3.3621e-4932 3.40282e+38 1.79769e+308 1.18973e+4932

unsigned long long int 64 Floata Double long double 32 64 96

Variables Es un nombre que representa el valor de un dato. Es una zona o opsicin de memoria en la computadora donde se almacena informacin. Un objeto de datos que el programador define y nombra explcitamente en un programa. Una variable simple es un objeto elemental de datos con nombre. El valor o valores de una variable es modificable por operaciones de asignacin; es decir, el enlace de objeto de datos a valor puede cambiar durante su tiempo de vida. Las operaciones que se pueden realizar con dos o ms valores exigen que stas sean del mismo tipo de datos. No se puede sumar una variable carcter a otra numrica y/o viceversa.

Reglas para definicin de variables

Pueden tener hasta 40 caracteres. Debe empezar obligatoriamente con una letra (a-z / A-Z), el resto de los dgitos pueden ser nmeros.

No pueden contener espacios en blanco, se pueden incluir caracteres especiales como el guin o el punto.