Mantenimiento Preventivo y Correctivo de Un equipo de Computo Conceptos Básicos L.I. GABRIEL MARTINEZ MARTINEZ 1 Imágenes en esta diapositiva son de dominio público ¿Qué es una computadora? Máquina capaz de efectuar una secuencia de operaciones mediante un programa, realizando así un procesamiento sobre un conjunto de datos de entrada y obteniéndose otro conjunto de datos de salida. Funciones básicas del computador son: Procesamiento de datos Almacenamiento de datos Transferencia de datos 2 HARDWARE : Lo que puedes tocar o palpar. SOFTWARE : Todo aquello que puedes ver pero no tocar Hardware & Software Hardware (mecamática) : partes físicas, tangibles de la computadora CC BY 2.5 por Gustavb, tomado de https://en.wikipedia.org/wiki/Computer_hardware#/ media/File:Personal_computer,_exploded_5.svg CC BY 2.0 por Okubax, tomado de https://flic.kr/p/pd6V5G Software (programática): programas que contienen instrucciones que la computadora ejecuta. 3 Hardware ¿Cuántos programadores se necesitan para cambiar un bombillo? EIF 200 FNDAMENTOS DE INFOMÁTICA Ninguno, es un problema de hardware. 4 Unidad central de proceso (CPU) La unidad central de proceso CPU es el “cerebro” de la computadora. Su misión consiste en coordinar y controlar o realizar todas las operaciones del sistema. Procesa o manipula la información almacenada en memoria Recupera información desde memoria (datos o instrucciones) Almacena los resultados de estos procesos en memoria para su uso posterior Sus partes principales son las siguientes: Procesador, que a su vez se compone de: La unidad de control (UC). La unidad aritmético – lógica (UAL). La memoria central (MC). Imágenes en esta diapositiva son de dominio público 5 Unidad central de proceso (CPU) La velocidad de un microprocesador se mide en megahercios (MHz) y manipulan palabras de 4 a 64 bits. Los microprocesadores históricos: 8080 hasta el 80486/80586, Pentium, Pentiun MMX, Pentium II, Pentium III. En el año 2000 Intel lanzó la siguiente generación, Pentium 4, con una nueva microarquitectura diseñada para ser más rápida y escalar mejor a los procesadores actuales. En la actualidad fabrican microprocesadores con frecuencias desde 1.3 GHz hasta 3 GHz. Los microprocesadores modernos tienen una capacidad y velocidad mucho mayores, trabajan en arquitecturas de 64 bits, integran más de 700 millones de transistores, como es en el caso de las serie Core i7, y pueden operar a frecuencias normales algo superiores a los 3 GHz (3000MHz) Imágenes en esta diapositiva son de dominio público 6 Unidad central de proceso (CPU) Unidad Central de Proceso (Procesador) UAL Unidad Aritmética Lógica Entrada UC Unidad de Control Salida Memoria Central Memoria Auxiliar CC-BY por Allan Ajifo https://www.flickr.com/photos/12599 2663@N02/14599057094/ 7 Unidad de control (UC) Funciones: Coordina las actividades de la computadora y determina que operaciones se deben realizar y en que orden, además controla y sincroniza todo el proceso de la computadora Supervisa la ejecución de los programas. Coordina y controla al sistema de cómputo, es decir, coordina actividades de E/S. Determina que instrucción se debe ejecutar y pone a disposición los datos pedidos por la instrucción. Determina donde se almacenan los datos y los transfiere desde las posiciones donde están almacenados. Una vez ejecutada la instrucción la UC debe determinar donde pondrá el resultado para salida o para su uso posterior. 8 Unidad aritmético-lógica (UAL) Realiza operaciones aritméticas y lógicas, tales como suma, resta, multiplicación, división y comparaciones, haciendo uso de operadores como +, -, /, *, and, or, xor, not, >, >=, <, <=, = etc Al realizar operaciones aritméticas y lógicas, la UAL mueve datos entre ella y el almacenamiento Un símbolo esquemático típico para una ALU: A y B son los datos (registros); R es la salida; F es el operando (instrucción) de la Unidad de Control; D es un estado de la salida Imagen CC-BY-SA-3,0 por Cburnett, tomado de https://simple.wikipedia.org/wiki/Arithmetic_lo gic_unit#/media/File:ALU_symbol.svg 9 La Memoria Almacena la información en un formato lógicamente consistente. Normalmente, tanto las instrucciones como los datos se almacenan en áreas de memoria distintas y separadas. Se divide en dos categorías: Memoria principal: contiene el programa en ejecución y los resultados de los cálculos intermedios de la computadora. Memoria auxiliar o de almacenamiento secundario: consta de dispositivos utilizados para almacenar los datos de modo permanente. El programa se almacena en memoria auxiliar de modo permanente y cuando se ha de ejecutar se transfiere a la memoria central mediante órdenes al sistema operativo. 10 Memoria central (interna) Consta de una gran colección de pequeños circuitos electrónicos capaces de almacenar un bit (un bit es un circuito que puede tener exactamente dos valores: cero/uno o encendido/apagado). La memoria da al procesador almacenamiento temporal para programas y datos. Todos los programas y datos deben transferirse a la memoria desde un dispositivo de entrada o desde el almacenamiento secundario, antes de que los programas puedan ejecutarse o procesarse los datos La memoria central se utiliza para almacenar 010111001 información. Se divide a su vez en memoria RAM y memoria ROM. Imágenes en esta diapositiva son de dominio público 11 Memoria RAM (Random Access Memory) Es normalmente volátil, lo que significa que todo cuanto se almacena o guarda ella se pierde cuando se apaga la computadora. Todos los programas y datos son transferidos a la memoria RAM, desde un dispositivo de entrada o desde almacenamiento secundario, antes de ser ejecutados o procesados. Dispositivos de almacenamiento secundario Dispositivos entrada / salida Memoria RAM Procesador 12 Memoria RAM Permite almacenar datos de entrada, instrucciones de los programas que se están ejecutando en ese momento, los datos resultados del procesamiento y los datos que se preparan para la salida En general, la información almacenada en memoria puede ser de dos tipos: las instrucciones de un programa y los datos con los que operan las instrucciones. La cantidad de memoria RAM influye en la velocidad de un PC. Entre más memoria RAM tenga, más rápido trabaja y más programas puede tener abiertos al mismo tiempo Imágenes en esta diapositiva son de dominio público 13 Memoria ROM Memoria ROM (Read Only Memory) Memoria de solo lectura Almacena ciertos programas e información que necesita la computadora para cargar inicialmente al software cuando se enciende la máquina. Esta información está grabada permanentemente y no puede ser modificada por el programador. No es volátil, por lo tanto su contenido no se pierde cuando se apaga la energía. Imágenes en esta diapositiva son de dominio público 14 Memoria central (interna) La memoria central consta de un conjunto de celdas de memoria (llamadas también palabras). El número de celdas de la memoria depende del tipo y modelo de la computadora (32, 64, 128, etc,). Cada celda de memoria consta de un cierto número de bits. La unidad elemental de memoria se llama byte (8 bits). Un byte tiene la capacidad de almacenar un carácter de información. La memoria de un PC actual llega hasta varios miles de millones de bytes. 15 Memoria central (interna) Cada celda o posición de memoria tiene asociados: Dirección: una única dirección que indica su posición relativa en memoria y mediante la cual se puede acceder a la posición para almacenar o recuperar información Contenido: información almacenada en una posición de memoria La dirección de una celda es permanente y única, el contenido puede cambiar mientras se ejecuta el programa. Direcciones 999 998 1010 0011 1011 1101 Contenido de la dirección 998 1 0 Memoria central de una computadora 16 Unidades de memoria — ¿Qué es un terapeuta? — 1000 gigapeutas Como el byte es una unidad elemental de almacenamiento, se utilizan múltiplos para definir el tamaño de la memoria central: • 1 bit (b): unidad básica (1 , 0) • 1 byte (B): ocho bits, representa letras, números o signos. Base 10 (SI) Base 2 (ISO/IEC 80000-13) byte B 100 = 1 byte B 20 = 1 kilobyte kB 103 = 1 000 kibibyte KiB 210 = 1024 megabyte MB 106 = 1 000 000 mebibyte MiB 220 = 1 048 576 gigabyte GB 109 = 1 000 000 000 gibibyte GiB 230 = 1 073 741 824 terabyte TB 1012 = 1 000 000 000 000 tebibyte TiB 240 = 1 099 511 627 776 petabyte PB 1015 = 1 000 000 000 000 000 pebibyte PiB 250 = 1 125 899 906 842 624 exabyte EB 1018 = 1 000 000 000 000 000 000 exbibyte EiB 260 = 1 152 921 504 606 846 976 zettabyte ZB 1021 = 1 000 000 000 000 000 000 000 zebibyte ZiB 270 = 1 180 591 620 717 411 303 424 yottabyte YB 1024 = 1 000 000 000 000 000 000 000 000 yobibyte YiB 280 = 1 208 925 819 614 629 174 706 176 17 Memoria secundaria La memoria secundaria es un conjunto de dispositivos para el almacenamiento masivo de datos de una computadora, con mayor capacidad que la memoria principal, pero más lenta que ésta: cd, dvd, disco duro, unidades de memoria flash, etc. Almacena los datos en forma temporal o permanente. Con la evolución de las tecnologías se han conseguido dispositivos de almacenamiento masivos de datos. Se clasifican en grupos: Dispositivos Magnéticos Dispositivos Ópticos Unidades de Estado Sólido 18 Cintas magnéticas Primeros dispositivos de almacenamiento de datos que se utilizaron Han sido los más empleados para almacenar copias de seguridad. Poseen una gran capacidad de almacenamiento pero tienen la desventaja de ser dispositivos de acceso secuencial. A mayor capacidad de almacenamiento, mayor longitud de cinta y en consecuencia, mayor tiempo de acceso. En general, las cintas son medios removibles, fiables y económicos con altas capacidades de almacenamiento. Están por salir del mercado aunque aun se usan en algunas partes. Imágenes en esta diapositiva son de dominio público 19 Discos Dispositivos formados por componentes electromagnéticos o por componentes ópticos que permiten un acceso rápido a bloques físicos de datos. La información se registra en la superficie del disco y se accede a ella por medio de cabezas de lectura/escritura que se mueven sobre la superficie. Su principal característica es el acceso directo a la información y se les conoce también como unidades de almacenamiento masivo. Imágenes en esta diapositiva son de dominio público 20 Discos magnéticos Pueden ser duros, de gran capacidad de almacenamiento (hasta cientos de GB), discos flexibles (360 KB a 1,44 MB) o arreglos de discos de varios TB. Los discos duros suelen estar fijos en los sistemas y normalmente no se pueden extraer, aunque cada vez es más frecuente encontrar discos duros removibles utilizados como copias de seguridad. Imágenes en esta diapositiva son de dominio público 21 Discos ópticos Emplean la misma tecnología que los dispositivos compactos de audio para almacenar información digital: muy resistentes al paso del tiempo poseen gran capacidad de almacenamiento son transportables y compatibles entre computadoras. Hicieron posible el desarrollo de la multimedia. Los CD’s permiten almacenar 650 o 700 MB de información y hay de solo lectura CD-R o de lectura y escritura CD-RW. Los DVD son dispositivos: alta capacidad de almacenamiento interactivos total compatibilidad con los medios existentes su formato sirve tanto para las computadoras como para los dispositivos electrónicos de consumo pueden almacenar el equivalente de 7 a 26 CDs convencionales. Imágenes en esta diapositiva son de dominio público 22 Flash Disk Es un pequeño almacén de datos de tamaño pequeño que se puede transportar como llavero, se puede utilizar en cualquier computadora que disponga de un puerto USB y pueden almacenar hasta varios GB a precios módicos. Mal llamada llave maya. Imágenes en esta diapositiva son de dominio público 23 Dispositivos de entrada y salida Imágenes en esta diapositiva son de dominio público 24 Dispositivos de entrada • • • • • • Permiten al usuario del ordenador introducir datos, comandos y programas en la CPU. Teclado: más común. La información introducida con el mismo, es transformada por el ordenador en modelos reconocibles. Lápices ópticos, que transmiten información gráfica desde tabletas electrónicas hasta el ordenador Joysticks y el ratón, que convierte el movimiento físico en movimiento dentro de una pantalla de ordenador Escáneres luminosos, que leen palabras o símbolos de una página impresa y los traducen a configuraciones electrónicas que el ordenador puede manipular y almacenar Módulos de reconocimiento de voz, que convierten la palabra hablada en señales digitales comprensibles para el ordenador. Dispositivos de almacenamiento para introducir datos en la unidad de proceso. Imágenes en esta diapositiva son de dominio público 25 Dispositivos de salida Estos dispositivos permiten al usuario ver los resultados de los cálculos o de las manipulaciones de datos de la computadora. • Monitor: más común. Presenta los caracteres y gráficos en una pantalla similar a la del televisor. • Impresoras: permiten obtener una copia impresa de la información que reside en los dispositivos de almacenamiento- Imágenes en esta diapositiva son de dominio público 26 SOFTWARE Imágenes en esta diapositiva son de dominio público 27 SOFTWARE Las operaciones que debe realizar el hardware son especificadas por una lista de instrucciones, llamadas programas o software. El software se divide en dos grandes grupos: software del sistema: conjunto de programas indispensables para que la máquina funcione: sistema operativo, los compiladores / intérpretes (lenguajes de programación) y los programas utilitarios software de aplicaciones: programas que realizan tareas concretas, nóminas, contabilidad, análisis estadístico, los editores de texto, etc. Imágenes en esta diapositiva son de dominio público 28 Imágenes en esta diapositiva son de dominio público Sistema Operativo Es el software encargado de ejercer el control y coordinar el uso del hardware entre diferentes programas de aplicación y los diferentes usuarios. Es un administrador de los recursos de hardware y software del sistema. Ofrece una distribución ordenada y controlada de los procesadores, memorias y dispositivos de E/S entre los diversos programas que compiten por ellos. Tiene dos funciones primordiales, que son: Gestionar el hardware. Se refiere al hecho de administrar de una forma más eficiente los recursos de la máquina. Facilitar el trabajo al usuario. Permite una comunicación con los dispositivos de la máquina. 29 Sistema Operativo Consta de varios componentes: Kernel del sistema (componente central), Sistema de administración de memoria (asigna un área de memoria para cada programa que se está ejecutando), Administrador del sistema de archivos (organiza y controla el uso de los discos), Controladores de dispositivos (controlan los dispositivos de hardware conectados a la computadora), y Bibliotecas del sistema (contiene todos los tipos de programas utilitarios). 30 Categorías de sistemas operativos Multitarea Capacidad del SO para ejecutar varias tareas simultáneamente. Multiusuario Permite a varios usuarios acceder a una computadora. Son también multitareas. Multiproceso Coordina las operaciones de las computadoras que tienen más de un procesador. Cada procesador ejecuta procesos diferentes 31 Ejemplos de sistemas operativos MS DOS Creado por Microsoft en1984. Gran volumen de software disponible. Monousuario Monotarea WINDOWS Creado por Microsoft a mediado de la década de los 80. Multitarea Interfaz gráfica 32 Los diferentes logos presentes en esta página pertenecen a sus respectivos dueños Ejemplos de sistemas operativos UNIX Creado por Laboratorios Bell en 1969. Multiusuario, multitarea y multiproceso Sólido y capaz, pero de difícil aprendizaje. GNU / LINUX Creado en 1991 por Linus Torvalds Multitarea, multiusuario, multiproceso Protege la memoria para que un programa no pueda hacer caer al resto del sistema Se distribuye con código fuente (Software libre) Comparte la memoria entre programas aumentando la velocidad y disminuyendo el uso de memoria Hay diferentes “distribuciones” (Debian, RedHat, Mandrake, etc.) 33 Los diferentes logos presentes en esta página pertenecen a sus respectivos dueños Lenguajes de programación Sirven para escribir programas que permitan la comunicación usuario/máquina. Los principales tipos de lenguajes de programación son tres: lenguaje máquina lenguaje de bajo nivel o ensamblador lenguajes de alto nivel 34 Los diferentes logos presentes en esta página pertenecen a sus respectivos dueños Lenguaje máquina Escritos en lenguajes directamente legibles por la máquina, ya que sus instrucciones son cadenas binarias (series de 1 y 0’s) que especifican la operación a realizar, los registros del procesador y celdas de memoria implicados, etc. Dependen del hardware de la computadora y por tanto difieren de una computadora a otra. Las ventajas de programar en lenguaje máquina: posibilidad de cargar un programa sin necesidad de traducción posterior velocidad de ejecución superior a cualquier otro lenguaje de programación. Inconvenientes: dificultad y lentitud en la codificación poco amigables dificultad de verificar y poner a punto los programas los programas solo son ejecutables en el mismo procesador Imágenes en esta diapositiva son de dominio público 35 Lenguajes de bajo nivel Son más fáciles de utilizar que los lenguajes máquina. Dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia es el lenguaje ensamblador, sus instrucciones son conocidas como nemotécnicos, por ejemplo; ADD, SUB, DIV, etc. Un programa escrito en lenguaje ensamblador no puede ser ejecutado directamente por la computadora, sino que requiere una fase de traducción al lenguaje máquina. Imágenes en esta diapositiva son de dominio público 36 Lenguajes de bajo nivel Ventajas: Más fáciles de codificar Mayor velocidad de cálculo Desventajas: Dependencia total de la máquina lo que impide la transportabilidad de los programas Formación de programadores en este lenguaje es más compleja ya que exige conocer no sólo las técnicas de programación sino también el interior de la máquina Actualmente las aplicaciones desarrolladas en lenguaje ensamblador están relacionadas principalmente con aplicaciones de tiempo real, control de procesos y de dispositivos electrónicos. 37 Lenguajes de alto nivel Son los más utilizados (más fáciles de entender). Normalmente no dependen de la máquina por lo tanto son portables o transportables y pueden ser ejecutados con poca o ninguna modificación en diferentes tipos de computadoras. Existen actualmente numerosos lenguajes de programación, entre ellos: C, C++, COBOL, PASCAL, Visual BASIC, Java, C#, Prolog, LISP, SQL, Delphi, Power Builder, HTML, etc. Los programas fuente escritos en lenguajes de alto nivel tienen que ser traducidos por programas traductores llamados compiladores e intérpretes. Imágenes en esta diapositiva son de dominio público 38 Lenguajes de alto nivel Ventajas: El tiempo de formación de los programadores es relativamente corto comparado con otros lenguajes. La escritura de programas se basa en reglas sintácticas similares a los lenguajes humanos, por ejemplo: READ, WRITE, PRINT, etc. Las modificaciones y puestas a punto de los programas son más fáciles. Reducción del coste de los programas. Transportabilidad. 39 Lenguajes de alto nivel Desventajas: Se requieren diferentes traducciones del programa fuente para llegar al programa objeto. No se aprovechan los recursos internos de la máquina, que se explotan mejor en lenguajes máquina y ensamblador. Hay un incremento en la ocupación de memoria. Requieren un mayor tiempo de ejecución. 40 Historia de los lenguajes de programación Muchos de los lenguajes actuales tienen sus raíces en los lenguajes que nacieron a finales de los 50 y primeros años de los 60, tales como COBOL (1960), FORTRAN IV (1961), BASIC (1964), LOGO (1967). En la década de los setenta y primeros años de los ochenta emergieron nuevos lenguajes como Pascal (1971) y C (1972) y Ada (1979), que se convirtieron en dominantes, desplazando a otros como ALGOL y BASIC. Otros lenguajes como COBOL y FORTRAN, lograron adaptarse y se mantuvieron como lenguajes de referencia en el mundo de los negocios y en el campo científico. 41 Historia de los lenguajes de programación Todos estos lenguajes se conocían como lenguajes de programación imperativos o estructurados. En paralelo con el desarrollo de estos lenguajes surgieron dos nuevos estilos o paradigmas de programación: programación funcional y programación orientada a objetos A principios de los ochenta apareció C++ como lenguaje imperativo con propiedades de orientación a objetos. 1995 surge Java: lenguaje orientado a objetos con una funcionalidad muy dirigida a la red Internet. 2000 surge C#, que está relacionado directamente con C, C++ y Java. C# representa en la primera década del siglo XXI a un lenguaje de programación con la mayoría de las grandes propiedades que todo buen lenguaje debe cumplir. 42 SOFTWARE Programa de computadora: Programación: conjunto de instrucciones que se pueden utilizar para escribir un programa. Programa fuente: proceso de escribir un programa o software. Lenguaje de programación: Un programa es un conjunto de instrucciones lógicas que le dicen a la computadora que debe hacer. Un programa debe satisfacer la necesidades de los usuarios utilizando eficientemente los recursos disponibles aquel que nos permite escribir un algoritmo mediante un lenguaje formal. Por eso al código desarrollado al programar se le llama código fuente. Programa objeto: es el resultado de traducir un programa fuente a un lenguaje comprensible por la máquina 43 TRADUCTORES: Ensambladores, Compiladores e Interpretes 44 Traductores Son programas que traducen los programas fuente escritos en lenguaje de alto nivel en instrucciones escritas en lenguaje máquina (0,1) que la computadora pueda entender. Se clasifican en: Ensambladores Intérpretes Compiladores 45 Traductores Ensambladores Tipo de traductor que convierte programas escritos en lenguaje ensamblador en programas escritos en código máquina. Intérpretes Se trata de traductores-ejecutores ya que con cada instrucción realizan un proceso triple de lectura-traducción-ejecución. Son relativamente lentos, pero muy buenos para la depuración de programas. Los intérpretes han vuelto a renacer con la aparición de Java. Compiladores Es el tipo de traductor más conocido. Se trata de un programa que traduce código fuente escrito en un lenguaje de alto nivel (Pascal, C, C++) en código máquina . Son más rápidos que los intérpretes pero presentan mayor dificultad a la hora de detectar errores. Para conseguir el programa máquina real se debe utilizar un programa llamado montador o enlazador (linker). El proceso de montaje conduce a un programa de lenguaje máquina directamente ejecutable. 46 Diferencias entre un compilador y un intérprete Los compiladores realizan la traducción en tiempo de desarrollo. Es decir, el programa aún no se está ejecutando. El compilador recibe todo el código fuente, lo analiza, lo optimiza y lo traduce a lenguaje máquina dejando un programa completo listo para su ejecución. Típicos lenguajes compilados son el C o el PASCAL Los intérpretes realizan la traducción en tiempo de ejecución. Es decir, a medida que el programa se va ejecutando, el intérprete va traduciendo instrucciones al lenguaje máquina. Ejemplos: BASIC, LISP, Prolog. 48 Lenguajes Interpretados 49 Los diferentes logos presentes en esta página pertenecen a sus respectivos dueños Lenguajes Compilados 50 Los diferentes logos presentes en esta página pertenecen a sus respectivos dueños Imágenes en esta diapositiva son de dominio público El proceso …. El programador, con ayuda de un editor de textos genera, en el lenguaje de alto nivel el programa (código fuente). A continuación otro programa, realiza la traducción de este código fuente al lenguaje máquina propio del microprocesador (código objeto). Los programas que realizan esta labor son los compiladores e intérpretes. El programa, ya en lenguaje máquina, debe ponerse al alcance del microprocesador. Esto se realiza mediante los programas cargadores. Las funciones mas importantes de un cargador son: colocar un programa objeto en la memoria e iniciar su ejecución 51 Proceso de ejecución Inicio Modificación programa fuente Editar programa fuente Compilar el programa si Existen errores en la compilación? no Programa Enlazador Programa ejecutable Ejecución 52 Tipos de errores De tiempo de compilación: Errores detectados por preprocesador, el analizador sintáctico y el propio compilador. Los hay meramente sintácticos, por ejemplo un paréntesis no cerrado; también de tipo lógico, por ejemplo la referencia a una variable no declarada previamente, etc. De tiempo de enlazado: Son detectados por el enlazador. Por ejemplo una llamada a función cuya definición no aparece por ninguna parte (el enlazador no es capaz de encontrarla en los directorios que tiene asignados como "normales" para buscar); también la inversa: dos funciones del mismo nombre situadas en dos módulos (fuentes) distintos (la referencia aparece duplicada). De tiempo de ejecución (runtime): Se producen cuando se ejecuta el programa; son los más difíciles de diagnosticar y verificar, sobre todo en aplicaciones grandes (los relativos a "pérdidas misteriosas" de memoria y punteros descontrolados son especialmente temibles). 53 Gravedad de los errores Errores fatales ("Errors"): Son errores graves, el proceso no puede continuar y es detenido después de mostrar la información pertinente. Advertencias ("Warnings"): No son errores graves pero si circunstancias sospechosas o inusuales de las que el compilador entiende que merecen una advertencia por si es algo que se nos ha escapado inadvertidamente (por ejemplo: una variable declarada que no se utiliza para nada más). En estos casos, el proceso continua y si no hay errores graves se construye un ejecutable. En todos los casos el aviso incluye indicación del archivo ("fuente" .C/.CPP), el número de línea, y el nombre de la función donde se produce el error, así como una explicación más o menos clara de su motivo. 54 Máquinas virtuales Java y .net Los programas interpretados o compilados tienen distintas ventajas e inconvenientes. En un intento de combinar lo mejor de ambos mundos, durante la década de los 90 surge con fuerza el enfoque de máquina virtual. La solución consiste en que se define una máquina teórica o ‘máquina virtual’ con su propio “lenguaje máquina”. Los principales lenguajes de esta tecnología son, por un lado, el lenguaje Java de Oracle (creado por Sun Microsystems), y por otro, los lenguajes de la plataforma .NET de Microsoft: Visual Basic y C#. La filosofía de la máquina virtual es la siguiente: El código fuente se compila, detectando los errores sintácticos, y se genera una especie de ejecutable, con un código máquina dirigido a una CPU imaginaria. A esta especie de código máquina se le denomina código intermedio, lenguaje intermedio, p-code, o byte-code . Como esa CPU imaginaria no existe, para poder ejecutar ese ejecutable, se construye un intérprete. Este intérprete es capaz de leer cada una de las instrucciones de código máquina imaginario y ejecutarlas en una CPU real. A este intérprete se le denomina máquina virtual. 55 Los diferentes logos presentes en esta página pertenecen a sus respectivos dueños Ejemplo Suponga que se escribe un programa en lenguaje JAVA y que se tienen dos ordenadores: CPU Pentium y sistema operativo Windows. CPU Sparc y sistema operativo Solaris En el primer ordenador se instala un compilador de Java y una máquina virtual de Java específicos para Windows+Pentium. En el segundo se instala un compilador y máquina virtual específicos para Solaris+Sparc. Se confecciona un programa sencillo escrito en Java en el primer ordenador y se compila, generando un ejecutable intermedio. Se puede utilizar la máquina virtual del primer ordenador para ejecutar ese código intermedio, o se puede coger ese ejecutable intermedio y llevarlo a la máquina con Solaris+Sparc, para ejecutarlo, y se tendrá exactamente el mismo resultado. Este sistema es también utilizado por los juegos Java de los teléfonos móviles o las PDA. Distintas marcas de teléfonos móviles son capaces de ejecutar el mismo juego, aun cuando cada teléfono tiene una CPU y un sistema operativo distinto. 56 Ventajas de la máquina virtual Portabilidad: El código intermedio ya está libre de errores sintácticos, y es un código muy sencillo (al estilo del código máquina). Si existe un intérprete para este código en distintas plataformas, el mismo código se puede ejecutar en cada una de ellas. Además, la construcción de este intérprete será relativamente sencilla y su ejecución más rápida, ya que no ha de comprobar la sintaxis. Estabilidad: El código intermedio no es ejecutado por una CPU real directamente, sino por una CPU virtual: la máquina virtual. Esto permite un mayor control sobre este código, facilitando la labor de impedir que un código descontrolado afecte a la estabilidad de la plataforma real. 57 Compilar -Genera un ejecutable Interpretar -No genera un ejecutable Máquina virtual -Genera una especie de ejecutable, pero portable entre plataformas, dirigido a una CPU imaginaria. -El proceso de traducción se realiza -El proceso de traducción se realiza -Se realiza una sola traducción a una sola vez en cada ejecución código intermedio, y una interpretación muy rápida del código intermedio en cada ejecución. -La ejecución es muy rápida debido -La ejecución es más lenta, ya que -La ejecución no es tan rápida a que el programa ya ha sido para cada línea del programa es como en la compilación traducido a código máquina necesario realizar la traducción tradicional ni tan lenta como en la intepretación. -El ejecutable va dirigido a una -No hay ejecutable, así que si existe -El ejecutable va dirigido a una plataforma concreta (una CPU, un un intérprete para una plataforma CPU imaginaria. Se puede sistema operativo, y quizá alguna concreta, el programa se podrá transportar a una plataforma otra consideración), siendo ejecutar en ambas. Típicamente, los para la cual exista una "máquina prácticamente imposible portarlo a programas interpretados son virtual" (el intérprete de código otra. mucho más portables que los intermedio) compilados,. -Una vez compilado el programa, el -El código fuente es necesario en -El código fuente no es necesario código fuente no es necesario para cada ejecución, así que no puede para la ejecución, sólo el código ejecutarlo, así que puede permanecer en secreto intermedio. permanecer en secreto si se desea. -Los errores sintácticos se detectan -Los errores sintácticos se detectan -Los errores sintácticos se durante la compilación. Si el fuente durante la ejecución, ya que detectan durante la compilación. contiene errores sintácticos, el traducción y ejecución se van compilador no producirá un haciendo simultáneamente. 58 ejecutable. Entornos integrados de desarrollo (IDE) Un ambiente de desarrollo integrado, en inglés Integrated Development Environment (IDE), aplicación que proporciona servicios integrales para facilitarle al programador el desarrollo de software. proveen un marco de trabajo amigable para la mayoría de los lenguajes de programación tales como C++, Phyton, Java, C#, Delphi, Visual Basic, etc. Hoy día mediante entornos gráficos integrados de desarrollo se unifican, en un único entorno amigable, todas las funciones asociadas al desarrollo de programas: editor de código, un compilador, un depurador y un constructor de interfaz gráfica (GUI). 59 Entornos integrados de desarrollo (IDE) En los entornos de desarrollo tradicionales (por ejemplo, desarrollo en lenguaje C sobre UNIX) el código fuente se generaba mediante un editor de textos de propósito general. Luego, y en línea de comandos, se invocaba al compilador con todos sus parámetros y al denominado cargador/enlazador. Algunos IDE’s soportan múltiples lenguajes, tales como Eclipse, Visual o NetBeans, ambas basadas en Java o MonoDevelop, basado en C#. El soporte para lenguajes alternativos es a menudo proporcionada por plugins, que les permite ser instalado en el mismo IDE al mismo tiempo. Por ejemplo, Eclipse y NetBeans tiene plugins para C / C + + , Ada , Perl , Python , Ruby y PHP , entre otros lenguajes 60 Code Block Code::Blocks es un entorno de desarrollo integrado libre, de código abierto y multiplataforma para el desarrollo de programas en lenguaje C y C++. 61 Los diferentes logos presentes en esta página pertenecen a sus respectivos dueños NetBeans IDE NetBeans comenzó como un proyecto estudiantil en Republica Checa (originalmente llamado Xelfi), en 1996 bajo la tutoría de la Facultad de Matemáticas y Física en la Universidad Carolina en Praga. La meta era escribir un entorno de desarrollo integrado (IDE) para Java parecida a la de Delphi Es un entorno de desarrollo - una herramienta para que los programadores puedan escribir, compilar, depurar y ejecutar programas. Está escrito en Java - pero puede servir para cualquier otro lenguaje de programación. Existe además un número importante de módulos para extender el NetBeans IDE. NetBeans IDE es un producto libre y gratuito sin restricciones de uso. 62 Los diferentes logos presentes en esta página pertenecen a sus respectivos dueños Microsoft Visual Studio Es un entorno de desarrollo integrado (IDE, por sus siglas en inglés) para sistemas operativos Windows. Soporta varios lenguajes de programación tales como Visual C++, Visual C#, Visual J#, ASP.NET y Visual Basic .NET, aunque actualmente se han desarrollado las extensiones necesarias para muchos otros. Visual Studio permite a los desarrolladores crear aplicaciones, sitios y aplicaciones web, así como servicios web en cualquier entorno que soporte la plataforma .NET. Se pueden crear aplicaciones que se intercomuniquen entre estaciones de trabajo, páginas web y dispositivos móviles. 63 Los diferentes logos presentes en esta página pertenecen a sus respectivos dueños Microsoft Visual C++ Es uno de los más famosos entornos de desarrollo visuales para programar en C++. Permite agregar toda clase de objetos gráficos a la interfaz, como botones, cuadros de texto, cronómetros, imágenes, etiquetas, puertos, etc. Se puede utilizar la última versión de SQL Server Express, con el fin de visualizar y gestionar una base de datos desde la interfaz gráfica del programa. 64 Los diferentes logos presentes en esta página pertenecen a sus respectivos dueños ZinjaI Es un IDE libre y gratuito para programar en C/C++. Para ser utilizado por estudiantes de programación durante el aprendizaje. Con énfasis en depurado de programas como un recurso educativo. Interfaz inicial sencilla, con funcionalidades avanzadas que permiten el desarrollo de proyectos tan complejos como el propio ZinjaI. 65 Los diferentes logos presentes en esta página pertenecen a sus respectivos dueños Paradigmas de programación Representa un enfoque particular o filosofía para la construcción del software Indican las diversas formas que, a lo largo de la evolución de los lenguajes, han sido aceptadas como estilos para programar y para resolver los problemas por medio de una computadora Imágenes en esta diapositiva son de dominio público 66 Paradigmas de programación Paradigma estructurado: Básicamente el código se divide en bloques, estructuras, que pueden o no comunicarse entre si. Este software se controla con secuencia, selección e interacción. Otorga una mejor comprensión del código y permite su reutilización de una forma mas fácil. Paradigma orientado a Objetos: Este tipo de programación posee como idea principal encapsular estado y operaciones en objetos. Estos objetos pueden comunicarse entre sí, poseen clases y herencia. Se puede destacar como ventaja la facilidad de reutilización de código. Ejemplos de algunos lenguajes orientados a objetos son: Simula, Smalltalk, C++ y Java. Paradigma funcional: Este tipo de paradigma demuestra un tipo de programación en forma de funciones matemáticas. Los lenguajes puramente funcionales evitan efectos secundarios que pueden ser comunes en otros tipos de paradigmas. Está representado por Scheme. Paradigma lógico: Se definen reglas lógicas que luego a traves de un motor de inferencias lógicas, resolver problemas planteados por el sistema. Está representado por Prolog. 67 Referencias http://itesocci.gdl.iteso.mx/~ia27563/basico.htm http://members.xoom.com/mcruz/index-0.html http://www.pegasosoft.com/curso/introduccion.htm http://www.infosistemas.com.mx/soto10.htm http://www.euitt.upm.es/java/cursojava/1_Intro/1.3_OOP/oop.ht m http://www.fciencias.unam.mx/revista/temas/contenido.html http://www.monografias.com Enciclopedia Microsoft® Encarta® 98 © 1993-1997 Microsoft Corporation. Reservados todos los derechos. Gaitán Rivera, Jorge Romeo. 1er. Semestre de Ingeniería Electrónica. 68 Referencias Lenguajes, compiladores e intérpretes http://igrgavilan.iespana.es/doc/MA_20070506_MT_Len guajes.pdf Compiladores e intérpretes. Introducción http://www.angelfire.com/linux/eotto/comp_clase1.pdf webdelprofesor.ula.ve/forestal/mariaq/archivos_guias.../T ema1.ppt 69