You are on page 1of 20

INTRODUCCIN

Con el tiempo el hombre va inventando cosas nuevas para ir mejorando su calidad de vida, a fin de hacer las cosas ms eficientes. As es como surgen las computadoras, un aparato electrnico que hoy en da nos facilita la vida. Realiza un sin fin de funciones que para un persona le llevara horas e incluso das. Por citar un algo, seria el comparativo de las reglas de clculo, con las calculadoras cientficas, las primeras nos facilitaban la idea de hacer un montn de clculos a mano, pero aun as, el tiempo era muy largo. Ahora con las calculadoras cientficas, el tiempo se reduce a minutos y segundos. Por eso, las computadoras son una gran herramienta muy fascinante, adems de tiles. Cada da van evolucionando y siendo mejores cada da, es una de las herramientas ms usadas hoy en da y todo es por el ncleo, el alma de la computadora, que es el microprocesador. Este componente hace las millones de intrusiones necesarias para el hombre a una enorme velocidad.

Arquitectura de Von Neumann


Es una familia de arquitecturas de computadoras que utilizan el mismo dispositivo de almacenamiento tanto para las instrucciones como para los datos a diferencia de la arquitectura Harvard, que que almacenaba las instrucciones en cintas perforadas y los datos en interruptores. Todas las computadoras constan principalmente de dos partes, la CPU que procesa los datos, y la memoria que guarda los datos. Cuando hablamos de memoria manejamos dos parmetros, los datos en s, y el lugar donde se encuentran almacenados (odireccin). Los dos son importantes para la CPU, pues muchas instrucciones frecuentes se traducen a algo as como "coge los datos de sta direccin y adelos a los datos de sta otra direccin", sin saber en realidad qu es lo que contienen los datos. En los ltimos aos la velocidad de las CPUs ha aumentado mucho en comparacin a la de las memorias con las que trabaja, as que se debe poner mucha atencin en reducir el nmero de veces que se accede a ella para mantener el rendimiento. Si, por ejemplo, cada instruccin ejecutada en la CPU requiere un acceso a la memoria, no se gana nada incrementando la velocidad de la CPU - este problema es conocido como 'limitacin de memoria'.

Nombre
El trmino arquitectura de Von Neumann se acu a partir del memorando First Draft of a Report on the EDVAC (1945) escrito por el conocido matemtico John von Neumann en el que se propona el concepto de programa almacenado. Dicho documento fue redactado en vistas a la construccin del sucesor de la computadora ENIAC y su contenido fue desarrollado por John Presper Eckert, John William Mauchly, Arthur Burks y otros durante varios meses antes de que von Neumann redactara el borrador del informe. Es por ello que otros tecnlogos como David A. Patterson y John L. Hennessy promueven la sustitucin de este trmino por el de arquitectura Eckert-Mauchly.

ENIAC
Electronic Numerical Integrator AndComputer (Computador e Integrador Numrico Electrnico), utilizada por el Laboratorio de Investigacin Balstica del Ejrcito de los Estados Unidos Era totalmente digital, es decir, que ejecutaba sus procesos y operaciones mediante instrucciones en lenguaje mquina, a diferencia de otras mquinas computadoras contemporneas de procesos analgicos.

EDVAC
(Electronic Discrete Variable Automatic Computer) por sus siglas en ingls, fue una de las primeras computadoras electrnicas. A diferencia de la ENIAC, no era decimal, sino binaria y tuvo el primer programa diseado para ser almacenado. Este diseo se convirti en el estndar de arquitectura para la mayora de las computadoras modernas. El diseo de la EDVAC es considerado un xito en la historia de la informtica. El diseo de la EDVAC fue desarrollado an antes de que la ENIAC fuera puesta en marcha y tena la intencin de resolver muchos de los problemas encontrados en el diseo de la ENIAC. As como la ENIAC, la EDVAC fue construida por el laboratorio de investigacin de balstica de Estados Unidos de la universidad de Pensilvana. A los diseadores de la ENIAC, J. Presper Eckert y John William Mauchlyse les uni el gran matemtico John von Neumann. La computadora fue diseada para ser binaria con adicin, sustraccin y multiplicacin automtica y divisin programada. Tambin poseera un verificador automtico con capacidad para mil palabras (luego se estableci en 1,024). Fsicamente la computadora fue construida de los siguientes componentes: Un lector-grabador de cinta magntica, una unidad de control con osciloscopio, una unidad para recibir instrucciones del control y la memoria y para dirigirlas a otras unidades, una unidad computacional para realizar operaciones aritmticas en un par de nmeros a la vez y mandarlos a la memoria despus de corroborarlo con otra

unidad idntica, un cronmetro, y una unidad de memoria dual. Una preocupacin importante fiabilidad y economa. en el diseo era balancear

Lenguaje Mquina
Los circuitos microprogramables son sistemas digitales, lo que significa que trabajan con dos nicos niveles de tensin. Dichos niveles, por abstraccin, se simbolizan con el cero, 0, y el uno, 1, por eso el lenguaje de mquina slo utiliza dichos signos. Esto permite el empleo de las teoras del lgebra booleana y del sistema binario en el diseo de este tipo de circuitos y en su programacin.

lgebra booleana
Tambin llamada Algebra de Boole, en informtica y matemtica, es una estructura algebraica que contiene las operaciones lgicas AND, OR y NOT, as como el conjunto de operaciones unin, interseccin y complemento.

Sistema Binario
En matemticas e informtica, es un sistema de numeracin en el que los nmeros se representan utilizando solamente las cifras cero y uno (0 y 1). Los ordenadores trabajan internamente con dos niveles de voltaje, por lo que su

sistema de numeracin natural (encendido 1, apagado 0).

es

el

sistema

binario

John von Neumann zu Margitta


(28 de diciembre de 1903 - 8 de febrero de 1957)
Fue un matemticohngaro-estadounidense, de ascendencia juda, que realiz contribuciones importantes en fsica cuntica, anlisis funcional, teora de conjuntos, informtica, economa, anlisis numrico, hidrodinmica (de explosiones), estadstica y muchos otros campos de la matemtica. Recibi su doctorado en matemticas de la Universidad de Budapest a los 23 aos. Fue pionero de la computadora digital moderna y de la aplicacin de la teora de operadores a lamecnica cuntica. Trabaj con Eckert y Mauchly en la Universidad de Pennsylvania, donde public un artculo acerca del almacenamiento de programas. El concepto de programa almacenado permiti la lectura de un programa dentro de la memoria de la computadora, y despus la ejecucin de las instrucciones del mismo sin tener que volverlas a escribir. La primera computadora en usar el citado concepto fue la llamada EDVAC (Electronic Discrete-Variable Automatic Computer, es decir 'computadora automtica electrnica de variable discreta'), desarrollada por Von Neumann, Eckert y Mauchly. Los programas almacenados dieron a las computadoras flexibilidad y confiabilidad, hacindolas ms rpidas y menos sujetas a errores que los programas mecnicos. Von Neumann le dio su nombre a la arquitectura de von Neumann, utilizada en casi todos los computadores, por su publicacin del concepto; aunque muchos piensan que este nombramiento ignora la contribucin de J. Presper Eckert y John William Mauchly, quienes aportaron al concepto durante su trabajo en ENIAC. Virtualmente, cada computador personal, microcomputador, minicomputador y supercomputador es una mquina de von Neumann. Tambin cre el campo de los autmatas celulares sin computadores, construyendo los primeros ejemplos de autmatas autorreplicables con lpiz y papel. El concepto de constructor universal fue presentado en su trabajopstumo Teora de los Autmatas Autorreproductivos. El trmino "mquina de von Neumann" se refiere alternativamente a las mquinas autorreplicativas. Von Neumann prob que el camino ms efectivo para las operaciones mineras a gran escala, como minar una luna entera o un cinturn de asteroides, es a travs del uso de mquinas auto-replicativas, para tomar ventaja del crecimiento exponencial de tales mecanismos. Adicional a su trabajo en arquitectura computacional, von Neumann es acreditado con al menos una contribucin al estudio de algoritmos. Donald Knuth denomina a von Neumann

como el inventor, en 1945, del conocido algoritmomerge sort, en el cual la primera y segunda mitad de un array (vector) son cada una clasificadas recursivamente y luego fusionadas juntas.

PARTES DE LA ARQUITECTURA DE VON NEUMANN


Los ordenadores con arquitectura Eckert-Mauchly constan de cinco partes: La unidad aritmtico-lgica (ALU) La unidad de control La memoria Un dispositivo de entrada/salida El bus de datos que proporciona un medio de transporte de los datos entre las distintas partes.

Un ordenador con arquitectura Eckert-Mauchly realiza o emula los siguientes pasos secuencialmente: Enciende el ordenador y obtiene la siguiente instruccin desde la memoria en la direccin indicada por el contador de programa y la guarda en el registro de instruccin.

Aumenta el contador de programa en la longitud de la instruccin para apuntar a la siguiente. Decodifica la instruccin mediante la unidad de control. sta se encarga de coordinar el resto de componentes del ordenador para realizar una funcin determinada. Se ejecuta la instruccin. sta puede cambiar el valor del contador del programa, permitiendo as operaciones repetitivas. El contador puede cambiar tambin cuando se cumpla una cierta condicin aritmtica, haciendo que el ordenador pueda 'tomar decisiones', que pueden alcanzar cualquier grado de complejidad, mediante la aritmtica y lgica anteriores. Vuelve al paso 2.

LENGUAJE DE PROGRAMACIN
Con la aparicin de las computadoras desaparecen las secuencias de posiciones de llaves mecnicas que deban desconectarse para obtener una accin determinada, una llave conectada era un 1 y una llave desconectada era un 0. Una sucesin de llaves en cualquiera de sus dos posiciones defina una secuencia de ceros y unos (por ejemplo: 0100011010011101...) que vena a representar una instruccin o un conjunto de instrucciones (programa) para el ordenador (o computador) en el que se estaba trabajando. A esta primera forma de especificar programas para una computadora se la denomina lenguaje mquina o cdigo mquina. La necesidad de recordar secuencias de programacin para las acciones usuales llev a denominarlas con nombres fciles de memorizar y asociar: ADD (sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina), etc. A esta secuencia de posiciones se le denomin "instrucciones", y a este conjunto de instrucciones se le llam lenguaje ensamblador. Posteriormente aparecieron diferentes lenguajes de programacin, los cuales reciben su denominacin porque tienen una estructura sintctica similar a los lenguajes escritos por los humanos.

Concepto
Un lenguaje de programacin es un conjunto de smbolos y reglas sintcticas y semnticas que definen su estructura y el significado de sus elementos y expresiones, y utilizado para controlar el comportamiento fsico y lgico de una mquina. Un lenguaje de programacin permite a uno o ms programadores especificar de manera precisa: sobre qu datos una computadora debe operar, cmo deben ser estos almacenados, transmitidos y qu acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a travs de un lenguaje que intenta estar relativamente prximo al lenguaje humano o natural, tal como sucede con el lenguaje Lxico. Una caracterstica relevante de los lenguajes de programacin es precisamente que ms de un programador puedan tener un conjunto comn de instrucciones que puedan ser comprendidas entre ellos para realizar la construccin del programa de forma colaborativa.

Los procesadores usados en las computadoras son capaces de entender y actuar segn lo indican programas escritos en un lenguaje fijo llamado lenguaje de mquina. Todo programa escrito en otro lenguaje puede ser ejecutado de dos maneras: Mediante un programa que va adaptando las instrucciones conforme son encontradas. A este proceso se lo llama interpretar y a los programas que lo hacen se los conoce como intrpretes. Traduciendo este programa al programa equivalente escrito en lenguaje de mquina. A ese proceso se lo llama compilar y al traductor se lo conoce como un malhecho compilador.

Clasificacin programacin

de

los

lenguajes

de

Los lenguajes de programacin se determinan segn el nivel de abstraccin, Segn la forma de ejecucin y Segn el paradigma de programacin que poseen cada uno de ellos y esos pueden ser:

Segn su nivel de abstraccin


Lenguajes Maquina Estn escritos en lenguajes directamente inteligibles por la maquina (computadora), ya que sus instrucciones son cadenas binarias (0 y 1). Da la posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traduccin posterior lo que supone una velocidad de ejecucin superior, solo que con poca fiabilidad y dificultad de verificar y poner a punto los programas. Lenguajes de bajo nivel Los lenguajes de bajo nivel son lenguajes de programacin que se acercan al funcionamiento de una computadora. El lenguaje de ms bajo nivel es, por excelencia, el cdigo mquina. A ste le sigue el lenguaje ensamblador, ya que al programar en ensamblador se trabajan con los registros e memoria de la computadora de forma directa.

Lenguajes de medio nivel Hay lenguajes de programacin que son considerados por algunos expertos como lenguajes de medio nivel (como es el caso del lenguaje C) al tener ciertas caractersticas que los acercan a los lenguajes de bajo nivel pero teniendo, al mismo tiempo, ciertas cualidades que lo hacen un lenguaje ms cercano al humano y, por tanto, de alto nivel. Lenguajes de alto nivel Artculo principal: Lenguaje de alto nivel Los lenguajes de alto nivel son normalmente fciles de aprender porque estn formados por elementos de lenguajes naturales, como el ingls. En BASIC, el lenguaje de alto nivel ms conocido, los comandos como "IF CONTADOR = 10 THEN STOP" pueden utilizarse para pedir a la computadora que pare si CONTADOR es igual a 10. Por desgracia para muchas personas esta forma de trabajar es un poco frustrante, dado que a pesar de que las computadoras parecen comprender un lenguaje natural, lo hacen en realidad de una forma rgida y sistemtica.

Segn la forma de ejecucin


Lenguajes compilados Naturalmente, un programa que se escribe en un lenguaje de alto nivel tambin tiene que traducirse a un cdigo que pueda utilizar la mquina. Los programas traductores que pueden realizar esta operacin se llaman compiladores. stos, como los programas ensambladores avanzados, pueden generar muchas lneas de cdigo de mquina por cada proposicin del programa fuente. Se requiere una corrida de compilacin antes de procesar los datos de un problema. Los compiladores son aquellos cuya funcin es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda (lenguaje mquina con cdigo binario). Al usar un lenguaje compilado (como lo son los lenguajes del popular Visual Studio de Microsoft), el programa desarrollado nunca se ejecuta mientras haya errores, sino hasta que luego de haber compilado el programa, ya no aparecen errores en el cdigo Lenguajes interpretados Se puede tambin utilizar una alternativa diferente de los compiladores para traducir lenguajes de alto nivel. En vez de traducir el programa fuente y grabar en forma permanente

el cdigo objeto que se produce durante la corrida de compilacin para utilizarlo en una corrida de produccin futura, el programador slo carga el programa fuente en la computadora junto con los datos que se van a procesar. A continuacin, un programa intrprete, almacenado en el sistema operativo del disco, o incluido de manera permanente dentro de la mquina, convierte cada proposicin del programa fuente en lenguaje de mquina conforme vaya siendo necesario durante el proceso de los datos. No se graba el cdigo objeto para utilizarlo posteriormente. La siguiente vez que se utilice una instruccin, se le debe interpretar otra vez y traducir a lenguaje mquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo, cada instruccin del ciclo tendr que volver a ser interpretado cada vez que se ejecute el ciclo, lo cual hace que el programa sea ms lento en tiempo de ejecucin (porque se va revisando el cdigo en tiempo de ejecucin) pero ms rpido en tiempo de diseo (porque no se tiene que estar compilando a cada momento el cdigo completo). El intrprete elimina la necesidad de realizar una corrida de compilacin despus de cada modificacin del programa cuando se quiere agregar funciones o corregir errores; pero es obvio que un programa objeto compilado con antelacin deber ejecutarse con mucha mayor rapidez que uno que se debe interpretar a cada paso durante una corrida de produccin

Segn el paradigma de programacin


Un paradigma de programacin representa un enfoque particular o filosofa para la construccin del software. No es mejor uno que otro, sino que cada uno tiene ventajas y desventajas. Dependiendo de la situacin un paradigma resulta ms apropiado que otro. Atendiendo al paradigma de clasificar los lenguajes en : programacin, se pueden

El paradigma imperativo o por procedimientos es considerado el ms comn y est representado, por ejemplo, por el C o por BASIC. El paradigma funcional est representado por la familia de lenguajes LISP (en particular Scheme), ML o Haskell. El paradigma lgico, un ejemplo es PROLOG. El paradigma orientado a objetos. Un lenguaje completamente orientado a objetos es Smalltalk.

Si bien puede seleccionarse la forma pura de estos paradigmas al momento de programar, en la prctica es habitual que se mezclen, dando lugar a la programacin multiparadigma. Actualmente el paradigma de programacin ms usado debido a mltiples ventajas respecto a sus anteriores, es la programacin orientada a objetos.

Lenguaje ensamblador
El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informticos, y constituye la representacin ms directa del cdigo mquina especfico para cada arquitectura de computadoras legible por un programador. Fue usado ampliamente en el pasado para el desarrollo de software, pero actualmente slo se utiliza en contadas ocasiones, especialmente cuando se requiere la manipulacin directa del hardware o se pretenden rendimientos inusuales de los equipos.

Caractersticas
Programar aprender, compilados. A pesar de perder en la rendimiento actualidad en la un proceso de de las en lenguaje ensamblador leer, es difcil depurar de y entender, escribir,

mantener, por eso surgi la necesidad de los lenguajes

compilacin,

mayora

computadoras son suficientemente rpidas.

El lenguaje ensamblador no es portable. Programar en lenguaje ensamblador lleva mucho tiempo.

Los

programas

hechos

en

lenguaje

ensamblador

son

generalmente ms rpidos. Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas de 5 a 10 veces ms rpidos que con lenguajes de alto nivel.

Los

programas

hechos

en

lenguaje

ensamblador

generalmente ocupan menos espacio. Un buen programa en lenguaje ensamblador puede ocupar casi la mitad de espacio que su contraparte en lenguaje de alto nivel.

Con el lenguaje ensamblador se pueden crear segmentos de cdigo imposibles de formar en un lenguaje de alto nivel.

Ventajas y desventajas Lenguaje Ensamblador

del

El proceso de evolucin trajo consigo algunas desventajas, que ahora veremos como las ventajas de usar el Lenguaje Ensamblador, respecto a un lenguaje de alto nivel: Velocidad Eficiencia de tamao Flexibilidad

Velocidad
El proceso de traduccin que realizan los intrpretes, implica un proceso de cmputo adicional al que el programador quiere realizar. Por ello, nos encontraremos con que un intrprete es siempre ms lento que realizar la misma accin en Lenguaje Ensamblador, simplemente porque tiene el costo adicional de estar traduciendo el programa, cada vez que lo ejecutamos. De ah nacieron los compiladores, que son mucho ms rpidos que los intrpretes, pues hacen la traduccin una vez y dejan el cdigo objeto, que ya es Lenguaje de Mquina, y se puede ejecutar muy rpidamente. Aunque el proceso de traduccin es ms complejo y costoso que el de ensamblar un programa, normalmente podemos despreciarlo, contra las ventajas de codificar el programa ms rpidamente. Sin embargo, la mayor parte de las veces, el cdigo generado por un compilador es menos eficiente que el cdigo equivalente que un programador escribira. La razn es que el compilador no tiene tanta inteligencia, y requiere ser capaz de crear cdigo genrico, que sirva tanto para un programa como para otro; en cambio, un programador humano puede aprovechar las caractersticas especficas del problema, reduciendo la generalidad pero al mismo tiempo, no desperdicia ninguna instruccin, no hace ningn proceso que no sea necesario. Para darnos una idea, en una PC, y suponiendo que todos son buenos programadores, un programa para ordenar una lista tardar cerca de 20 veces ms en Visual Basic (un intrprete), y 2 veces ms en C (un compilador), que el equivalente en Ensamblador.

Por ello, cuando es crtica la velocidad del programa, Ensamblador se vuelve un candidato lgico como lenguaje. Ahora bien, esto no es un absoluto; un programa bien hecho en C puede ser muchas veces ms rpido que un programa mal hecho en Ensamblador; sigue siendo sumamente importante la eleccin apropiada de algoritmos y estructuras de datos. Por ello, se recomienda buscar optimizar primero estos aspectos, en el lenguaje que se desee, y solamente usar Ensamblador cuando se requiere ms optimizacin y no se puede lograr por estos medios.

Eficiencia de Tamao
Por las mismas razones que vimos en el aspecto de velocidad, los compiladores e intrpretes generan ms cdigo mquina del necesario; por ello, el programa ejecutable crece. As, cuando es importante reducir el tamao del ejecutable, mejorando el uso de la memoria y teniendo tambin beneficios en velocidad, puede convenir usar el lenguaje Ensamblador. Entre los programas que es crtico el uso mnimo de memoria, tenemos a los virus y manejadores de dispositivos (drivers). Muchos de ellos, por supuesto, estn escritos en lenguaje Ensamblador.

Flexibilidad
Las razones anteriores son cuestin de grado: podemos hacer las cosas en otro lenguaje, pero queremos hacerlas ms eficientemente. Pero todos los lenguajes de alto nivel tienen limitantes en el control; al hacer abstracciones, limitan su propia capacidad. Es decir, existen tareas que la mquina puede hacer, pero que un lenguaje de alto nivel no permite. Por ejemplo, en Visual Basic no es posible cambiar la resolucin del monitor a medio programa; es una limitante, impuesta por la abstraccin del GUI Windows. En cambio, en ensamblador es sumamente sencillo, pues tenemos el acceso directo al hardware del monitor.

Por otro lado, al ser un lenguaje ms primitivo, el Ensamblador tiene ciertas desventajas respecto a los lenguajes de alto nivel: Tiempo de programacin Programas fuente grandes Peligro de afectar recursos inesperadamente Falta de portabilidad

Tiempo de programacin
Al ser de bajo nivel, el Lenguaje Ensamblador requiere ms instrucciones para realizar el mismo proceso, en comparacin con un lenguaje de alto nivel. Por otro lado, requiere de ms cuidado por parte del programador, pues es propenso a que los errores de lgica se reflejen ms fuertemente en la ejecucin. Por todo esto, es ms lento el desarrollo de programas comparables en Lenguaje Ensamblador que en un lenguaje de alto nivel, pues el programador goza de una menor abstraccin.

Programas fuente grande


Por las mismas razones que aumenta el tiempo, crecen los programas fuentes; simplemente, requerimos ms instrucciones primitivas para describir procesos equivalentes. Esto es una desventaja porque dificulta el mantenimiento de los programas, y nuevamente reduce la productividad de los programadores.

Peligro de afectar recursos inesperadamente


Tenemos la ventaja de que todo lo que se puede hacer en la mquina, se puede hacer con el Lenguaje Ensamblador (flexibilidad). El problema es que todo error que podamos cometer, o todo riesgo que podamos tener, podemos tenerlo tambin en este Lenguaje. Dicho de otra forma, tener mucho poder es til pero tambin es peligroso. En la vida prctica, afortunadamente no ocurre mucho; sin embargo, al programar en este lenguaje vern que es mucho ms comn que la mquina se "cuelgue", "bloquee" o "se le vaya el avin"; y que se reinicialize. Por qu?, porque con este lenguaje es perfectamente posible (y sencillo) realizar secuencias de instrucciones invlidas, que normalmente no aparecen al usar un lenguaje de alto nivel. En ciertos casos extremos, puede llegarse a sobrescribir informacin del CMOS de la mquina (no he visto efectos ms riesgosos); pero, si no la conservamos, esto puede causar que dejemos de "ver" el disco duro, junto con toda su informacin.

Falta de portabilidad
Como ya se mencion, existe un lenguaje ensamblador para cada mquina; por ello, evidentemente no es una seleccin apropiada de lenguaje cuando deseamos codificar en una mquina y luego llevar los programas a otros sistemas operativos o modelos de computadoras. Si bien esto es un problema general a todos los lenguajes, es mucho ms notorio en ensamblador: yo puedo reutilizar un 90% o ms del cdigo que desarrollo en "C", en una PC, al llevarlo a una RS/6000 con UNIX, y lo mismo si despus lo llevo a una Macintosh, siempre y cuando est bien hecho y siga los estndares de "C", y los principios de la programacin estructurada. En cambio, si escribimos el programa en Ensamblador de la PC, por bien que lo desarrollemos y muchos estndares que sigamos, tendremos prcticamente que reescribir el 100 % del cdigo al llevarlo a UNIX, y otra vez lo mismo al llevarlo a Mac.

You might also like