25.07.2013 Views

sistemas numericos y operaciones aritmeticas - Departamento de ...

sistemas numericos y operaciones aritmeticas - Departamento de ...

sistemas numericos y operaciones aritmeticas - Departamento de ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Introducción.<br />

LENGUAJES Y ORGANIZACION DE UNA COMPUTADORA<br />

Una computadora digital es una m quina que pue<strong>de</strong> resolver problemas a<br />

partir <strong>de</strong> ir ejecutando instrucciones que se le han suministrado. La secuencia<br />

<strong>de</strong> instrucciones que <strong>de</strong>scriben como realizar una tarea se <strong>de</strong>nomina 'programa'.<br />

Como hemos dicho, las componentes electrónicas directamente solo pue<strong>de</strong>n<br />

realizar un conjunto limitado <strong>de</strong> instrucciones, en las cuales los programas<br />

<strong>de</strong>berían realizarse (o convertirse) antes <strong>de</strong> ser ejecutados (excepción hecha <strong>de</strong><br />

los Hard <strong>de</strong>dicados a propósitos especiales, por ejemplo para procesamiento <strong>de</strong><br />

matrices, etc.).<br />

Estas instrucciones primitivas con todo forman un lenguaje en el cual la<br />

gente pue<strong>de</strong> comunicarse con la computadora. Este lenguaje se llama 'Lenguaje<br />

Máquina'. El diseñador <strong>de</strong> una computadora nueva <strong>de</strong>be <strong>de</strong>cidir qué instrucciones<br />

incluir en su lenguaje m quina. En general trataría <strong>de</strong> hacer estas instrucciones<br />

primitivas lo más simples posible, consistente con la computadora <strong>de</strong>seada, con<br />

el objetivo <strong>de</strong> reducir el costo <strong>de</strong> la electrónica necesitada. Dado que muchos <strong>de</strong><br />

estos lenguajes son tan simples, es difícil y tedioso programar en ellos.<br />

El problema pue<strong>de</strong> ser atacado fundamentalmente <strong>de</strong> dos maneras, las cuales<br />

en ambos casos implican <strong>de</strong>finir un nuevo set <strong>de</strong> instrucciones que sea mas<br />

convencional para la gente. Estas instrucciones constituyen un nuevo lenguaje al<br />

cual podremos llamar L2, así como las instrucciones construidas en hardware<br />

forman un lenguaje L1. La diferencia entre los dos métodos radica en la forma en<br />

que los programas escritos en L2 son ejecutados por la computadora, la cual<br />

<strong>de</strong>spués <strong>de</strong> todo solo pue<strong>de</strong> ejecutar programas en el lenguaje máquina L1.<br />

Uno <strong>de</strong> los métodos <strong>de</strong> ejecutar un programa escrito en L2 es reemplazar<br />

primero cada instrucción en L2 por la secuencia equivalente en L1. La<br />

computadora ejecuta luego un nuevo programa L1 en lugar <strong>de</strong>l viejo L2. Esto se<br />

<strong>de</strong>nomina 'Traducción'.<br />

La otra técnica es escribir un programa en L1 que toma al programa L2 como<br />

dato <strong>de</strong> entrada, examina en or<strong>de</strong>n cada instrucción ejecutando la secuencia<br />

equivalente <strong>de</strong> L1 directamente. Esto no requiere la generación <strong>de</strong> un nuevo<br />

programa en L1. Esto se <strong>de</strong>nomina 'Interpretación' y el programa que lo realiza<br />

se llama 'Intérprete'.<br />

La diferencia es que en el primero todo el programa es convertido primero<br />

a un programa en L1, y L2 es <strong>de</strong>jado a un lado (en cuanto a la ejecución). En el<br />

otro cada instrucción <strong>de</strong> L2 es examinada y <strong>de</strong>codificada y ejecutada<br />

inmediatamente. Ambos métodos son ampliamente usados.<br />

Mas que pensar en términos <strong>de</strong> traducción o interpretación, es a menudo mas<br />

conveniente imaginar la existencia <strong>de</strong> una máquina hipotética, 'Virtual Machine',<br />

cuyo lenguaje sea L2. Si esa máquina se pue<strong>de</strong> construir en forma económica no<br />

hay necesidad <strong>de</strong> tener L1; esto es, una máquina que ejecuta programas en L1. Aún<br />

cuando esta máquina no fuese implementable razonablemente (económicamente), el<br />

programador podrá escribir programas en L2 los cuales no se ejecutar n<br />

directamente sino que serán o bien interpretados o bien traducidos <strong>de</strong> forma <strong>de</strong><br />

po<strong>de</strong>r ser ejecutados en L1, el cual en sí mismo se ejecuta directamente en el<br />

hardware existente.<br />

Para realizar o bien la traducción o la interpretación práctica, L1 y L2<br />

no <strong>de</strong>ben ser <strong>de</strong>masiado diferentes. Esto significa que L2 aún siendo mejor que L1<br />

estar no muy lejos <strong>de</strong>l i<strong>de</strong>al para la mayoría <strong>de</strong> las aplicaciones.<br />

La salida lógica es, en el mismo sentido, i<strong>de</strong>ar un nuevo lenguaje, con su<br />

set <strong>de</strong> instrucciones que sea mas orientado a la gente y menos a la máquina <strong>de</strong> lo<br />

que lo es L2. Al mismo lo llamaremos L3. La gente podrá escribir programas en L3<br />

pensando que la máquina virtual con tal lenguaje realmente existe. El programa<br />

podrá o bien traducirse a L2, o ejecutarse por un intérprete en L2.<br />

La creación <strong>de</strong> todo un conjunto <strong>de</strong> nuevos lenguajes, cada uno mas<br />

conveniente que su pre<strong>de</strong>cesor, podrá ir in<strong>de</strong>finidamente hasta que el a<strong>de</strong>cuado es<br />

alcanzado.<br />

25

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!