6190163 arquitectura-de-von-neumann

862 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
862
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

6190163 arquitectura-de-von-neumann

  1. 1. INTRODUCCIÓNCon el tiempo el hombre va inventando cosas nuevas para irmejorando su calidad de vida, a fin de hacer las cosas máseficientes. Así es como surgen las computadoras, un aparatoelectrónico que hoy en día nos facilita la vida. Realiza unsin fin de funciones que para un persona le llevaría horas eincluso días. Por citar un algo, seria el comparativo de lasreglas de cálculo, con las calculadoras científicas, lasprimeras nos facilitaban la idea de hacer un montón decálculos a mano, pero aun así, el tiempo era muy largo.Ahora con las calculadoras científicas, el tiempo se reducea minutos y segundos.Por eso, las computadoras son una gran herramienta muyfascinante, además de útiles. Cada día van evolucionando ysiendo mejores cada día, es una de las herramientas másusadas hoy en día y todo es por el núcleo, el alma de lacomputadora, que es el microprocesador. Este componente hacelas millones de intrusiones necesarias para el hombre a unaenorme velocidad.
  2. 2. Arquitectura de Von NeumannEs una familia de arquitecturas de computadoras que utilizanel mismo dispositivo de almacenamiento tanto para lasinstrucciones como para los datos a diferencia de laarquitectura Harvard, que que almacenaba las instruccionesen 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 losdatos. Cuando hablamos de memoria manejamos dos parámetros,los datos en sí, y el lugar donde se encuentran almacenados(odirección). Los dos son importantes para la CPU, puesmuchas instrucciones frecuentes se traducen a algo así como"coge los datos de ésta dirección y añádelos a los datos deésta otra dirección", sin saber en realidad qué es lo quecontienen los datos.En los últimos años la velocidad de las CPUs ha aumentadomucho en comparación a la de las memorias con las quetrabaja, así que se debe poner mucha atención en reducir elnúmero de veces que se accede a ella para mantener elrendimiento. Si, por ejemplo, cada instrucción ejecutada enla CPU requiere un acceso a la memoria, no se gana nadaincrementando la velocidad de la CPU - este problema esconocido como limitación de memoria.NombreEl término arquitectura de Von Neumann se acuñó a partir delmemorando First Draft of a Report on the EDVAC (1945)escrito por el conocido matemático John von Neumann en elque se proponía el concepto de programa almacenado. Dichodocumento fue redactado en vistas a la construcción delsucesor de la computadora ENIAC y su contenido fuedesarrollado por John Presper Eckert, John WilliamMauchly, Arthur Burks y otros durante varios meses antes deque von Neumann redactara el borrador del informe. Es porello que otros tecnólogos como David A. Patterson y John L.Hennessy promueven la sustitución de este término por elde arquitectura Eckert-Mauchly.
  3. 3. ENIACElectronic Numerical Integrator AndComputer (Computador eIntegrador Numérico Electrónico), utilizada por elLaboratorio de Investigación Balística del Ejército de losEstados UnidosEra totalmente digital, es decir, que ejecutaba sus procesosy operaciones mediante instrucciones en lenguaje máquina, adiferencia de otras máquinas computadoras contemporáneas deprocesos analógicos.EDVAC(Electronic Discrete Variable Automatic Computer) por sussiglas en inglés, fue una de las primerascomputadoras electrónicas. A diferencia de la ENIAC, noera decimal, sino binaria y tuvo el primer programa diseñadopara ser almacenado. Este diseño se convirtió en el estándarde arquitectura para la mayoría de las computadorasmodernas.El diseño de la EDVAC es considerado un éxito en la historiade la informática.El diseño de la EDVAC fue desarrollado aún antes de que laENIAC fuera puesta en marcha y tenía la intención deresolver muchos de los problemas encontrados en el diseño dela ENIAC. Así como la ENIAC, la EDVAC fue construida por ellaboratorio de investigación de balística de Estados Unidosde la universidad de Pensilvana. A los diseñadores de laENIAC, J. Presper Eckert y John William Mauchlyse les unióel gran matemático John von Neumann.La computadora fue diseñada para ser binaria con adición,sustracción y multiplicación automática y divisiónprogramada. También poseería un verificador automático concapacidad para mil palabras (luego se estableció en 1,024).Físicamente la computadora fue construida de los siguientescomponentes: Un lector-grabador de cinta magnética, unaunidad de control con osciloscopio, una unidad para recibirinstrucciones del control y la memoria y para dirigirlas aotras unidades, una unidad computacional para realizaroperaciones aritméticas en un par de números a la vez ymandarlos a la memoria después de corroborarlo con otra
  4. 4. unidad idéntica, un cronómetro, y una unidad de memoriadual.Una preocupación importante en el diseño era balancearfiabilidad y economía.Lenguaje MáquinaLos circuitos microprogramables son sistemas digitales, loque significa que trabajan con dos únicos niveles detensión. Dichos niveles, por abstracción, se simbolizan conel cero, 0, y el uno, 1, por eso el lenguaje de máquina sóloutiliza dichos signos. Esto permite el empleo de las teoríasdel álgebra booleana y del sistema binario en el diseño deeste tipo de circuitos y en su programación.Álgebra booleanaTambién llamada Algebra de Boole, en informática ymatemática, es una estructura algebraica que contiene lasoperaciones lógicas AND, OR y NOT, así como el conjunto deoperaciones unión, intersección y complemento.Sistema BinarioEn matemáticas e informática, es un sistema de numeración enel que los números se representan utilizando solamentelas cifras cero y uno (0 y 1). Los ordenadores trabajaninternamente con dos niveles de voltaje, por lo que su
  5. 5. sistema de numeración natural es el sistema binario(encendido 1, apagado 0).
  6. 6. John von Neumann zu Margitta(28 de diciembre de 1903 - 8 de febrero de 1957)Fue un matemáticohúngaro-estadounidense, de ascendenciajudía, que realizó contribuciones importantes en físicacuántica, análisis funcional, teoría de conjuntos,informática, economía, análisis numérico, hidrodinámica (deexplosiones), estadística y muchos otros campos dela matemática. Recibió su doctorado en matemáticas dela Universidad de Budapest a los 23 años.Fue pionero de la computadora digital moderna y de laaplicación de la teoría de operadores a lamecánica cuántica.Trabajó con Eckert y Mauchly en la Universidad dePennsylvania, donde publicó un artículo acerca delalmacenamiento de programas. El concepto de programaalmacenado permitió la lectura de un programa dentro de lamemoria de la computadora, y después la ejecución de lasinstrucciones del mismo sin tener que volverlas a escribir.La primera computadora en usar el citado concepto fue lallamada EDVAC (Electronic Discrete-Variable AutomaticComputer, es decir computadora automática electrónica devariable discreta), desarrollada por Von Neumann, Eckert yMauchly. Los programas almacenados dieron a las computadorasflexibilidad y confiabilidad, haciéndolas más rápidas ymenos sujetas a errores que los programas mecánicos.Von Neumann le dio su nombre a la arquitectura de vonNeumann, utilizada en casi todos los computadores, por supublicación del concepto; aunque muchos piensan que estenombramiento ignora la contribución de J. PresperEckert y John William Mauchly, quienes aportaron al conceptodurante su trabajo en ENIAC. Virtualmente, cada computadorpersonal, microcomputador, minicomputador y supercomputadores una máquina de von Neumann. También creó el campo delos autómatas celulares sin computadores, construyendo losprimeros ejemplos de autómatas autorreplicables con lápiz ypapel. El concepto de constructor universal fue presentadoen su trabajopóstumo Teoría de los AutómatasAutorreproductivos. El término "máquina de von Neumann" serefiere alternativamente a las máquinas autorreplicativas.Von Neumann probó que el camino más efectivo para lasoperaciones mineras a gran escala, como minaruna luna entera o un cinturón de asteroides, es a través deluso de máquinas auto-replicativas, para tomar ventajadel crecimiento exponencial de tales mecanismos.Adicional a su trabajo en arquitectura computacional, vonNeumann es acreditado con al menos una contribución alestudio de algoritmos. Donald Knuth denomina a von Neumann
  7. 7. 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 fusionadasjuntas.PARTES DE LA ARQUITECTURA DE VONNEUMANNLos ordenadores con arquitectura Eckert-Mauchly constan decinco partes:  La unidad aritmético-lógica (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 emulalos siguientes pasos secuencialmente:  Enciende el ordenador y obtiene la siguiente instrucción desde la memoria en la dirección indicada por el contador de programa y la guarda en el registro de instrucción.
  8. 8.  Aumenta el contador de programa en la longitud de la instrucción para apuntar a la siguiente. Decodifica la instrucción mediante la unidad de control. Ésta se encarga de coordinar el resto de componentes del ordenador para realizar una función determinada. Se ejecuta la instrucción. Ésta puede cambiar el valor del contador del programa, permitiendo así operaciones repetitivas. El contador puede cambiar también cuando se cumpla una cierta condición aritmética, haciendo que el ordenador pueda tomar decisiones, que pueden alcanzar cualquier grado de complejidad, mediante la aritmética y lógica anteriores. Vuelve al paso 2.
  9. 9. LENGUAJE DE PROGRAMACIÓNCon la aparición de las computadoras desaparecen lassecuencias de posiciones de llaves mecánicas que debíandesconectarse para obtener una acción determinada, una llaveconectada era un 1 y una llave desconectada era un 0. Unasucesión de llaves en cualquiera de sus dos posicionesdefinía una secuencia de ceros y unos (por ejemplo:0100011010011101...) que venía a representar una instruccióno un conjunto de instrucciones (programa) para el ordenador(o computador) en el que se estaba trabajando. A estaprimera forma de especificar programas para una computadorase la denomina lenguaje máquina o código máquina.La necesidad de recordar secuencias de programación para lasacciones usuales llevó a denominarlas con nombres fáciles dememorizar y asociar: ADD (sumar), SUB (restar), MUL(multiplicar), CALL (ejecutar subrutina), etc. A estasecuencia de posiciones se le denominó "instrucciones", y aeste conjunto de instrucciones se le llamó lenguajeensamblador.Posteriormente aparecieron diferentes lenguajes deprogramación, los cuales reciben su denominación porquetienen una estructura sintáctica similar a los lenguajesescritos por los humanos.ConceptoUn lenguaje de programación es un conjunto de símbolos yreglas sintácticas y semánticas que definen su estructura yel significado de sus elementos y expresiones, y utilizadopara controlar el comportamiento físico y lógico de unamáquina.Un lenguaje de programación permite a uno o másprogramadores especificar de manera precisa: sobre qué datosuna computadora debe operar, cómo deben ser estosalmacenados, transmitidos y qué acciones debe tomar bajo unavariada gama de circunstancias. Todo esto, a través deun lenguaje que intenta estar relativamente próximo allenguaje humano o natural, tal como sucede con el lenguajeLéxico. Una característica relevante de los lenguajes deprogramación es precisamente que más de un programadorpuedan tener un conjunto común de instrucciones que puedanser comprendidas entre ellos para realizar la construccióndel programa de forma colaborativa.
  10. 10. Los procesadores usados en las computadoras son capaces deentender y actuar según lo indican programas escritos en unlenguaje fijo llamado lenguaje de máquina. Todo programaescrito 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 intérpretes.  Traduciendo este programa al programa equivalente escrito en lenguaje de máquina. A ese proceso se lo llama compilar y al traductor se lo conoce como un malhecho compilador.Clasificación de los lenguajes deprogramaciónLos lenguajes de programación se determinan según el nivelde abstracción, Según la forma de ejecución y Según elparadigma de programación que poseen cada uno de ellos yesos pueden ser:Según su nivel de abstracciónLenguajes MaquinaEstán escritos en lenguajes directamente inteligibles por lamaquina (computadora), ya que sus instrucciones son cadenasbinarias (0 y 1). Da la posibilidad de cargar (transferir unprograma a la memoria) sin necesidad de traducción posteriorlo que supone una velocidad de ejecución superior, solo quecon poca fiabilidad y dificultad de verificar y poner apunto los programas.Lenguajes de bajo nivelLos lenguajes de bajo nivel son lenguajes de programaciónque se acercan al funcionamiento de una computadora. Ellenguaje de más bajo nivel es, por excelencia, el códigomáquina. A éste le sigue el lenguaje ensamblador, ya que alprogramar en ensamblador se trabajan con los registrose memoria de la computadora de forma directa.
  11. 11. Lenguajes de medio nivelHay lenguajes de programación que son considerados poralgunos expertos como lenguajes de medio nivel (como es elcaso del lenguaje C) al tener ciertas características quelos acercan a los lenguajes de bajo nivel pero teniendo, almismo tiempo, ciertas cualidades que lo hacen un lenguajemás cercano al humano y, por tanto, de alto nivel.Lenguajes de alto nivelArtículo principal: Lenguaje de alto nivelLos lenguajes de alto nivel son normalmente fáciles deaprender porque están formados por elementos de lenguajesnaturales, como el inglés. En BASIC, el lenguaje de altonivel más conocido, los comandos como "IF CONTADOR = 10 THENSTOP" pueden utilizarse para pedir a la computadora que paresi CONTADOR es igual a 10. Por desgracia para muchaspersonas esta forma de trabajar es un poco frustrante, dadoque a pesar de que las computadoras parecen comprender unlenguaje natural, lo hacen en realidad de una forma rígida ysistemática.Según la forma de ejecuciónLenguajes compiladosNaturalmente, un programa que se escribe en un lenguaje dealto nivel también tiene que traducirse a un código quepueda utilizar la máquina. Los programas traductores quepueden realizar esta operación se llaman compiladores.Éstos, como los programas ensambladores avanzados, puedengenerar muchas líneas de código de máquina por cadaproposición del programa fuente. Se requiere una corrida decompilación antes de procesar los datos de un problema.Los compiladores son aquellos cuya función es traducir unprograma escrito en un determinado lenguaje a un idioma quela computadora entienda (lenguaje máquina con códigobinario).Al usar un lenguaje compilado (como lo son los lenguajes delpopular Visual Studio de Microsoft), el programadesarrollado nunca se ejecuta mientras haya errores, sinohasta que luego de haber compilado el programa, ya noaparecen errores en el códigoLenguajes interpretadosSe puede también utilizar una alternativa diferente de loscompiladores para traducir lenguajes de alto nivel. En vezde traducir el programa fuente y grabar en forma permanente
  12. 12. el código objeto que se produce durante la corrida decompilación para utilizarlo en una corrida de producciónfutura, el programador sólo carga el programa fuente en lacomputadora junto con los datos que se van a procesar. Acontinuación, un programa intérprete, almacenado en elsistema operativo del disco, o incluido de manera permanentedentro de la máquina, convierte cada proposición delprograma fuente en lenguaje de máquina conforme vaya siendonecesario durante el proceso de los datos. No se graba elcódigo objeto para utilizarlo posteriormente.La siguiente vez que se utilice una instrucción, se le debeinterpretar otra vez y traducir a lenguaje máquina. Porejemplo, durante el procesamiento repetitivo de los pasos deun ciclo, cada instrucción del ciclo tendrá que volver a serinterpretado cada vez que se ejecute el ciclo, lo cual haceque el programa sea más lento en tiempo de ejecución (porquese va revisando el código en tiempo de ejecución) pero másrápido en tiempo de diseño (porque no se tiene que estarcompilando a cada momento el código completo). El intérpreteelimina la necesidad de realizar una corrida de compilacióndespués de cada modificación del programa cuando se quiereagregar funciones o corregir errores; pero es obvio que unprograma objeto compilado con antelación deberá ejecutarsecon mucha mayor rapidez que uno que se debe interpretar acada paso durante una corrida de producciónSegún el paradigma de programaciónUn paradigma de programación representa un enfoqueparticular o filosofía para la construcción del software. Noes mejor uno que otro, sino que cada uno tiene ventajas ydesventajas. Dependiendo de la situación un paradigmaresulta más apropiado que otro.Atendiendo al paradigma de programación, se puedenclasificar los lenguajes en :  El paradigma imperativo o por procedimientos es considerado el más común 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 lógico, un ejemplo es PROLOG.  El paradigma orientado a objetos. Un lenguaje completamente orientado a objetos es Smalltalk. 
  13. 13. Si bien puede seleccionarse la forma pura de estosparadigmas al momento de programar, en la práctica eshabitual que se mezclen, dando lugar a la programaciónmultiparadigma.Actualmente el paradigma de programación más usado debido amúltiples ventajas respecto a sus anteriores, esla programación orientada a objetos.
  14. 14. Lenguaje ensambladorEl lenguaje ensamblador es un tipo de lenguaje de bajo nivelutilizado para escribir programas informáticos, y constituyela representación más directa del código máquina específicopara cada arquitectura de computadoras legible por unprogramador.Fue usado ampliamente en el pasado para el desarrollode software, pero actualmente sólo se utiliza en contadasocasiones, especialmente cuando se requiere la manipulacióndirecta del hardware o se pretenden rendimientos inusualesde los equipos.Características  Programar en lenguaje ensamblador es difícil de aprender, entender, leer, escribir, depurar y mantener, por eso surgió la necesidad de los lenguajes compilados.  A pesar de perder rendimiento en un proceso de compilación, en la actualidad la mayoría de las computadoras son suficientemente rápidas.  El lenguaje ensamblador no es portable.  Programar en lenguaje ensamblador lleva mucho tiempo.  Los programas hechos en lenguaje ensamblador son generalmente más rápidos. Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas de 5 a 10 veces más rápidos que con lenguajes de alto nivel.
  15. 15.  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 código imposibles de formar en un lenguaje de alto nivel.
  16. 16. Ventajas y desventajas delLenguaje EnsambladorEl proceso de evolución trajo consigo algunas desventajas,que ahora veremos como las ventajas de usar el LenguajeEnsamblador, respecto a un lenguaje de alto nivel:  Velocidad  Eficiencia de tamaño  FlexibilidadVelocidadEl proceso de traducción que realizan los intérpretes,implica un proceso de cómputo adicional al que elprogramador quiere realizar. Por ello, nos encontraremos conque un intérprete es siempre más lento que realizar la mismaacción en Lenguaje Ensamblador, simplemente porque tiene elcosto adicional de estar traduciendo el programa, cada vezque lo ejecutamos.De ahí nacieron los compiladores, que son mucho más rápidosque los intérpretes, pues hacen la traducción una vez ydejan el código objeto, que ya es Lenguaje de Máquina, y sepuede ejecutar muy rápidamente. Aunque el proceso detraducción es más complejo y costoso que el de ensamblar unprograma, normalmente podemos despreciarlo, contra lasventajas de codificar el programa más rápidamente.Sin embargo, la mayor parte de las veces, el código generadopor un compilador es menos eficiente que el códigoequivalente que un programador escribiría. La razón es queel compilador no tiene tanta inteligencia, y requiere sercapaz de crear código genérico, que sirva tanto para unprograma como para otro; en cambio, un programador humanopuede aprovechar las características específicas delproblema, reduciendo la generalidad pero al mismo tiempo, nodesperdicia ninguna instrucción, no hace ningún proceso queno sea necesario.Para darnos una idea, en una PC, y suponiendo que todos sonbuenos programadores, un programa para ordenar una listatardará cerca de 20 veces más en Visual Basic (unintérprete), y 2 veces más en C (un compilador), que elequivalente en Ensamblador.
  17. 17. Por ello, cuando es crítica la velocidad del programa,Ensamblador se vuelve un candidato lógico como lenguaje.Ahora bien, esto no es un absoluto; un programa bien hechoen C puede ser muchas veces más rápido que un programa malhecho en Ensamblador; sigue siendo sumamente importante laelección apropiada de algoritmos y estructuras de datos. Porello, se recomienda buscar optimizar primero estos aspectos,en el lenguaje que se desee, y solamente usar Ensambladorcuando se requiere más optimización y no se puede lograr porestos medios.Eficiencia de TamañoPor las mismas razones que vimos en el aspecto de velocidad,los compiladores e intérpretes generan más código máquinadel necesario; por ello, el programa ejecutable crece. Así,cuando es importante reducir el tamaño del ejecutable,mejorando el uso de la memoria y teniendo también beneficiosen velocidad, puede convenir usar el lenguaje Ensamblador.Entre los programas que es crítico el uso mínimo de memoria,tenemos a los virus y manejadores de dispositivos (drivers).Muchos de ellos, por supuesto, están escritos en lenguajeEnsamblador.FlexibilidadLas razones anteriores son cuestión de grado: podemos hacerlas cosas en otro lenguaje, pero queremos hacerlas máseficientemente. Pero todos los lenguajes de alto niveltienen limitantes en el control; al hacer abstracciones,limitan su propia capacidad. Es decir, existen tareas que lamáquina puede hacer, pero que un lenguaje de alto nivel nopermite. Por ejemplo, en Visual Basic no es posible cambiarla resolución del monitor a medio programa; es unalimitante, impuesta por la abstracción del GUI Windows. Encambio, en ensamblador es sumamente sencillo, pues tenemosel acceso directo al hardware del monitor.Por otro lado, al ser un lenguaje más primitivo, elEnsamblador tiene ciertas desventajas respecto a loslenguajes de alto nivel:  Tiempo de programación  Programas fuente grandes  Peligro de afectar recursos inesperadamente  Falta de portabilidad
  18. 18. Tiempo de programaciónAl ser de bajo nivel, el Lenguaje Ensamblador requiere másinstrucciones para realizar el mismo proceso, en comparacióncon un lenguaje de alto nivel. Por otro lado, requiere demás cuidado por parte del programador, pues es propenso aque los errores de lógica se reflejen más fuertemente en laejecución.Por todo esto, es más lento el desarrollo de programascomparables en Lenguaje Ensamblador que en un lenguaje dealto nivel, pues el programador goza de una menorabstracción.Programas fuente grandePor las mismas razones que aumenta el tiempo, crecen losprogramas fuentes; simplemente, requerimos más instruccionesprimitivas para describir procesos equivalentes. Esto es unadesventaja porque dificulta el mantenimiento de losprogramas, y nuevamente reduce la productividad de losprogramadores.Peligro de afectar recursos inesperadamenteTenemos la ventaja de que todo lo que se puede hacer en lamáquina, se puede hacer con el Lenguaje Ensamblador(flexibilidad). El problema es que todo error que podamoscometer, o todo riesgo que podamos tener, podemos tenerlotambién en este Lenguaje. Dicho de otra forma, tener muchopoder es útil pero también es peligroso.En la vida práctica, afortunadamente no ocurre mucho; sinembargo, al programar en este lenguaje verán que es muchomás común que la máquina se "cuelgue", "bloquee" o "se levaya el avión"; y que se reinicialize. ¿Por qué?, porque coneste lenguaje es perfectamente posible (y sencillo) realizarsecuencias de instrucciones inválidas, que normalmente noaparecen al usar un lenguaje de alto nivel.En ciertos casos extremos, puede llegarse a sobrescribirinformación del CMOS de la máquina (no he visto efectos másriesgosos); pero, si no la conservamos, esto puede causarque dejemos de "ver" el disco duro, junto con toda suinformación.
  19. 19. Falta de portabilidadComo ya se mencionó, existe un lenguaje ensamblador paracada máquina; por ello, evidentemente no es una selecciónapropiada de lenguaje cuando deseamos codificar en unamáquina y luego llevar los programas a otros sistemasoperativos o modelos de computadoras. Si bien esto es unproblema general a todos los lenguajes, es mucho más notorioen ensamblador: yo puedo reutilizar un 90% o más del códigoque desarrollo en "C", en una PC, al llevarlo a una RS/6000con UNIX, y lo mismo si después lo llevo a una Macintosh,siempre y cuando esté bien hecho y siga los estándares de"C", y los principios de la programación estructurada. Encambio, si escribimos el programa en Ensamblador de la PC,por bien que lo desarrollemos y muchos estándares quesigamos, tendremos prácticamente que reescribir el 100 % delcódigo al llevarlo a UNIX, y otra vez lo mismo al llevarlo aMac.

×