Introducción a la Ingenieria en Sistemas Computacionales Unidad Temas 1 Dispositivos de cómputo 2 Utilización de las tecnologías de la información y de comunicación Subtemas 1.1 Máquinas digitales y analógicas. 1.2 Los sistemas de numeración. 1.3 Hardware de una Computadora. 1.4 Componentes: 1.4.1 Circuitos lógicos, procesador, memoria, reloj. 1.5 Estructura modular de una computadora. 1.6 Dispositivos de almacenamiento. 1.7 Dispositivos de procesamiento. 1.8 Dispositivos de Entrada/Salida. 1.9 Software de cómputo 1.9.1 El sistema operativo. 1.9.2 Los lenguajes de programación. 1.9.3 Las herramientas productivas (ofimática). 1.9.4 Las aplicaciones. 1.10 Tipos de computadoras y sus dispositivos. 2.1 Las Telecomunicaciones y el trabajo distribuido y colaborativo. 2.1.1 Datos y sus formatos de presentación (texto, gráfico, audio, video) 2.1.2 Medios de transmisión (fibra óptica, microondas) 2.1.3 Conectividad (redes locales, red. Internet. 2.1.4 Ambientes de trabajo colaborativo. 2.2 Servicios de Internet. 2.2.1 Web, correo electrónico, chat, FTP. 2.3 Desarrollo de aplicaciones en Internet. 2.3.1 Lenguaje de marcas (HTML). 2.3.2 Lenguaje de scripts: JavaScript (diseño de páginas web, encuestas, comercio electrónico) 3 Tecnologías de última generación 3.1 La sociedad de la Información. 3.1.1 Comunicación. 3.1.2 Educación a distancia. 3.1.3 Diseño asistido por computadora. 3.1.4 Ciencia, investigación e ingeniería. 3.2 Aplicación de tecnologías emergentes en los sectores productivos, de servicios y de gobierno. 3.3 Aspectos éticos de la actividad profesional. 3.4 Software propietario y libre. 4 Modelos de computadora. 4.1 Elementos de circuitos digitales AND, OR, NOT. 4.2 Álgebra de Boole 4.2.1 El modelo Von Neumann. 4.2.2 Concepto de programa almacenado. 4.2.3 Lenguaje de máquina (instrucciones y datos). 4.2.4 Ciclo de ejecución de instrucciones. 4.3 Algoritmos numéricos. Unidad 1. Dispositivos de cómputo 1.1 Máquinas digitales y analógicas. Clasificación de las Computadoras. Las computadoras se clasifican por propósito en: Propósito general: Pueden procesar Información de negocios con la misma facilidad que procesan fórmulas matemáticas complejas. Pueden almacenar grandes cantidades de información y los grandes programas necesarios para procesarla. Debido a que las computadoras de aplicación general son tan versátiles la mayor parte de las empresas actuales las utilizan. Propósito especial: Tienen muchas de las características de las Computadoras de uso general pero se dedican a tareas de procesamiento muy especializadas. Se diseñan para manejar problemas específicos y no se aplican a otras actividades computarizadas. Por ejemplo, las computadoras de aplicación especial pueden diseñarse para procesar exclusivamente datos numéricos o para controlar completamente procesos automatizados de fabricación. Un simulador es un ejemplo de las computadoras de uso especifico y puede ser un simulador de vuelo, de entrenamiento y en otros campos como la enfermería, la tecnología del cuarto de operaciones, la administración de plantas nucleares, los vuelos espaciales, el atletismo, la exploración marina, etc. Las computadoras se clasifican por aplicación en: Analógicas: Las computadoras analógicas representan los números mediante una cantidad física, es decir, asignan valores numéricos por medio de la medición física de una propiedad real, como la longitud de un objeto, el ángulo entre dos líneas o la cantidad de voltaje que pasa a través de un punto en un circuito eléctrico. Las computadoras analógicas obtienen todos sus datos a partir de alguna forma de medición. Aún cuando es eficaz en algunas aplicaciones, este método de representar los datos es una limitación de las computadoras analógicas. La precisión de los datos usados en una computadora analógica está íntimamente ligada a la precisión con que pueden medirse. Digitales Las computadoras digitales representan los datos o unidades separadas. La forma más simple de computadora digital es contar con los dedos. Cada dedo representa una unidad del artículo que se está contando. A diferencia de la computadora analógica, limitada por la precisión de las mediciones que pueden realizarse, la computadora digital puede representar correctamente los datos con tantas posiciones y números que se requieran. Las sumadoras y las calculadoras de bolsillo son ejemplos comunes de dispositivos construidos según los principios de la Computadora Digital. Para obtener resultados, las computadoras analógicas miden, mientras que las computadoras digitales cuentan. Híbridas Combinan las características más favorables de las computadoras digitales y analógicas tienen la velocidad de las analógicas y la precisión de las digitales. Generalmente se usan en problemas especiales en los que los datos de entrada provienen de mediciones convertidas a dígitos y son procesados por una Computadora por ejemplo las Computadoras Híbridas controlan el radar de la defensa de Estados Unidos y de los vuelos comerciales. Clasificación de la Computadoras Digitales de Acuerdo a su Potencia y Precio Las computadoras se clasifican por tamaño y potencia en: Microcomputadoras : Las microcomputadoras o Computadoras Personales (PC´s) tuvieron su origen con la creación de los microprocesadores. Un microprocesador es "una computadora en un chip", o sea un circuito integrado independiente. Las PC´s son computadoras para uso personal y relativamente son baratas y actualmente se encuentran en las oficinas, escuelas y hogares. El término PC se deriva de que para el año de 1981, IBM®, sacó a la venta su modelo "IBM PC", la cual se convirtió en un tipo de computadora ideal para uso "personal", de ahí que el término "PC" se estandarizó y los clones que sacaron posteriormente otras empresas fueron llamados "PC y compatibles", usando procesadores del mismo tipo que las IBM , pero a un costo menor y pudiendo ejecutar el mismo tipo de programas. Existen otros tipos de microcomputadoras , como la Macintosh®, que no son compatibles con la IBM, pero que en muchos de los casos se les llaman también "PC´s", por ser de uso personal. En la actualidad existen variados tipos en el diseño de PC´s: Computadoras personales, con el gabinete tipo minitorre, separado del monitor. Computadoras personales portátiles "Laptop" o "Notebook". Computadoras personales más comunes, con el gabinete horizontal, separado del monitor. Computadoras personales que están en una sola unidad compacta el monitor y el CPU. Las computadoras "laptops" son aquellas computadoras que están diseñadas para poder ser transportadas de un lugar a otro. Se alimentan por medio de baterías recargables , pesan entre 2 y 5 kilos y la mayoría trae integrado una pantalla de LCD (Liquid Crys tal Display). Estaciones de trabajo o Workstations Las estaciones de trabajo se encuentran entre las Minicomputadoras y las macrocomputadoras (por el procesamiento). Minicomputadoras : En 1960 surgió la minicomputadora, una versión más pequeña de la Macrocomputadora. Al ser orientada a tareas específicas, no necesitaba de todos los periféricos que necesita un Mainframe, y esto ayudo a reducir el precio y costos de mantenimiento. Las Minicomputadoras, en tamaño y poder de procesamiento, se encuentran entre los mainframes y las estaciones de trabajo. En general, una minicomputadora, es un sistema multiproceso (varios procesos en paralelo) capaz de soportar de 10 hasta 200 usuarios simultáneamente. Actualmente se usan para almacenar grandes bases de datos, automatización industrial y aplicaciones multiusuario. Macrocomputadoras : Las macrocomputadoras son también conocidas como Mainframes. Los mainframes son grandes, rápidos y caros sistemas que son capaces de controlar cientos de usuarios simultáneamente, así como cientos de dispositivos de entrada y salida. Los mainframes tienen un costo que va desde 350,000 dólares hasta varios millones de dólares. De alguna forma los mainframes son más poderosos que las supercomputadoras porque soportan más programas simultáneamente. PERO las supercomputadoras pueden ejecutar un sólo programa más rápido que un mainframe. En el pasado, los Mainframes ocupaban cuartos completos o hasta pisos enteros de algún edificio, hoy en día, un Mainframe es parecido a una hilera de archiveros en algún cuarto con piso falso, esto para ocultar los cientos de cables d e los periféricos, y su temperatura tiene que estar controlada. Supercomputadoras : Una supercomputadora es el tipo de computadora más potente y más rápido que existe en un momento dado. Estas máquinas están diseñadas para procesar enormes cantidades de información en poco tiempo y son dedicadas a una tarea específica. Así mismo son las más caras, sus precios alcanzan los 30 MILLONES de dólares y más; y cuentan con un control de temperatura especial, esto para disipar el calor que algunos componentes alcanzan a tener. Unos ejemplos de tareas a las que son expuestas las supercomputadoras son los siguientes: Búsqueda y estudio de la energía y armas nucleares. Búsqueda de yacimientos petrolíferos con grandes bases de datos sísmicos. El estudio y predicción de tornados. El estudio y predicción del clima de cualquier parte del mundo. La elaboración de maquetas y proyectos de la creación de aviones, simuladores de vuelo. Etc. Debido a su precio, son muy pocas las supercomputadoras que se construyen en un año. 1.2 Los sistemas de numeración. Los sistemas de numeración son conjuntos de dígitos usados para representar cantidades, así se tienen los sistemas de numeración decimal, binario, octal, hexadecimal, romano, etc. Los cuatro primeros se caracterizan por tener una base (número de dígitos diferentes: diez, dos, ocho, dieciseis respectivamente) mientras que el sistema romano no posee base y resulta más complicado su manejo tanto con números, así como en las operaciones básicas. Los sistemas de numeración que poseen una base tienen la característica de cumplir con la notación posicional, es decir, la posición de cada número le da un valor o peso, así el primer dígito de derecha a izquierda después del punto decimal, tiene un valor igual a b veces el valor del dígito, y así el dígito tiene en la posición n un valor igual a: (bn) * A donde: b = valor de la base del sistema n = número del dígito o posición del mismo A = dígito. Por ejemplo: digitos: 1 2 4 9 5 3 . 3 2 4 posicion 5 4 3 2 1 0 . -1 -2 -3 El sistema numérico decimal El sistema de numeración decimal es el más usado, tiene como base el número 10, o sea que posee 10 dígitos (o simbolos) diferentes (0, 1, 2, 3, 4, 5, 6, 7, 8, 9). El sistema de numeración decimal fué desarrollado por los hindúes, posteriormente lo introducen los árabes en Europa, donde recibe el nombre de sistema de numeración decimal o arábigo. Si se aplica la notación posicional al sistema de numeración decimal entonces el dígito número n tiene el valor: (10n)* A Sistema Binario El sistema de numeración más simple que usa la notación posicional es el sistema de numeración binario. Este sistema, como su nombre lo indica, usa solamente dos dígitos (0,1). Por su simplicidad y por poseer únicamente dos dígitos diferentes, el sistema de numeración binario se usa en computación para el manejo de datos e información. Normalmente al dígito cero se le asocia con cero voltios, apagado, desenergizado, inhibido (de la computadora) y el dígito 1 se asocia con +5, +12 volts, encendido, energizado (de la computadora) con el cual se forma la lógica positiva. Si la asociación es inversa, o sea el número cero se asocia con +5 volts o encendido y al número 1 se asocia con cero volts o apagado, entonces se genera la lógica negativa. A la representación de un dígito binario se le llama bit (de la contracción binary digit) y al conjunto de 8 bits se le llama byte, así por ejemplo: 110 contiene 3 bits, 1001 contiene 4 y 1 contiene 1 bit. Como el sistema binario usa la notación posicional entonces el valor de cada dígito depende de la posición que tiene en el número, así por ejemplo el número 110101b es: 1*(20) + 0*(21) + 1*(22) + 0*(23) + 1*(24) + 1*(25) = 1 + 4 + 16 + 32 = 53d La computadora está diseñada sobre la base de numeración binaria (base 2). Por eso este caso particular merece mención aparte. Siguiendo las reglas generales para cualquier base expuestas antes, tendremos que: Existen dos dígitos (0 o 1) en cada posición del número. Numerando de derecha a izquierda los dígitos de un número, empezando por cero, el valor decimal de la posición es 2n. Por ejemplo,11012 (en base 2) quiere decir: 1*(23) + 1*(22) + 0*(21) + 1*(20) = 8 + 4 + 0 + 1 = 1310 Sistema Octal El sistema de numeración octal es también muy usado en la computación por tener una base que es potencia exacta de 2 o de la numeración binaria. Esta característica hace que la conversión a binario o viceversa sea bastante simple. El sistema octal usa 8 dígitos (0,1,2,3,4,5,6,7) y tienen el mismo valor que en el sistema de numeración decimal. Como el sistema de numeración octal usa la notación posicional entonces para el número 3452.32q tenemos: 2*(80) + 5*(81) + 4*(82) + 3*(83) + 3*(8-1) + 2*(8-2) = 2 + 40 + 4*64 + 64 + 3*512 + 3*0.125 + 2*0.015625 = 2 + 40 + 256 + 1536 + 0.375 + 0.03125 = 1834 + 40625dentonces, 3452.32q = 1834.40625d El subindice q indica número octal, se usa la letra q para evitar confusión entre la letra o y el número 0. Sistema Hexadecimal Un gran problema con el sistema binario es la verbosidad. Para representar el valor 20210 se requieren ocho dígitos binarios, la versión decimal sólo requiere de tres dígitos y por lo tanto los números se representan en forma mucho más compacta con respecto al sistema numérico binario. Desafortunadamente las computadoras trabajan en sistema binario y aunque es posible hacer la conversión entre decimal y binario, ya vimos que no es precisamente una tarea cómoda. El sistema de numeración hexadecimal, o sea de base 16, resuelve este problema (es común abreviar hexadecimal como hex aunque hex significa base seis y no base dieciseis). El sistema hexadecimal es compacto y nos proporciona un mecanismo sencillo de conversión hacia el formato binario, debido a ésto, la mayoría del equipo de cómputo actual utiliza el sistema numérico hexadecimal. Como la base del sistema hexadecimal es 16, cada dígito a la izquierda del punto hexadecimal representa tantas veces un valor sucesivo potencia de 16, por ejemplo, el número 123416 es igual a: 1*163 + 2*162 + 3*161 + 4*160 lo que da como resultado: 4096 + 512 + 48 + 4 = 466010 Cada dígito hexadecimal puede representar uno de dieciseis valores entre 0 y 1510. Como sólo tenemos diez dígitos decimales, necesitamos inventar seis dígitos adicionales para representar los valores entre 1010 y 1510. En lugar de crear nuevos simbolos para estos dígitos, utilizamos las letras A a la F. La conversión entre hexadecimal y binario es sencilla, considere la siguiente tabla: Binario 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F Esta tabla contiene toda la información necesaria para convertir de binario a hexadecimal y visceversa. Para convertir un número hexadecimal en binario, simplemente sustituya los correspondientes cuatro bits para cada dígito hexadecimal, por ejemplo, para convertir 0ABCDh en un valor binario: 0 A B C D (Hexadecimal) 0000 1010 1011 1100 1101 (Binario) Por comodidad, todos los valores numéricos los empezaremos con un dígito decimal; los valores hexadecimales terminan con la letra h y los valores binarios terminan con la letra b. La conversión de formato binario a hexadecimal es casi igual de fácil, en primer lugar necesitamos asegurar que la cantidad de dígitos en el valor binario es múltiplo de 4, en caso contrario agregaremos ceros a la izquierda del valor, por ejemplo el número binario 1011001010, la primera etapa es agregarle dos ceros a la izquierda para que contenga doce ceros: 001011001010. La siguiente etapa es separar el valor binario en grupos de cuatro bits, así: 0010 1100 1010. Finalmente buscamos en la tabla de arriba los correspondientes valores hexadecimales dando como resultado, 2CA, y siguiendo la convención establecida: 02CAh. 1.3 Hardware de una Computadora. Definicion de hardware . Hardware, equipo utilizado para el funcionamiento de una computadora. El hardware se refiere a los componentes materiales de un sistema informático. La función de estos componentes suele dividirse en tres categorías principales: 1. ENTRADA 2. SALIDA 3. Y ALMACENAMIENTO. Los componentes de esas categorías están conectados a través de un conjunto de cables o circuitos llamado bus con la unidad central de proceso (CPU) del ordenador, el microprocesador que controla la computadora y le proporciona capacidad de cálculo. El soporte lógico o software, en cambio, es el conjunto de instrucciones que un ordenador emplea para manipular datos: por ejemplo, un procesador de textos o un videojuego. Estos programas suelen almacenarse y transferirse a la CPU a través del hardware de la computadora. El software también rige la forma en que se utiliza el hardware, como por ejemplo la forma de recuperar información de un dispositivo de almacenamiento. La interacción entre el hardware de entrada y de salida es controlada por un software llamado BIOS (siglas en inglés de 'sistema básico de entrada / salida'). Aunque, técnicamente, los microprocesadores todavía se consideran hardware, partes de su función también están asociadas con el software. Como los microprocesadores tienen tanto aspectos de hardware como de software, a veces se les aplica el término intermedio de microprogramación, o firmware. 1.4 Componentes: 1.4.1 reloj. Circuitos lógicos, procesador, memoria, Un circuito lógico es aquel que maneja la información en forma de "1" y "0", dos niveles de voltaje fijos. "1" nivel alto y "0" nivel bajo Estos circuitos están compuestos por elementos digitales como las compuertas and (Y) or (O) not (No) y combinaciones poco o muy complejas de estos. Estas combinaciones dan lugar a otros tipos de elementos digitales como los compuertas, entre otros nand (No Y) nor (No O) or exclusiva (O exclusiva) mutiplexores o multiplexadores demultiplexores o demultiplexadores decodificadores codificadores memorias flip-flops microprocesadores microcontroladores etc. La electrónica moderna usa electrónica digital para realizar muchas funciones. Aunque los circuitos electrónicos pueden resultar muy complejos, en realidad se construyen de un número muy grande de circuitos muy simples. En un circuito digital se transmite información binaria (ceros y unos) entre estos circuitos y se consigue un circuito complejo con la combinación de bloques de circuitos simples. La información binaria se representa en la forma de "0" y "1", un interruptor "abierto" o "cerrado", "On" y "Off", "falso" o "verdadero", en donde "0" representa falso y "1" verdadero. Los circuitos lógicos se pueden representar de muchas maneras. En los circuitos siguientes la lámpara puede estar encendida o apagada ("on" o "off"), dependiendo de la posición del interruptor. (apagado o encendido) Los posibles estados del interruptor o interruptores que afectan un circuito se pueden representar en una tabla de verdad. Las tablas de verdad pueden tener muchas columnas, pero todas las tablas funcionan de igual forma. Hay siempre una columna de salida que representa el resultado de todas las posibles combinaciones de las entradas. Tabla de verdad Columna(s) de entrada Columna de salida Entrada (interruptor) Salida (lámpara) Abierto Apagado Cerrado Encendido El Número de columnas en una tabla de verdad depende de cuantas entradas hay + 1 (la columna de la salida), el número de filas representa la cantidad de combinaciones en las entradas Número de combinaciones = 2n, donde n es el número de columnas de la tabla de verdad (menos la columna de salida) Ejemplo: en la siguiente tabla hay 3 columnas de entrada, entonces habrán: 23 = 8 combinaciones (8 filas) Un circuito con 3 interruptores de entrada (con estados binarios "0" o "1"), tendrá 8 posibles combinaciones. Siendo el resultado (la columna salida) determinado por el estado de los interruptores de entrada. Switch 1 0 0 0 0 1 1 1 1 Tabla de verdad Switch 2 Switch 3 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 Salida ? ? ? ? ? ? ? ? Los circuitos lógicos son básicamente un arreglo de interruptores, conocidos como "compuertas lógicas" (compuertas AND, NAND, OR, NOR, NOT, etc) . Cada compuerta lógica tiene su tabla de verdad. Y, si pudiéramos ver en mas detalle la construcción de éstas, veríamos que es un circuito comprendido por transistores, resistencias, diodos, etc. conectados de manera que se obtienen salidas específicas para entradas específicas La utilización extendida de las compuertas lógicas, simplifica el diseño y análisis de circuitos complejos. La tecnología moderna actual permite la construcción de circuitos integrados (IC´s) que se componen de miles (o millones) de compuertas lógicas. 1.5 Estructura modular de una computadora. 1. Unidad central de proceso: También llamada CPU, o procesador del sistema. Esta compuesto de las siguientes partes: La unidad de control: coordina las actividades de la computadora, ejecutando programas en forma ordenada y interactuando con las unidades de entrada y salida. La unidad aritmético-lógica (ALU): como su nombre lo indica es la parte de la CPU que se encarga de todos las operaciones aritméticas básicas (suma, resta, multiplicación, división, etc.) y lógicas (las operaciones: O lógica, Y lógica, Negación, etc.) 2. Memoria: Parte de la computadora que almacena los programas (o parte de ellos) y datos para que el programa que esté en funcionamiento cumpla su tarea. Es por este motivo que esta memoria es de gran velocidad. Existen dos tipos de memoria: Memoria RAM: (Random Acces Memory) Memoria de acceso aleatorio. En este tipo de memoria se puede escribir y leer, pero los datos almacenados en ella desaparecerán si se desconecta la energía. Hay diferentes tipos de memoria RAM, la estática SRAM (retiene los datos mientras haya energía) y la dinámica DRAM (va perdiendo el dato que tiene almacenado y hay que refrescarlos frecuentemente), por este motivo las SRAM son mas rápidas pero tienen menos capacidad que una DRAM para un mismo dispositivo de memoria. VRAM: (Video RAM) Es un tipo especial de memoria RAM, que se utiliza en adaptadores de video. Su principal diferencia es que puede ser accesada por dos diferentes dispositivos en forma simultánea. Esto permite que un monitor pueda acceder a la VRAM para actualizar la pantalla mientras que el procesador gráfico suministra nuevos datos. Permite mejores rendimientos, pero es más cara. RAMBUS: Esta memoria es exclusiva de las Pentium 4, y trabaja a una velocidad de 400 a 800 Mhz del bus de datos NOTA: Tipos de presentación de la memoria RAM: SIMM: (Single In line Memory Module). Es un encapsulado que consta de un circuito impreso pequeño con los chips de memoria y que se inserta generalmente en un zócalo SIMM en la placa madre de la computadora. Hay de dos tipos de 30 y de 72 pines. Los de 30 vienen en capacidades de 256K y 1Mb y ya casi no se usan. Los de 72 vienen en versiones de 4, 8, 16, 32 . Su principal desventaja: trabajan en pares. DIMM: (Dual In line Memory Module). Igual que el anterior, pero se inserta en un zócalo DIMM en la placa madre y utiliza un conector de 168 contactos. Hay de varios tipos EDO, DRAM, SDRAM, PC100, PC133. No se pueden mesclar DIMM y SIMM. Las DIMM EDO, DRAM. SDRAM trabajan de 66 a 83 Mhz, wel PC100 a 100 Mhz y el PC133 a 133 Mhz. Estos Mhz. se refieren a la velocidad del bus de datos de la tarjeta madre. El DIMM EDO trabaja a 45 nanosegundos, DRAM y SDRAM a 15 nanosegundos, PC100 a 10 nanosegundos y PC133 a 7 nanosegundos. Mientras mas bajo los nanosegundos ,as rápida la memoria. DIP: (Dual In line Package) memoria almacenada en un tipo de encapsulado rectangular con dos filas de pines de conexión a cada lado. (antiguas) Memoria ROM: (Read Only Memory) Memoria de sólo lectura. Este dispositivo sólo permite leer la información que en el está grabada. Y no pierde la información cuando se quita la energía. Normalmente vienen grabadas de fábrica. Existen variaciones de este tipo de memoria: o o o o Memoria PROM: Cuando se compra está en blanco (vacía) y mediante un proceso el usuario graba la información en ella, pero sólo una vez. Memoria EPROM: (erasable PROM) Igual a la anterior pero que mediante la exposición de una ventana, en la parte superior del integrado, a la luz ultravioleta, por un periodo definido de tiempo, se puede borrar. Memoria EEPROM: (electrical erasable PROM) Igual a la anterior pero el borrado se realiza eléctricamente Memoria Flash: Tipo especial de EEPROM que puede ser borrada y reprogramada dentro de una computadora. Los EEPROM necesitan un dispositivo especial llamado lector de PROM. 3. Sistema de Buses: Los diferentes elementos que componen una computadora se tienen que comunicar de alguna manera, y esta comunicación se realiza por los llamados buses. Los buses son un conjunto de hilos o conexiones que llevan información de todo tipo de un elemento a otro, transportando la información en paralelo, (esto quiere decir, que los datos van por todos los hilos del bus simultáneamente). Hay 3 tipos de buses: Bus de datos: Lleva los datos que es necesario enviar de un elemento a otro, puede ser bidireccional (los datos pueden ir en uno u otro sentido). Existe un bus de datos interno: (ejm: entre el microprocesador y la memoria) y uno externo, entre la computadora y sus periféricos (ejm: Computadora e impresora) Bus de direcciones: Muchos de los elementos de una computadora así como las posiciones de memoria tienen una dirección única dentro del sistema. De esta dirección se puede leer un dato o en esta dirección podemos escribir un dato. En el bus de direcciones se coloca la dirección del elemento a accesar y con ayuda del bus de datos movemos la información de un elemento a otro. Ejm: Si la CPU quiere leer unos datos de memoria para después enviarlo a la impresora o la pantalla, primero pone en el bus de direcciones la dirección del dato en memoria, lo lee (lo obtiene a través del bus de datos), después pone en el bus de direcciones la otra dirección (la de pantalla o impresora) y escribe (con ayuda del bus de datos). ¿Quién controla todo este proceso......? Bus de control: Son hilos que transportan señales de control, dan la información del estado de ciertos componentes, la dirección del flujo de la información, controlan el momento (temporización) en que suceden ciertos eventos de manera que no haya choques de datos, transmiten señales de interrupción, etc. 4. Unidades de entrada: Son los elementos que permiten incluir datos al sistema. Ejemplos: teclado, mouse (ratón). joystic, etc. 5. Unidades de salida: Son elementos que a diferencia de las unidades de entrada, envían al exterior del sistema información. Ejemplo: Monitor (pantalla), impresora, parlantes, etc. 6. Memoria auxiliar: Llamada también de almacenamiento masivo, secundaria o externa. Este tipo es, al igual que la memoria ROM, no volátil (no se pierde la información al quitarle la energía), y permite guardar información en grandes cantidades. Entre las alternativas de este tipo de almacenamiento están: los disquetes, la cinta magnética, los discos duros, los CD-ROM. 1.6 Dispositivos de almacenamiento. EL hardware de almacenamiento sirve para almacenar permanentemente información y programas que el ordenador deba recuperar en algún momento. Los dos tipos principales de dispositivos de almacenamiento son las unidades de disco y la memoria. Existen varios tipos de discos: duros, flexibles, magneto-ópticos y compactos. Las unidades de disco duro almacenan información en partículas magnéticas integradas en un disco. La memoria está formada por chips que almacenan información que la CPU necesita recuperar rápidamente. La memoria de acceso aleatorio (RAM, siglas en inglés) se emplea para almacenar la información e instrucciones que hacen funcionar los programas de la computadora. Generalmente, los programas se transfieren desde una unidad de disco a la RAM. La RAM también se conoce como memoria volátil, porque la información contenida en los chips de memoria se pierde cuando se desconecta el ordenador. La memoria de lectura exclusiva (ROM, siglas en inglés) contiene información y software cruciales que deben estar permanentemente disponibles para el funcionamiento de la computadora, por ejemplo el sistema operativo, que dirige las acciones de la máquina desde el arranque hasta la desconexión. La ROM se denomina memoria no volátil porque los chips de memoria ROM no pierden su información cuando se desconecta el ordenador. Algunos dispositivos se utilizan para varios fines diferentes. La memoria CMOS () hace posible que las instrucciones de iniciación no sean permanentes. Emplea corriente de una bateria para detener datos virtuales de la configuración del sistema, como las especificaciones de la unidad de disco duro y la hora, aunque la maquina este apagada. Un módem es un dispositivo que conecta una computadora con una línea telefónica y permite intercambiar información con otro ordenador a través de dicha línea. Todos los ordenadores que envían o reciben información deben estar conectados a un módem. El módem del aparato emisor convierte la información enviada en una señal analógica que se transmite por las líneas telefónicas hasta el módem receptor, que a su vez convierte esta señal en información electrónica para el ordenador receptor. Memoria Cache La memoria cache es una memoria especial de alta velocidad que permite que el microprocesador tenga acceso más rápido a los datos a menudo, tiene que esperar a que los datos le lleguen de la RAM. El cache asegura que los datos esten disponibles de inmediato cuadno los pida la unidad Central de Proceso. Memoria Virtual La Memoria Virtual es la capacidad de una computadora para usar el almacenamiento en disco a fin de simular la RAM. Permite que las maquinas sin suficiente RAM trabajen programas grandes, manipulen grandes archivos de datos y corran a la vez mas de un programa. Las unidades de disco duro, que suelen ser una parte permanente de la computadora, pueden almacenar grandes cantidades de información y recuperarla muy rápidamente. Las unidades de disco flexible también almacenan información en partículas magnéticas integradas en discos intercambiables, que de hecho pueden ser flexibles o rígidos. Los discos flexibles almacenan menos información que un disco duro, y la recuperación de la misma es muchísimo más lenta. Las unidades de disco magneto-óptico almacenan la información en discos intercambiables sensibles a la luz láser y a los campos magnéticos. Pueden almacenar tanta información como un disco duro, pero la velocidad de recuperación de la misma es algo menor. Las unidades de disco compacto o CD-ROM, almacenan información en las cavidades grabadas en la superficie de un disco de material reflectante. La información almacenada en un CD-ROM no puede borrarse ni sustituirse por otra información. Los CD-ROM pueden almacenar aproximadamente la misma información que un disco duro, pero la velocidad de recuperación de información es menor. 1.7 Dispositivos de procesamiento. El CPU (Central Proccesor Unit) es el responsable de controlar el flujo de datos (Actividades de Entrada y Salida E/S) y de la ejecución de las instrucciones de los programas sobre los datos. Realiza todos los cálculos (suma, resta, multiplicación, división y compara números y caracteres). Es el "cerebro” de la computadora. Se divide en 3 Componentes 1.Unidad de Control (UC) 2.Unidad Aritmético/Lógica (UAL) 3.Área de almacenamiento primario (memoria) Unidad de control Es en esencia la que gobierna todas las actividades de la computadora, así como el CPU es el cerebro de la computadora, se puede decir que la UC es el núcleo del CPU. 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 almacenado. Una vez ejecutada la instrucción la Unidad de Control debe determinar donde pondrá el resultado para salida ó para su uso posterior. Unidad Aritmético/Lógica Esta unidad realiza cálculos (suma, resta, multiplicación y división) y operaciones lógicas (comparaciones). Transfiere los datos entre las posiciones de almacenamiento. Tiene un registro muy importante conocido co mo: Acumulador ACC Al realizar operaciones aritméticas y lógicas, la UAL mueve datos entre ella y el almacenamiento. Los datos usados en el procesamiento se transfieren de su posición en el almacenamiento a la UAL. Los datos se manipulan de acuerdo con las instrucciones del programa y regresan al almacenamiento. Debido a que el procesamiento no puede efectuarse en el área de almacenamiento, los datos deben transferirse a la UAL. Para terminar una operación puede suceder que los datos pasen de la UAL al área de almacenamient o varias veces. 1.8 Dispositivos de Entrada/Salida. Hardware de entrada . El hardware de entrada consta de dispositivos externos -esto es, componentes situados fuera de la CPU de la computadora- que proporcionan información e instrucciones. Un teclado permite capturar texto para poder visualizar la información en el monitor y/o impresora, permite ejecutar comandos. Un scanner convierten texto, fotografías a color ó en Blanco y Negro a una forma que puede leer una computadora. Después esta imagen puede ser modificada, impresa y almacenada. Son capaces de digitalizar una página de gráficas en unos segund os y proporcionan una forma rápida, fácil y eficiente de ingresar información impresa en una computadora; también se puede ingresar información si se cuenta con un Software especial llamado OCR (Reconocimiento óptico de caracteres). Un lápiz óptico es un puntero con un extremo fotosensible que se emplea para dibujar directamente sobre la pantalla, o para seleccionar información en la pantalla pulsando un botón en el lápiz óptico o presionando el lápiz contra la superficie de la pantalla. El lápiz contiene sensores ópticos que identifican la parte de la pantalla por la que se está pasando. Un mouse o ratón, es un dispositivo apuntador diseñado para ser agarrado con una mano. Cuenta en su parte inferior con un dispositivo detector (generalmente una bola) que permite al usuario controlar el movimiento de un cursor en la pantalla deslizando el mouse por una superficie plana. Para seleccionar objetos o elegir instrucciones en la pantalla, el usuario pulsa un botón del mouse. Un joystick es un dispositivo formado por una palanca que se mueve en varias direcciones y dirige un cursor u otro objeto gráfico por la pantalla de la computadora. Un teclado es un dispositivo parecido a una máquina de escribir, que permite al usuario introducir textos e instrucciones. Algunos teclados tienen teclas de función especiales o dispositivos apuntadores integrados, como trackballs (bolas para mover el cursor) o zonas sensibles al tacto que permiten que los movimientos de los dedos del usuario dirijan un cursor en la pantalla. Un digitalizador óptico emplea dispositivos fotosensibles para convertir imágenes (por ejemplo, una fotografía o un texto) en señales electrónicas que puedan ser manipuladas por la máquina. Por ejemplo, es posible digitalizar una fotografía, introducirla en una computadora e integrarla en un documento de texto creado en dicha computadora. Los dos digitalizadores más comunes son el digitalizador de campo plano (similar a una fotocopiadora de oficina) y el digitalizador manual, que se pasa manualmente sobre la imagen que se quiere procesar. Un micrófono es un dispositivo para convertir sonidos en señales que puedan ser almacenadas, manipuladas y reproducidas por el ordenador. Un módulo de reconocimiento de voz es un dispositivo que convierte palabras habladas en información que el ordenador puede reconocer y procesar. Tableta digitalizadora es una superficie de dibujo con un medio de señalización que funciona como un lápiz. La tableta convierte los movimientos de este apuntador en datos digitalizados que pueden ser leídos por ciertos paquetes de cómputo. Los tamaños varían desde tamaño carta hasta la cubierta de un escritorio. Pantallas sensibles al tacto (Screen Touch) permiten dar comandos a la computadora tocando ciertas partes de la pantalla. Muy pocos programas de software trabajan con ellas y los usuarios se quejan de que las pantallas están muy lejos del teclado. Su aceptación ha sido muy reducida. Algunas tiendas departamentales emplean este tipo de tecnología para ayudar a los clientes a encontrar los bienes o servicios dentro de la tienda. Lectores de código de barras Son rastreadores que leen las barras verticales que conforman un código. Esto se conoce como Punto de Venta (PDV). Las tiendas de comestibles utilizan el código Universal de Productos (CUP ó UPC). Este código i dentifica al producto y al mismo tiempo realiza el ticket descuenta de inventario y hará una orden de compra en caso de ser necesario. Algunos lectores están instalados en una superficie física y otros se operan manualmente. Harware de salida. El hardware de salida consta de dispositivos externos que transfieren información de la CPU de la computadora al usuario informático. La pantalla convierte la información generada por el ordenador en información visual. Las pantallas suelen adoptar una de las siguientes formas: un monitor de rayos catódicos o una pantalla de cristal líquido (LCD, siglas en inglés). En el monitor de rayos catódicos, semejante a un televisor, la información procedente de la CPU se representa empleando un haz de electrones que barre una superficie fosforescente que emite luz y genera imágenes. Las pantallas LCD son más planas y más pequeñas que los monitores de rayos catódicos, y se emplean frecuentemente en ordenadores portátiles. Las impresoras reciben textos e imágenes de la computadora y los imprimen en papel. Las impresoras matriciales emplean minúsculos alambres que golpean una cinta entintada formando caracteres. Las impresoras láser emplean haces de luz para trazar imágenes en un tambor que posteriormente recoge pequeñas partículas de un pigmento negro denominado tóner. El tóner se aplica sobre la hoja de papel para producir una imagen. Las impresoras de inyección de tinta lanzan pequeñas gotas de tinta sobre el papel para formar caracteres e imágenes. Los Plotters son grandes impresoras basadas en plumillas de colores que permiten a los Arquitectos o Ingenieros convertir un plano o trazo de líneas contenido en la memoria de su computadora en un auténtico gran plano listo para su envió, ahorrando mediante éstos sofisticados implementos tanto el diseño a mano de los planos como la heliografía necesaria para su reproducción. 1.9 Software de cómputo Definicion de SOFTWARE . Programas de computadoras. Son las instrucciones responsables de que el hardware (la máquina) realice su tarea. Como concepto general, el software puede dividirse en varias categorías basadas en el tipo de trabajo realizado.Sistemas Operativos, Lenguajes de Programación, Software de uso general, Software de Aplicación. (algunos autores consideran la 3era y 4ta clasificación como una sola). Las dos categorías primarias de software son los 1. Sistemas operativos (software del sistema), que controlan los trabajos del ordenador o computadora, y 2. El software de aplicación, que dirige las distintas tareas para las que se utilizan las computadoras. Por lo tanto, el software del sistema procesa tareas tan esenciales, aunque a menudo invisibles, como el mantenimiento de los archivos del disco y la administración de la pantalla, mientras que el software de aplicación lleva a cabo tareas de tratamiento de textos, gestión de bases de datos y similares. Constituyen dos categorías separadas el software de red, que permite comunicarse a grupos de usuarios, y el software de lenguaje utilizado para escribir programas . Además de estas categorías basadas en tareas, varios tipos de software se describen basándose en su método de distribución. Entre estos se encuentran los así llamados programas enlatados, el software desarrollado por compañías y vendido principalmente por distribuidores, el freeware y software de dominio público, que se ofrece sin costo alguno, el shareware, que es similar al freeware, pero suele conllevar una pequeña tasa a pagar por los usuarios que lo utilicen profesionalmente y, por último, el infame vapourware, que es software que no llega a presentarse o que aparece mucho después de lo prometido. 1.9.1 El sistema operativo. Clasificaciones del Software. El software se clasifica en 4 diferentes Categorías: Sistemas Operativos, Lenguajes de Programación, Software de uso general, Software de Aplicación. (algunos autores consideran la 3era y 4ta clasificación como una sola). Sistemas Operativos : El sistema operativo es el gestor y organizador de todas las actividades que realiza la computadora. Marca las pautas según las cuales se intercambia información entre la memoria central y la externa, y determina las operaciones elementales que puede realizar el procesador. El sistema operativo, debe ser cargado en la memoria central antes que ninguna otra información. Lenguajes de Programación Mediante los programas se indica a la computadora que tarea debe realizar y cómo efectuarla , pero para ello es preciso introducir estas órdenes en un lenguaje que el sistema pueda entender. En principio, el ordenador sólo entiende las instrucciones en código máquina, es decir ,el específico de la computadora. Sin embargo, a partir de éstos se elaboran los llamados lenguajes de alto y bajo nivel. Software de Uso General : El software para uso general ofrece la estructura para un gran número de aplicaciones empresariales, científicas y personales. El software de hoja de cálculo, de diseño asistido por computadoras (CAD), de procesamiento de texto, de manejo de Bases de Datos, pertenece a esta categoría. La mayoría de software para uso general se vende como paquete; es decir, con software y documentación orientada al usuario ( manuales de referencia, plantillas de teclado y demás ). Software de aplicaciones : El software de aplicación esta diseñado y escrito para realizar tareas específicas personales,,empresariales o científicas como el procesamiento de nóminas, la administración de los recursos humanos o el control de inventarios. Todas éstas aplicacion es procesan datos (recepción de materiales) y generan información (registros de nómina). para el usuario. Sistemas Operativos Un sistema Operativo (SO) es en sí mismo un programa de computadora. Sin embargo, es un programa muy especial, quizá el más complejo e importante en una computadora. El SO despierta a la computadora y hace que reconozca a la CPU, la memoria, el tecla do, el sistema de vídeo y las unidades de disco. Además, proporciona la facilidad para que los usuarios se comuniquen con la computadora y sirve de plataforma a partir de la cual se corran programas de aplicación. Cuando enciendes una computadora, lo primero que ésta hace es llevar a cabo un autodiagnóstico llamado autoprueba de encendido (Power On Self Test, POST). Durante la POST, la computadora indentifica su memoria, sus discos, su teclado, su sistema de vídeo y cualquier otro dispositivo conectado a ella. Lo siguiente que la computadora hace es buscar un SO para arrancar (boot). SOFTWARE DE SISTEMAS OPERATIVOS . Sistema operativo, software básico que controla una computadora. El sistema operativo tiene tres grandes funciones: coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el mouse; organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnéticas, y gestiona los errores de hardware y la pérdida de datos.Una vez que la computadora ha puesto en marcha su SO, mantiene al menos parte de éste en su memoria en todo momento. Mientras la computadora esté encendida, el SO tiene 4 tareas principales.: Proporcionar ya sea una interfaz de línea de comando o una interfaz gráfica al usuario, para que este último se pueda comunicar con la computadora. Interfaz de línea de comando: tú introduces palabras y símbolos desde el teclado de la computadora, ejemplo, el MS-DOS. Interfaz gráfica del Usuario (GUI), seleccionas las acciones mediante el uso de un Mouse para pulsar sobre figuras llamadas iconos o seleccionar opciones de los menús. Administrar los dispositivos de hardware en la computadora · Cuando corren los programas, necesitan utilizar la memoria, el monitor, las unidades de disco, los puertos de Entrada/Salida (impresoras, módems, etc). El SO sirve de intermediario entre los programas y el hardware. Administrar y mantener los sistemas de archivo de disco · Los SO agrupan la información dentro de compartimentos lógicos para almacenarlos en el disco. Estos grupos de información son llamados archivos. Los archivos pueden contener instrucciones de programas o información creada por el usuario. El SO mantiene una lista de los archivos en un disco, y nos proporciona las herramientas necesarias para organizar y manipular estos archivos. Apoyar a otros programas. Otra de las funciones importantes del SO es proporcionar servicios a otros programas. Estos servicios son similares a aquellos que el SO proporciona directamente a los usuarios. Por ejemplo, listar los archivos, grabarlos a disco, eliminar archivos, revisar espacio disponible, etc. Cuando los programadores escriben programas de computadora, incluyen en sus programas instrucciones que solicitan los servicios del SO. Estas instrucciones son conocidas como "llamadas del sistema" CÓMO FUNCIONA UN SISTEMA OPERATIVO Los sistemas operativos controlan diferentes procesos de la computadora. Un proceso importante es la interpretación de los comandos que permiten al usuario comunicarse con el ordenador. Algunos intérpretes de instrucciones están basados en texto y exigen que las instrucciones sean tecleadas. Otros están basados en gráficos, y permiten al usuario comunicarse señalando y haciendo clic en un icono. Por lo general, los intérpretes basados en gráficos son más sencillos de utilizar. Los sistemas operativos pueden ser de tarea única o multitarea. Los sistemas operativos de tarea única, más primitivos, sólo pueden manejar un proceso en cada momento. Por ejemplo, cuando la computadora está imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas instrucciones hasta que se termine la impresión. Todos los sistemas operativos modernos son multitarea y pueden ejecutar varios procesos simultáneamente. En la mayoría de los ordenadores sólo hay una UCP; un sistema operativo multitarea crea la ilusión de que varios procesos se ejecutan simultáneamente en la UCP. El mecanismo que se emplea más a menudo para lograr esta ilusión es la multitarea por segmentación de tiempos, en la que cada proceso se ejecuta individualmente durante un periodo de tiempo determinado. Si el proceso no finaliza en el tiempo asignado, se suspende y se ejecuta otro proceso. Este intercambio de procesos se denomina conmutación de contexto. El sistema operativo se encarga de controlar el estado de los procesos suspendidos. También cuenta con un mecanismo llamado planificador que determina el siguiente proceso que debe ejecutarse. El planificador ejecuta los procesos basándose en su prioridad para minimizar el retraso percibido por el usuario. Los procesos parecen efectuarse simultáneamente por la alta velocidad del cambio de contexto. Los sistemas operativos pueden emplear memoria virtual para ejecutar procesos que exigen más memoria principal de la realmente disponible. Con esta técnica se emplea espacio en el disco duro para simular la memoria adicional necesaria. Sin embargo, el acceso al disco duro requiere más tiempo que el acceso a la memoria principal, por lo que el funcionamiento del ordenador resulta más lento. Sistemas Operativos más comunes : MS-DOS Es el más común y popular de todos los Sistemas Operativos para PC. La razón de su continua popularidad se debe al aplastante volumen de software disponible y a la base instalada de computadoras con procesador Intel. Cuando Intel liberó el 80286, D OS se hizo tan popular y firme en el mercado que DOS y las aplicaciones DOS representaron la mayoría del mercado de software para PC. OS/2. OS/2 es un sistema operativo multitarea que fue desarrollado originalmente entre IBM y Microsoft como un sucesor multiproceso del DOS para PC’s y es bastante usado por empresas en aplicaciones críticas, servidores, comunicaciones y por usuarios particulares. Unix UNIX designa el núcleo de un sistema operativo multiusuario y multitarea. En un sentido más amplio, comprende el núcleo del sistema operativo más un conjunto de programas que permiten compilar lenguajes de programación, editar texto, interpretar comandos, manejar archivos y discos, acceder a otras máquinas, establecer comunicaciones telefónicas, enviar y recibir correo electrónico, manejar las colas de impresión y un sinfín de tareas más. Algunos de estos programas pueden haber sido desarrollados por los propios usuarios. UNIX designa al mismo tiempo un cierto "ambiente de trabajo", un conjunto de circunstancias que encuentra el usuario de la computadora donde corre UNIX, tales como la presentación en pantalla, los programas disponibles y la forma de trabajo que impone o permite. NetWare. NetWare es un sistema operativo de red (NOS) de computadoras desarrollado por la empresa Novell. Es un conjunto de aplicaciones diseñadas para conectar, gestionar y mantener una red y sus servicios. Una red NetWare utiliza el software NetWare para habilitar la comunicación entre dispositivos y el compartimiento de recursos. NetWare es un conjunto de componentes software. Algunos de estos componentes sólo se pueden ejecutar desde el servidor de NetWare. Otros sólo se pueden ejecutar desde las estaciones de trabajo. Windows NT. Windows NT es un sistema operativo que fue desarrollado por Microsoft para superar los obstáculos impuestos por la vieja arquitectura de sus sistemas operativos MS-DOS, Windows 3.x y 9.x. NT es un sistema operativo completo, que puede ser instalado sobre un equipo nuevo sin necesidad de software adicional, como le ocurre a Windows 3.x, y que ofrece nuevas tecnologías para el desarrollo y ejecución de todo tipo de aplicaciones. 1.9.2 Los lenguajes de programación. Al desarrollarse las primeras computadoras electrónicas, se vio la necesidad de programarlas, es decir, de almacenar en memoria la información sobre la tarea que iban a ejecutar. Las primeras se usaban como calculadoras simples; se les indicaban los pasos de cálculo, uno por uno. John Von Neumann desarrolló el modelo que lleva su nombre, para describir este concepto de "programa almacenado". En este modelo, se tiene una abstracción de la memoria como un conjunto de celdas, que almacenan simplemente números. Estos números pueden representar dos cosas: los datos, sobre los que va a trabajar el programa; o bien, el programa en sí. ¿Cómo es que describimos un programa como números? Se tenía el problema de representar las acciones que iba a realizar la computadora, y que la memoria, al estar compuesta por switches correspondientes al concepto de bit, solamente nos permitía almacenar números binarios. La solución que se tomó fue la siguiente: a cada acción que sea capaz de realizar nuestra computadora, asociarle un número, que será su código de operación (opcode) . Por ejemplo, una calculadora programable simple podría asignar los opcodes : 1 = SUMA, 2 = RESTA, 3 = MULTIPLICA, 4 = DIVIDE. Supongamos que queremos realizar la operación 5 * 3 + 2, en la calculadora descrita arriba. En memoria, podríamos "escribir" el programa de la siguiente forma: Localidad Opcode Significado Comentario 0 5 5 En esta localidad, tenemos el primer número de la fórmula 1 3 * En esta localidad, tenemos el opcode que representa la multiplicación. 2 3 3 En esta localidad, tenemos el segundo número de la fórmula 3 1 + En esta localidad, tenemos el opcode que representa la suma. 4 2 2 En esta localidad, tenemos el último número de la fórmula Podemos ver que con esta representación, es simple expresar las operaciones de las que es capaz el hardware (en este caso, nuestra calculadora imaginaria), en la memoria. La descripción y uso de los opcodes es lo que llamamos lenguaje de máquina . Es decir, la lista de códigos que la máquina va a interpretar como instrucciones, describe las capacidades de programación que tenemos de ella; es el lenguaje más primitivo, depende directamente del hardware, y requiere del programador que conozca el funcionamiento de la máquina al más bajo nivel. los lenguajes más primitivos fueron los lenguajes de máquina. Esto, ya que el hardware se desarrolló antes del software, y además cualquier software finalmente tiene que expresarse en el lenguaje que maneja el hardware. La programación en esos momentos era sumamente tediosa, pues el programador tenía que "bajarse" al nivel de la máquina y decirle, paso a pasito, cada punto de la tarea que tenía que realizar. Además, debía expresarlo en forma numérica; y por supuesto, este proceso era propenso a errores, con lo que la productividad del programador era muy limitada. Sin embargo, hay que recordar que en estos momentos, simplemente aún no existía alternativa. El primer gran avance que se dio, como ya se comentó, fue la abstracción dada por el Lenguaje Ensamblador, y con él, el nacimiento de las primeras herramientas automáticas para generar el código máquina. Esto redujo los errores triviales, como podía ser el número que correspondía a una operación, que son sumamente engorrosos y difíciles de detectar, pero fáciles de cometer. Sin embargo, aún aquí es fácil para el programador perderse y cometer errores de lógica, pues debe bajar al nivel de la forma en que trabaja el CPU, y entender bien todo lo que sucede dentro de él. Con el desarrollo en los 50s y 60s de algoritmos de más elevado nivel, y el aumento de poder del hardware, empezaron a entrar al uso de computadoras científicos de otras ramas; ellos conocían mucho de Física, Química y otras ramas similares, pero no de Computación, y por supuesto, les era sumamente complicado trabajar con lenguaje Ensamblador en vez de fórmulas. Así, nació el concepto de Lenguaje de Alto Nivel, con el primer compilador de FORTRAN (FORmula TRANslation), que, como su nombre indica, inició como un "simple" esfuerzo de traducir un lenguaje de fórmulas, al lenguaje ensamblador y por consiguiente al lenguaje de máquina. A partir de FORTRAN, se han desarrollado innumerables lenguajes, que siguen el mismo concepto: buscar la mayor abstracción posible, y facilitar la vida al programador, aumentando la productividad, encargándose los compiladores o intérpretes de traducir el lenguaje de alto nivel, al lenguaje de computadora. Hay que notar la existencia de lenguajes que combinan características de los de alto nivel y los de bajo nivel (es decir, Ensamblador). Mi ejemplo favorito es C: contiene estructuras de programación de alto nivel, y la facilidad de usar librerías que también son características de alto nivel; sin embargo, fue diseñado con muy pocas instrucciones, las cuales son sumamente sencillas, fáciles de traducir al lenguaje de la máquina; y requiere de un entendimiento apropiado de cómo funciona la máquina, el uso de la memoria, etcétera. Por ello, muchas personas consideramos a lenguajes como C (que fue diseñado para hacer sistemas operativos), lenguajes de nivel medio. Java El lenguaje de programación Java, fue diseñado por la compañía Sun Microsystems Inc, con el propósito de crear un lenguaje que pudiera funcionar en redes computacionales heterogéneas ( redes de computadoras formadas por más de un tipo de computadora, ya sean PC, MAC's, estaciones de trabajo, etc.),y que fuera independiente de la plataforma en la que se vaya a ejecutar. Esto significa que un programa de Java puede ejecutarse en cualquier máquina o plataforma. El lenguaje fue diseñado con las siguientes características en mente: Simple. Elimina la complejidad de los lenguajes como "C" y da paso al contexto de los lenguajes modernos orientados a objetos. Orientado a Objetos. La filosofía de programación orientada a objetos es diferente a la programación convencional. Familiar. Como la mayoría de los programadores están acostumbrados a programar en C o en C++, el sintaxis de Java es muy similar al de estos. Robusto. El sistema de Java maneja la memoria de la computadora por ti. No te tienes que preocupar por apuntadores, memoria que no se esté utilizando, etc. Java realiza todo esto sin necesidad de que uno se lo indique. Seguro. El sistema de Java tiene ciertas políticas que evitan se puedan codificar virus con este lenguaje. Existen muchas restricciones, especialmente para los applets, que limitan lo que se puede y no puede hacer con los recursos críticos de una computadora. Portable. Como el código compilado de Java (conocido como byte code) es interpretado, un programa compilado de Java puede ser utilizado por cualquier computadora que tenga implementado el interprete de Java. Independiente a la arquitectura. Al compilar un programa en Java, el código resultante un tipo de código binario conocido como byte code. Este códido es interpretado por diferentes computadoras de igual manera, solamente hay que implementar un intérprete para cada plataforma. De esa manera Java logra ser un lenguaje que no depende de una arquitectura computacional definida. Multithreaded. Un lenguaje que soporta multiples threads es un lenguaje que puede ejecutar diferentes líneas de código al mismo tiempo. Interpretado. Java corre en máquina virtual, por lo tanto es interpretado. Dinámico. Java no requiere que compiles todas las clases de un programa para que este funcione. Si realizas una modificación a una clase Java se encarga de realizar un Dynamic Bynding o un Dynamic Loading para encontrar las clases. Java puede funcionar como una aplicación sola o como un "applet", que es un pequeño programa hecho en Java. Los applets de Java se pueden "pegar" a una página de Web (HTML), y con esto puedes tener un programa que cualquier persona que tenga un browser compatible podrá usar. Nota:Diferencia entre Java y CGI La diferencia es esencialmente simple, un CGI se ejecuta en el servidor mientras que un programa en Java se ejecuta en la máquina del usuario. Java funciona de la siguiente manera: El compilador de Java deja el programa en un Pseudo-código (no es código maquinal) y luego el intérprete de Java ejecuta el programa (lo que se conoce como el "Java Virtual Machine"). Por eso Java es multiplataforma, existe un intérprete para cada máquina diferente. Nota: El código maquinal es el código binario que la computadora entiende y puede ejecutar. Para entender bien como funciona un applet de Java vean el siguiente ejemplo: 1. Existe un código de Java en un servidor de Web. (Los códigos de Java se caracterizan por tener la extensión *.class). 2. Una persona en Internet, con un browser compatible con Java, realiza una conección al servidor. 3. El servidor envía el documento HTML y el código en Java (*.class). 4. En la computadora del usuario remoto llegan ambos, y la Máquina Virtual de Java, que está en el browser, transforma el código Java en un código que entienda la máquina local y se ejecuta el programa dentro de la página de Web. 5. Si el usuario realiza otra conexión a otro URL o se sale del browser, el programa se deja de ejecutar y en la computadora no queda rastro de el. Ejemplo de tutorial de Java: En Java hay tres tipos de comentarios: // comentarios para una sola línea /* comentarios de una o más líneas */ /** comentario de documentación, de una o más líneas */ Los dos primeros tipos de comentarios son los que todo programador conoce y se utilizan del mismo modo. Los comentarios de documentación, colocados inmediatamente antes de una declaración (de variable o función), indican que ese comentario ha de ser colocado en la documentación que se genera automáticamente cuando se utiliza la herramienta de Java, javadoc. Dichos comentarios sirven como descripción del elemento declarado permitiendo generar una documentación de nuestras clases escrita al mismo tiempo que se genera el código. En este tipo de comentario para documentación, se permite la introducción de algunos tokens o palabras clave, que harán que la información que les sigue aparezca de forma diferente al resto en la documentación. Identificadores Los identificadores nombran variables, funciones, clases y objetos; cualquier cosa que el programador necesite identificar o usar. En Java, un identificador comienza con una letra, un subrayado (_) o un símbolo de dólar ($). Los siguientes caracteres pueden ser letras o dígitos. Se distinguen las mayúsculas de las minúsculas y no hay longitud máxima. Serían identificadores válidos: identificador nombre_usuario Nombre_Usuario _variable_del_sistema $transaccion y su uso sería, por ejemplo: int contador_principal; char _lista_de_ficheros; float $cantidad_en_Ptas; Unix Ejemplo de Unix: No todo el "árbol" de directorios está compuesto por directorios de usuario. Existen muchos de ellos que son de uso general o del propio sistema y con los que habrá que familiarizarse. Los más importantes son: / El raíz, del que "cuelgan" todos. /bin y /usr/bin Contienen comandos UNIX ejecutables. /etc Es quizá el directorio más importante. Contiene ficheros de datos y configuración del sistema, el fichero de password, configuración de terminales, red, etc (de ahí su nombre). /dev Ficheros de dispositivos E/S. /usr/man Manual /tmp Directorio para arreglos temporales. TODOS los usuarios pueden leer y escribir en él. C C es un lenguaje de programación diseñado por Dennis Ritchie, de los Laboratorios Bell, y se instaló en un PDP-11 en 1972; se diseñó para ser el lenguaje de los Sistemas Operativos UNIX1. A su vez, UNIX es un Sistema Operativo desarrollado por Ken Thompson, quién utilizó el lenguaje ensamblador y un lenguaje llamado B para producir las versiones originales de UNIX, en 1970. C se inventó para superar las limitaciones de B. C es un lenguaje maduro de propósitos generales que se desarrolló a partir de estas raíces; su definición aparece en 1978 en el apéndice ``C Reference Manual'' del libro The C Programming Language, de Brian W. Kernighan y Dennis M. Ritchie (Englewood Cliffs, Nueva Jersey, Prentice-Hall 1978), pero el estándar recomendable más reciente apareció en junio de 1983, en el documento de los Laboratorios Bell titulado The C Programming Language-Reference Manual, escrito por Dennis M. Ritchie Un programa en C Generalizando, un programa en C consta de tres secciones. La primera sección es donde van todos los ``headers''. Estos ``headers'' son comúnmente los ``#define'' y los ``#include''. Como segunda sección se tienen las ``funciones''. Al igual que Pascal, en C todas las funciones que se van a ocupar en el programa deben ir antes que la función principal (main()). Declarando las funciones a ocupar al principio del programa, se logra que la función principal esté antes que el resto de las funciones. Ahora, solo se habla de funciones ya que en C no existen los procedimientos. Y como última sección se tiene a la función principal, llamada main. Cuando se ejecuta el programa, lo primero que se ejecuta es esta función, y de ahí sigue el resto del programa. Los símbolos { y } indican ``begin'' y ``end'' respectivamente. Si en una función o en un ciclo while, por ejemplo, su contenido es de solamente una línea, no es necesario usar ``llaves'' ({ }), en caso contrario es obligación usarlos. Ejemplo de un programa en C /*Programa ejemplo que despliega el contenido de "ROL" en pantalla*/ #include <stdio.h> #define ROL "9274002-1" despliega_rol() { printf("Mi rol es : \%s\n", ROL); } void main() { despliega_rol(); } /* Fin programa */ Pascal Pascal es un lenguaje de programación de alto nivel de propósito general; esto es, se puede utilizar para escribir programas para fines científicos y comerciales. El lenguaje de programación Pascal fue desarrollado por el profesor Niklaus (Nicolás) Wirth en Zurich, Zuiza, al final de los años 1960s y principios de los 70s. Wirth diseñó este lenguaje para que fuese un buen primer lenguaje de programación para personas comenzando a aprender a programar. Pascal tiene un número relativamente pequeño de conceptos para aprender y dominar. Su diseño facilita escribir programas usando un estilo que está generalmente aceptado como práctica estándar de programación buena. Otra de las metas del diseño de Wirth era la implementación fácil. Él diseñó un lenguaje para el cual fuese fácil escribir un compilador para un nuevo tipo de computadora. program Sorting; { Este programa lee un natural y una secuencia de N caracteres de la entrada estandar; construye un indice para ordenarlos de menor a mayor e imprime en la salida la secuencia ordenada. } uses CRT; Const Max = 10; Espacio = ' '; Enter = chr (13); type Indice = 1..Max; Cantidad= 0..Max; SecOfChar = record elems : array [Indice] of char; ult : Cantidad; end; SecOfInd = record elems : array [Indice] of Indice; ult : Cantidad; end; Natural = 0..MaxInt; function PosMin (idx: SecOfInd; i: Indice; s: SecOfChar): Cantidad; { Devuelve la posicion en el indice idx del menor caracter en s, para las posiciones >= i. } var j: Indice; pm: Cantidad; begin if i > idx.ult then pm := 0 else begin pm := i; for j := i+1 to idx.ult do if s.elems[idx.elems[j]] < s.elems[idx.elems[pm]] then pm := j; end; PosMin := pm; end; procedure Swap (var idx: SecOfInd; i,j: Indice); { Intercambia las posiciones i j en idx. } var tmp: Indice; begin if (i<=idx.ult) and (j<=idx.ult) then begin tmp := idx.elems[i]; idx.elems[i] := idx.elems[j]; idx.elems[j] := tmp; end; end; procedure InicInds (var idx: SecOfInd; cant: Indice); { Construye la secuencia de indices 1,2,3,...,n. Sera el indice inicial para el ordenamiento de una secuencia de caracteres c1,c2,...,cn. } var n: Natural; begin n := cant; idx.ult := n; while n > 0 do begin idx.elems [n] := n; n := n-1; end; end; procedure InicSecChar (var s: SecOfChar); { Devuelve la secuencia vacia. } begin s.ult := 0; end; function Llena (s: SecOfChar): Boolean; begin Llena := s.ult = Max; end; { PRE: not Llena(s) } procedure InsCar (var s: SecOfChar; c: char); { Inserta el caracter c en la secuencia s } begin s.ult := s.ult + 1; s.elems [s.ult] := c; end; procedure IndSelSort (s: SecOfChar; var ind: SecOfInd); { Construye el indice que ordena la secuencia s. Ordena el indice inicial 1,2, ..., n por el metodo de selection sort } var i: Indice; begin InicInds (ind, s.ult); for i := 1 to ind.ult-1 do begin Swap (ind, i, PosMin (ind, i, s)); end end; procedure WriteSorted (idx: SecOfInd; s: SecOfChar); { Imprime en la salida estandar la secuencia s ordenada segun el indice idx } var i: Indice; begin write ('Ordenado: '); for i := 1 to idx.ult do write (s.elems[idx.elems[i]],' '); writeln; end; procedure LeerCar (var c: char; var ok: boolean; sep: Char); { Lee de la entrada estandar un caracter seguido del caracter sep } var c1, c2: char; begin c := ReadKey; write (c); c1 := ReadKey; write (c1); ok := c1 = sep; end; procedure LeerSecOfChar (var s: SecOfChar; cant: Natural; var ok: Boolean); { Construye una secuencia de cant caracteres provistos por el procedimeinto LeerCar. Si cant > Max trunca. } var bien: Boolean; i: Natural; ch, sep: Char; begin writeln ('Ingrese ',cant, ' caracteres separados por blancos. Enter para terminar '); write (' > '); InicSecChar (s); i := 1; ok := true; sep := Espacio; while ok and (i <= cant) and not Llena (s) do begin if i = cant then sep := Enter; LeerCar (ch, bien, sep); i := i+1; ok := ok and bien; if ok then InsCar (s, ch); end; end; procedure LeerCant (var n: Natural); { Lee de la entrada estandar un natural <= Max } begin repeat writeln ('Ingrese cantidad de caracteres (<=',Max,')'); write (' > '); readln (n); until n <= Max; end; procedure Continuar (var seguir: Boolean); var car: Char; begin writeln; writeln ('Otro ? (s/n)'); write (' > '); car := ReadKey; writeln (car); seguir := car in ['s','S']; end; var cant: Natural; cars: SecOfChar; inds: SecOfInd; seguir, ok: boolean; begin repeat ClrScr; LeerCant (cant); LeerSecOfChar (cars, cant, ok); if ok then begin IndSelSort (cars, inds); writeln; WriteSorted (inds, cars); end else begin writeln; writeln ('Error en los datos'); end; Continuar (seguir); until not seguir; end. QBasic Qbasic es un lenguaje de alto nivel, el cual consiste en instrucciones que los humanos pueden relacionar y entender. El compilador de Qbasic se encarga de traducir el mismo a lenguaje de máquina. Un programa es una secuencia de instrucciones. El proceso de ejecutar esas instrucciones se llama correr el programa. Los programas contienen las funciones de entrada, procesamiento y salida. La persona que resuelve problemas mediante escribir programas en la computadora se conoce como programador. Después de analizar el problema y desarrollar un plan para solucionarlo, escribe y prueba el programa que instruye a la computadora como llevar a cabo el plan. El procedimiento que realiza el programador se define como "problem solving". Pero es necesario especificar que un programador y un usuario no son lo mismo. Un usuario es cualquier persona que use el programa. Ejemplo de qbasic, para hacer una calculadora DIM total AS DOUBLE DIM number AS DOUBLE DIM secondNumber AS DOUBLE DIM more AS STRING DIM moreNumbers AS STRING DIM operation AS STRING total = 0 more = "y" moreNumbers = "c" CLS WHILE more = "y" INPUT "Enter the first number"; number total = number WHILE moreNumbers = "c" COLOR 14 PRINT "The total is:"; total COLOR 7 PRINT "Select an operation" COLOR 2 PRINT "(+)" COLOR 5 PRINT "(-)" COLOR 1 PRINT "(x)" COLOR 4 INPUT "(/)"; operation COLOR 7 CLS IF operation = "+" THEN REM where we do additions PRINT "Enter the number to Add to"; total INPUT secondNumber total = secondNumber + total COLOR 14 PRINT "The total is now:"; total COLOR 7 ELSE IF operation = "-" THEN REM subtraction PRINT "Enter the number to Subtract from"; total INPUT secondNumber total = total - secondNumber COLOR 14 PRINT "The total is now:"; total COLOR 7 ELSE IF operation = "x" THEN REM multiplication PRINT "Enter the number to Multiply"; total; "by" INPUT secondNumber total = secondNumber * total REM * is the multiplication sign in programs COLOR 14 PRINT "The total is now:"; total COLOR 7 ELSE IF operation = "/" THEN REM division PRINT "Enter the number to Divide"; total; "by" INPUT secondNumber IF secondNumber = 0 THEN COLOR 4 PRINT "You cannot divide by zero" COLOR 7 ELSE total = total / secondNumber REM / is the division sign in programs END IF COLOR 14 PRINT "The total is now:"; total COLOR 7 ELSE PRINT "you must select an operation" END IF END IF END IF END IF INPUT "Do you wish to continue (c) or start with new numbers (n)";moreNumbers CLS WEND COLOR 14 PRINT "The grand total is:"; total COLOR 7 INPUT "Do you wish to make more calculations (y - n)"; more moreNumbers = "c" REM if we don't put "moreNumbers" back to y, it will always REM come back to "Do you wish to make more calculations" and never REM ask for numbers again REM (try it) total = 0 REM if we don't reset the total to 0, it will just REM keep on adding to the total WEND END Linux Linux es una implementación del sistema operativo UNIX (uno más de entre los numerosos clónicos del histórico Unix), pero con la originalidad de ser gratuito y a la vez muy potente, que sale muy bien parado (no pocas veces victorioso) al compararlo con las versiones comerciales para sistemas de mayor envergadura y por tanto teóricamente superiores. Comenzó como proyecto personal del –entonces estudiante- Linus Torvalds, quien tomó como punto de partida otro viejo conocido, el Minix de Andy. S. Tanenbaum (profesor de sistemas operativos que creó su propio sistema operativo Unix en PCs XT para usarlo en su docencia). Actualmente Linus lo sigue desarrollando, pero a estas alturas el principal autor es la red Internet, desde donde una gigantesca familia de programadores y usuarios aportan diariamente su tiempo aumentando sus prestaciones y dando información y soporte técnico mútuo. La versión original -y aun predominante- comenzó para PCs compatibles (Intel 386 y superiores), existiendo también en desarrollo versiones para prácticamente todo tipo de plataformas: PowerPC <http://www.cs.us.es/archive/linuxppc/>, Sparc <http://www.geog.ubc.ca/sparclinux.html>, Alpha <http://www.azstarnet.com/~axplinux>, Mips <http://www.fnet.fr/linux-mips/>, etc. De todas ellas la más reciente en este momento es la versión para PowerMac <http://www.mklinux.org> (el PowerPC de Apple) basada en el microkernel Mach 3.0 y de la que ya hay una distribución para desarrolladores avalada directamente por Apple y OSF pero conservando el espíritu (gratuito, de libre distribución, etc) de la version original. Un servidor la acaba de probar hace unos días y se ha llevado una grata sorpresa (aún tendrá muuuchos fallos, pero para ser una primerísima versión y el poco tiempo que lleva en marcha, ha avanzado más de lo que me esperaba). Ejemplo de linux: Compilar el Kernel Dado que un diskette sólo almacena 1.44 Megabytes (1440 Kilobytes) de datos, no puedes el mismo kernel que utilizas al diskette. Primero debes conseguir los fuentes del núcleo y descomprimirlos en /usr/src/linux. Luego ejecuta la siguiente orden desde el directorio /usr/src/linux: make config Configura solamente aquello que realmente necesites. Yo, personalmente, sólo configuro el soporte para "ext2", soporte para la disquetera (floppy disk), y soporte para "PPP". Tus elecciones pueden se diferentes en función de lo que decidas incluir. Ahora introduce el siguiente comando: make dep; make clean; make zImage ¡make zImage es muy importante! Comprime el kernel definitivo. Después de que termine la compilación, deberás buscar el nuevo núcleo en /usr/src/linux/arch/i386/boot bajo el nombre de zImage. El sistema de ficheros: No es solamente un conjunto de ficheros Ahora hemos de crear el sistema de ficheros (en inglés: filesystem, fs) para el diskette. En vez de copiar los ficheros tal cual directamente al diskette, los comprimiremos antes de copiarlos. Esto nos hará un poco más difícil la faena de modificar todo permanentemente. Primero tecleamos el siguiente comando: dd if=/dev/zero of=[DEVICE] bs=1k count=3000 Donde [DEVICE] es "lugar" en el disco duro donde vas a guardar el sistema de ficheros descomprimido. Luego, introduce el siguiente comando y pulsa ENTER, sustituyendo [DEVICE] por el directorio en tu disco duro donde estás guardando el sistema de ficheros descomprimido: mke2fs -m 0 [DEVICE] Si make2fs te pregunta si realmente quieres hacer esto (Do you really want to do this?), acepta tecleando "y" (yes). Después tenemos que montar este sistema de ficheros que hemos creado. Para ello, el núcleo que utilices tiene que permitir "montar ficheros", en otras palabras, ha de tener habilitada la posibilidad de "loopback devices". Para ello has de compilar el núcleo de tu máquina (no el núcleo que hemos creado, sino el de tu propia máquina) con la opción: Loopback device support (CONFIG_BLK_DEV_LOOP) [M/n/y/?] bien como módulo (M) o en el mismo núcleo (Y). Si lo compilas como módulo (lo más recomendable) luego tienes que insertar el módulo modprobe loop !No olvides rearrancar la máquina si has tenido que recompilar el núcleo! mount -t ext2 DEVICE /mnt Si se queja la orden mount puedes intentar con la siguiente orden: mount -o loop -t ext2 DEVICE /mnt Ahora debes copiar todos los ficheros que necesites en el nuevo sistema de ficheros. Primero, ponte en el directorio /mnt, (cd /mnt), y crea los siguientes directorios: /dev /pro /etc /bin /lib /mnt /usr Ahora crearemos el directorio /dev tecleando lo siguiente: cp -dpR /dev /mnt/dev Si se te acaban los i-nodos del diskette, puedes ir a /mnt/dev y borrar los archivos de dispositivo que no necesites. Cuando acabes de copiar los ficheros necesarios para /dev, ves a /etc. Para estar seguro copia todos los ficheros de /etc a /mnt/etc: cp -dpR /etc /mnt/etc Luego copia todo del directorio /lib en /mnt: cp -dpR /lib /mnt/lib Para el directorio /bin, copia sólo aquello que creas que necesitas en /mnt/bin. Copiar todo a tu diskette Ahora hemos de copiar todo en el/los diskette/s. Para hacer esto, debemos comprimir ahora el sistema de ficheros tecleando las siguientes ordenes: cd / umount /mnt dd if=[DEVICE] bs=1k | gzip -9 > rootfs.gz Ahora es importante comprobar el tamaño del núcleo. Ponte en /usr/src/linux/arch/i386/boot y teclea "ls -l". Luego divide el tamaño del núcleo entre 1024. Por ejemplo, si el tamaño es de 250000 bytes, entonces son 245 KB. En adelante, reemplaza [ROOTBEGIN] en las ordenes que aparezca por el número total de kilobytes que has calculado. Ahora copia el kernel al diskette usando el siguiente comando: dd if=zImage of=/dev/fd0 Este comando grabará el kernel en el diskette. Luego introduce el siguiente comando para que el kernel pueda encontrar la raíz del sistema de ficheros en el diskette. rdev /dev/fd0 /dev/fd0 Ahora tendrás que hacer un pequeño cálculo en hexadecimal. Suma 4000 al equivalente en hexadecimal de [ROOTBEGIN] (que en nuestro ejemplo es F5). Convierte el resultado a decimal y teclea el siguiente comando, sustituyendo 16629 con el resultado que tú has obtenido: rdev -r /dev/fd0 16629 Finalmente, teclea lo siguiente para copiar el sistema de ficheros al diskette: dd if=/rootfs.gz of=/dev/fd0 bs=1k seek=[ROOTBEGIN] El sistema de ficheros raíz será copiado al diskette justo después del kernel. ¡Ya lo tienes! Para el segundo diskette, el proceso es más fácil. Copia los ficheros que quieras en el diskette. No obstante, para poder usar los ficheros que hay en el segundo disco, tendrás que entrar lo siguiente después de arrancar con el diskette: mount /dev/fd0 /usr Ensamblador Cuando abstraemos los opcodes y los sustituimos por una palabra que sea una clave de su significado, a la cual comúnmente se le conoce como mnemónico , tenemos el concepto de Lenguaje Ensamblador . Así, podemos definir simplemente al Lenguaje Ensamblador de la siguiente forma: Lenguaje Ensamblador es la primera abstracción del Lenguaje de Máquina , consistente en asociar a los opcodes palabras clave que faciliten su uso por parte del programador Como se puede ver, el Lenguaje Ensamblador es directamente traducible al Lenguaje de Máquina, y viceversa; simplemente, es una abstracción que facilita su uso para los seres humanos. Por otro lado, la computadora no entiende directamente al Lenguaje Ensamblador; es necesario traducirle a Lenguaje de Máquina. Originalmente, este proceso se hacía a mano, usando para ello hojas donde se escribían tablas de programa similares al ejemplo de la calculadora que vimos arriba . Pero, al ser tan directa la traducción, pronto aparecieron los programas Ensambladores, que son traductores que convierten el código fuente (en Lenguaje Ensamblador) a código objeto (es decir, a Lenguaje de Máquina). Una característica que hay que resaltar, es que al depender estos lenguajes del hardware, hay un distinto Lenguaje de Máquina (y, por consiguiente, un distinto Lenguaje Ensamblador) para cada CPU. Por ejemplo, podemos mencionar tres lenguajes completamente diferentes, que sin embargo vienen de la aplicación de los conceptos anteriores: 1.Lenguaje Ensamblador de la familia Intel 80x86 2.Lenguaje Ensamblador de la familia Motorola 68000 3.Lenguaje Ensamblador del procesador POWER, usado en las IBM RS/6000. Tenemos 3 fabricantes distintos, compitiendo entre sí y cada uno aplicando conceptos distintos en la manufactura de sus procesadores, su arquitectura y programación; todos estos aspectos, influyen en que el lenguaje de máquina y ensamblador cambie bastante. Ventajas y desventajas del Lenguaje Ensamblador Una vez que hemos visto la evolución de los lenguajes, cabe preguntarse: ¿En estos tiempos "modernos", para qué quiero el Lenguaje Ensamblador? El proceso de evolución trajo consigo algunas desventajas, que ahora veremos como las ventajas de usar el Lenguaje Ensamblador, respecto a un lenguaje de alto nivel: 1.Velocidad 2.Eficiencia de tamaño 3.Flexibilidad Por otro lado, al ser un lenguaje más primitivo, el Ensamblador tiene ciertas desventajas respecto a los lenguajes de alto nivel: 1.Tiempo de programación 2.Programas fuente grandes 3.Peligro de afectar recursos inesperadamente 4.Falta de portabilidad Velocidad El proceso de traducción que realizan los intérpretes, implica un proceso de cómputo adicional al que el programador quiere realizar. Por ello, nos encontraremos con que un intérprete es siempre más lento que realizar la misma acción 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 más rápidos que los intérpretes, pues hacen la traducción una vez y dejan el código objeto, que ya es Lenguaje de Máquina, y se puede ejecutar muy rápidamente. Aunque el proceso de traducción es más complejo y costoso que el de ensamblar un programa, normalmente podemos despreciarlo, contra las ventajas de codificar el programa más rápidamente. Sin embargo, la mayor parte de las veces, el código generado por un compilador es menos eficiente que el código equivalente que un programador escribiría. La razón es que el compilador no tiene tanta inteligencia, y requiere ser capaz de crear código genérico, que sirva tanto para un programa como para otro; en cambio, un programador humano puede aprovechar las características específicas del problema, reduciendo la generalidad pero al mismo tiempo, no desperdicia ninguna instrucción, no hace ningún 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 más en Visual Basic (un intérprete), y 2 veces más en C (un compilador), que el equivalente en Ensamblador. 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 hecho en C puede ser muchas veces más rápido que un programa mal hecho en Ensamblador; sigue siendo sumamente importante la elección 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 más optimización y no se puede lograr por estos medios. Tamaño Por las mismas razones que vimos en el aspecto de velocidad, los compiladores e intérpretes generan más código máquina del 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 beneficios en 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 lenguaje Ensamblador. Flexibilidad Las razones anteriores son cuestión de grado: podemos hacer las cosas en otro lenguaje, pero queremos hacerlas más 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 máquina puede hacer, pero que un lenguaje de alto nivel no permite. Por ejemplo, en Visual Basic no es posible cambiar la resolución del monitor a medio programa; es una limitante, impuesta por la abstracción del GUI Windows. En cambio, en ensamblador es sumamente sencillo, pues tenemos el acceso directo al hardware del monitor. Resumiendo, la flexibilidad consiste en reconocer el hecho de que Todo lo que puede hacerse con una máquina, puede hacerse en el lenguaje ensamblador de esta máquina; los lenguajes de alto nivel tienen en una u otra forma limitantes para explotar al máximo los recursos de la máquina. Tiempo de programación Al ser de bajo nivel, el Lenguaje Ensamblador requiere más instrucciones para realizar el mismo proceso, en comparación con un lenguaje de alto nivel. Por otro lado, requiere de más cuidado por parte del programador, pues es propenso a que los errores de lógica se reflejen más fuertemente en la ejecución. Por todo esto, es más lento el desarrollo de programas comparables en Lenguaje Ensamblador que en un lenguaje de alto nivel, pues el programador goza de una menor abstracción. Programas fuente grandes Por las mismas razones que aumenta el tiempo, crecen los programas fuentes; simplemente, requerimos más 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 máquina, 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 también en este Lenguaje. Dicho de otra forma, tener mucho poder es útil pero también es peligroso. En la vida práctica, afortunadamente no ocurre mucho; sin embargo, al programar en este lenguaje verán que es mucho más común que la máquina se "cuelgue", "bloquee" o "se le vaya el avión"; y que se reinicialize. ¿Por qué?, porque con este lenguaje es perfectamente posible (y sencillo) realizar secuencias de instrucciones inválidas, que normalmente no aparecen al usar un lenguaje de alto nivel. En ciertos casos extremos, puede llegarse a sobreescribir información del CMOS de la máquina (no he visto efectos más riesgosos); pero, si no la conservamos, esto puede causar que dejemos de "ver" el disco duro, junto con toda su información. Falta de portabilidad Como ya se mencionó, existe un lenguaje ensamblador para cada máquina; por ello, evidentemente no es una selección apropiada de lenguaje cuando deseamos codificar en una máquina 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 más notorio en ensamblador: yo puedo reutilizar un 90% o más del código que desarrollo en "C", en una PC, al llevarlo a una RS/6000 con 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. En cambio, si escribimos el programa en Ensamblador de la PC, por bien que lo desarrollemos y muchos estándares que sigamos, tendremos prácticamente que reescribir el 100 % del código al llevarlo a UNIX, y otra vez lo mismo al llevarlo a Mac. 1.9.3 Las herramientas productivas (ofimática). Una suite de aplicaciones de oficina o suite ofimática, es un un paquete integrado de programas informáticos diseñados para el trabajo de oficina, vendidos o de otra forma distribuidos conjuntamente, y cuyas aplicaciones son capaces habitualmente de interactuar mutuamente en un nivel superior al que permitiría el sistema operativo y que posee una interfaz de usuario homogénea. No hay una norma estricta sobre los programas a incluir en una suite ofimática, pero la mayoría incluyen al menos un procesador de textos y una hoja de cálculo. De forma añadida, la suite puede contener un programa de presentaciones, un sistema gestor de base de datos y herramientas menores de gráficos y comunicaciones. Las suites ofimáticas también pueden contener: un programa de organización (agenda), un navegador web y un cliente de correo electrónico. En la actualidad la suite ofimática dominante en el mercado es Microsoft Office, la cual posee sus propios formatos cerrados de documentos para cada uno de sus programas. Debido a este hecho y al pobre soporte de la suite de Microsoft de otros formatos abiertos, la habilidad de lectura y escritura de formatos Microsoft Office es esencial para cualquier otra suite ofimática del mercado. http://es.wikipedia.org/wiki/Suite_de_herramientas_ofim%C3%A1ticas La ofimática o racionalización de la oficina con ayuda del ordenador. Tiene tres grandes áreas de aplicación: el tratamiento y procesamiento de textos, el proceso de datos y la tecnología de las comunicaciones. La ofimática ha revolucionado la administración y amplios campos de la comunicación. Resulta imprescindible en programas de formación tan variados como el comercial, o la administración, la contabilidad, la hostelería, la gestión empresarial, el periodismo, la documentación, la estadística, etc.... Gracias a la estandarización de los paquetes informáticos y a la existencia de guías de usuarios, el manejo de muchas de las herramientas de la ofimática implica operaciones fáciles de aprender para personas con una formación básica. Sin embargo, optimizar los recursos ofimáticos disponibles y alumbrar las enormes posibilidades que ofrecen, suponen unos amplios conocimientos interdisciplinarios y unas destacadas capacidades de gestión. Existen también otras tecnologías emergentes que van a tener un tratamiento ocupacional prioritario en los próximos años, y que se apoyan en conocimientos de base de tecnologías tradicionales como la electricidad y la electrónica, la mecánica, la química y la biología, la metalurgia, la arquitectura y la ingeniería(10). Entre estas tecnologías emergentes las que están recibiendo más atención en Estados Unidos, Europa y Japón parecen reducirse a cuatro campos: los nuevos materiales, como los superconductores; la electrónica y los sistemas informáticos, como dispositivos semiconductores, tecnología de imágenes digitales, computación de alto rendimiento, optoelectrónica y fotónica; los sistemas de fabricación, como inteligencia artificial, perfeccionamiento del CAD, SFF, tecnología de sensores; aplicaciones de las ciencias de la vida, como la biotecnología o los dispositivos médicos y de diagnosis(11). Estas tecnologías emergentes tardarán aún alrededor de una década en producir incidencias importantes a nivel ocupacional, pero cuentan ya con recursos destacados en el ámbito de la investigación y su perspectiva de venta en el año 2000 es de cientos de billones de dólares. Podríamos enumerar también otros campos ocupacionales que van a crecer de forma muy destacada y que deben ser objeto de la formación profesional. Entre ellos las tecnologías del medio ambiente, de la energía y de la seguridad; el aprovechamiento de los recursos biológicos, las tecnologías de la información y de las comunicaciones, la gestión empresarial, el comercio y la economía social. Una última consideración que cabe hacer sobre el impacto de las tecnologías emergentes y sobre los nuevos campos ocupacionales en la formación, es la necesidad de dar importancia a los estudios de las ciencias como la química, la biología y la física en la enseñanza general, por el carácter difusor que tienen estas disciplinas sobre numerosas tecnologías. http://www.campus-oei.org/oeivirt/rie02a03.htm Introducción La explosión informativa que se da en la actualidad es un hecho que hace difícil discernir la información conveniente o beneficiosa, de la que supone contaminación o perjudicial, que a veces hace que se pueda decir que "no se distinga el árbol de entre el bosque". La velocidad de crecimiento, hace necesario que el tratamiento de la información, se lleve a cabo de forma automática. Como origen y causa de éste crecimiento exponencial de la información, aparece paradójicamente la solución, la informática, definida como el tratamiento de la información de forma automatizada. La informática, tan versátil y polimórfica comenzó a aplicarse a diferentes campos, empezando el uso de ordenadores en primer lugar en el ámbito militar, ocupando entonces gran espacio y consumiendo mucha energía, a través de las sucesivas generaciones fueron reduciendo su tamaño y consumo, haciéndose asequible a cualquier tipo de actividad, habiéndose extendido en la actualidad al mundo económico y empresarial, siendo imprescindibles en la oficina para tener una eficaz gestión de la empresa. La fusión de los trabajos de oficina y de la informática dio lugar a la Ofimática. Se entiende como Ofimática todo lo relacionado con la organización de flujos de trabajo en oficinas, despachos, etc. y el respectivo apoyo a estos procesos mediante el ordenador. Dicho de paso, esta vez el español es más preciso que el inglés, con el nebuloso System-engineering y el más limitado Business Process Re-engineering (BOP). Hablar de la automatización de la oficina -en paralelo a la automatización de fábricas- no es correcto: en la fábrica el automatismo -el ordenador- sustituye al trabajador como dueño del proceso y lo convierte en supervisor o reparador, mientras en las oficinas las personas siguen como actores principales, apoyándose solamente para su trabajo y la coordinación del mismo en la infraestructura informática. La ofimática no trata del uso del ordenador individual, promueve la reingeniería de los procesos y sus etapas en su totalidad usando la informática como instrumento de eliminar, reducir y agilizar los mismos. No es lo mismo como la informática tradicional con su enfoque en información estandarizada, si no parte del hecho que cada caso es diferente y requiere de un tratamiento diferente, de tal forma que se puede estandarizar solamente las formas y el proceder pero no el contenido mismo, por tanto se trasciende el modelo cliente-servidor tradicional. En el entorno ofimático no son necesarios grandes equipos, sino que con ordenadores personales conectados entre sí y a internet, formando redes locales entre los que se comparte información y se abaratan los costos. La ofimática de esta manera se ha convertido en algo que crece y que se usa cada vez más. La ofimática, por sus peculiares características, suministra un buen campo para ejemplificar acerca del impacto de la convergencia e integración de las tecnologías. La oficina, y por lo tanto la ofimática, que no es más que la tecnología aplicada a la oficina, es un entorno donde no existen tareas muy determinadas, entran actividades tan diversas como el tratamiento de documentos o la comunicación telefónica. En un entorno así es lógico pensar que se necesitan tecnologías combinadas, no soluciones aisladas encaminadas a resolver un problema en concreto. La ofimática ha de proporcionar herramientas que faciliten al usuario (sea éste un individuo o un grupo) la tarea a realizar. Definiciones de ofimática: Bair (1985) La ofimática es la utilización de ordenadores en la oficina como soporte a los trabajadores de la información que no son especialistas en ordenadores. Elli y Nutt (1980). Un sistema automatizado de información para la oficina trata de realizar las tareas de la oficina tradicional por medio de sistemas de ordenadores. Hammer y Sirbu (1982). La utilización de la tecnología para mejorar la realización de funciones de oficina. Olson y Lucas (1982). La automatización de oficinas se refiere a la utilización de sistemas integrados de ordenadores y comunicaciones, como soporte a los procedimientos administrativos en un entorno de oficina. Aplicaciones El software de ofimática comprende una serie de aplicaciones que se distribuyen de forma conjunta para ser empleadas simultáneamente en diversos sistemas. Usualmente estas herramientas de ofimática incluyen: Aplicaciones de productividad personal Administradores de bases de datos Hojas de cálculo Procesadores de textos Presentadores de ideas Gráficos Detalle sobre los distintos tipos de apliaciones citados, se encuentran en la página de la "Universidad Nacional de Colombia" 2.2 StarOffice (OpenOffice) Es un conjunto completo (suite) para oficina creado por Star Division, una empresa alemana adquirida por Sun Microsystems. Está compuesta por una serie de aplicaciones de productividad entre las que hay procesador de textos, hoja de cálculo, gestor de bases de datos, programa para crear presentaciones, programa para diseño gráfico, navegador y unos cuantos accesorios más. En sus comienzos fue muy popular dentro de los usuarios de Linux, quienes podían conseguir versiones gratuitas a través de Internet, aunque Star también ofrecía versiones comerciales en CD-ROM. Sun decidió darle un gran impulso y adoptó la filosofia de distribuirla gratuitamente, de manera que actualmente es posible bajarla desde su sitio web Sun, cumpliendo apenas el requisito de dar algunos datos par registrar la copia. StarOffice está disponible en versiones para varios sistemas operativos: Windows, Linux, Solaris y OS/2. Sun también distribuye un CD-ROM que contiene StarOffice en versiones para varios sistemas operativos. La empresa en realidad no cobra por la suite sino por el costo de producir el CD y de imprimir los manuales. Esta suite de oficina, resulta muy típica en cuanto a las aplicaciones que incluye. Sin embargo lo interesante es su origen, pues fue diseñada inicialmente para el sistema operativo Linux, sin embargo tuvo tal acogida entre el público que Star Division decidió crear una versión aparte de la misma para Windows. En la actualidad no se emplea de forma intensiva con este sistema, pero según los expertos, ha logrado salir bien librada de muchas pruebas. La suite está compuesta por varias aplicaciones básicas, más una serie de accesorios bastante útiles. Los componentes del paquete son: StarOffice Desktop: Un escritorio que se superpone al de Windows cuando se ejecuta la suite. StarOffice Writer: Procesador de palabras, muy potente y compatible con MS-Word. StarOffice Web: Navegador muy similiar en su funcionamiento a Explorer 5, aunque con una interfaz diferente. StarOffice Mail: Cliente para correo que puede abrir mensajes de Outlook. StarOffice Calc: Hoja de cálculo muy avanzada, compatible con MSExcel. StarOffice Impress: Herramienta para realizar presentaciones. Es compatible (no totalmente) con MS-PowerPoint. StarDraw: Aplicación para diseño gráfico. Compatible con Corel Draw y muy similar a esta herramienta. StarImage: Programa para edición de imágenes. Puede abrir archivos JPG, GIF, TIFF, BMP, etc. StarOffice Discussion: Lector para mensajes provenientes de grupos de discusión, bien desde Internet o desde la Intranet de una empresa. StarOffice Base: Sencillo gestor de bases de datos, que permite abrir y editar archivos de MS-Access y de otras bases de datos como Oracle. StarMath: Singular aplicación que permite escribir fórmulas matemáticas StarOffice Chart: Aplicación que permite generar gráficos estadísticos, que complementa a StarOffice Calc. StarOffice Schedule: Agenda y calendario que le permite al usuario llevar control de sus actividades profesionales y personales. StarOffice Basic: Herramienta que permite crear macros para las aplicaciones principales de StarOffice. El Proyecto GNU por Richard Stallman publicado originalmente en el libro "Open Sources" La primera comunidad que comparte el software Cuando comencé a trabajar en el Laboratorio de Inteligencia Artificial del MIT en 1971, me incorporé a una comunidad que compartía el software que ya tenía varios años de existencia. El acto de compartir software no estaba limitado a nuestra comunidad en particular; es tan antiguo como las computadoras, de la misma manera que compartir recetas es tan antiguo como cocinar. Pero nosotros lo hacíamos en mayor grado que la mayoría de los otros. El Laboratorio de IA usaba un sistema operativo denominado ITS (Incompatible Timesharing System) [Sistema incompatible de tiempo compartido] que los hackers (1) del staff habían diseñado y escrito en lenguaje ensamblador para la PDP-10 de Digital, una de las más grandes computadoras de la época. Mi trabajo como miembro de esta comunidad, como hacker de sistema en el staff del laboratorio de IA, era mejorar este sistema. No denominábamos "software libre" a nuestro software porque dicho término no existía; pero éso es lo que era. Cuando alguien de otra universidad o compañía deseaba portar y usar un programa, lo permitíamos con gusto. Si usted veía a alguien usando un programa interesante y poco conocido, siempre se podía pedir el código fuente para verlo, de manera que uno podía leerlo, cambiarlo, o canibalizar ciertas partes del mismo para hacer un nuevo programa. (1) El uso de "hacker" para referirse al "quebrantador de la seguridad" es una confusión proveniente de los medios masivos. Nosotros los hackers nos negamos a reconocer dicho significado, y continuamos utilizando la palabra para indicar a "alguien apasionado por la programación y que disfruta al ser hábil e ingenioso". El colapso de la comunidad La situación cambió drásticamente durante la primera parte de los 1980s cuando Digital discontinuó la serie PDP-10. Su arquitectura, elegante y poderosa en los 60s, no se pudo extender naturalmente a los espacios de direccionamiento más grandes que se hicieron factibles en los 80s. Esto significó que prácticamente todos los programas que componían a ITS se volvieron obsoletos. La comunidad de hackers del laboratorio de IA ya se había colapsado, cierto tiempo antes. En 1981, la compañía derivada Symbolics había contratado a casi todos los hackers del laboratorio de IA, y la despoblada comunidad ya no era capaz de mantenerse a sí misma. (El libro Hackers, de Steve Levy, describe estos eventos, y muestra un claro panorama de esta comunidad en sus comienzos.) Cuando el laboratorio de IA adquiere una nueva PDP-10 en 1982, sus administradores deciden utilizar el sistema no libre de tiempo compartido de Digital en lugar de ITS. Las computadoras modernas de esa época, como la VAX o el 68020, tienen sus propios sistemas operativos, pero ninguno de ellos es software libre: usted debe firmar un "acuerdo de no revelar" (nondisclosure agreement) aún para obtener una copia ejecutable. Esto quiere decir que el primer paso para poder utilizar una computadora era prometer que no ayudaría a su vecino. Se prohibía la existencia de una comunidad cooperativa. La regla hecha por los dueños de software propietario era: "si usted comparte con su vecino, usted es un pirata. Si desea algún cambio, ruéguenos para que lo hagamos nosotros". La idea de que el sistema social del software propietario--el sistema que dice que usted no tiene permitido compartir o cambiar el software-- es antisocial, que no es ético, que está sencillamente equivocado, puede ser una sorpresa para algunos lectores. ¿Pero qué otra cosa podríamos decir sobre un sistema que se basa en dividir el público e impide socorrer a los usuarios? Los lectores que se sorprendan por esta idea es porque han tomado el sistema social del software propietario tal como se lo han dado, o porque lo han juzgado en función de los términos sugeridos por las empresas que hacen software propietario. Los publicadores de software han trabajado duro y parejo para convencer a las personas de que solamente hay una manera de ver este tema. Cuando los publicadores de software habla de "hacer valer" sus "derechos" o de "detener la piratería", lo que *dice* es secundario. El mensaje real de estas declaraciones está en las presunciones no declaradas que ellos dan por sentado; se supone que el público debe aceptarlas de manera acrítica. Así que examinémoslas. Una de las presunciones es que las compañías de software tienen un derecho natural incuestionable que las habilita para ser dueñas de un software, y por lo tanto a disponer de poder sobre todos los usuarios del mismo. (Si éste fuera un derecho natural, entonces sin importar cuánto daño le causare al público, no podríamos objetarlo.) De manera muy interesante, la Constitución de los Estados Unidos de América y la tradición legal rechazan esta visión; el copyright no es un derecho natural, sino un monopolio artificial impuesto por el gobierno que limita el natural derecho a copia de los usuarios. Otra presunción no declarada es que la única cosa importante sobre del software es qué trabajo le permite realizar a usted-que a nosotros los usuarios de computadoras no nos debe importar qué clase de sociedad nos permiten tener. Una tercera presunción es que no tendríamos software utilizable (o, que nunca tendríamos un programa para hacer tal o cual trabajo en particular) si no le ofrecemos a una compañía poder sobre los usuarios de dicho programa. Esta presunción puede haber sonado plausible, antes de que el movimiento por el software libre demostrara que podemos hacer abundante software útil sin ponerle cadenas. Si nos resistimos a aceptar dichas presunciones, y juzgamos acerca de estos temas sobre la base moral que nos da el sentido común ordinario y ponemos al usuario en primer lugar, arribaremos a conclusiones muy distintas. Los usuarios de computadoras deben tener libertad para modificar los programas para ajustarlos a sus necesidades, y libertad para compartir el software, porque la base de la sociedad está en ayudar a las otras personas. No se dispone aquí del espacio necesario para explayarnos en el razonamiento que hay detrás de esta conclusión, y por ese motivo pido al lector que vea la página web http://www.gnu.org/philosophy/why-free.es.html. Una elección moral severa. Al desaparecer mi comunidad, se hizo imposible continuar como antes. En lugar de ello, me enfrenté a una elección moral severa. La elección fácil era unirme al mundo del software propietario, firmar los acuerdos de no revelar, y prometer que no iría en ayuda de mi amigo hacker. Es muy probable que desarrollara software que se entregaría bajo acuerdos de no revelar y de esa manera incrementara también las presiones sobre otra gente para que traicionen a sus compañeros. Podría haber hecho dinero de esta manera, y tal vez me hubiese divertido escribiendo código. Pero sabía que al final de mi carrera, al mirar atrás a los años construyendo paredes para dividir a la gente, sentiría que usé mi vida para empeorar el mundo. Ya había estado del lado en que se reciben los acuerdos de no revelar, por experiencia propia, cuando alguien se negó a entregarme, a mí y al Laboratorio de IA del MIT, el código fuente del programa de control de nuestra impresora. (La ausencia de ciertas características en este programa hacía que el uso de la impresora fuera frustrante en extremo.) Así que no podía decirme a mí mismo que los acuerdos de no revelar son inocentes. Me enojó mucho cuando él se negó a compartir con nosotros; no podía ahora cambiarme de lugar y hacerle lo mismo a todos los demás. Otra elección, fácil pero dolorosa, era abandonar el campo de la computación. De esta manera no se usarían mis habilidades para mal, pero aún así se desperdiciarían. Yo no sería culpable por dividir y restringir a los usuarios de computadoras, pero ello sucedería igual. Así que busqué la manera en la cual un programador podría hacer algo para bien. Me pregunté: ¿habrá algún programa o programas que yo pueda escribir, de tal manera de otra vez hacer posible una comunidad? La respuesta era clara: lo primero que se necesitaba era un sistema operativo. Este es el software crucial para empezar a usar una computadora. Con un sistema operativo usted puede hacer muchas cosas; sin uno, ni siquiera puede funcionar la computadora. Con un sistema operativo libre, podríamos tener de nuevo una comunidad de hackers cooperando--e invitar a cualquiera a unírsenos. Y cualquiera sería capaz de utilizar una computadora sin que de movida conspire a favor de la privación de sus amigas o amigos. Como desarrollador de sistema operativo, tengo las habilidades apropiadas para esa tarea. Así que aún cuando no tenía garantías de éxito, me dí cuenta que había sido elegido para hacer ese trabajo. Decidí hacer que el sistema fuese compatible con Unix pues así sería portable, y los usuarios de Unix podrían cambiarse a él con facilidad. El nombre GNU se eligió siguiendo una tradición hacker, como acrónimo recursivo para "GNU's Not Unix". Un sistema operativo es más que un núcleo, apenas suficiente para hacer funcionar otros programas. En los 1970s, todo sistema operativo digno de llamarse así incluía procesadores de órdenes, ensambladores, compiladores, intérpretes, depuradores, editores de texto, programas de correo, y muchos otros. ITS los tenía, Multics los tenía, VMS los tenía, Unix los tenía. El sistema operativo GNU también los incluiría. Más adelante escuché estas palabras, atribuídas a Hillel (1): "Si yo no me preocupo por mí mismo, ¿quién lo hará por mí? Si sólo me preocupo por mí mismo, ¿qué es lo que soy? Si no lo hago ahora, ¿cuándo?" La decisión de iniciar el proyecto GNU se basó en un espíritu similar. (1) Como ateo que soy, no soy seguidor de ningún líder religioso, pero algunas veces encuentro que admiro alguna cosa que dijo uno de ellos. Libre como en libertad El término "free software" [N. del T.: en inglés free = libre o gratis] se malinterpreta a veces--no tiene nada que ver con el precio. El tema es la libertad. Aquí, por lo tanto, está la definición de software libre: un programa es software libre, para usted, un usuario en particular, si: - Usted tiene libertad para ejecutar el programa, con cualquier propósito. - Usted tiene la libertad para modificar el programa para adaptarlo a sus necesidades. (Para que esta libertad sea efectiva en la práctica, usted debe tener acceso al código fuente, porque modificar un programa sin disponer del código fuente es extraordinariamente dificultoso.) - Usted tiene la libertad para redistribuir copias, tanto gratis como por un cánon. - Usted tiene la libertad para distribuir versiones modificadas del programa, de tal manera que la comunidad pueda beneficiarse con sus mejoras. Como "free" [libre] se refiere a libertad y no a precio, no existe contradicción entre la venta de copias y el software libre. De hecho, la libertad para vender copias es crucial: las colecciones de software libre que se venden en CD-ROM son importantes para la comunidad, y la venta de las mismas es una manera importante de obtener fondos para el desarrollo de software libre. Por lo tanto, si la gente no puede incluir un programa en dichas colecciones, dicho programa no es software libre. A causa de la ambigüedad de "free", la gente ha estado buscando alternativas, pero nadie ha encontrado una alternativa apropiada. El idioma inglés tiene más palabras y matices que ningún otro, pero carece de una palabra simple, no ambigüa que signifique "libre", como en libertad--"unfettered" [sin cadenas] es la palabra que más se acerca en significado. Otras alternativas como liberated [liberado], freedom [libertad] y open [abierto] tienen el significado equivocado o alguna otra desventaja. Software GNU y el sistema GNU El desarrollo de un sistema complejo es un proyecto de gran envergadura. Para ponerlo dentro de mi alcance, decidí adaptar y usar las piezas existentes de software libre siempre que fuera posible. Por ejemplo, en los mismos comienzos decidí que TeX sería el principal compaginador de texto; unos pocos años más tarde, decidí que usaría el sistema X Window, en lugar de escribir otro sistema de ventanas para GNU. A causa de esta decisión, el sistema GNU no coincide con la suma de todo el software GNU. El sistema GNU incluye programas que no son software GNU, programas que fueron desarrollados por otras personas y proyectos para sus propios propósitos, pero que nosotros podemos utilizar porque constituyen software libre. El inicio del proyecto En enero de 1984 renuncié a mi trabajo en el MIT y comencé a escribir software GNU. Era necesario abandonar el MIT, para que el MIT no interfiriera con la distribución de GNU como software libre. Si hubiese continuado como parte del staff, el MIT podría haber reclamado propiedad sobre el trabajo, y podría haber impuesto sus propios términos de distribución, o incluso podría haberlo transformado en un paquete de software propietario. Yo no tenía la intención de hacer un trabajo enorme sólo para ver que perdía la utilidad para la cual se había realizado: crear una nueva comunidad para compartir software. Sin embargo, el Profesor Winston, por entonces a cargo del Laboratorio de IA del MIT, me invitó amablemente a que continúe utilizando las instalaciones del Laboratorio. Los primeros pasos Poco después de comenzar en el proyecto GNU, escuché acerca del Free University Compiler Kit [Kit de Compilador de la Universidad Libre], también conocido como VUCK. (La palabra alemana para free comienza con una V.) Se trataba de un compilador diseñado para manejar múltiples lenguajes, C y Pascal entre ellos, y para admitir múltiples máquinas destino. Le escribí a su autor para consultarle si GNU lo podría usar. Él me respondió burlonamente, dejando en claro que la universidad era libre, pero el compilador no. Por lo tanto, decidí que mi primer programa para el proyecto GNU sería un compilador multilenguaje, multiplataforma. Con la esperanza de evitar tener que escribir todo el compilador por mí mismo, obtuve el código fuente del compilador Pastel, que era un compilador multiplataforma desarrollado en el "Lawrence Livermore Lab". Admitía, y estaba escrito en una versión extendida de Pascal, diseñada para usarse como lenguaje de programación a nivel de sistema. Le agregué un front end para C, y comencé a transportarlo a la computadora Motorola 68000. Pero tuve que abandonar la idea al descubrir que el compilador necesitaba varios megabytes de espacio en la pila, y los sistemas Unix basados en 68000 sólo permitían 64 kbytes. Fue entonces cuando me dí cuenta que el compilador Pastel funcionaba analizando el fichero de entrada completo y transformándolo en un árbol sintáctico, luego convertía todo el árbol sintáctico en una cadena de "instrucciones" y luego generaba el fichero entero de salida, y en ningún momento liberaba el espacio ocupado. En ese momento llegué a la conclusión de que debería escribir un nuevo compilador partiendo desde cero. Ese nuevo compilador se conoce ahora como GCC; no hay nada del compilador Pastel en él, pero me las arreglé para adaptar y usar el front end que había hecho para C. Pero eso pasó unos años más tarde; primero, trabajé sobre GNU Emacs. GNU Emacs Comencé a trabajar sobre GNU Emacs en setiembre de 1984, y al principio de 1985 ya empezaba a ser usable. Esto me permitió usar sistemas Unix para las tareas de edición; como no tenía ningún interés en aprender a usar vi o ed, había realizado mis tareas de edición en otras clases de máquinas hasta ese momento. A estas alturas, la gente comenzó a querer usar Emacs, con lo que apareció el tema de cómo distribuirlo. Por supuesto, lo puse en el servidor de FTP anónimo de la computadora del MIT que usaba. (Esta computadora, prep.ai.mit.edu, se transformó a causa de ello en la sede principal de distribución a través de FTP de GNU; cuando fue decomisada unos años después, transferimos el nombre a nuestro nuevo servidor FTP.) Pero en aquella época, mucha gente interesada no estaba en Internet y no podía obtener una copia por FTP. Así que la pregunta era: ¿qué tendría que decirles a ellos? Podría haber dicho, "Busque un amigo que esté en la red y que haga una copia para usted". O podría haber hecho lo que hice con el Emacs para PDP-10 original, decirles: "Envíeme por correo una cinta y un sobre con su dirección y los sellos de correo necesarios, y yo le devolveré la cinta con Emacs dentro". Pero no tenía trabajo, y estaba buscando de qué manera podía hacer dinero con el software libre. Entonces anuncié que le enviaría la cinta a quien me la pidiera, mediante el pago de un cánon de $150. De esta manera, inicié un negocio de distribución de software libre, el precursor de las compañías que en la actualidad distribuyen completos sistemas GNU basados en Linux. ¿Es libre el programa para cualquier usuario? Si un programa es software libre cuando abandona las manos de su autor, esto no significa que será software libre para todos los que tienen una copia de él. Por ejemplo, el software de dominio público (software que no está sujeto al copyright de nadie) es software libre; pero cualquiera puede hacer una versión modificada propietaria a partir de él. En ese mismo sentido, muchos programas libres están sujetos a copyright pero se distribuyen mediante sencillas licencias permisivas que admiten las versiones modificadas propietarias. El ejemplo paradigmático de este problema es el X Window System. Desarrollado en el MIT, y entregado como software libre con un licencia permisiva, fue rápidamente adoptado por varias compañías de computación. éstas agregaron X a sus sistemas Unix propietarios, sólo en formato binario, y lo cubrieron con el mismo acuerdo de no revelar. Estas copias de X eran tanto (software) libres en cuanto lo era el Unix. Los desarrolladores del X Window System no consideraban que esto fuese un problema--esperaban y buscaban que esto sucediese. Su meta no era la libertad, sólo el "éxito", definido como "tener muchos usuarios". No les preocupaba si esos usuarios tenían libertad, sólo que sean numerosos. Esto nos lleva a una situación paradójica en la cual dos maneras distintas de contabilizar la cantidad de libertad dan por resultado dos respuestas distintas a la pregunta "¿Es libre este programa?". Si usted juzga en base a la libertad que se proporcionaba con los términos de distribución de la entrega del MIT, diría que X es software libre. Pero si usted mide la libertad del usuario promedio de X, diría que X es software propietario. La mayoría de los usuarios de X usan las versiones propietarias que vienen con los sistemas Unix, no la versión libre. Copyleft y la GNU GPL La meta de GNU era dar libertad a los usuarios, no sólo ser popular. Por lo tanto, debíamos usar términos de distribución que impidieran que el software GNU se transformara en software propietario. El método que utilizamos se denomina "copyleft".(1) El copyleft usa la ley de copyright, pero la da vuelta para servir a lo opuesto de su propósito usual: en lugar de ser un medio de privatizar el software, se transforma en un medio de mantener libre al software. La idea central del copyleft es que le damos a cualquiera el permiso para correr el programa, copiar el programa, modificar el programa y redistribuir versiones modificadas--pero no le damos permiso para agregar restricciones propias. De esta manera, las libertades cruciales que definen al "software libre" quedan garantizadas para cualquiera que tenga una copia; se transforman en derechos inalienables. Para que el copyleft sea efectivo, las versiones modificadas deben ser también libres. Esto asegura que todo trabajo basado en el nuestro quedará disponible para nuestra comunidad si se publica. Cuando los programadores que tienen trabajo como programadores se ofrecen como voluntarios para mejorar un software GNU, es el copyleft lo que impide que sus empleadores digan: "no puede compartir esos cambios, porque los queremos usar para hacer nuestra versión propietaria del programa". El requerimiento de que los cambios deben ser libres es esencial si queremos asegurar la libertad para cada usuario del programa. Las compañías que privatizaron el X Window System en general realizaron algunos cambios para transportarlo a sus sistemas y hardware. Estos cambios fueron pequeños comparados con el gran tamaño de X, pero no fueron triviales. Si el hacer cambios fuera una excusa para negar libertad a los usuarios, sería fácil para cualquiera tomar ventaja de la excusa. Un tema relacionado trata la combinación de un programa libre con código no libre. Tal combinación será inevitablemente nolibre; cualesquiera libertades que falten a la parte no-libre, le faltarán también al todo. Si se permiten tales combinaciones se abriría un agujero lo suficientemente grande como para hundir el barco. Por ello, un requerimiento crucial para el copyleft es que se tape este hoyo: cualquier cosa agregada a o combinada con un programa bajo copyleft debe ser tal que la versión combinada total sea también libre y bajo copyleft. La implementación específica de copyleft que usamos para la mayoría del software GNU es la Licencia Pública General de GNU (GNU General Public License) o LPG GNU para abreviar. Tenemos otras clases de copyleft que se usan en circunstancias específicas. Los manuales GNU también están bajo copyleft, pero utilizamos un copyleft mucho más simple, porque no es necesaria la complejidad de la LPG GNU para los manuales. (1) En 1984 o 1985, Don Hopkins (un compañero muy imaginativo) me envío una carta por correo. En el sobre, escribió varios dichos divertidos, entre ellos éste: "Copyleft--all rights reversed" [Copyleft--todos los derechos "reversados"]. Utilicé la palabra "copyleft" para denominar al concepto de distribución que estaba desarrollando en esa época. La Fundación para el Software Libre A medida que el interés en el uso de Emacs crecía, otras personas se involucraron en el proyecto GNU, y decicimos que era el momento de buscar fondos nuevamente. Por ello en 1985 creamos la "Free Software Foundation" [Fundación para el Software Libre--FSL], una organización de caridad libre de impuestos para el desarrollo del software libre. La FSL también acaparó el negocio de distribución en cinta de Emacs; más adelante lo extendió al agregar otros productos de software libre (tanto GNU como noGNU) a la cinta, y con la venta de manuales libres. La FSL acepta donaciones, pero la mayoría de sus ingresos han provenido siempre de las ventas--de copias de software libre, y otros servicios relacionados. En la actualidad vende CD-ROMs de código fuente, CD-ROMs con binarios, manuales agradablemente impresos (todos con libertad para redistribuir y modificar), y las Distribuciones De Lujo (en las cuales incorporamos toda la colección de software lista para usar en la plataforma de su elección). Los empleados de la Fundación para el Software Libre han escrito y mantenido una cantidad de paquetes de software GNU. Dos notables casos son la biblioteca C y el shell. La biblioteca C de GNU es lo que usa todo programa que corre en un sistema GNU/Linux para comunicarse con Linux. Fue desarrollada por un miembro del staff de la Fundación para el Software Libre, Roland McGrath. El shell que se usa en la mayoría de los sistemas GNU/Linux es BASH, el Bourne Again SHell(1), que fue desarrollado por Brian Fox, empleado de la FSL. Hemos provisto los fondos para el desarrollo de esos programas porque el proyecto GNU no se queda solamente en herramientas o un entorno de desarrollo. Nuestra meta era tener un sistema operativo completo, y esos programas eran necesarios para esa meta. (1) "Bourne again shell" es una broma sobre el nombre "Bourne Shell", que era el shell usual en Unix. Asistencia para el Software Libre La filosofía del software libre rechaza una práctica específica de negocio ampliamente difundida, pero no está contra el negocio. Cuando los negocios respetan la libertad de los usuarios, les deseamos éxito. La venta de copias de Emacs demostró una clase de negocio con software libre. Cuando la FSL se apropió de ese negocio, necesité de otro medio de vida. Lo encontré en la venta de servicios relacionados con el software libre que había desarrollado. Esto incluía la enseñanza, sobre temas tales como cómo programar GNU Emacs, y cómo personalizar GCC, y desarrollo de software, en la mayor parte transportar GCC a otras plataformas. En la actualidad cada una de esas clases de negocios con software libre está puesta en práctica por una cantidad de corporaciones. Algunas distribuyen colecciones de software libre en CD-ROM; otras venden asistencia en niveles que van desde responder preguntas de usuarios, reparación de errores, hasta el agregado de nuevas características mayores. Incluso estamos viendo compañías de software libre basadas en el lanzamiento de nuevos productos de software libre. Aunque, tenga cuidado--una cantidad de compañías que se asocian a sí mismas con el término "open source" en realidad basan su negocio en software no-libre que trabaja con software libre. Ellas no son compañías de software libre, sino compañías de software propietario cuyos productos tientan a los usuarios a abandonar su libertad. Ellas usan la denominación "valor agregado" lo que refleja los valores que desearían que adoptemos: conveniencia por encima de libertad. Si valoramos más la libertad, deberíamos denominarlos productos con "libertades sustraídas". Metas técnicas La meta principal de GNU era el software libre. Aún en el caso que GNU no tuviese ventajas técnicas sobre Unix, tendría una ventaja social, al permitir cooperar a los usuarios, y una ventaja ética, al respetar la libertad de los usuarios. Pero era natural que se apliquen los estándares conocidos de buenas prácticas al trabajo--por ejemplo, reservar dinámicamente las estructuras de datos para evitar límites de tamaño fijo arbitrarios, y manejar todos lo posibles códigos de 8 bits cuando tuviese sentido. Además, rechazamos el enfoque de Unix para pequeños tamaños de memoria, al decidir que no trabajaríamos para máquinas de 16 bits (era claro que las máquinas de 32 bits serían la norma para cuando el sistema GNU estuviese terminado), y al no hacer ningún esfuerzo para reducir el uso de memoria, a menos que excediera el megabyte. En los programas para los cuales no era crucial el manejo de ficheros muy grandes, incentivamos a los programadores a leer el fichero completo en memoria, y luego explorar su contenido, sin tener que preocuparse por la E/S. Estas decisiones permitieron que muchos programas GNU sobrepasaran a sus contrapartidas UNIX en confiabilidad y velocidad. Computadoras donadas A medida que la reputación del proyecto GNU crecía, la gente comenzó a ofrecer al proyecto donaciones de máquinas con UNIX corriendo. Fueron muy útiles porque la manera más fácil de desarrollar componentes de GNU era hacerlo en un sistema UNIX, y luego ir reemplazando los componentes del sistema uno a uno. Pero ellas trajeron una cuestión ética: si era correcto para nosotros siquiera tener una copia de UNIX. UNIX era (y es) software propietario, y la filosofía del proyecto GNU dice que no debemos usar software propietario. Pero, aplicando el mismo razonamiento que lleva a la conclusión que la violencia en defensa propia está justificada, concluí que era legítimo usar un paquete propietario cuando ello era crucial para desarrollar un reemplazo libre que ayudaría a otros a dejar de usar el paquete propietario. Pero, aún cuando esto era un mal justificable, era todavía un mal. En la actualidad ya no tenemos más copias de Unix, porque las hemos reemplazado por sistemas operativos libres. En los casos en que no pudimos reemplazar el sistema operativo de una máquina por uno libre, se procedió al reemplazo de la máquina. La lista de tareas de GNU A medida que proseguía el proyecto GNU, se desarrollaron o encontraron una cantidad creciente de componentes, y eventualmente se vio la utilidad de hacer una lista con los huecos faltantes. La usamos para reclutar desarrolladores para escribir las piezas faltantes. Esta lista comenzó a conocerse como la lista de tareas de GNU. Además de los componentes Unix faltantes, agregamos a la lista otros útiles proyectos de software y documentación que, de acuerdo a nuestra visión, debe tener un sistema verdaderamente completo. En la actualidad, casi ningún componente Unix queda en la lista de tareas GNU--esos trabajos ya han sido terminados, fuera de algunos no esenciales. Pero la lista está llena de proyectos que algunos pueden denominar "aplicaciones". Cualquier programa que sea atrayente a más de una estrecha franja de usuarios sería una cosa útil para añadir a un sistema operativo. Aún los juegos están incluídos en la lista de tareas--y han estado desde el principio. Unix incluía juegos, así que GNU debía incluirlos también. Pero la compatibilidad no es un problema para los juegos, así que no seguimos la lista de juegos que Unix tenía. En lugar de ello, listamos un espectro de diferentes clases de juegos que les podrían gustar a los usuarios. La LPG para Bibliotecas de GNU La biblioteca C de GNU usa una clase especial de copyleft denominada "GNU Library General Public License" [Licencia Pública General para Bibliotecas de GNU] que da permiso para enlazar software propietario con la biblioteca. ¿Porqué hacer esta excepción? No es una cuestión de principios; no hay ningún principio que diga que debemos incluir código de los productos de software propietario. (¿Porqué contribuir con un proyecto que se rehusa a compartir con nosotros?) El uso de la LPGB para la biblioteca C, o para cualquier otra biblioteca, es un tema de estrategia. La biblioteca C hace un trabajo genérico; todo sistema propietario o compilador viene con una biblioteca C. Por lo tanto, el hacer que nuestra biblioteca esté sólo disponible para el software libre, no le daría al software libre ninguna ventaja-sólo hubiera desalentado el uso de nuestra biblioteca. HAy un sistema que es una excepción a esto: en un sistema GNU (y esto incluye los sistemas GNU/Linux), la biblioteca C de GNU es la única biblioteca C. Así que los términos de distribución de la biblioteca C de GNU determinan si es posible compilar un programa propietario para un sistema GNU. No hay ninguna razón ética para permitir aplicaciones propietarias en un sistema GNU, pero estratégicamente parece que si no se permite, ello hará más para desalentar el uso del sistema GNU que para alentar el desarrollo de aplicaciones libres. Por estas razones es que el uso de la LPG para Bibliotecas es una buena estrategia para la biblioteca C. Para otras bibliotecas, la decisión estratégica necesita considerarse en cada caso particular. Cuando una biblioteca hace un trabajo especial que puede ayudar a escribir cierta clase de programas, y luego entregarla bajo la LPG, limitándola sólo a programas libres, es una manera de ayudar a otros desarrolladores de software libre, al proporcionarles una ventaja contra el software propietario. Considere la GNU Readline, una biblioteca desarrollada para proporcionar la edición en la línea de órdenes para BASH. Readline se entrega bajo la LPG GNU ordinaria, no bajo la LPG para Bibliotecas. De esta manera probablemente se reduce la cantidad de uso de Readline, pero eso no significa pérdida para nosotros. Mientras tanto, al menos una útil aplicación se ha transformado en software libre específicamente para poder usar Readline, y ésa es una ganancia real para nuestra comunidad. Los desarrolladores de software propietario tienen las ventajas que el dinero proporciona; los desarrolladores de software libre necesitan crear ventajas entre sí. Tengo la esperanza de que algún día tendremos una gran colección de bibliotecas cubiertas por LPG que no tengan parangón entre el software propietario, que proporcionen útiles módulos que sirvan como bloques constructivos en nuevo software libre, y que sumen una mayor ventaja para adelantar el desarrollo de software libre. ¿Rascarse una comezón? Eric Raymond dice que "Todo buen trabajo de software comienza con un desarrollador rascándose una comezón personal". Puede que ocurra algunas veces, pero muchas de las piezas esenciales de software GNU se desarrollaron a los fines de tener un sistema operativo libre completo. Vinieron desde una visión y un plan, no desde el impulso. Por ejemplo, desarrollamos la biblioteca C de GNU porque un sistema del estilo Unix necesita una biblioteca C, el shell Bourne-Again (bash) porque un sistema del estilo Unix necesita un shell, y el tar GNU porque un sistema del estilo Unix necesita un programa tar. Lo mismo se aplica a mis propios progamas-el compilador GNU C, GNU Emacs, GDB y GNU Make. Algunos de los programas GNU se desarrollaron para tratar amenazas específicas a nuestra libertad. Por ello, desarrollamos gzip para reemplazar al programa Compress, perdido para nuestra comunidad a causa de las patentes LZW. Proporcionamos fondos para desarrollar LessTif, y más recientemente iniciamos GNOME y Harmony, para lidiar con los problemas causados por cierta biblioteca propietaria (vea más abajo). Estamos desarrollando el GNU Privacy Guard para reemplazar un software popular de cifrado no-libre, porque los usuarios no deben verse obligados a elegir entre privacidad y libertad. Por supuesto, la gente que escribe estos programas se interesa en el trabajo, y varias personas han agregado muchas características para satisfacer sus propias necesidades e intereses. Pero ése no es el motivo por el cual existe el programa. Desarrollos inesperados Al comienzo del proyecto GNU, imaginé que desarrollaríamos el sistema GNU completo, y luego lo entregaríamos completo. No es así como ha sucedido. Como cada componente de un sistema GNU se implementó en un sistema Unix, cada componente podía correr en sistemas Unix, mucho antes de que existiera un sistema GNU completo. Algunos de esos programas se hicieron populares, y los usuarios comenzaron a extenderlos y transportarlos--a las distintas versiones incompatibles de Unix, y algunas veces a otros sistemas también. El proceso hizo que dichos programas sean más potentes, y atrayeran tanto fondos como contribuyentes al proyecto GNU. Pero también demoró el completamiento de un sistema mínimo en funciones por varios años, a medida que el tiempo de los desarrolladores GNU se usaba para mantener esos transportes y en agregar características a los componentes existentes, en lugar de adelantar la escritura de los componentes faltantes. El GNU Hurd En 1990, el sistema GNU estaba casi completo; el único componente importante faltante era el núcleo. Decidimos implementar nuestro núcleo como una colección de procesos servidores corriendo sobre Mach. Mach es un micronúcleo desarrollado en Carnegie Mellon University y luego en la University of Utah; el GNU HURD es una colección de servidores (o "manada de ñus") que corren sobre Mach, y se ocupan de las tareas del núcleo Unix. El inicio del desarrollo se demoró mientras esperábamos que Mach se entregue como software libre, tal como se había prometido. Una razón para elegir este diseño había sido evitar lo parecía ser la parte más dura del trabajo: depurar el núcleo sin un depurador a nivel de código fuente para utilizar. Esta parte del trabajo ya había sido hecha en Mach, y esperábamos depurar los servidores HURD como programas de usuario, con GDB. Pero llevó un largo tiempo hacer esto posible, y los servidores multihilo que se envían mensajes unos a otros han sido muy difíciles de depurar. Hacer que HURD trabaje sólidamente se ha tardado varios años. Alix El núcleo GNU no se iba a llamar originalmente el HURD. Su nombre original era Alix-denominado así a partir de una mujer que era mi amor de aquella época. Ella era administradora de sistema Unix y había hecho notar que su nombre seguía el patrón de nomenclatura común a las versiones de sistema Unix; a modo de broma, le dijo a sus amigos, "Alguien debería darle mi nombre a un núcleo". Yo no dije nada, pero decidí sorprenderla con un núcleo llamado Alix. No se dió de esa manera. Michael Bushnell (ahora Thomas), el principal desarrollador del núcleo, prefirió el nombre HURD, y redefinió Alix para referirse a cierta parte del núcleo--la parte que captura las llamadas del sistema y las gestiona por medio del envío de mensajes a los servidores HURD. Más tarde, Alix y yo nos separamos, y ella cambió su nombre; independientemente, el diseño de HURD se cambió para que la biblioteca C envíe los mensajes directamente a los servidores, y esto hizo que el componente Alix desapareciera del diseño. Pero antes que estas cosas sucedieran, un amigo de ella encontró el nombre Alix en el código fuente de HURD, y se lo mencionó. Así que el nombre cumplió su objetivo. Linux y GNU/Linux El GNU HURD no está listo para el uso en producción. Afortunadamente, está disponible otro núcleo. En 1991, Linus Torvalds desarrolló un núcleo compatible con Unix y lo denominó Linux. Cerca de 1992, al combinar Linux con el sistema no tan completo de GNU, resultó en un sistema operativo libre completo. (La combinación en sí misma dió un considerable trabajo.) Es gracias a Linux que podemos ver funcionar un sistema GNU en la actualidad. Denominamos a esta versión GNU/Linux, para expresar su composición como combinación de un sistema GNU con Linux como núcleo. Desafíos en nuestro futuro Hemos probado nuestra capacidad para desarrollar un amplio espectro de software libre. Esto no significa que somos invencibles o que nada nos puede detener. Muchos desafíos hacen que el futuro del software libre sea incierto; estar a la altura de los mismos requerirá esfuerzos firmes y resistencia, algunas veces durante años. Requerirá la clase de determinación que la gente muestra cuando valora su libertad y no deja que nadie se la quite. Las siguientes cuatro secciones discuten dichos desafíos. Hardware secreto Los fabricantes de hardware tienden cada vez más a mantener las especificaciones de hardware secretas. Esto hace difícil la escritura de controladores libres, y de esa manera, que Linux y XFree86 puedan admitir nuevo hardware. Tenemos sistemas libres completos por hoy, pero no los tendremos mañana si no podemos usar las computadoras del mañana. Existen dos maneras de lidiar con este problema. Los programadores pueden hacer ingeniería reversa para darse cuenta como usar el hardware. El resto de nosotros puede elegir el hardware que admite software libre; a medida que nuestro número crezca, el secreto de las especificaciones se transformará en una política contraproducente. La ingeniería reversa es un trabajo enorme; ¿tendremos los programadores con la suficiente determinación para realizarla? Sí--si hemos construído un fuerte sentimiento de que el software libre es un tema de principio, y de que los controladores no libres son intolerables. ¿Y una gran cantidad de nosotros estará dispuesto a gastar dinero extra, o incluso tiempo extra, para que podamos usar controladores libres? Sí, si se difunde la determinación para tener libertad. Bibliotecas no libres Una biblioteca no libre que corre sobre un sistema operativo actúa como una trampa para los desarrolladores de software libre. Las características atractivas de la biblioteca son el cebo; si usted usa la biblioteca, cae en la trampa, porque su programa no puede ser parte útil de un sistema operativo libre. (Estrictamente hablando, podemos incluir su programa, pero no funcionará sin la biblioteca faltante.) Peor aún, si el programa que usa la biblioteca se hace popular, puede hacer caer a otros programadores incautos dentro de la trampa. La primer instancia de este problema fue el kit de herramientas Motif, allá en los 80s. Aunque aún no había sistemas operativos libres, era claro el problema que Motif iba a causarles más adelante. El proyecto GNU respondió de dos maneras: solicitando a los proyectos individuales de software libre que admitan tanto los widgets del kit libre de herramientas de X como el de Motif, y solicitando a alguien que escriba un reemplazo libre para Motif. El trabajo tomó varios años; LessTif, desarrollado por Hungry Programmers [Programadores hambrientos] tomó la potencia necesaria como para admitir la mayoría de las aplicaciones Motif recién en 1997. Entre 1996 y 1998, otra biblioteca kit de herramientas GUI no libre, denominada Qt, se usó en una sustancial colección de software libre: el escritorio KDE. Los sistemas libres GNU/Linux no podían usar KDE, porque no podíamos usar la biblioteca. Sin embargo, algunos distribuidores comerciales de sistemas GNU/Linux que no eran tan estrictos al adherirse al software libre, agregaron KDE a sus sistemas--produciendo un sistema con más capacidades, pero menos libertad. El grupo KDE instaba activamente a más programadores a usar Qt, y millones de nuevos "usuarios de Linux" nunca escucharon la idea de que había un problema con esto. La situación se presentaba lúgubre. La comunidad del software libre respondió a este problema de dos maneras: GNOME y Harmony. GNOME, el GNU Network Object Model Environment [Entorno Modelo de Objetos en Red de GNU], es el proyecto de escritorio de GNU. En 1997 Miguel de Icaza lo inició, y se desarrolló con aporte de Red Hat Software, para proporcionar capacidades de escritorio similares, pero usando sólo software libre. Tiene también ventajas técnicas, tales como admitir una variedad de lenguajes, no sólo C++. Pero su propósito principal fue la libertad: evitar el uso de cualquier software no libre. Harmony es una biblioteca de reemplazo compatible, diseñada para poder hacer funcionar el software KDE sin usar Qt. En noviembre de 1998, los desarrolladores de Qt anunciaron un cambio de licencia, que cuando se lleve a cabo, hará que Qt sea software libre. No hay manera de estar seguro, pero pienso que esto ocurrió en parte debido a la firme respuesta de la comunidad frente al problema que presentaba Qt cuando no era libre. (La nueva licencia es inconveniente e injusta, así que aún es deseable evitar su uso.) ¿Cómo responderemos a la siguiente biblioteca no libre que nos tiente? ¿Comprenderá la totalidad de la comunidad la necesidad de mantenerse fuera de la trampa? ¿Alguno de nosotros entregará libertad por conveniencia, y generará un importante problema? Nuestro futuro depende de nuestra filosofía. Patentes de software La peor amenaza que enfrentamos proviene de las patentes de software, que pueden colocar a algoritmos y características fuera de los límites del software libre hasta por veinte años. Las patentes del algoritmo de compresión LZW se solicitaron en 1983, y hasta ahora no podemos entregar software libre que produzca GIFs adecuadamente comprimidos. En 1998, se tuvo que quitar de una distribución un programa libre para producir audio comprimido MP3 a causa de la amenaza de un juicio por patente. Existen maneras de tratar con las patentes: podemos buscar evidencia de que la patente no es válida, y podemos buscar maneras alternativas de realizar el trabajo. Pero cada uno de estos métodos trabaja sólo ciertas veces; cuando ambos fallan, una patente puede forzar a que todo software libre carezca de alguna característica que los usuarios desean. ¿Qué haremos cuando esto suceda? Aquellos de nosotros que valoremos el software libre por la libertad nos apegaremos al software libre de cualquier manera. Nos las arreglaremos para tener nuestro trabajo realizado sin las características patentadas. Pero aquellos que valoren el software libre porque esperan que sea técnicamente superior, cuando las patentes lo obliguen a mantenerse atrás, es más probable que piensen que se trata de una falla. Por lo tanto, si bien es útil hablar acerca de la efectividad práctica del modelo "catedral" de desarrollo, y de la confiabilidad y potencia de cierto software libre, no debemos detenernos allí. Debemos hablar acerca de libertad y principio. Documentación libre La mayor deficiencia en nuestro sistema operativo libre no está en el software-- es la falta de buenos manuales libres que podamos incluir en nuestros sistemas. La documentación es una parte esencial de cualquier paquete de software; cuando un paquete importante de software libre no viene con un buen manual libre, ése es un hueco importante. Tenemos muchos de esos huecos en la actualidad. La documentación libre, como el software, es un tema de libertad, no de precio. El criterio para un manual libre es muy parecido al del software libre: es una cuestión de otorgar a los usuarios ciertas libertades. La redistribución (incluso la venta comercial) debe estar permitida, en línea y en papel, de tal manera que el manual pueda acompañar a cada copia del programa. El permiso para modificarlo es también crucial. Como regla general, no creo que sea esencial que las personas tengan permiso para modificar toda clase de artículos y libros. Por ejemplo, no creo que usted o yo estemos obligado a dar permiso para modificar artículos como este, que describe nuestras acciones y nuestra visión. Pero existe una razón particular debido a la cual la libertad para modificar la documentación es crucial para el software libre. Cuando la gente ejercita su derecho a modificar el software, y agrega o cambia características, si son concientes también cambiarán el manual--así proporcionarán documentación precisa y útil con el programa modificado. Un manual que no permite a los programadores ser concientes y terminar el trabajo, no satisface las necesidades de nuestra comunidad. La existencia de algunas clases de límites acerca de cómo se deben hacer las modificaciones no implica problemas. Por ejemplo, el requerimiento de preservar el aviso de copyright del autor original, los términos de distribución, o la lista de autores, están bien. Tampoco trae problemas requerir que la versión modificada incluya un aviso de que fue modificada, e incluso que haya secciones completas que no puedan borrarse o cambiarse siempre y cuando dichas secciones traten temas que no sean de índole técnica. Estas clases de restricciones no son un problema porque no impiden al programador conciente que adapte el manual para ajustarlo al programa modificado. En otras palabras, no impiden a la comunidad del software libre la completa utilización del manual. Sin embargo, debe ser posible modificar todo el contenido *técnico* del manual, y luego distribuir el resultado en todos los medios usuales, a través de todos los canales usuales; si esto no es así, las restricciones obstruyen la comunidad, el manual no es libre, y necesitaremos otro maual. ¿Será que loa desarrolladores de software libre tendrán la conciencia y determinación para producir un espectro completo de manuales? Una vez más, nuestro futuro depende de nuestra filosofía. Debemos hablar acerca de la libertad En la actualidad se estima que hay unos diez millones de usuarios de sistemas GNU/Linux, tales como el Debian GNU/Linux y Red Hat Linux. El software libre ha desarrollado ciertas ventajas prácticas que hacen que los usuarios estén congregándose hacia allí por razones puramente prácticas. Las buenas consecuencias de esto son evidentes: mayor interés en el desarrollo de software libre, más clientes para empresas de software libre, y mayor capacidad para animar a las compañías a que desarrollen productos de software libre, en lugar de productos de software propietario. Pero el interés en el software crece más rápido que la conciencia acerca de la filosofía sobre la cual está basado, y esto crea problemas. Nuestra capacidad de enfrentar los desafíos y amenazas que se describieron más arriba depende de la voluntad de mantenerse firmes del lado de la libertad. Para asegurarnos de que nuestra comunidad tiene esta voluntad, necesitamos esparcir la idea entre los nuevos usuarios a medida que ellos llegan a nuestra comunidad. Pero estamos fracasando en esto: los esfuerzos realizados para atraer nuevos usuarios a nuestra comunidad sobrepasan por lejos a los esfuerzos dedicados a la enseñanza cívica acerca de nuestra comunidad. Necesitamos hacer ambas cosas, y es necesario que mantengamos ambos esfuerzos balanceados. "Open Source" La enseñanza acerca de la libertad a los nuevos usuarios se hizo más difícil en 1998, cuando una parte de la comunidad decidió dejar de usar el término "software libre" y usar "open source software" en su lugar. Algunos de los que favorecieron este término tenían como objetivo evitar la confusión de "free" con "gratis"--una meta válida. Otros, sin embargo, apuntaban a apartar el espíritu de principio que ha motivado el movimiento por el software libre y el proyecto GNU, y resultar así atractivos a los ejecutivos y usuarios comerciales, muchos de los cuales sostienen una ideología que pone las ganancias por encima de la libertad, de la comunidad, y de los principios. Por lo tanto, la retórica de "open source" se centra en el potencial de realización de potente software de alta calidad, pero esquiva las ideas de libertad, comunidad y principio. Las revistas sobre "Linux" son un claro ejemplo de esto--están llenas de propagandas acerca de software propietario que funciona sobre GNU/Linux. Cuando aparezca la próxima Motif o Qt, ¿incentivarán estas revistas a los programadores a apartarse de ellas, o pondrán propagandas de las mismas? El apoyo de las empresas puede contribuir a la comunidad de varias maneras; si todo lo demás se mantiene igual, esto es útil. Pero si ganamos su apoyo mediante el recurso de hablar menos de libertad y principio esto puede ser desastroso; hace que empeore el desbalance previo entre el alcance y la educación cívica. "Software libre" y "open source" describen la misma categoría de software, más o menos, pero dicen diferentes cosas acerca del software, y acerca de los valores. El proyecto GNU continúa utilizando el término "free software" [software libre] para expresar la idea de que la libertad, no solamente la tecnología, es lo importante. ¡Pruébelo! La filosofía de Yoda ("No hay 'para probar'") suena linda, pero no funciona conmigo. He realizado la mayor parte de mi trabajo con ansiedad por saber si podría llevarlo a cabo, y con la inseguridad de que no sería suficiente alcanzar la meta si lo lograba. Pero lo intenté igual, porque no había otro entre el enemigo y mi ciudad. Para mi propia sorpresa, algunas veces he tenido éxito. Algunas veces he fallado; algunas de mis ciudades han caído. Luego he encontrado otra ciudad amenazada, y me preparé para otra batalla. A lo largo del tiempo, aprendí a buscar las amenazas y ponerme entre ellas y la ciudad, y llamar a otros hackers para que se unan a mí. En la actualidad, con frecuencia no soy el único. Es un consuelo y un placer cuando veo un regimiento de hackers excavando para mantener la trinchera, y caigo en cuenta que esta ciudad sobrevivirá--por ahora. Pero los peligros son mayores cada año que pasa, y ahora Microsoft tiene a nuestra comunidad como un blanco explícito. No podemos dar por garantizado el futuro en libertad. ¡No lo dé por garantizado! Si usted desea mantener su libertad, debe estar preparado para defenderla. Por favor envíe sus preguntas (en inglés) sobre FSF & GNU a [email protected]. También hay otras maneras de contactar a la FSF. Por favor envíe comentarios (en inglés) sobre estas páginas a [email protected], envíe otras preguntas (en inglés) a [email protected]. Copyright (C) 1998 Richard Stallman Está permitida la copia textual y distribución de este artículo en su totalidad por cualquier medio, siempre y cuando esta nota se preserve. Actualizado: $Date: 2003/02/18 20:33:43 $ $Author: luferbu $ Traducción: César Ballardini (Argentina) <[email protected]> - César Villanueva (Venezuela) <[email protected]> Oscar Mendez Bonilla (México) <[email protected]> Coordinación: - Hugo Gayosso <[email protected]> Revisión: - Ramsés Morales (Panamá) Actualizada: 30 Nov 1999 Cesar Javier Bolaños Vizcarra (México) <[email protected]> Actualizada: 08 Feb 2003 Luis Bustamante 2.3 Editor de textos Los editores o procesadores de texto son unos de los programas más importantes y necesarios en la utilización de cualquier ordenador personal. Elegir el más adecuado depende de la experiencia y pretensiones de los usuarios. La posibilidad de escribir largos o repetitivos documentos, corregirlos, modificarlos e imprimirlos es una ventaja sustancial del PC sobre la máquina de escribir. Los procesadores o tratamientos de textos son programas de usuario que permiten realizar todas las operaciones necesarias para crear, guardar, recuperar, modificar e imprimir un texto. Al escribir con un procesador de textos, no hay que preocuparse del final de la línea, ni tampoco del final de la página, ya que el programa pasa automáticamente a la línea siguiente o a la hoja siguiente cuando una esté completa. El propio procesador delimitará el tamaño de la hoja, líneas por página. Mediante sencillos procedimientos podemos mover, borrar, subrayar o repetir párrafos, frases y palabras dentro de un texto. Una vez finalizada la manipulación del documento, podemos guardarlo en un soporte magnético u óptico, imprimirlo o ambas cosas. (Cuando se edita o crea un texto, éste reside en la memoria interna, luego solo permanece temporalmente, perdiéndose al desconectar el equipo. Para evitar la pérdida, antes debe guardarse en un soporte, si deseamos conservarlo). Los procesadores tienen acceso y comunicación con otros programas: bases de datos, hojas de cálculo, diccionarios, otros archivos, etc, aunque esto ya no es imprescindible en los entornos Linux o Windows, dada las facilidades que ofrecen para la interrelación entre programas. Todos los procesadores de textos permiten establecer cabeceras y piés de página, definir la anchura del documento, el número de caracteres por línea, definir longitud de páginas, marcar márgenes y tabuladores, mover, copiar o borrar bloques de textos, definir atributos de texto (negrita, subrayado ...).También ofrecen la posibilidad de crear de forma sencilla tablas, gráficos, dibujos e insertar incluso imágenes. Es normal la la posibilidad de visualizar el documento en pantalla en su formato definitivo, es decir tal y como va a imprimirse. Esta muestra previa es muy interesante para comprobar su aspecto final sin necesidad de imprimirlo; se conoce como WYSIWYNG (se obtiene lo que se ve). Respecto a la seguridad, guardan automáticamente una copia del documento anterior; otros tienen claves de acceso (PASSWORD) que protegen el texto, permitiendo su manipulación sólamente a los usuarios que conozcan la contraseña. Sin embargo Microsoft WORD tiene niveles de seguridad muy deficientes. Los procesadores de texto bajo Windows tienen la posibilidad de disponer de los tipos de letras de Windows, aunque es el tipo de impresora la que realmente determina la variedad que se puede utilizar. Los procesadores actuales cuentan con programas auxiliares como los diccionarios ortográficos, de sinónimos o bilingües. Los ortográficos sirven para revisar el documento completo o páginas detectando los errores de mecanografía y faltas de ortografía. Los de sinónimos (tesauros) permiten consultar posibles alternativas a una palabra. Los diccionarios bilingües permiten buscar la palabra en otro idioma. Otras posibilidades hasta hace poco tiempo consideradas como avanzadas son: editores de fórmulas, posibilidad de definir macros, sombreados de marcos, escritura en columnas. Es también muy importante la existencia de una ayuda lo más sencilla y completa posible que evite la consulta constante del manual. Algunos programas incluyen discos tutores y libros de aprendizaje con ejemplos. Otros programas interesantes son los comprobadores de estilo que comparan los textos con una serie de reglas gramaticales. Detectan errores de puntuación, mayúsculas, palabras repetidas, palabras en desuso. Los procesadores de textos son programas de usurario que permiten realizar todas las operaciones necesarias para crear, guardar, recuperar, modificar e imprimir un texto. Un poco de historia sobre TEX La aparición de las computadoras ha introducido a los autores de artículos, informes o libros científicos (o a sus secretarios/as) en el mundo de la edición. La edición de trabajos en la mayor parte de las disciplinas de carácter humanístico-lingüístico no presenta dificultades importantes. Sin embargo en textos científicos de matemáticas, física, etc. la situación es diferente debido a la necesidad de usar fórmulas o gráficos complicados. Hasta hace bien poco tiempo era frecuente encontrar trabajos mecanografiados con las fórmulas escritas a mano. Con la llegada de los ordenadores personales y el uso de sistemas que operan en un entorno gráfico (Windows, Mac, X-Windows,...) algunos de esas dificultades han quedado obsoletas, pero han aparecido otras: La gran variedad de editores existentes en el mercado, con las ventajas parciales de unos y otros o las preferencias de los autores, dificulta el intercambio de originales, incluso aunque los autores trabajen sobre un mismo sistema operativo. La frenética (e interesada) carrera de las "versiones" o la existencia (cuando están disponibles) de "conversores" que nunca acaban de funcionar satisfactoriamente, no contribuye a mejorar el panorama. La posibilidad de intercambio de originales entre autores que utilizan entornos operativos diferentes (MSDOS, OSDOS, UNIX, VMS, MAC,..) es prácticamente inexistente. En el mejor de los casos será posible exportar a un formato "solo texto" con el coste de reducir las prestaciones del editor a las de una vulgar máquina de escribir. El hecho de la creciente globalización que en nuestro mundo se da en todos los ámbitos de la actividad humana, requiere y genera recursos de interconectividad, trabajo en equipo (a veces desde lugares geográficamente alejados), etc. Pero las enormes posibilidades que hoy existen para la interconectividad de los ordenadores a través de las redes locales o internacionales tiene como handicap lo expresado en los dos puntos anteriores. Incluso en el limitado ámbito del "sólo texto", quienes han tenido alguna experiencia conocen bien que los caracteres con algún tipo de acento se comportan de forma impredecible al viajar por las redes. En los años 1970 la American Mathematical Society encargó a Donald E. Knuth, profesor de la Universidad de Stanford, la creación de un sistema para escribir textos científicos (especialmente matemáticos), que fuera cómodo y transportable entre plataformas. A partir de las ideas de Gutemberg y utilizando las computadoras como herramientas, Knuth creó el TeX que muchos consideran ahora como la aportación más importante habida en este campo desde la imprenta de Gutemberg. Prácticamente el cien por cien de los departamentos de matemáticas en todas las universiades utilizan TeX para escribir en sus publicaciones y trabajos científicos, buena parte de las revistas mas importantes especializadas en matemáticas utilizan TeX (desde luego todas las que publica la AMS) y algunas solo publican originales que les sean remitidos en este formato. Los ficheros con formato TEX viajan constantemente por las redes informáticas de todo el mundo como mensajeros de investigaciones realizadas y resultados científicos obtenidos. Implementado inicialmente en máquinas grandes con sistema propio, el TeX fue posteriormente compilado en los diferentes plataformas y sistemas. Comercializado durante el tiempo necesario para amortizar la inversión, Donald E. Knuth y la American Mathematical Society pusieron de forma gratuita el programa fuente a disposición de la comunidad científica internacional. Siguiendo su ejemplo, muchas personas han contribuido (y contribuyen) desinteresadamente a implementar módulos adicionales al programa original. Hay incluso una asociación de usuarios de TeX la "TeX Users Group" para intercambiar información sobre problemas comunes y soluciones. En colaboración con ellos la AMS publica desde 1980 una revista llamada TUGboat sobre estos temas. Actualmente está en fase de elaboración, entre todos los usuarios que deseen participar, la versión 3 del dialecto LaTeX , el más extendido de los dialectos del TeX, coordinada por un equipo "The LaTeX team" que pone libremente a disposición de la comunidad científica, semestralmente en servidores Internet, los progresos que se van realizando con las ideas y colaboraciones de todos. La aproximación asintótica a esa versión 3 se llama LaTeXe. El TeX es un compilador, no es un editor de textos. De hecho, los autores pueden emplear para crear los textos TEX su editor preferido y esa facilidad también ha contribuido a su difusión. 2.4 Hojas de cálculo Las hojas de cálculo (hojas electrónicas) nacieron cuando surgió la necesidad de adaptar los sistemas de planificación utilizados en los grandes ordenadores a los nuevos microordenadores. Son una combinación de calculadora, lápiz y papel, que unido a la potencia y capacidad de almacenar datos de los ordenadores, las convierten en una herramienta de primerísima importancia en el mundo empresarial. La primera hoja de cálculo (Visicalc) nació en 1977 de una idea de un estudiante, Dan Bricklin, de administración de empresas de la Universidad de Harvard (EE.UU.). Los cálculos empresariales manejan unas cantidades de datos que suelen variar dependiendo de los supuestos, por lo que hasta la invención de la hoja electrónica se había desechado aplicar la informática a ese entorno de trabajo, donde cada caso originaría un programa distinto. La hoja de cálculo se presenta como una tabla o matriz de dos dimensiones (actualmente ya existen de tres) que consta de un número de filas y columnas variable según el modelo del que se trate. (Ej. en LOTUS 123, una de las primeras, tiene 8192 filas y 256 columnas, en total más de 2000000 de celdas). Las filas son los datos horizontales y las columnas los verticales. El lugar donde se produce la intersección de una fila y una columna se denomina celda. Las columnas habitualmente se nombran con letras (A,B, ... AA, AB, ....) y las filas desde 1 en adelante. http://www.um.es/docencia/barzana/IATS/Iats2003_04_2.html 1.9.4 Las aplicaciones. 1.10 . Tipos de computadoras y sus dispositivos Tipos de Computadoras: Computadoras analogicas: Son aquellas que representan los valores cambiantes dados por un proceso de variacion continua. Ejemplo: El voltaje en un circuito. Computadoras digitales: Son aquellas que representan los valores que han sido convertidos a digitos binarios, es decir en 0 y 1. La mayoria de las computadoras trabajan bajo el sistema binario. Computadora Hibrida: Son una combinacion entre las computadoras analogicas y las digitales. Se utilizan sobre todo para el control de procesos y robotica. Categorias de las computadoras: Supercomputadora: Son computadoras de gran procesamiento de datos en un tiempo record. Dentro de las categorias de las computadoras, es la más costosa por lo que su comercializacion es minima. Son utilizados por organismos gubernamentales, industrias petroleras y organismos de investigacion cientifica. Mainframe: Esta categoria de computadora permite un sistema de computo de gran tamaño y gran velocidad. Son utilizadas por grandes corporaciones, universidades y sirven para prestar a miles de usuarios. Minicomputadora: Es como un mainframe, pero de menor coste de manutencion. Actualmente ha ido desapareciendo del mercado. Microcomputadora: Son computadoras que contienen como procesador un solo chip. Dentro de estas categorias de computadoras existen unas tan modernas y poderosas como la maxicomputadora, ademas cuentan con la ventaja de que son de menor tamaño y más economica. Se les conoce en el mercado como computadora personal o PC. http://lenguajes-de-programacion.com/tipos-de-computadoras.shtml Unidad 2. Utilización de las tecnologías de la información y de comunicación 2.4 Las Telecomunicaciones y el trabajo distribuido y colaborativo. 2.4.1 Datos y sus formatos de presentación (texto, gráfico, audio, video) Microsoft Office es la suite ofimática creada por Microsoft y la más utilizada en la actualidad. Funciona bajo los sistemas operativos Microsoft Windows y Apple Mac OS. Ademas de aplicaciones incluye servidores y servicios basados en Web. Microsoft Office es considerado el estandar de facto en programas de productividad y tiene muchas caracteristicas no presentes en otras suites. Aunque lo contrario tambien es cierto, otros programas tienen características que Office no posee. Microsoft Office incluye: Microsoft Word (procesador de texto) Microsoft Excel (planilla de cálculo) Microsoft Powerpoint (programa de presentaciones) Microsoft Access (programa de bases de datos) Microsoft Outlook (agenda y cliente de correo electrónico) Microsoft Frontpage (editor de páginas web visual) Microsoft Photo Editor (editor fotográfico) Microsoft InfoPath Microsoft OneNote Microsoft Project Microsoft Publisher Microsoft Visio http://es.wikipedia.org/wiki/Microsoft_Office OpenOffice.org (no OpenOffice, debido a una disputa de marcas), es un proyecto basado en el código abierto para crear una suite ofimática. Es multiplataforma, existe entre otros para Microsoft Windows, GNU/Linux, Solaris y Mac OS X. Deriva a su vez de una versión comercial, StarOffice de Sun Microsystems todavía existente. Las más recientes versiones de StarOffice están basadas en el código base de OpenOffice.org; de forma similar a la relación existente entre Netscape Navigator y Mozilla. La primera versión fue liberada el 2 de mayo de 2002. Competencia Está diseñado para competir con el líder en el mercado, Microsoft Office, por lo que tiene un cierto aire similar. Es bastante compatible con los formatos de fichero de Microsoft Office, ya que puede leer directamente los archivos creados con dicha suite ofimática, aunque tiene su propio formato de archivos basado en el estándar XML. La compresión tras la creación del documento en XML es menor que los archivos equivalentes de Microsoft Office. Writer 1.1.0 Herramientas incluidas Writer, un procesador de texto, Editor, para la creación de HTML, Calc, para manejar hojas de cálculos, Draw, para dibujos, con posibilidad de exportar al formato estándar SVG, Impress para presentaciones visuales, Math editor para fórmulas matemáticas. OpenOffice.org se integra además con bases de datos como MySQL y PostgresSQL, con una funcionalidad similar o superior a Microsoft Access. Sun está incluyendo OpenOffice.org con GNOME, aunque este entorno gráfico intenta crear una suite similar con Gnome Office. http://es.wikipedia.org/wiki/OpenOffice.org Gnome Office es una suite ofimática desarrollada por el Proyecto libre Gnome. Que la componen las siguientes aplicaciones: AbiWord - Procesador de textos Gnumeric - Hoja de calculo GnomeDB - Aplicacion gestora de base de datos Gimp - Aplicacion para manipular graficos Ademas de otras aplicaciones pendientes de anexionarse al proyecto como puede ser Magic Point que es un editor de presentaciones. El proyecto Gnome Office es un tanto expecial porque ademas de las aplicaciones desarrolladas por ellos mismos com puede ser Gnumeric, hay otras como por ejemplo Gimp que han sido adoptadas en el proyecto por eso es una suite un tanto hetereogenea incluso en el nombre que no empieza con las mismas silabas com puede ser por ejemplo en la suite offimatica OpenOffice que comienzan todas con Open. Aunque todas las que forman Gnome Office tienen un rasgo comun y es que usan las librerias Gtk. De un tiempo para aca (2005) el proyecto Gnome Office esta sufriendo una serie de incidencias por la aparcion de OpenOffice que es otra suite ofimática libre, porque ademas de ser una competidora mas, esto influye en que nuevos desarrolladores de software libre tienen mas opciones donde unirse a un proyecto y por parte de los usuarios finales que les resulta mas estetico una suite que tiene semejantes GUI para todas sus aplicaciones. Aunque tambien KDE el proyecto competidor y amigo de Gnome ha sufrido tambien esta misma incidencia en su suite ofimática Koffice. Pero todo esto es bueno porque en el campo del software libre como en otros campos de la sociedad humana es bueno para su salud que haya competencia, y en este caso ademas es una competencia amigable. Pero todo no son problemas porque una de las principales caracteristicas por la que se diferencia de sus competidoras es que es muy apta para equipos escasos de recursos porque no consume muchos ciclos de CPU, ni de memoria. Aunque no es tan multiplataforma como pueden ser sus competidoras, o por lo menos en parte porque debido a la hetereogenidad de las aplicaciones que lo componen si se puede encontrar en otros sistemas fuera de Linux como puede ser por ejemplo Gimp o Abiword que esta practicamente en todas las plataformas. http://es.wikipedia.org/wiki/Gnome_Office Corel es una compañía canadiense desarrolladora de software. Fundada en 1985 por Michael Cowpland, que fue su presidente hasta el año 2000 Software Diseño Gráfico La firma Corel es conocida internacionalmente por su programa de dibujo vectorial Corel_Draw, y el retoque fotográfico PhotoPaint, comercializados conjuntamente. Sus competidores son Adobe_Photoshop, Adobe_Illustrator y Macromedia_Freehand. Ofimática: WordPerfect También está presente en el sector de la ofimática, aunque muy por detrás en cuota de mercado que Microsoft Office, con su Corel WordPerfect Office. Esta suite ofimática integra el procesador de textos WordPerfect (anteriormente una compañía independiente), la hoja de cálculo QuattroPro y la base de datos Paradox (antes perteneciente a Borland). Corel y Linux Durante 1999-2000 lanzó varios productos para Linux, entre ellos Corel_Draw y WordPerfect. También creó su propia distribución de Linux, basada en Debian y actualmete comercializada por Xandros. A partir de 2001 Corel dejó de comercializar sus productos Linux Acuerdos con otras compañías En 1996 compró el departamento de ofimática de Novell, es decir WordPerfect, para crear Corel WordPerfect Office Tras cancelarse el proyecto de fusión con Borland, firmó un acuerdo con Microsoft en 2001 En 2003 , Corel fue comprada por Vector Capital http://es.wikipedia.org/wiki/Corel 2.4.2 Medios de transmisión (fibra óptica, microondas) Se entienden por Medios de Transmisión los materiales físicos que son usados para transmitir datos entre las computadoras. Ligadas por medio de cables de los que hay 3 clases: Trenzado ((líneas telefónicas) Ventaja: fácil de empalmar de bajo precio Desventaja: Sujeto a interferencias como la estática y los ruidos Coaxial (alambre redondo aislado) Ventaja: No susceptible a interferencias Transmite más rápido Desventaja: Pesado y voluminoso Necesidad de un reforzador según la distancia Línea de Fibra óptica (glass fibers) Ventaja: Más pequeña Liviana Rápida (velocidad de la luz!) No hay interferencias Desventaja: De alto precio Difícil para instalar o modificar Para distancias más largas entran en juego o cuándo cables no son prácticos, otros medios de transmisión. Para entender las comunicaciones de hoy en día, es necesario comprender algunos aspectos de la naturaleza que nos rodea. Si observamos la naturaleza estamos rodeados de fenómenos que involucran el concepto de ondas, desde la simpleza de una nota musical hasta la luz de las estrellas que llega a nuestros ojos. Como podrá adivinar, quienes realmente dominan este campo son los físicos, a nosotros nos basta con saber que las ondas pueden ser emitida por una fuente, que viaja a cierta velocidad (dependiendo de la frecuencia de la onda) y que son susceptibles de ser captadas por un receptor. Sin cable (infrarrojo, luz, radio) Ventaja: Flexible Portátil Desventaja: Más lento Sujeto a interferencias Microondas (Microwave) Ventaja: Velocidad de la luz Usa unos pocos lugares Desventaja: Se propagan solamente en la línea visual Satélite Ventaja: Siempre a la vista Desventaja: Posicionamiento y descenso muy caros 2.4.3 Conectividad (redes locales, red. Internet. ¿Para que sirve una red local? Básicamente para compartir información y recursos, tanto hardware como software. Como ejemplos más concretos podemos citar el poder imprimir en una impresora que está conectada a otro ordenador o directamente a la red como si fuera nuestra propia impresora, o conectarnos a internet a través de un router mediante una línea RDSI sin necesidad de tener en ninguna estación de trabajo ni modem ni línea telefónica. También nos servirá para jugar una carrera de coches entre varios compañeros, sin necesidad de compartir el teclado o el monitor, utilizando cada uno su própia máquina, o para compartir información a través del correo electrónico, o compartir una base de datos en modo multiusuario, de tal manera que varios usuarios puedan estar modificándola al mismo tiempo. ¿Necesito un servidor para tener una red local? No, pero debemos distinguir entre dos tipos de redes. Las "entre iguales" (peer to peer) y las basadas en servidor. Cada una de ellas tiene ventajas e inconvenientes. Incluso entre las basadas en servidor podemos diferenciar si se trata de servidor dedicado o no. En el caso de servidor dedicado, deberemos tener claro que dicho ordenador no se podrá utilizar como una estación de trabajo más, y en muchos casos dicha máquina no contará ni siquiera con teclado o monitor. Evidentemente para entornos domésticos la que más nos va a interesar va a ser la primera, ya que permite mayor flexibilidad y menor coste, y no requiere una administración centralizada, sino distribuida. Este tipo de redes se pueden montar simplemente con máquina que tengan instalado cualquier versión de Windows desde la 3.11 para trabajo en grupo. En el caso de redes basadas en servidor, las estaciones de trabajo no pueden compartir información entre sí, y todos los recursos están controlados directamente por el o los servidores. Estas redes pueden estar basadas en Windows NT Server, Novell Netware o Unix principalmente. ¿Que necesito para "montar" una red ? Como ya hemos empezado a apuntar, necesitaremos pensar primero en la parte correspondiente al hardware, y posteriormente al software y a su configuración. En la parte hardware necesitaremos, como mínimo de una tarjeta de red para cada estación de trabajo y de un cable con sus correspondientes conectores para cada uno de ellos. En este artículo sólo vamos a tratar las redes Ethernet, ya que se han convertido en las más utilizadas gracias a su universalidad. En este apartado deberíamos empezar a hablar ya de topologías para ver cual es la más adecuada a nuestro caso. Vamos a hablar sólo de las topología en bus y en estrella que son las más utilizadas. La topología en bus nos será bastante útil en el entorno doméstico, ya que requiere de menos cantidad de cable y no es necesario ningún concentrador o "hub". En este caso, el estandar más utilizado es el basado en las especificaciones 10base2, que utiliza cable coaxial fino (thin coax) y conectores BNC. Además, necesitaremos unos conectores en forma de "T" que permitirán unirnos por un lado a la anterior máquina dentro del bus y por el otro a la siguiente. Por contra, en entornos empresariales, la topología en estrella es la más conveniente, ya que la centralización de toda la red en un único punto permite que un fallo que se manifieste en una estación de trabajo no afecte al resto de la red, facilitándonos la labor de detección del problema y su posterior resolución. El tipo de red más habitual es 10base-T (10 Mbps) o 100base-TX (100 Mbps o Fast Ethernet), utilizando conectores RJ-45 y cable de pares trenzados (UTP) de categoría 3 para el primero y categoría 5 para el segundo. También necesitaremos de un hub con el número de "bocas" suficientes para conectar todas las máquinas. Así pues si compramos uno de 8 salidas podremos conectar como mucho 8 máquinas en nuestra red. Si en un futuro el numero de máquina a conectar excede de este número, será suficiente con comprar otro y conectarlo al primero. Si optamos por contruir una red a 100 Mbps, necesitaremos que tanto las tarjetas de red (100base-TX) como el cableado (categoría 5) como el hub soporten tal ancho de banda. Un caso especial es la conexión de sólo 2 ordenadores, ya que únicamente necesitaremos un sólo cable que los una, independientemente del tipo de red. En este caso concreto recomendamos que utiliceis las especificaciones explicadas en la topología en estrella. La única precacución y sólo hablando de pares trenzados será la de tener un cable "cruzado". Por si teneis problemas en encontrar este tipo de cables paso a detallaros como contruir uno: Nº de Pin Nº de Pin (Tx+) 1 ---- 3 (Rx+) (Tx-) 2 ---- 6 (Rx-) (Rx+) 3 ---- 1 (Tx+) (Rx-) 6 ---- 2 (Tx-) Otra manera de resolver éste problema de una forma más económica es utilizando un cable paralelo también cruzado que conecte ambas máquinas. Para ello deberemos utilizar la "Conexión directa por cable" que viene implementada en Windows 95 y 98 (En "Programas-accesorios-comunicaciones"). Si no la tenemos instalada, procederemos a su instalación desde "Panel de ControlAgregar o quitar programas-Instalación de Windows". Aqui os detallamos como efectuar las conexiones para crear tal cable. Recordad que necesitais dos conectores DB-25 machos y una manguera con por lo menos 15 cablecillos: Nº de Pin Nº de Pin (Data Bit 0) 2 ---- 15 (Error) (Data Bit 1) 3 ---- 13 (Select) (Data Bit 2) 4 ---- 12 (Paper Out) (Data Bit 3) 5 ---- 10 (Acknowledge) (Data Bit 4) 6 ---- 11 (Busy) (Acknowledge) 10 ---- 5 (Data Bit 3) (Busy) 11 ---- 6 (Data Bit 4) (Paper Out) 12 ---- 4 (Data Bit 2) (Select) 13 ---- 3 (Data Bit 1) (Error) 15 ---- 2 (Data Bit 0) (Reset) 16 ---- 16 (Reset) (Select) 17 ---- 17 (Select) (Signal Ground) 25 ---- 25 (Signal Ground) Otro aspecto a consideras es el bus a utilizar. Si nuestra máquina posee bus PCI este es el más adecuado. Si no fuera así deberemos conformarnos con utilizar una tarjeta ISA. En el caso de los ordenadores portátiles deberemos optar por instalar una tarjeta PCMCIA o PC Card como se denominan ahora. Por último será interesante que la tarjeta cuente con tecnología Plug and Play que nos facilitará mucho la instalación. http://pchardware.org/redes.php ¿Qué son las Redes de ordenadores? Una red de ordenadores es un conjunto de equipos informáticos interconectados con el objeto de poder compartir información y recursos entre ellos. Además de ordenadores, se pueden conectar impresoras, modems, concentradores (hubs), encaminadores (routers), interruptores (switchs), etc... Ventajas de las Redes informáticas Las redes de ordenadores permiten compartir recursos e información, con el objeto de abaratar costes, facilitar el trabajo en grupo... En particular: compartir archivos y programas compartir impresoras compartir un acceso a internet enviar y recibir correo electrónico usar bases de datos compartidas gestionar eficazmente la seguridad de los equipos realizar copias de seguridad centralizadas Tipos de Redes Locales Según el ámbito territorial que ocupe una red, podemos distinguir: LAN: Red de área Local (Local Area Net) Redes que abarcan una o varias salas, incluso en diferentes plantas de un mismo edificio o en edificios cercanos. MAN: Red de área Metropolitana (Metropolitan Area Net) Redes que conectan equipos situados en diferentes puntos de un núcleo urbano.. WAN: Red de área Amplia (Wide Area Net) Redes que incluyen ordenadores de diferentes provincias o incluso países. Las LAN y MAN suelen interconectarse mediante cables de cobre (categorías 5 ó6), auqnue también existen redes inalámbricas; se puede usar fibra óptica para conectar las centralitas, pero de ahí hasta los domicilios de cada usuario se usa cable de cobre. Las WAN pueden interconectarse mediante fibra óptica, cables subterráneos o submarinos, enlaces vía satélite, etc... Arquitecturas Cliente-Servidor y Peer To Peer Cliente-Servidor Se denomina Servidor al ordenador que presta servicios a los demás, es decir, el que comparte sus recursos o gestiona la información que le piden los demás. Clientes son los ordenadores que piden recursos o información al servidor. Peer To Peer (P2P) Estas redes no son centralizadas, sino que cada PC puede funcionar como cliente en unos casos y servidor en otro. La arquitectura cliente-servidor es más interesante en algunos casos, como la publicación de páginas web o correo electrónico, aunque los servicios sólo se prestan mientras el servidor esté funcionando correctamente. Para que un ordenador pueda ofrecer sus servicios a otro, debe estar ejecutando un programa también llamado servidor. Del mismo modo, los ordenadores ciente sólo pueden acceder a un servidor mediante un programa cliente. Los ordenadores que actúan como servidores deben ser más potentes, rápidos y con mejores prestaciones que los demás, ya que deben trabajar para varios clientes simulténeamente. De lo contrario, los servicios serían prestados muy lentamente o de forma defectuosa. En el caso de redes P2P, si alguno de los ordenadores no funciona, los demás podrán seguir intercambiando sus recursos. Ambas arquitecturas pueden usarse simultáneamente en la misma red. ¿Qué se necesita para montar una red local? Por supuesto, varios ordenadores, al menos 2. :-). Además: Tarjetas de red (Una por cada PC) Cables con clavijas RJ-45 (uno por cada PC) Concentrador (hub) o Switch (uno con suficientes conexiones para todos los PCs) Software de red (protocolos, programas clientes y servidores...) En redes mayores, se usan pasarelas (gateways) y encaminadores (routers) para intereconectar redes de diferente tipo, amplificadores ("repetidores") para refrescar la señal en tramos largos, etc... Existen 2 velocidades estándar en redes Ethernet: 10 Mbit/seg y 100 Mbit/seg; lógicamente, la segunda es mucho más rápida. Para conseguirla, las tarjetas de red, el cable y el concentrador deben ser de al menos dicha velocidad; de lo contrario, el rendimiento baja al del componente más lento. Si tenemos sólo 2 ordenadores, podemos conectarlos sin concentrador ni switch; simplemente usaremos un cable especial ("cable cruzado") directamente de una tarjeta de red a la otra. Si deseamos conectar un tercer ordenador, ya necesitamos un concentrador, o, al menos, colocar 2 tarjetas de red en el equipo "intermedio". La tarjeta de red va conectada dentro del ordenador, en una de las ranuras de expansión normalmente PCI en equipos de sobremesa (o PCMCIA en portátiles). Su coste es de unos 15-18 €. El cable recomendado es el llamado de categoría 5 (10 Mb/s) ó 6 (100 Mb/Seg). Las clavijas son del tipo RJ-45; ambos componentes se pueden adquirir en tiendas de informática y electrónica, si bien para colocar los conectores se necesita una herramienta llamada "crimpadora" que cuesta alrededor de 24 €. Si no necesitamos hacer cables a menudo, podemos comprarlos ya hechos a un precio aceptable. El concentrador es el aparato donde se conectan todos los cables que vienen de las tarjetas de red; así pues, necesitará tener tantas tomas como ordenadores queramos incluir en la red. El precio suele acercarse a unos 6 € por toma, es decir, un hub de 8 cuesta unos 48-50 €. En vez del concentrador podemos emplear un switch; el aspecto y funcionamiento es el mismo, pero mejora porque sólo envía a cada PC los datos que le conciernen, y no todos, como hace el concentrador. El software de red necesario incluye: protocolos de comunicaciones, programas cliente y programas servidores. Los protocolos más conocidos van incluidos en Windows (entre otros): IPX (Novell), en desuso, es necesario para juegos en red antiguos (Quake I, Duke NUkem 3D, etc) NetBeui (Microsoft): basado en el NetBios de IBM, se puede usar para compartir carpetas e impresoras si no se desea acceso a Internet. TCP/IP: El más interesante, permite conectarse a Internet además de compartir carpetas e impresoras, por lo que en la mayoría de los casos, no se necesita ningún otro. Windows también incorpora programas clientes para navegación web (Internet Explorer), correo electrónico y grupos de noticias (Outlook Express), así como ftp (un programa en entorno de texto). Además, se pueden usar programas gratuitos o de libre distribución creados por otras empresas, como Netscape Communicator (web, correo, grupos de noticias, etc), Ópera (navegador), NicoFTP o Cute-FTP para transferencia de archivos, etc... Como programas servidores podemos usar algunos comerciales, aunque también existen buenos programas gratuitos o de libre distribución, por ejemplo: Apache o Simple Server (servidores web), Argo Soft Mail Server (correo), ServU FTP (ftp), etc... El Protocolo TCP/IP TCP/IP significa Protocolo de Transferencia de Archivos/Protocolo Internet (Transfer Control Protocol/Internet Protocol), y es el sistema de comunicaciones básico que permite entenderse unos ordenadores con otros. En TCP/IP cada ordenador de uina red (local, Internet, etc), dispone de un número IP único, que lo identifica en la red. Los números IP constan de 4 valores, separados por puntos y cada uno de ellos en el rango de 0 a 255. Por ejemplo: 123.2.34.98, o bien 223,28,190,56, etc... El valor 255 es especial (multidifusión -broadcast-, por lo que no se usa normalmente) Si dos ordenadores de la misma red usaran la misma IP, no se podría distinguir el destinatario de los mensajes dirigidos a dicho nº IP, causando un conflicto que se avisa en forma de mensaje de windows. Al conectarse a Internet, el proveedor (ISP) nos asigna un número de IP de entre los que haya reservado, que puede ser diferente en cada sesión (IP dinámica) o fijo (IP fija o estática). La ventaja de una IP fija es que podemos usar programas servidores para publicar páginas web, montar una oficina de correo, chat, ftp, etc... Se accedería a dicho servidor desde un programa cliente (por ejemplo,el navegador) tecleando dicha dirección IP, sin necesidad de disponer de un nombre de dominio. Por eso, algunos proveedores cobran una cantidad adicional por asignar IPs fijas. En una red local, los números IP pueden elegirse a voluntad; siempre que mantengamos idénticos los tres primeros valores, por ejemplo, podemos asignar los números: 24.13.100.1 24.13.100.2 24.13.100.3 etc.. En cambio, si la red está conectada a Internet, dichos números podrían estar siendo usados por otros navegantes, lo que causaría conflictos; por ello, se reservan determinados rangos de direcciones, llamadas direcciones privadas, establecidas por el documento RFC-918: clase A clase B clase C de de de 10.0.0.0 172.16.0.0 192.168.0.0 a a a 10.255.255.255 172.31.255.255 192.168.255.255 La clase C, dejando fijo también el tercer número, permite gestionar un rede de hasta 254 ordenadores, que es suficiente para redes pequeñas y medianas. Para redes más grandes, se usan las otras dos clases, que admiten un número de PCs mucho mayor. Estos números especiales pueden usarse en redes locales conectadas a Internet sin intereferir entre sí, puesto que el ordenador que esté directamente conectado al modem dispone de su propia y diferente IP para Internet, que es la que identifica a toda la red en Internet. Es decir, a nivel de red interna, cada PC usa un números IPs dentro de dichos rangos, por ejemplo, 192.168.0.24; pero el ordenador que tiene el modem (el "servidor de acceso a Internet") además tiene una IP diferente para comunicarse con Internet, por ejemplo, 120.50.230.87, asignada por su proveedor. Otro número especial es 127.0.0.1, que representa siempre el propio ordenador (aunque debe tener otra IP propia). http://terra.es/personal/tamarit1/redes/introduccion.htm Introducción Algunos definen Internet como "La Red de Redes", y otros como "La Autopista de la Información". Efectivamente, Internet es una Red de Redes porque está hecha a base de unir muchas redes locales de ordenadores, o sea de unos pocos ordenadores en un mismo edificio o empresa. Además, ésta es "La Red de Redes" porque es la más grande. Prácticamente todos los países del mundo tienen acceso a Internet. En algunos, como los del Tercer Mundo, sólo acceden los multimillonarios y en otros como USA o los países más desarrollados de Europa, no es difícil conectarse. Por la Red Internet circulan constantemente cantidades increíbles de información. Por este motivo se le llama también La Autopista de la Información. Hay 50 millones de "Internautas", es decir, de personas que "navegan" por Internet en todo el Mundo. Se dice "navegar" porque es normal el ver información que proviene de muchas partes distintas del Mundo en una sola sesión. Una de las ventajas de Internet es que posibilita la conexión con todo tipo de ordenadores, desde los personales, hasta los más grandes que ocupan habitaciones enteras. Incluso podemos ver conectados a la Red cámaras de vídeo, robots, y máquinas de refrescos, etcétera. 2. Historia de la Red Internet Internet nació en EE.UU. hace unos 30 años. Un proyecto militar llamado ARPANET pretendía poner en contacto una importante cantidad de ordenadores de las instalaciones del ejercito de EE.UU. Este proyecto gastó mucho dinero y recursos en construir la red de ordenadores más grande en aquella época. Al cabo del tiempo, a esta red se fueron añadiendo otras empresas. Así se logró que creciera por todo el territorio de EE.UU. Hará unos 10 años se conectaron las instituciones públicas como las Universidades y también algunas personas desde sus casas. Fue entonces cuando se empezó a extender Internet por los demás países del Mundo, abriendo un canal de comunicaciones entre Europa y EE.UU. Referencia: Número de ordenadores conectados permanentemente a Internet, desde 1989 hasta 1997 Internet crece a un ritmo vertiginoso. Constantemente se mejoran los canales de comunicación con el fin de aumentar la rapidez de envío y recepción de datos. Cada día que pasa se publican en la Red miles de documentos nuevos, y se conectan por primera vez miles de personas. Con relativa frecuencia aparecen nuevas posibilidades de uso de Internet, y constantemente se están inventando nuevos términos para poder entenderse en este nuevo mundo que no para de crecer. Referencia: Los países en gris disponen de acceso a Internet en la actualidad EE.UU. es el país que más uso hace de Internet con diferencia. Esto queda claramente reflejado en el siguiente gráfico. Es por esto que casi toda la información que vemos en Internet se encuentra en Inglés. Referencia: Lugares del Mundo donde más se usa Internet Hoy se conectan a Internet 50 millones de personas. Se estima que para el año 2000, se conectarán 200 millones. Internet crece exponencialmente, tanto en recursos como en usuarios. 3. Servicios de Internet Las posibilidades que ofrece Internet se denominan servicios. Cada servicio es una manera de sacarle provecho a la Red independiente de las demás. Una persona podría especializarse en el manejo de sólo uno de estos servicios sin necesidad de saber nada de los otros. Sin embargo, es conveniente conocer todo lo que puede ofrecer Internet, para poder trabajar con lo que más nos interese. Hoy en día, los servicios más usados en Internet son: Correo Electrónico, World Wide Web, FTP, Grupos de Noticias, IRC y Servicios de Telefonía. El Correo Electrónico nos permite enviar cartas escritas con el ordenador a otras personas que tengan acceso a la Red. Las cartas quedan acumuladas en Internet hasta el momento en que se piden. Es entonces cuando son enviadas al ordenador del destinatario para que pueda leerlas. El correo electrónico es casi instantáneo, a diferencia del correo normal, y además muy barato. Podemos cartearnos con cualquier persona del Mundo que disponga de conexión a Internet. La World Wide Web, o WWW como se suele abreviar, se inventó a finales de los 80 en el CERN, el Laboratorio de Física de Partículas más importante del Mundo. Se trata de un sistema de distribución de información tipo revista. En la Red quedan almacenadas lo que se llaman Páginas Web, que no son más que páginas de texto con gráficos o fotos. Aquellos que se conecten a Internet pueden pedir acceder a dichas páginas y acto seguido éstas aparecen en la pantalla de su ordenador. Este sistema de visualización de la información revolucionó el desarrollo de Internet. A partir de la invención de la WWW, muchas personas empezaron a conectarse a la Red desde sus domicilios, como entretenimiento. Internet recibió un gran impulso, hasta el punto de que hoy en día casi siempre que hablamos de Internet, nos referimos a la WWW. El FTP (File Transfer Protocol) nos permite enviar ficheros de datos por Internet. Ya no es necesario guardar la información en disquetes para usarla en otro ordenador. Con este servicio, muchas empresas informáticas han podido enviar sus productos a personas de todo el mundo sin necesidad de gastar dinero en miles de disquetes ni envíos. Muchos particulares hacen uso de este servicio para, por ejemplo, dar a conocer sus creaciones informáticas a nivel mundial. Los Grupos de Noticias son el servicio más apropiado para entablar debate sobre temas técnicos. Se basa en el servicio de Correo Electrónico. Los mensajes que enviamos a los Grupos de Noticias se hacen públicos y cualquier persona puede enviarnos una contestación. Este servicio es de gran utilidad para resolver dudas difíciles, cuya respuesta sólo la sepan unas pocas personas en el mundo. El servicio IRC (Internet Relay Chat) nos permite entablar una conversación en tiempo real con una o varias personas por medio de texto. Todo lo que escribimos en el teclado aparece en las pantallas de los que participan de la charla. También permite el envío de imágenes u otro tipo de ficheros mientras se dialoga. Los Servicios de Telefonía son las últimas aplicaciones que han aparecido para Internet. Nos permiten establecer una conexión con voz entre dos personas conectadas a Internet desde cualquier parte del mundo sin tener que pagar el coste de una llamada internacional. Algunos de estos servicios incorporan no sólo voz, sino también imagen. A esto se le llama Videoconferencia. 4. Estructura de la Red Internet En los últimos años se han desarrollado grandes redes que unían ordenadores de empresas o de particulares. Estas redes, eran de tipo LAN o WAN. Internet es otra Red que está por encima de éstas y que las une a todas. Tenemos como ejemplo los conocidos "Servicios On-Line" en EE.UU. Son redes de ordenadores a los que se podían conectar particulares con el fin de conseguir programas o contactar con otros usuarios por correo. A estas redes se subscribían los usuarios pagando una cuota. "America On-Line", "Compuserver" ó "The Microsoft Network" son algunas de éstas redes. Con la llegada de Internet, los usuarios de estas redes disponen de más alcance puesto que se les permite contactar con ordenadores que están fuera de su Red, o sea en Internet. La conocida "InfoVía" viene a ser uno de estos servicios en España. Su aparición, sin embargo, fue posterior a la de Internet. InfoVía da dos servicios que es importante diferenciar. Por un lado está InfoVía como red de ordenadores a nivel nacional, y por otro lado está el servicio de conexión entre ordenadores de proveedores y usuarios a través de InfoVía a precio de llamada local. En resumen: Internet es una red de alcance mundial que une una gran cantidad de redes grandes de ordenadores. Esto afecta al usuario de Internet, puesto que le permite contactar con gente y ordenadores de todo el mundo desde su propia casa. Internet funciona con la estrategia "Cliente/Servidor", lo que significa que en la Red hay ordenadores Servidores que dan una información concreta en el momento que se solicite, y por otro lado están los ordenadores que piden dicha información, los llamados Clientes. Existe una gran variedad de "lenguajes" que usan los ordenadores para comunicarse por Internet. Estos "lenguajes" se llaman Protocolos. Se ha establecido que en Internet, toda la información ha de ser transmitida mediante el Protocolo TCP/IP. Protocolo TCP/IP TCP/IP son las siglas de "Transfer Control Protocol / Internet Protocol". Éste es el lenguaje establecido para la Red Internet. 5. Direcciones IP y Nombres de Dominio Cada ordenador que se conecta a Internet se identifica por medio de una dirección IP. Ésta se compone de 4 números comprendidos entre el 0 y el 255 ambos inclusive y separados por puntos. Así, por ejemplo, una dirección IP podría ser: 155.210.13.45. No está permitido que coexistan en la Red dos ordenadores distintos con la misma dirección, puesto que de ser así, la información solicitada por uno de los ordenadores no sabría a cual de ellos dirigirse. Cada número de la dirección IP indica una sub-red de Internet. Hay 4 números en la dirección, lo que quiere decir que hay 4 niveles de profundidad en la distribución jerárquica de la Red Internet. Resumiendo, los tres primeros números indican la red a la que pertenece nuestro ordenador, y el último sirve para diferenciar nuestro ordenador de los otros que "cuelguen" de la misma red. Esta distribución jerárquica de la Red Internet, permite enviar y recibir rápidamente paquetes de información entre dos ordenadores conectados en cualquier parte del Mundo a Internet, y desde cualquier sub-red a la que pertenezcan. Un usuario de Internet, no necesita conocer ninguna de estas direcciones IP. Las manejan los ordenadores en sus comunicaciones por medio del Protocolo TCP/IP de manera invisible para el usuario. Sin embargo, necesitamos nombrar de alguna manera los ordenadores de Internet, para poder elegir a cual pedir información. Esto se logra por medio de los Nombres de Dominio. Los nombres de dominio, son la traducción para las personas de las direcciones IP, las cuales son útiles sólo para los ordenadores. Así por ejemplo, yahoo.com es un nombre de dominio.". No todos los ordenadores conectados a Internet tienen un nombre de dominio. Sólo suelen tenerlo, los ordenadores que reciben numerosas solicitudes de información, o sea, los ordenadores servidor. Por contra, los ordenadores cliente, los que consultan por Internet, no necesitan un nombre de dominio, puesto que ningún usuario de la Red va a pedirles información. El número de palabras en el nombre de dominio no es fijo. Pueden ser dos, tres, cuatro, etc. Normalmente son sólo dos. La última palabra del nombre de dominio representa en EE.UU. que tipo de organización posee el ordenador al que nos referimos: com Empresas (Companies). edu Instituciones de carácter Educativo, mayormente Universidades. org Organizaciones no Gubernamentales. gov Entidades del Gobierno. mil Instalaciones Militares. En el resto de los países, que se unieron a Internet posteriormente, se ha establecido otra nomenclatura. La última palabra indica el país: es España fr Francia uk Reino Unido (United Kingdom) it Italia jp Japón au Australia ch Suiza ir Irlanda ar Argentina ... ... Por lo tanto, con sólo ver la última palabra del nombre de dominio, podemos averiguar donde está localizado el ordenador al que nos referimos. 6. Conexión a la Red Los ordenadores domésticos acceden a Internet a través de la línea telefónica. Podemos aprovechar la línea que casi todos tenemos en casa. Normalmente, esta línea telefónica tiene un conector en la pared, al que se suele enchufar el teléfono. Para poder enchufar nuestro ordenador a este conector debemos disponer de un módem, que viene con un cable de teléfono. Este aparato sirve para que el ordenador pueda comunicarse a través del teléfono con otros ordenadores. Con el fin de evitar enchufar y desenchufar el módem y el teléfono cada vez que conectamos con Internet, casi todos los módems tienen dos conectores: "Phone" y "Line-In". Tenemos que conectar el cable que viene con el módem al conector "Line-In" (entrada de la línea), y por el otro extremo, lo conectamos a la clavija de la línea telefónica, o sea, donde antes teníamos enchufado el teléfono. (1ª Configuración) Así ya tenemos el módem conectado directamente a la línea telefónica. Para poder enchufar también el teléfono a la línea telefónica, tenemos el otro conector del módem, el que pone "Phone". Aquí enchufamos el cable del teléfono. De este modo, los dos estarán conectados a la misma línea telefónica. No es necesario que esté encendido el ordenador para que nos funcione el teléfono. El único inconveniente de esta configuración es que cuando llamamos por teléfono no podemos conectarnos a Internet, y cuando nos conectamos a la Red, no podemos llamar por teléfono. Referencia: Representación de las dos posibles configuraciones para la conexión del ordenador a la línea telefónica Puede que no nos interese conectar el teléfono al ordenador, por ejemplo en el caso en que tengamos el ordenador en una habitación y el teléfono en otra. Para estos casos, se venden unos duplicadores de la línea telefónica, que funcionan como un enchufe múltiple. Se conectan en la salida de la línea telefónica. El ordenador se enchufa en uno de los conectores y el teléfono en el otro. (2ª Configuración) En cualquiera de estas dos configuraciones, podemos usar el teléfono o el módem del ordenador sin necesidad de enchufar o desenchufar ningún cable. Ahora bien, lo que no podemos hacer en ninguna de las configuraciones es efectuar o recibir una llamada telefónica mientras estamos conectados a Internet, puesto que es nuestro ordenador el que está usando la línea de teléfono. Para poder conectarnos a Internet necesitamos cuatro cosas: un ordenador, un módem, un programa que efectúe la llamada telefónica, y otro programa para navegar por la Red. 7. Proveedores de Internet Un Proveedor Internet nos permite conectar nuestro ordenador a la Red Internet. No podemos conectarlo directamente, puesto que las líneas de comunicaciones que forman Internet en sí, sólo las pueden manejar las grandes empresas de la telecomunicaciones a nivel Mundial: Telefónica, British Telecom, etc. Los Proveedores conectan a muchos usuarios (normalmente varios miles de ellos por proveedor) a estas grandes líneas de telecomunicaciones. Como tienen tantos clientes, pueden permitirse el lujo de negociar las conexiones a Internet con las grandes empresas de telecomunicaciones. Aparte de esta principal funcionalidad, los Proveedores también ofrecen otros servicios: instrucciones de instalación de la conexión, ayuda telefónica, ficheros de datos y programas, servicios de conversación, etc. Últimamente, algunos Proveedores están ofreciendo con el costo de la conexión, el módem e incluso una segunda línea de teléfono para nuestra casa, para evitar ocupar el teléfono cuando nos conectamos a la Red. Referencia: Representación de la conexión entre los usuarios e Internet a través del Proveedor En principio las conexiones que nos vende nuestro proveedor son privadas. Para que nadie pueda acceder a Internet por la conexión que nosotros hemos contratado, el proveedor asigna un nombre de usuario y una clave secreta a cada cliente. Siempre existe la posibilidad de compartir nuestra conexión con otra persona, con el único inconveniente de que no podremos conectarnos simultáneamente. 8. Equipo necesario Al menos necesitamos un ordenador PC 386 (aunque es recomendable usar un 486 como mínimo), bajo Windows, con 4 Mb de RAM. Quizá con ordenadores más antiguos, 286 ó 8086, también podamos conectarnos, si logramos ponerles Windows. También es posible que con menos de 4 Mb logremos conectar. Sin embargo, para poder estar relativamente seguro de que todo nos va a funcionar correctamente, lo recomendable es disponer de un PC 486 33 Mhz con Windows y 4 Mb de RAM como mínimo. En el tema de los módem, para Internet es recomendable tener un módem de 14.400 bps como mínimo. Antes de que apareciera Internet en el ámbito doméstico, ya existían los módems de 1200, 2400, 4800 y 9600 bps, para conectar con los llamados servicios On-Line. Estos módems también se pueden usar para Internet. Sin embargo, la conexión será muy lenta. También hay que diferenciar entre módems internos y externos. Los internos van alojados dentro de la carcasa del ordenador, y para instalarlos hay que desarmarlo. Los externos funcionan fuera del ordenador, y para instalarlos sólo hay que enchufarlos a un puerto serie del PC (los puertos son los conectores que encontramos en la parte trasera de la caja del ordenador). Los externos suelen ser más caros que los internos. La velocidad de conexión es igual para ambos modelos. Sólo depende del número de bps alcanzado: 14.400, 28.800, 33.600, etc. 9. Correo Electrónico El correo electrónico ("E-Mail" ó "Electronic Mail" en Inglés) es el segundo servicio más usado de la Red Internet (el primero es la navegación por la World Wide Web). Dos personas que tengan acceso a una cuenta de correo en Internet pueden enviarse mensajes escritos desde cualquier parte del mundo a una gran velocidad. Lo normal es que un mensaje tarde entre unos pocos segundos y unos pocos minutos, dependiendo de la cantidad de texto que se envíe. Los Proveedores de Internet dan una o dos cuentas de correo a sus clientes cuando solicitan una conexión a la Red. De este modo, es casi seguro que si podemos conectarnos a Internet, podamos enviar y recibir correo electrónico. Para manejar el correo electrónico, existen programas como el Eudora o el Pegasus, que están especializados en esta tarea. Sin embargo, es más cómodo usar un navegador como Netscape o Internet Explorer, puesto que incorporan la posibilidad de gestionar el correo en el propio navegador. Esto ofrece la ventaja de que con un sólo programa tienes acceso a los dos servicios más usados de la Red. Una estadística muestra que el medio de comunicación más usado entre la gente que maneja Internet es el correo electrónico y no el teléfono o el correo normal como cabría esperar. Referencia: Medios de Comunicación entre cibernautas 10. Direcciones de Correo Electrónico En el correo convencional hay que indicar de alguna manera la persona a la que queremos mandar una carta. Para ello, escribimos sus datos personales (Nombre y Dirección) en el sobre que contiene el texto. En el correo electrónico se hace algo parecido. Cada carta que se envía por correo electrónico lleva asociada una cabecera, en la que se indican los datos necesarios para que la carta llegue correctamente a su destino. Uno de estos datos es la dirección electrónica de la persona a la que enviamos la carta. Cada usuario de Internet que tenga una cuenta de correo, dispone automáticamente de una dirección de correo. Todo el correo que envía y recibe un usuario de la Red, pasa a través de su Proveedor Internet. Éste dispone de un ordenador dedicado a gestionar el servicio de correo de sus clientes. En este ordenador quedan almacenados los correos electrónicos que reciben los clientes a cualquier hora del día hasta el momento en que el usuario se conecta a la Red y recibe en su propio ordenador el mensaje. Dicho ordenador tiene un nombre de dominio con el que se identifica en Internet. Por ejemplo, si nuestro Proveedor es Arrakis, el nombre de dominio será arrakis.es. Las direcciones de correo de los clientes de Arrakis siempre terminarán por arrakis.es. De este modo todos los correos que se envíen a estos clientes, en primer lugar viajarán hasta el Proveedor, y luego hasta el usuario. Para diferenciar un cliente de otro, hay que añadir un nombre de cliente a la dirección de correo. Normalmente, este nombre es un alias, o sea, un apodo o unas siglas, puesto que el Proveedor tiene varios miles de clientes y muchos de ellos pueden tener el nombre repetido. Así pues, un cliente que se llame "Fulanito de Copas", podrá escoger, por ejemplo, sus iniciales: "fdc" como alias. La dirección de correo completa es la unión del alias y del nombre de dominio del Proveedor, separados por una árroba: "@". Por lo tanto, la dirección de correo de Fulanito de Copas, cliente de Arrakis será: [email protected] 11. Contraseña Con el fin de que nuestra correspondencia electrónica sea privada, se impone que para recibir nuestro correo antes debemos dar un nombre de usuario y una clave secreta. Si se le da a alguien estos datos secretos, esa persona podría leer nuestro correo electrónico, y también enviar mensajes con nuestra dirección de correo. Además es frecuente que el nombre de usuario y la clave secreta sean los mismos datos que para el correo electrónico y para establecer la conexión a Internet. Por lo tanto, es doblemente recomendable no dar estos datos Algunos Proveedores de Internet ofrecen el servicio de poder cambiar la clave secreta del correo o de la conexión a Internet, lo cual puede resultar interesante en caso de que veamos que hay un intruso en nuestro correo o alguien usando nuestra conexión a la Red. 12. Envío de un Correo Electrónico Para enviar un correo electrónico necesitamos disponer de: Una conexión a Internet. Un programa cliente de correo, como el Netscape. La dirección de correo de la persona a la que queremos enviar el mensaje. A continuación vamos a ver cómo se envía un correo con el Navegador Netscape. Abrimos el programa. Abrimos el menú "Ventana" y escogemos la opción "Correo Electrónico". Referencia: Ventana del Cliente de Correo Electrónico de Netscape Acto seguido se abrirá una ventana, que se va a encargar de gestionar nuestro correo electrónico: enviar, recibir mensajes, organizar cartas acumuladas, modificarlas, reenviarlas, etc. Referencia: Opción para crear un nuevo mensaje Ahora ya sólo nos falta crear el mensaje y enviarlo. Para crearlo, vamos al menú Fichero, a la opción Nuevo Mensaje. Aparecerá una ventana que representa al mensaje. Referencia: Composición del mensaje: dirección, tema y contenido Tenemos que rellenar la primera celda con la dirección de correo de la persona a la que enviamos el mensaje. La segunda celda es para poner otras direcciones de correo a las que queramos enviar una copia del mensaje. La tercera celda se rellena con una pequeña frase que de título a nuestro mensaje. La cuarta celda sirve para enviar ficheros con el correo. Esto se verá con más detalle luego. Por último, sólo falta escribir el contenido del mensaje en el gran recuadro inferior. Para enviar el mensaje, pulsamos con el ratón el botón superior izquierdo, que pone "Enviar" o "Send". 13. Recepción de un Correo Electrónico En la ventana del Cliente de correo de Netscape, tenemos un botón que pone "Get Messages" o "Coger Mensajes". Al pulsarlo, Netscape pedirá a nuestro servidor de correo que nos envíe todos los mensajes de correo que tenga acumulados. Antes de enviarlos, el servidor se asegurará de que somos dueños de tales mensajes, al preguntarnos la clave de acceso a nuestra cuenta de correo. Enganche de ficheros El correo electrónico da una posibilidad muy interesante para transferir ficheros entre usuarios de la Red. Añadido a un mensaje, podemos enviar uno o varios ficheros desde nuestro disco duro hasta el ordenador del destinatario. Estos ficheros no se eliminarán de nuestro ordenador, porque se envía una copia de ellos. El destinatario recibirá los ficheros junto con el correo electrónico, y se le dará opción de grabarlos en su disco duro en el lugar que él decida. Los ficheros pueden ser de todo tipo, texto, documentos, imágenes, sonidos, video, datos, e incluso programas o ficheros comprimidos. En la ventana de creación del mensaje, hay una celda que se llama "Attachments" o "Enganches". No deja que se escriba dentro de dicha celda. Para poder indicar qué fichero quiero enviar, hay que pulsar el botón donde pone el nombre de la celda, o sea, el que está justo a la izquierda de la celda de "Enganches". Referencia: Ventana de gestión de ficheros enganchados al correo Al pulsar Netscape nos dará dos opciones: enviar una página Web de Internet, indicando su dirección URL, o bien enviar un fichero de nuestro disco duro. Referencia: Selección del fichero que queremos enganchar Al escoger la segunda opción, se nos permitirá escoger el fichero que queremos enviar mediante un cuadro de diálogo de carga de ficheros. Referencia: Lista de ficheros que vamos a enganchar al mensaje de correo electrónico Una vez seleccionados los ficheros que vamos a enganchar al correo, volvemos a la ventana de creación del mensaje, y vemos que en la celda de "Enganches" o "Attachments" aparece una referencia a cada fichero enganchado. Referencia: La ventana de creación del mensaje ya tiene definido el enganche de los ficheros Un mensaje con un fichero enganchado tarda más en ser enviado que un mensaje normal, puesto que el contenido del mensaje puede ocupar 1 ó 2 Kb, mientras que el fichero puede ocupar mucho más (entre 10 Kb y 10 Mb). Antes de enviar un fichero muy grande conviene pensárselo dos veces. Puede llevar mucho rato enviar un fichero de varios Mb. Hagamos un cálculo: supongamos que queremos enviar un video de 1 Mb y tenemos un módem de los normales, o sea, de 28.800 bps. Suponiendo que el módem diera un 100% de rendimiento, podría transferir como máximo 28.800 bps = 28.8 Kbits por segundo = 3.6 Kb (KiloBytes) por segundo. 1 Mb son 1024 Kb, por lo que tardaría 1024/3.6 segundos = 284.5 segundos = 4 minutos y 44.5 segundos. Navegadores Los navegadores son los programas de ordenador que nos permiten visualizar la World Wide Web. No hay que confundir el navegador con el programa que establece la conexión telefónica, que en Windows 95 es el Acceso telefónico a Redes, y en el Windows 3.x es el Trumpet Winsock. El navegador funciona correctamente sólo si antes hemos establecido la conexión con Internet a través del módem. Los dos navegadores más conocidos y usados en el Mundo son Netscape y Microsoft Internet Explorer. En ambos productos, cada cierto tiempo, medio año o un año, aparece una nueva versión con grandes mejoras respecto a la anterior. Normalmente, la última versión oficial de los navegadores de Netscape y Microsoft está disponible en varios idiomas. En Castellano también, por supuesto. 14. Direcciones URL Las páginas Web que encontramos en Internet se designan mediante lo que se llama la dirección URL (Universal Resource Locator: Localizador Universal de Recursos). Cuando queremos cargar de la red una página, escribimos su dirección URL en la celda dispuesta para este propósito en el navegador. Así, por ejemplo, cuando queremos ver la página de Microsoft, escribimos la dirección http://www.microsoft.com. Ésta es precisamente la URL de la página principal de Microsoft. Una URL tiene tres partes: Siglas del Protocolo: indican qué protocolo vamos a usar para la transmisión de datos. Lo normal es usar el protocolo de hipertexto, o sea, páginas Web, que es el HTTP (HyperText Transfer Protocol: Protocolo de Transferencia de Hipertexto). Normalmente, se pone después del protocolo los siguientes caracteres: "://", por lo que las siglas del protocolo de páginas Web serán: "http://". Nombre de Dominio del ordenador servidor: indica qué ordenador servidor de Internet nos va a dar la información solicitada. Normalmente, los ordenadores servidores de páginas Web tienen por nombre de dominio algo parecido a lo siguiente : www.nombre.es. Las tres letras "w" del principio indican que el ordenador está destinado a servir páginas Web en Internet. Ruta en el servidor: indica la posición del fichero que concretamente se ha solicitado dentro del ordenador servidor. Los ficheros están en el servidor ordenados jerárquicamente en una estructura de directorios o carpetas, como si fuera un disco duro. Una carpeta se separa de su sucesora mediante una barra de dividir. Así, por ejemplo, la siguiente ruta: /personal/fulanito/imagen, significa que la información que solicitamos se encuentra en la carpeta principal llamada personal, y dentro de esta en la carpeta fulanito, y por último en la carpeta imagen que está, a su vez, dentro de la anterior. La ruta no sólo se compone de la posición de los datos en el sistema de ficheros, como acabamos de ver, sino que también hay que poner el nombre del fichero donde se encuentra la información que queremos visualizar. Estos ficheros suelen tener por extensión las siglas .htm o bien .html (HTML: HyperText Mark-up Language: Lenguaje de Hipertexto a base de Marcas: Lenguaje de descripción de páginas Web). De este modo, una ruta completa podría ser: /personal/fulanito/imagen/galeria.htm. Juntando estos tres elementos, formamos una URL completa. Un ejemplo, sería: "http://www.nombre.es /personal/fulanito/imagen/galeria.htm" ¿Cómo Navegar? Navegar por la World Wide Web es muy sencillo. Para empezar, debemos introducir una dirección de partida en el navegador. Si la página Web que aparece a continuación dispone de enlaces a otras páginas, no tenemos más que hacer un clic con el ratón sobre alguno de los enlaces (que normalmente suelen ser una frases en azul subrayada, o bien imágenes con un marco azul), y aparecerá la página correspondiente al enlace marcado. De esta manera vamos recorriendo una serie de páginas Web enlazadas hasta que nos cansamos o hasta que llegamos a una sin enlaces, por lo que ya no podremos seguir avanzando. Todos los navegadores tienen dos botones que se usan mucho en la navegación. Son los botones de avanzar y retroceder. El botón de retroceder nos permite volver a la página de la que provenía la actual que estemos visualizando. De este modo, pulsando consecutivamente este botón por medio del ratón, podemos retroceder todas las páginas por las que hemos pasado durante la navegación hasta llegar al punto de partida. El botón de avanzar realiza la función inversa. Cuando hemos retrocedido una página, podemos volver a la posterior pulsando este botón. Así pues, podemos ir y volver desde la primera página Web a la última que hayamos navegado con sólo pulsar estos dos botones. A la hora de navegar es conveniente tener en cuenta algunos detalles importantes. Desde el momento que solicitamos ver una página Web hasta que ésta aparece en nuestra pantalla, pueden transcurrir unas décimas de segundo o bien unos pocos minutos, y esto depende de muchos factores, como son el que dicha página ya la hayamos visitado anteriormente y esté en la memoria de nuestro ordenador, o que entre el servidor y nuestro ordenador haya un canal rápido de transferencia de la información, o incluso puede depender de la hora local tanto en el lugar que se encuentra nuestro ordenador, como del lugar del servidor. Es muy recomendable, que cuando naveguemos manejemos con precisión el ratón. Lo que se quiere decir con esto, es que no se van a cargar las páginas Web más rápidamente porque pulsemos repetidas veces sobre el enlace (más bien todo lo contrario), o porque hagamos doble clic en vez de un simple clic, como debe ser. Durante el proceso de carga de una página Web, lo cual puede llevar varios segundos, se nos va mostrando en pantalla la información que se va recibiendo. De este modo, lo normal es que primero nos aparezca el esqueleto de la página Web. El esqueleto es el texto y los enlaces. Allá donde deba aparecer una imagen, primero nos aparecerá un icono con un pequeño dibujo, indicando que todavía no se ha recibido la imagen. Al cabo del rato, cuando el navegador consiga reunir toda la información de la imagen, se sustituirá el icono por la imagen real. Hay ocasiones en que una imagen no se ha podido transferir hasta nuestro ordenador de manera correcta. Entonces, en la pantalla veremos un icono pequeño con un dibujo roto. Esto quiere decir que si queremos ver la imagen debemos volver a intentar traerla. Para ello, lo que podemos hacer es navegar un paso hacia atrás y otro hacia adelante. Otra posibilidad es pulsar el botón de recargar página, pero de este modo, se volverá a solicitar toda la información de la página Web, no sólo la que falta por recibir. Es menos frecuente que la información del esqueleto de la página Web no llegue correctamente, puesto que ocupa menos que las imágenes, y necesita menos tiempo de transferencia, por lo que es más difícil que se corte la transferencia. Sin embargo, a veces ocurre. Cuando esto suceda, aparecerá al final de la pantalla del navegador el siguiente mensaje: "Transfer Interrupted", o sea, Transferencia Interrumpida. En estos casos, lo mejor es volver a solicitar la página Web completa, pulsando el botón de Recarga del navegador. 15. Buscadores Web Existen dos modos de búsqueda por la WWW, que se explican a continuación. Por Temas Yahoo, es el principal representante de este modo de búsqueda. Lo podemos encontrar en la dirección: http://www.yahoo.com/. En castellano, también disponemos de buscadores por temas, como es Olé, en la dirección http://www.ole.es/. Este tipo de búsqueda es ideal para cuando estamos buscando información sobre un tema importante, como puede ser, "Revistas en Internet", o "Astronomía", o "Música Moderna". Por cada uno de estos temas, se nos mostrarán en el buscador muchas páginas que hablan de dicho tema. Cada página viene indicada con un título y una pequeña explicación, que nos puede dar una idea más concreta sobre lo que podemos encontrar en esa página sin necesidad de entrar a verla. En caso de que realmente nos interese ver toda la información de la página escogida, no tenemos mas que pulsar sobre su título, y automáticamente aparecerá la información en nuestra pantalla. El tiempo que tarde depende en gran medida de lo atascada que esté la máquina que sirve esa página a Internet. El buscador de temas Yahoo dispone de muchísimas más direcciones en su base de datos que el buscador Ole. Este último es un buscador que sólo tiene en cuenta páginas Web en Castellano, por lo que su número es muy inferior. Por lo tanto para saber qué buscador debemos usar, tenemos que tener una idea de si lo que buscamos puede estar o no en Castellano. Si sospechamos que no, lo mejor es ir directamente al Yahoo, y buscar allí. Por Palabras Clave Hay ocasiones en que buscamos temas demasiado concretos como para que se puedan categorizar en un buscador por temas. Por ejemplo, si queremos obtener información sobre el edificio "Empire State Building" de Nueva York, lo mejor es buscarlo mediante palabras clave. Uno de los mejores buscadores por palabras de Internet es Hotbot, cuya dirección es http://www.hotbot.com/. En castellano, el propio Olé, dispone también de este tipo de búsquedas. Como prueba de la potencia de estos buscadores de palabras clave, podemos hacer el siguiente experimento: Buscamos nuestro nombre en Internet. Se introduce en la celda reservada para meter la palabra clave nuestro nombre. Si especificamos demasiado, puede que no encontremos nada, pero si sólo ponemos un nombre y un apellido, puede que encontremos páginas Web donde aparezcan estos nombres, refiriéndose a personas que se llaman igual que nosotros, de las cuales puede haber varias en el Mundo. Este tipo de buscadores, nos permiten concretar el tipo de búsqueda a realizar. Cuando buscamos algo con varias palabras clave, el buscador puede pensar que queremos la páginas Web en las que aparezca alguna de esas palabras, o todas ellas en la misma página, o todas ellas en el mismo orden en que las hemos escrito, y seguidas una detrás de otra. Todo esto se puede especificar antes de realizar la búsqueda. Es muy normal, que cuando realizamos una búsqueda por palabras encontremos un resultado de 50.000 o 100.000 páginas Web que contiene dicha palabra clave. Cuando esto ocurre podemos concretar más nuestra búsqueda, añadiendo más palabras clave en la celda de búsqueda, de modo que podamos reducir el número de resultados a 50 ó 100 como mucho para posteriormente poder mirarlos uno por uno. 16. Descarga de Juegos En Internet hay gran cantidad de Juegos de Ordenador algunos de calidad realmente sorprendente. Los Juegos de Ordenador son programas que se ejecutan en nuestro PC que lo único que pretenden es darnos entretenimiento. Tenemos desde juegos de ajedrez, o de carreras de coches, o de cartas o de acción (disparos, explosiones, héroes, etc.). Al igual que los demás programas de ordenador que hay en Internet, los juegos también pueden ser Shareware o Freeware o Demos. Los más interesantes suelen ser las Demos, puesto que son juegos comerciales muy trabajados, con gráficos de alta calidad y buenos efectos de sonido. Aparte de estas tres categorías, también podemos diferenciar dos tipos distintos de juegos: los que se ejecutan en nuestro ordenador sin más, y los que para funcionar necesitan que estemos conectados a Internet, puesto que su desarrollo es a través de la Red. Esto significa que podemos jugar con otras personas que estén conectadas a Internet simultáneamente. Este tipo de juegos han aparecido junto con Internet, dado que antes no se podía poner en contacto varios ordenadores más que con métodos muy complejos. Sin embargo, ahora es tan sencillo, como conectarlos a la Red. 17. Crackers En España que ocurrió el 10 de octubre de 1996? Como muchos recordarán el 10 de octubre de 1996 España amaneció con el mayor problema telemático que se recuerda. Los sistemas principales de TTD (Telefónica Transmisión de Datos) no funcionaban, concretamente la llamada Red Uno. Esto se traducía en que casi ninguna de las grandes redes corporativas o públicas podían transmitir datos, es decir, bancos, hospitales, organismos oficiales, etc. ... Aquel día hubo un colapso informático en España del que apenas se ocuparon los medios de comunicación al día siguiente. Nosotros, los usuarios de Internet también estuvimos afectados por este problema que duró mas de 24 horas. ¿Qué dijo Telefónica al respecto? Problemas con un nodo, errores en una actualización de un programa, etc... Pero, ¿realmente un fallo de este tipo puede colapsar la transmisión de datos en prácticamente toda España durante más de un día?. Hay rumores que apuntan hacia el sabotaje por parte de un hacker a raíz de las declaraciones del Subdirector de Marketing y Desarrollo de Servicios de Telefónica: Julio Linares. El 9 de octubre de 1996 se publicó una entrevista en el ABC de la Informática con este directivo de telefónica en ella se le pregunto sobre los piratas informáticos y la seguridad en InfoVía a lo que contestó: - "Tal como esta construida la red Infovía hay aspectos que no permiten existencia de "hackers" como sucede en el mundo Internet. En Internet un "pirata informático" puede entrar en un router, conectarse a él y descargar toda la información que pasa por allí, luego analizarla y quedarse con lo que le interesa. En el caso de Infovía eso no es posible. Existe una seguridad que no puede dar Internet." Curiosamente al día siguiente de la publicación de esta entrevista se produjo el gran problema. ¿No es posible que un hacker entrara en un router de Red Uno y a través de este reprogramará a los demás desconfigurando la Red casi en su totalidad? ¿Una casualidad o una advertencia? Hacker El más grande robo de claves Un pirata informático decodificó 48000 Por medio del programa "John The Ripper", que puede ser descargado por Internet, un pirata informático logró decodificar casi 48000 claves de acceso de una lista de 186000, una cifra que los expertos en comunicación consideran la más impresionante colección de códigos de acceso jamás robada. El intruso profesional ingresó en las cuentas de universidades y empresas de todo el mundo. La pirateada se detectó el 29 de junio de 1998, cuando un egresado de U. C. Berkeley informó que alguien había ingresado en su cuenta. Aunque, aparentemente, el hacker no buscaba información confidencial ni entrar en las cuentas gubernamentales, estaba ávido por obtener más claves y entrar a la mayor cantidad de sitios posibles. Las autoridades sospechan que el pirata informático opera desde algún sitio de Europa, porque las primeras computadoras violadas pertenecían a universidades de ese continente. El intruso electrónico accedió a Internet a través de Telenordia, un proveedor de servicios en Suecia, y luego dejó un rastro informático a través de Inglaterra, Dinamarca y Corea del Sur. Desde allí, el hacker irrumpió en las cuentas de una empresa de Silicon Valley, así como en las de una proveedora de servicios de Internet en Indiana, el Instituto de Tecnología de California y la Universidad de Harvard. El restante 80% de las claves descifradas pertenece a cuentas que aun no han sido identificadas. Fue el Equipo de Respuestas ante Emergencias de la Universidad Carnegie Mellon, también conocido como CERT, encargado de controlar las irrupciones ilegales dentro de las computadoras en el ámbito nacional, quien difundió este hecho en su sitio de la web el mes pasado. Según CERT, el intruso había realizado una compilación de 186126 cuentas y claves codificadas, y para el momento en que el estudiante de Berkeley lo notó, había decodificado 47642 de ellas. En algunos casos el intruso instaló ingresos "troyanos" o "por la puerta de atrás", lo que le permitía un acceso inmediato a los sistemas. El pirata logró acceder a ellos con "John The Ripper", un software descifrador de claves de acceso y programas "packet sniffers" que interceptan los códigos tipiados por los usuarios. Los administradores de sistemas usan programas "packet sniffers" como herramientas clave para diagnosticar problemas en redes lentas. Pero cuando el software es usado por piratas informáticos, torna vulnerables las claves que, teóricamente, deberían proteger. Lo que más llama la atención de los expertos es la cantidad de lugares a los que el pirata logró entrar. Y lo que más los preocupa: que lo haya hecho usando un programa que se consigue muy fácilmente, como John The Ripper. Los expertos en sistemas reconocen que será bastante difícil identificar al pirata, aunque no imposible. Ahora el tema está en manos de un escuadrón especializado en delitos informáticos del FBI. 18. Cuando el Chaos hackeo a la NASA El Chaos Computer Club es uno de los grupos de hackers más famoso del mundo. En esta nota vemos por que su fama es merecida. Existe mucha controversia acerca del Chaos Computer Club (CCC), el que sin duda fue el más célebre grupo de hackers de toda la historia. Contó entre sus miembros a los más selectos hackers de aquella generación. Su "cuartel central" está en la ciudad de Hamburgo (Alemania), y aún continua en actividad. Muchos de los miembros más destacados de sus épocas doradas, mediados y fines de los '80, se han retirado de las actividades y algunos de ellos son actualmente consultores en seguridad informática o asesores de grandes empresas en este tema. El hecho que los destaca entre todos los distintos grupos de hackers es el haber sido quienes pudieron ingresar más profundamente a los "supersecretos" sistemas de la NASA. Hay quienes los ensalzan hasta colocarlos en un nivel mítico, otros los defenestran sin piedad. Pero en general lo que existe es un gran desconocimiento de quienes fueron sus miembros y cuales sus actividades. Voy a tratar de ofrecer en este artículo algunos detalles técnicos acerca de este espectacular hecho en la historia del hacking. Todo esto sucedió en maquinas que corren bajo el sistema operativo VMS. Para quienes no la conocen, Digital Equipment Corporation (DEC) es una empresa líder en el mercado de las computadoras, y cuenta entre sus usuarios una gran cantidad de empresas privadas e instituciones gubernamentales en todo el mundo. Fue a principios de 1987 o fines de 1986, cuando DEC lanzó al mercado la versión 4.4 de su sistema operativo VAX/VMS. Esta versión incluía algunas novedosas funciones de seguridad. Una de estas funciones tenía un horrible agujero, a través del cuál los usuarios sin nivel de acceso podían obtener privilegios para los que no estaban autorizados. Si bien este bug fue corregido en las versiones posteriores del sistema operativo, no voy a dar más precisiones ya que hay todavía algunas empresas e instituciones en muchos países del mundo que todavía utilizan la versión 4.4. El CCC no realizó el acceso a las computadoras de la NASA a través de un llamado directo. Sabemos de las medidas de seguridad que tienen, que enseguida identificarían a un usuario extraño tratando de acceder a sus sistemas. Como dice el viejo refrán, que es ley para muchos hackers, "La cadena se corta por el eslabón más débil". Así fue que los miembros del CCC pudieron acceder a la NASA, por medio de la red DECnet. Los miembros del CCC consiguieron obtener privilegios en una máquina miembro de la red que no estaba bien protegida en algún lugar de Alemania. A través de esta máquina consiguieron introducir un gusano muy simple que se copiaba a todas las máquinas a las que tenía acceso. Si bien el sistema de propagación era un tanto rudimentario, han quedado algunos fragmentos del código de ataque que, por el contrario, era brillante. A través del estudio de este código puede verse que los autores conocían a fondo la nueva versión del sistema operativo. Demostraron también amplios conocimientos en el uso de equipos DEC. Este fascinante código de ataque se basaba en el ya citado bug en los servicios de seguridad, por medio del cual obtenía los privilegios. Luego modificaba (patcheaba) varias de las imágenes del sistema y se autoeliminaba. Estos patches son realmente interesantes. Modificaba las imágenes de los programas MONITOR, SHOW y LOGINOUT y agregaba un nombre de usuario especial al archivo de autorización del VMS. Los patches a MONITOR y SHOW conseguían que esos utilitarios ignoraran el nombre de usuario especial que el código de ataque había agregado al archivo de autorización. Esto les permitía a los miembros del CCC permanecer invisibles mientras estaban logeados con ese nombre de usuario especial. El patch sobre LOGINOUT servía para poder acceder con el nombre de usuario agregado. Además, tomaba todos los passwords con los cuales los usuarios validados se registraban, los encriptaba con un algoritmo simple y los guardaba en una porción muy poco conocida y utilizada del registro de autorizaciones. Una vez más vemos los profundos conocimientos que tenían los autores del código de ataque acerca de este tipo de sistemas. Luego de un tiempo, y logeándose con el nombre agregado, podían acceder al registro de autorizaciones, tomar los passwords encriptados que allí había colocado el patch a LOGINOUT y desconectarse. En casa podían desencriptar los passwords (tarea muy sencilla ya que ellos mismos habían sido quienes los encriptaron) y a partir del próximo acceso ya podían ingresar por medio de la red a una cuenta legítima sin despertar ningún tipo de sospechas como cualquier usuario normal. Periódicamente se utilizaba el nombre de usuario especial para ir a buscar los nuevos passwords que se habían recolectado en el registro de autorizaciones. Usaban el nombre de usuario especial agregado para que esto pasara inadvertido. Al contar con diversos passwords, se conseguía distribuir el tiempo de uso del sistema entre diversos usuarios sin recargar demasiado ninguna de las cuentas legítimas, ya que si alguna cuenta aparecía demasiado utilizada podía despertar sospechas. El patch de LOGINOUT registraba todos los passwords ingresados, así consiguieron algunos de máxima seguridad del sistema atacado. Por otra parte, si los encargados de seguridad cambiaban los passwords, solo había que esperar unos días para que los nuevos se acumularan en el registro de autorizaciones Como vemos, el circulo cerraba completamente, y el plan era prácticamente perfecto. De hecho, por medio de este sistema los miembros del CCC pudieron utilizar gran parte de las máquinas de la red DECnet, entre las cuales hay, como ya he señalado, máquinas de grandes empresas privadas y también de muchas instituciones públicas. Fueron descubiertos a principios de abril de 1987 en la NASA, tal vez por un exceso de confianza o de ansiedad de uno de sus miembros. En vez de realizar un acceso breve para verificar si ya había conseguido otros nuevos passwords legítimos y retirarse, este joven miembro pasó largo tiempo husmeando los archivos secretos de la NASA con el nombre especial agregado, en lugar de utilizar un password válido. Uno de los system managers de los sistemas DEC de la NASA vio que se estaban consumiendo muchos recursos de su máquina (por ejemplo ciclos de CPU), y para intentar ver que era lo que estaba sucediendo, ejecutó los utilitarios SHOW y MONITOR (que ya estaban patcheados). Así descubrió muy sorprendido que "nadie" estaba utilizando la máquina. Encontrando esta situación muy extraña, este system manager, del que nunca pudo conocerse el nombre, ejecutó un utilitario llamado SDA. El SDA (System Dump Analyser) es un utilitario de las máquinas que corren sistemas operativos VMS que ofrece vuelcos de memoria, es muy poco utilizado ya que son realmente pocas las personas que pueden interpretar un dump (vuelco de memoria). Utilizando el dump, el system manager pudo tener una idea de lo que estaba sucediendo. Si bien el ataque fue descubierto por la imprudencia de uno de los miembros del CCC, debemos también reconocer la calidad técnica de este system manager anónimo, que demostró conocer muy bien su oficio, resolviendo la situación con solvencia técnica y demostrando grandes conocimientos. El system manager informó de los hechos, y los técnicos de la NASA, junto a especialistas de DEC, pudieron solucionar este problema rápidamente. Se agregaron al sistema nuevos métodos de seguridad que imposibilitaron el acceso a los miembros del CCC, y el error fue corregido. La NASA dio informaciones ambiguas sobre este hecho. Según los voceros que las anunciaran, a veces negándolo, a veces señalando que solo habían accedido a niveles muy bajos, lo que no es verdad. Si bien nunca los pusieron a conocimiento público por temor a las represalias, los miembros del CCC pudieron acceder a los proyectos más secretos de la NASA y tuvieron los password de los más altos miembros de dicha institución. Se dice que algunos de sus miembros y ex-miembros todavía guardan algunos archivos de la NASA como "trofeos de guerra" de aquella legendaria acción. Fuente : Revist a Virus Report N° 17 A g o s t o d e 1 9 9 4 19. Un hacker buscado por el FBI era uno de sus colaboradores ataco con exito los sistemas informaticos de la nasa Max Butler, de 27 años, quedó libre luego de pagar una fianza de 50 mil dólares. Dos años atrás había vulnerado, además del sistema de la agencia aeroespacial, los de varios órganos de defensa estadounidenses. Fue una gran sorpresa. Después de dos años de arduas investigaciones, el FBI detectó que un pirata informático que le había ocasionado un gran problema a la NASA era uno de sus colaboradores. Este "hacker" había atacado a más de 17 sistemas informáticos de la Administración Nacional de la Aeronáutica y el Espacio estadounidense. Y también había afectado a otros órganos del área de defensa de ese país. El pirata informático acusado por la intromisión se llama Max Ray Butler. La Oficina Federal de Investigaciones estableció que este joven de 27 años consiguió acceder, desde su computadora, a los sistemas de varias bases aéreas y laboratorios de la NASA. Lo que más llamó la atención al agente que lo detectó fue que Butler era un conocido de la casa. Aunque no formaba parte de la planta estable, colaboraba con el FBI para combatir a personas que cometen los mismos delitos que a él ahora le descubrieron. El caso Butler representa la contracara de algo que es bastante común en el mundo de la informática: que los hackers, una vez descubiertos, sean captados para asesorar a organismos oficiales o empresas. Ese fue el caso de Julio César Ardita, un argentino que se hizo famoso cuando fue condenado en Estados Unidos por haber entrado, desde la computadora de su casa de Palermo, a los sistemas de la marina estadounidense. También se comprobó que Ardita accedió a los bancos de datos de la NASA. Su "colega" Butler fue detenido apenas lo descubrieron. Pero pagó una fianza de 50.000 dólares y quedó en libertad. Su caso es un ejemplo de lo complicado que resulta organizar de manera eficaz una estrategia capaz de descubrir a los "ciberdelincuentes", personajes hábiles en hacerse de las claves de miles de tarjetas de crédito o entrar en un sistema que controla un arma nuclear. En Estados Unidos, Internet es un vehículo de millones de operaciones bancarias, compras y ventas, además de un medio de comunicarse y obtener información de todo tipo. Los "piratas" han encontrado un medio estupendo para conseguir su objetivo sin correr peligro. Así, crece el "robo de identidades" o la recopilación de datos personales de los usuarios, incluidas sus cuentas bancarias y sus tarjetas de crédito. La víctima no se da cuenta de lo que está ocurriendo hasta que el hacker comienza a usar esa información para concretar cualquier transacción a su favor. Maureen Mitchel, una enfermera de Ohio, sufrió el robo de sus documentos de identidad y, además de haber perdido todos sus ahorros, tuvo que dedicar más de 400 horas de su tiempo haciendo gestiones en los bancos para que le volvieran a conceder un crédito. Hace poco tiempo, el FBI confirmó que se había detectado el robo de información sobre 485.000 tarjetas de crédito que estaban almacenadas en los sistemas de computación de una empresa de comercio electrónico. El responsable del robo, que al parecer vive en un país de la ex Unión Soviética, no usó las tarjetas. Pero las tenía todas a su disposición. Lo más grave fue que algunas de las firmas de crédito que se enteraron del robo de los datos no avisaron a sus clientes, quienes no tenían ni idea del peligro que corrían sus ahorros. El FBI pasó dos años siguiendo la pista, hasta que localizó al presunto autor. Un ejemplo de lo difícil que es perseguir a a los "ciberdelincuentes" lo aportó el presidente de Networks Associates, Peter Watkins, en una conferencia en la Universidad de Stanford sobre la lucha contra el "cibercrimen". Watkins, director de una de las mayores empresas de seguridad para sistemas informativos y antivirus, mostró a la audiencia un disco compacto en cuyo interior se almacenan 50.000 virus que circulan por Internet. Y apuntó que las personas que están presas por idearlos y difundirlos se cuentan con los dedos de una mano. Recientemente, el FBI puso en marcha el llamado Centro de Protección de la Infraestructura Nacional, que publica advertencias sobre posibles "pirateos" y recibe denuncias de las empresas cuyos sistemas han sufrido un ataque informático. El centro aconseja a los empresarios que no pierdan un segundo a la hora de denunciar los hechos y les advierte que no se contacten directamente con el sospechoso si lo tienen localizado. La oficina de la fiscal general de Estados Unidos, Janet Reno, se mantuvo muy activa en los últimos años intentando construir un sistema de defensa contra el crimen cibernético. La Asociación Americana de Tecnología de la Información (ITAA) trabaja junto al Departamento de Justicia para difundir la adopción de medidas de seguridad y convencerlos de que denuncien los ataques. 20. Detuvieron al responsable de los ataques informáticos "mafiaboy", un hacker canadiense de 15 años La policía de Canadá y el FBI detuvieron el sábado a "Mafiaboy", un canadiense de 15 años que fue identificado como el pirata informático que bloqueó, en febrero, los principales sitios estadounidenses en Internet, entre ellos CNN, Amazon, E-Bay, Buy.com, E-trade y Yahoo! El chico -de quien no se conoce su verdadero nombre porque lo impide la ley canadiense- estaba a punto de convertirse en un mito de la Red. No sólo fue capaz de poner de rodillas a los gigantes de Internet, sino que también logró eludir durante varias semanas la búsqueda intensiva desplegada por el FBI. Finalmente, "Mafiaboy" fue detenido en su casa el sábado, y todas sus computadoras fueron secuestradas. El lunes se formalizó la acusación. Aunque salió bajo fianza, tendrá que declarar por los delitos relacionados con el bloqueo de cuatro horas del sitio de la CNN y de otros 1.200 vinculados a la cadena de noticias estadounidense. También está sospechado de otros ataques informáticos similares, definidos como "denial-of-service" (acceso negado). Tal vez para este experto informático la pena de cárcel sea menor que la que se le aplicó: nada de computadoras ni de navegar por Internet. Ni siquiera podrá ingresar a un local que venda artículos vinculados a la informática. Sólo podrá usar computadoras en la escuela, con fines pedagógicos y bajo la supervisión de un docente. Su condena incluye también la prohibición de encontrarse con tres de sus amigos identificados por las autoridades. El castigo es similar al que se dio en Europa a un fanático violento de un equipo de fútbol, a quien se le prohibió el ingreso a la cancha. Infiltrándose en una computadora de la la universidad estadounidense de Stanford, "Mafiaboy" -seguramente acompañado por otros cómplices on line- consiguió desencadenar una crisis en las páginas de las empresas más importantes de Internet que llegó a colapsar el sistema. Otras cientos de computadoras habrían sido utilizadas sin que sus propietarios lo supieran. En la Universidad de California, días después de los ataques, el FBI encontró los primeros rastros de "Mafiaboy". Siguiendo su pista informática, las investigaciones apuntaron de inmediato hacia Canadá. Allí se encontró el proveedor que le permitía al chico el acceso a Internet. En parte, "Mafiaboy" fue traicionado por su narcisismo, ya que había participado en varios "chats" en la Red vanagloriándose del caos que había provocado. Los investigadores pudieron así descifrar el intercambio de bromas que circulaban por la red entre el canadiense y otros "genios" de la informática, horas después de los ataques. Ahora, las autoridades canadienses y estadounidenses siguen investigando, en la búsqueda de posibles cómplices. 21. ¿Quién creó Internet? Por Katie Hafner Se cumplieron treinta años de Arpanet, la predecesora de Internet. Pero la fecha exacta no es segura... También se dice que Arpanet nació en la Universidad de California, en Los Angeles, aunque este dato tampoco es seguro. Este aniversario fue particularmente polémico. Hace algún tiempo, el vicepresidente de los Estados Unidos, Al Gore declaró, en una entrevista para CNN, que él "tomó la iniciativa" de crear Internet. Inmediatamente fue ridiculizado por todos los que tienen algún conocimiento de los verdaderos orígenes de la red de redes. Recientemente varios postulantes más genuinos levantaron sus voces para reclamar sus derechos sobre alguna porción del invento, dando así origen a una serie de disputas públicas. Yo conozco el problema de cerca. En 1993, cuando empecé a investigar el tema, escribir una historia de Arpanet me pareció una tarea relativamente sencilla. Y hasta me burlé de él cuando uno de los muchos padres de Internet me dijo: "Escribas lo que escribas, tu relato no será la verdadera historia". Quien trate de escribir la verdadera historia de Internet se encontrará con una ciénaga de materiales contradictorios. Los científicos que tomaron parte en su construcción están más ocupados que nunca pero no inventando nuevas tecnologías sino contando a los periodistas su propia versión de los hechos, actualizando sus sitios web con anécdotas y fechas de aquel hecho y mandando mensajes por e-mail. Su objetivo no es hacerse ricos sino asegurarse un sitio en la historia. "Asistimos a un caso de revisión histórica en tiempo real", dice Peter J. Denning, profesor de ciencias de la computación en la Universidad George Mason. Denning participó en el desarrollo de Internet pero hasta ahora se ha comportado como un observador silencioso. "Estamos observando el proceso de construcción de un mito mientras éste se desenvuelve. Finalmente, ciertas personas emergerán del mito y a ellas se les atribuirá gran parte de lo que se realizó, aun cuando no hayan actuado directamente." Por su parte, Alan Brinkley, profesor de historia de la Universidad de Columbia, cree que lo nuevo no es el revisionismo sino la presencia de Internet como herramienta de ese proceso. El equivalente actual de mandar cartas a los diarios es inundar el mundo con las propias opiniones valiéndose de Internet para hacerlo. Y probablemente competirá con ventaja quien sea más activo o tenga la lista más extensa de destinatarios de correo electrónico. Los estudiosos del tema se preguntan si Internet hará más difícil el proceso de investigación histórica. Neil Postman, profesor de ciencias de la comunicación en la Universidad de Nueva York, explica que "el material impreso es más definitivo. Los libros preservan la información. Internet, en cambio, la hace circular, la mueve. Con una información que se desplaza, que aparece y desaparece, y sin guardianes, la credibilidad de la información disminuye". La version electrónica de un hecho no sólo puede entrar más rápida y velozmente en la conciencia del público, sino que además pone en evidencia la rapidez con que otra información puede desaparecer de los registros. El consenso entre los padres fundadores de Internet es cada vez menor. Un contingente pretende fijar la fecha del nacimiento de Arpanet a principios de setiembre de 1969, cuando la red tuvo su primera computadora. Otros, en cambio, siguen afirmando que la criatura nació a fines de octubre, cuando los primeros bits pasaron de la UCLA a una computadora del Stanford Research Institute. Algunos juran que inventaron la transmisión de paquetes de datos, la tecnología que abrió el camino a todo lo que siguió. Y no faltan los que reivindican como suya la idea misma de construir una red. Fuente: Diario Clarín. "coolio" se confeso ante los periodistas El hacker de 17 años que estaba buscando el FBI Se llama Dennis Moran (17) y los investigadores del FBI creen que es el hacker que buscaban. Utilizaba como alias el nombre "Coolio", pero al parecer, ese nombre es utilizado también por otros hackers. El miércoles dijo a los periodistas que había bloqueado algunos sitios de Internet. VENTANA DE MICROSOFT INTERNET EXPLORER Secciones Barra Elementos y subelementos Para que sirve Ícono de I. E. Contiene un menú desplegable con de opciones que permiten modificar la ventana del explorador.(Restaurar, Mover, Tamaño, Minimizar, Maximizar, Cerrar) Título Texto Indica tres cosas: La ubicación (en el disco o en la red) de lo que se está viendo en el área de trabajo. El nombre del programa que se esta usando (Internet Explorer). Y el estado actual del sistema (conectado o sin conexión a la red). Menú de control Contiene tres botones: Minimizar (reduce la ventana a un botón en la barra de tareas), Restaurar (restablece la ventana al tamaño y ubicación anterior), y Cerrar (cierra la ventana del explorador). Área de trabajo Ventana mayor Es la zona en la cual se visualizan las imágenes exploradas Barra Zona de escritura Alli se escribe la dirección o la ruta de la pagina en Internet o el archivo que se desee visualizar. A la derecha de esta zona se encuentra un botón con una flecha hacia abajo que al cliquear sobre ella despliega una lista con las últimas direcciones solicitadas. de dirección Barra de Botón -Ir a- Presionando sobre él, el Explorador busca la dirección escrita en la zona de escritura. Botón Vínculos- Alli se encuentra un listado con links (acceso directo a sitios web). Indicador del estado de localización Cuando se da la orden de ir a un sitio web, aquí se muestra el estado de busqueda y localización de dicho sitio. Ícono de conexión Indica si se está o no conectado a la red. Indicador de seguridad Muestra (en algunas páginas) el ícono de un candado abierto o cerrado, dependiendo esto de si la página es segura o no (se utiliza por ejemplo para realizar transacciónes monetarias a través de la red). Indicador de la zona de seguridad actual Muestra la zona en la que nos hallamos trabajando (mi PC, Red local, Intranet, Internet, etc.), y haciendo doble click sobre ella se accede a las propiedades de seguridad de dicha zona. estado Barra de Botón -Atrás- Muestra la última página visitada. Botón Adelante- Muestra la página siguiente. herramientas Botón Detener- Detiene la carga de una página. Botón Actualizar- Actualiza el contenido de la página actual. Botón -Inicio- Muestra la página configurada como inicio del explorador. Barra de Botón Búsqueda- Divide el área de trabajo, mostrando un buscador de páginas web. Botón Favoritos- Divide el área de trabajo, mostrando los links de nuestra carpeta de sitios favoritos. Botón Historial- Muestra el contenido de la carpeta Historial. En ella se guardan las últimas páginas visitadas. Botón Correo- Presionando este botón se despliega un menú con el cual podemos leer nuestro correo, escribir un nuevo mensaje, enviar un vínculo o una página y leer nuestros grupos de noticias. Botón Imprimir- Imprime el contenido del área de trabajo. Botón Archivo- Contiene comandos para trabajar con los elementos seleccionados. Botón Archivo Nuevo Ventana Abre una nueva ventana de Internet Explorer. menú Botón Archivo Nuevo Mensaje - Crear un nuevo mensaje de correo electrónico. Botón Archivo Nuevo Publicación - Publicar un nuevo artículo. Botón Archivo Nuevo Contacto - Crear un nuevo contacto. Botón Archivo Nuevo Llamada por Internet - Hacer una nueva llamada. Botón Archivo Abrir - Abre un documento en esta ventana. Botón Archivo Guardar - Guarda los cambios. Botón Archivo Guardar como - Guarda este documento en un archivo. Botón Archivo Configurar página - Cambia la configuración de la página. Botón Archivo Imprimir - Imprime este documento. Botón Archivo Enviar Página por correo electrónico - Manda una página mediante el correo electrónico (E-mail) Botón Archivo Enviar Vínculo por correo electrónico - Manda un vínculo mediante el correo electrónico (E-mail) Botón Archivo Enviar Acceso directo a Escritorio - Mueve el acceso directo hacia el Escritorio. Botón Archivo Propiedades - Muestra las propiedades de este documento. Botón Muestra páginas Web Archivo sin descargarlas. Trabajar sin conexión a la red Botón Archivo Cerrar - Cierra la ventana. Botón Edición - Contiene comandos de edición. Botón Edición Cortar - Quita la selección actual y la copia en el portapapeles. Botón Edición Copiar - Copia la selección actual en el portapapeles. Botón Edición Pegar - Inserta los elementos que copió o cortó en la ubicación seleccionada. Botón Edición Seleccionar todo - Selecciona todo el texto. Botón Busca un texto Edición determinado en la Buscar en ventana actual. esta página Botón - Ver - Contiene comandos para manipular la vista. Botón - Ver - Muestra u oculta las Barra de barras de herramientas herramientas. Botón - Ver - Muestra los botones Barra de estándar de la barra herramientas de herramientas. - Botones estándar Botón - Ver - Muestra la barra de Barra de herramientas herramientas Dirección. - Barra de direcciones Botón - Ver - Muestra la barra de Barra de herramientas Vínculos herramientas rápidos. - Vínculos Botón - Ver Barra de herramientas - Etiquetas - Agrega una etiqueta de texto a los botones de la barra de herramientas. Botón - Ver Barra de estado - Muestra u oculta la barra de estado. Botón - Ver Barra del explorador - Muestra u oculta una de las barras del explorador. Botón - Ver Barra del explorador Búsqueda - Muestra la barra de búsqueda. Botón - Ver - Muestra la barra de Barra del explorador Favoritos - favoritos. Botón - Ver Barra del explorador Historial - Muestra la barra del historial. Botón - Ver Barra del explorador Canales - Muestra la barra de los canales. Botón - Ver Barra del explorador Ninguna - Oculta la barra del explorador. Botón - Ver Fuentes - Se despliega un menú donde se puede seleccionar el tamaño de letra (mayor, más grande, mediana, más pequeña, menor) y el tipo de alfabeto (bático, occidental, etc.). Botón - Ver Detener - Detiene la carga de una página. Botón - Ver Actualizar - Actualiza el contenido de la página actual. Botón - Ver Código fuente - Muestra código fuente (HTML) de esta página. Botón - Ver Pantalla completa - Mustra la pantalla en toda su totalidad. Botón - Ver Opciones de Internet - Permite cambiar la configuración. Botón - Ir a - Contiene comandos para explorar diversas páginas. Botón - Ir a Atrás - Va hacia atrás un paso. Botón - Ir a Adelante - Va hacia delante un paso. Botón - Ir a Subir un nivel - Sube un nivel. Botón - Ir a Página principal - Abre la página de inicio. Botón - Ir a Channel Guide - Abre la página de Channel Guide en el web. Botón - Ir a Buscar en el Web - Abre la página de búsqueda en el web. Botón - Ir a Correo - Abre su programa para lectura de correo en internet. Botón - Ir a Noticias - Abre su programa para lectura de noticias en internet. Botón - Ir a Mi PC - Abre la ventana de Mi PC. Botón - Ir a Libreta de direcciones - Abre la libreta de direcciones. Botón - Ir a Llamada por Internet - Abre el programa de llamadas y reuniones por internet. Botón Favoritos - Muestra el contenido de la carpeta Favoritos. En Favoritos figuran, entre otras cosas, las direcciones de las páginas que el usuario decide incluir a su listado. Botón Favoritos Agregar a Favoritos - Agrega la página actual a la carpeta Favoritos. Botón Favoritos Organizar Favoritos - Abre la carpeta Organizar Favoritos. Botón Permite organizar Favoritos todas las Supervizar suscripciones. suscripciones Botón Actualiza todas las Favoritos suscripciones. Actualizar todas las suscripciones Botón Ayuda - Contiene comandos para mostrar ayuda. Botón Ayuda Contenido e índice - Abre una ventana de ayuda. Botón Ayuda Novedades - Abre una ventana con todas las novedades. Botón Ayuda Tutorial de web - Va a la página tutorial de web (en internet). Botón Ayuda Soporte técnico en linea - Nos contacta con el soporte técnico. Botón Ayuda Acerca de Internet Muestra información sobre el programa, número de versión y copyright. Explorer 22. "Cuestionario" 1. ¿Qué es Internet? Algunos definen Internet como "La Red de Redes", y otros como "La Autopista de la Información". Internet es La Red de Redes, porque está hecha a base de unir muchas redes locales de ordenadores. También se la llama así porque es la más grande. Internet es La Autopista de la Información, porque por la misma circulan constantemente cantidades increíbles de información. Actualmente se estima que se conectan a Internet 200 millones de internautas. 2. ¿Qué son los internautas? Los internautas son las personas que navegan por Internet. Se dice navegar porque es normal el ver información que proviene de muchas partes del mundo en una sola sesión. 3. Historia de la Internet. Internet nació en EE.UU. hace unos 30 años. Un proyecto militar llamado ARPANET pretendía poner en contacto una importante cantidad de ordenadores de las instalaciones del ejercito de EE.UU. Al cabo de un tiempo, a esta red se fueron añadiendo otras empresas y hará unos 10 años se conectaron las instituciones públicas y también algunas personas desde sus casas. Fue entonces cuando se empezó a extender Internet por los demás países del Mundo, abriendo un canal de comunicaciones entre Europa y EE.UU. 4. ¿Qué es un servicio de Internet?¿Cuáles son los más utilizados actualmente? Los servicios son las posibilidades que ofrece Internet. Cada servicio es una manera de sacarle provecho a la Red. Hoy en día, los servicios más usados en Internet son: Correo Electrónico, World Wide Web, FTP, Grupos de Noticias, IRC y Servicios de Telefonía. 5. ¿Qué es un protocolo TCP/IP? TCP/IP son las siglas de "Transfer Control Protocol / Internet Protocol". Éste es el lenguaje establecido para la Red Internet. 6. ¿Qué es una dirección IP?¿Cómo se compone? Una dirección IP es la dirección por la que cada ordenador se conecta a Internet. Una dirección IP se compone de 4 números comprendidos entre el 0 y el 255 ambos inclusive y separados por puntos. Así, por ejemplo, una dirección IP podría ser: "155.210.13.45". Los 3 primeros números indican la red a la que pertenece nuestro ordenador, y el último sirve para diferenciar nuestro ordenador de los otros que "cuelguen" de la misma red. Las direcciones IP son manejadas por los ordenadores, y no por los usuarios. 7. ¿Qué es un nombre de dominio? Dar ejemplos. Los nombres de dominio son la traducción para las personas de las direcciones IP. Así por ejemplo, "yahoo.com" es un nombre de dominio. El número de palabras en el nombre de dominio no es fijo. Pueden ser 2, 3, 4, etc. Normalmente son sólo 2. La última palabra del nombre de dominio representa en EE.UU. que tipo de organización posee el ordenador al que nos referimos: com Empresas (Companies). edu Instituciones de carácter Educativo, mayormente Universidades. org Organizaciones no Gubernamentales. gov Entidades del Gobierno. mil Instalaciones Militares. En el resto de los países, que se unieron a Internet posteriormente, se han establecido otras nomenclaturas. La última palabra indica el país: es España fr Francia uk Reino Unido (United Kingdom) it Italia jp Japón au Australia ch Suiza ir Irlanda ar Argentina ... ... Por lo tanto, con sólo ver la última palabra del nombre de dominio, podemos averiguar donde está localizado el ordenador al que nos referimos. 8. ¿Qué se necesita para conectarse a Internet? Para poder conectarse a Internet se necesitan cuatro cosas: una computadora; un módem; un programa que efectúe la llamada telefónica; un programa para navegar por la Red. 1. Tipos de configuraciones para realizar la conexión desde el ordenador (computadora) hasta la línea telefónica. Los ordenadores (computadoras) domésticos acceden a Internet a través de la línea telefónica. Podemos aprovechar la línea que casi todos tenemos en casa. Normalmente, esta línea telefónica tiene un conector en la pared, al que se suele enchufar el teléfono. Para poder enchufar nuestro ordenador a este conector debemos disponer de un módem, que viene con un cable de teléfono. Este aparato sirve para que el ordenador pueda comunicarse a través del teléfono con otros ordenadores. Con el fin de evitar enchufar y desenchufar el módem y el teléfono cada vez que nos conectamos con Internet, casi todos los módems tienen dos conectores: "Phone" y "Line-In". Tenemos que conectar el cable que viene con el módem al conector "Line-In" (entrada de la línea), y por el otro extremo, lo conectamos a la clavija de la línea telefónica, o sea, donde antes teníamos enchufado el teléfono. (1ª Configuración). Así ya tenemos el módem conectado directamente a la línea telefónica. Para poder enchufar también el teléfono a la línea telefónica, tenemos el otro conector del módem, el que pone "Phone". Aquí enchufamos el cable del teléfono. De este modo, los dos estarán conectados a la misma línea telefónica. No es necesario que esté encendido el ordenador para que nos funcione el teléfono. El único inconveniente de esta configuración es que cuando llamamos por teléfono no podemos conectarnos a Internet, y cuando nos conectamos a la Red, no podemos llamar por teléfono. Puede que no nos interese conectar el teléfono al ordenador, por ejemplo en el caso en que tengamos el ordenador en una habitación y el teléfono en otra. Para estos casos, se venden unos duplicadores de la línea telefónica, que funcionan como un enchufe múltiple. Se conectan en la salida de la línea telefónica. El ordenador se enchufa en uno de los conectores y el teléfono en el otro. (2ª Configuración). En cualquiera de estas dos configuraciones, podemos usar el teléfono o el módem del ordenador sin necesidad de enchufar o desenchufar ningún cable. Ahora bien, lo que no podemos hacer en ninguna de las configuraciones es efectuar o recibir una llamada telefónica mientras estamos conectados a Internet, puesto que es nuestro ordenador el que está usando la línea de teléfono. (Ver gráfico) 2. ¿Qué es un proveedor de Internet?¿Cuáles son los más importantes actualmente? Un Proveedor Internet es el que nos permite conectar nuestra computadora a la Red Internet. Los Proveedores conectan a muchos usuarios (normalmente varios miles de ellos por proveedor) a estas grandes líneas de telecomunicaciones. Como tienen tantos clientes, pueden permitirse el lujo de negociar las conexiones a Internet con las grandes empresas de telecomunicaciones. Aparte de esta principal funcionalidad, los Proveedores también ofrecen otros servicios: instrucciones de instalación de la conexión, ayuda telefónica, ficheros de datos y programas, servicios de conversación, etc. En principio las conexiones que nos vende nuestro proveedor son privadas. Para que nadie pueda acceder a Internet por la conexión que nosotros hemos contratado, el proveedor asigna un nombre de usuario y una clave secreta a cada cliente. Siempre existe la posibilidad de compartir nuestra conexión con otra persona, con el único inconveniente de que no podremos conectarnos simultáneamente. Actualmente los proveedores de Internet más reconocidos, que no quiere decir que sean los mejores son: Ciudad Internet, Infovia, Sion, Arnet, Radar, entre otros. 3. ¿Qué es el correo electrónico?¿Qué permite hacer? El correo electrónico ("E-Mail" o "Electronic Mail" en Inglés) es el segundo servicio más usado de la Red Internet (el primero es la navegación por la World Wide Web). Dos personas que tengan acceso a una cuenta de correo en Internet pueden enviarse mensajes escritos desde cualquier parte del mundo a una gran velocidad. Los Proveedores de Internet dan una o dos cuentas de correo a sus clientes cuando solicitan una conexión a la Red. De este modo, es casi seguro que si podemos conectarnos a Internet, podamos enviar y recibir correo electrónico. Actualmente la mayoría de los servidores ofrecen E-Mail gratuitamente a todas las personas que lo deseen (sean o no clientes del mismo), y todos los que uno quiera tener. 4. ¿Cómo se forman las direcciones de correo electrónico? Cada carta que se envía por correo electrónico lleva indicada una dirección, correspondiente al receptor, para que la carta llegue correctamente a su destino. Cada usuario de Internet que tenga una cuenta de correo, dispone automáticamente de una dirección de correo. Todo el correo que envía y recibe un usuario de la Red, pasa a través de su Proveedor Internet. Éste dispone de un ordenador dedicado a gestionar el servicio de correo de sus clientes. Dicho ordenador tiene un nombre de dominio con el que se identifica en Internet. Por ejemplo, si nuestro Proveedor es Arrakis, el nombre de dominio será arrakis.es. Las direcciones de correo de los clientes de Arrakis siempre terminarán por arrakis.es. De este modo todos los correos que se envíen a estos clientes, en primer lugar viajarán hasta el Proveedor, y luego hasta el usuario. Para diferenciar un cliente de otro, hay que añadir un nombre de cliente a la dirección de correo. Normalmente, este nombre es un alias, o sea, un apodo o unas siglas. . Así pues, un cliente que se llame "Fulanito de Copas", podrá escoger, por ejemplo, sus iniciales: "fdc" como alias. La dirección de correo completa es la unión del alias y del nombre de dominio del Proveedor, separados por una arroba: "@". Por lo tanto, la dirección de correo de Fulanito de Copas, cliente de Arrakis será: [email protected] 5. ¿Qué son los navegadores? Los navegadores son los programas del ordenador que nos permiten visualizar la World Wide Web. 6. ¿Cuáles son los navegadores más utilizados actualmente? Los navegadores más utilizados, actualmente, en el Mundo son Nestcape y Microsoft Internet Explorer. Ambos navegadores todos los años sacan al mercado nuevas versiones con grandes mejoras respecto de las anteriores. 7. ¿Qué es una dirección URL?¿Cuántas y cuáles son las partes de las direcciones URL? Una dirección URL es la dirección de cada página (es la que escribimos en la barra de direcciones). Por ejemplo; la dirección URL de Yahoo en Argentina, es html://www.yahoo.com.ar/. Una dirección URL se divide en 3 partes: Siglas del Protocolo: indican qué protocolo vamos a utilizar para la transmisión de datos. Lo normal es usar el protocolo de páginas Web, que es el "http". Normalmente se ponen después del protocolo los siguientes caracteres: "://". Nombre de Dominio del ordenador servidor: indica qué ordenador servidor de Internet nos va a dar la información solicitada. Normalmente se utiliza el siguiente: "www.nombre.es". Ruta en el servidor: indica la posición del fichero que concretamente se ha solicitado dentro del ordenador servidor. Los ficheros están en el servidor ordenados jerárquicamente en una estructura de directorios o carpetas, como si fuera un disco duro. Una carpeta se separa de su sucesora mediante una barra de dividir. Por ejemplo, "/personal/fulanito/imagen". La ruta no sólo se compone de la posición de los datos en el sistema de ficheros, como acabamos de ver, sino que también hay que poner el nombre del fichero donde se encuentra la información que queremos visualizar. Estos ficheros suelen tener por extensión las siglas ".htm" o bien ".html". Por ejemplo, "/personal/fulanito/imagen/galeria.htm". Entonces una URL completa sería: "http:/www.nombre.es/personal/fulanito/imagen/galería.htm" 1. ¿Qué es un buscador? El buscador es uno de los principales servicios que brinda la Red Internet, y también es uno de los más utilizados por lo internautas. Esto se debe a que este servicio nos permite buscar las páginas y los sitios por temas, con el simple hecho de indicar alguna palabra que tenga que ver con lo que se quiere buscar. Por ejemplo si se busca información sobre el "petróleo", con sólo escribir dicha palabra el buscador lanzará todas las direcciones de las páginas y los sitios que tengan que ver con el "petróleo". 2. ¿Para qué se utiliza el signo + (más) en la búsqueda? Se utiliza para especificar la búsqueda. El signo + (más) se coloca frente a las palabras que deben aparecer en los documentos resultantes. Ejemplo: + provincias + argentinas Los resultados de la búsqueda serán todos los sitios o páginas que tengan que ver con las palabras "provincias" y "argentinas". 3. ¿Para qué se utiliza el signo - (menos) en la búsqueda? Se utiliza para especificar la búsqueda. El signo + (más) se coloca frente a las palabras que no deben aparecer en los documentos resultantes. Ejemplo: provincias argentinas - Mendoza Los resultados de la búsqueda serán todos los sitios o páginas que tengan que ver con las provincias argentinas, menos Mendoza. 4. ¿Para qué se utilizan las "..." (comillas) en la búsqueda? Se utiliza para especificar la información que se desea encontrar. Las " " (comillas) hacen que el resultado de la búsqueda sean todos los sitios o páginas que contengan la frase exacta que se halla colocado. Ejemplo: "provincias argentinas" Los resultados de la búsqueda serán todos los sitios o páginas que contengan "Provincias argentinas". Referencia: Representación de las dos posibles configuraciones para la conexión del ordenador a la línea telefónica. http://www.monografias.com/trabajos5/queint/queint.shtml 2.4.4 Ambientes de trabajo colaborativo. 2.5 Servicios de Internet. Los servicios de Internet son una herramienta de trabajo y el uso inapropiado tendrá como consecuencia la pérdida de estos servicios. Normas de Uso de Internet La Oficina de Tecnologías de Información (O.T.I.) ofrece el servicio de Internet a todo el personal de la Administración Pública Provincial que lo solicite. La utilización de estos recursos por personal ajeno a la misma queda terminantemente prohibido. El uso del servicio implica la aceptación íntegra de los términos, condiciones y avisos aquí contenidos. Generalidades de Uso Deberán cumplirse todas las normas específicas dictadas por la O.T.I.. Dichas normas se comunicarán por los diferentes medios disponibles, e incluso directamente a los interesados. Deberá comunicarse a la O.T.I. cualquier deficiencia o funcionamiento anómalo que se observe. Está estrictamente prohibido cualquier uso con fines comerciales, políticos,particulares o cualquier otro que no sea el laboral que dio origen a la habilitación. Todo usuario deberá comunicar a la O.T.I. cualquier incumplimiento de estas normas que llegara a su conocimiento. Está prohibido transmitir cualquier material en violación de cualquier regulación de la República Argentina o de la Provincia del Neuquén. Esto incluye, derechos de autor, amenazas o material obsceno, o información protegida por secreto comercial. El uso para actividades comerciales no es aceptable. Esta prohibido el uso para propaganda de productos o propaganda política. Códigos de usuario, passwords, datos y su protección Todo usuario registrado será responsable de proteger su nombre de usuario y datos de cualquier acceso no autorizado. Cualquier acceso no autorizado a un nombre de usuario será inmediatamente comunicado por el usuario afectado a la O.T.I.. Queda estrictamente prohibido el uso, autorizado o no, de un nombre de usuario distinto al propio. Todo usuario respetará la naturaleza confidencial del acceso de un usuario o cualquier otra información que pueda caer en su poder, bien como parte de su trabajo o por accidente. Toda responsabilidad derivada del uso de un nombre de usuario distinto al propio recaerá sobre aquel usuario al que corresponda el nombre indebidamente utilizado. Usos de la red El usuario se compromete a aceptar las condiciones estipuladas en este reglamento en las que se señala el uso de los servicios con fines puramente laborales y de investigación, lo que excluye cualquier uso comercial de la red, así como prácticas desleales (hacking) o cualquier otra actividad que voluntariamente tienda a afectar a otros usuarios de la red, tanto en las prestaciones de ésta como en la privacidad de su información. En particular quedan expresamente prohibidas las siguientes acciones: Tratar de causar daño a sistemas o equipos conectados a la O.T.I. y otras redes a las que se proporcione acceso. Diseminar virus, gusanos y otros tipos de programas dañinos para sistemas de proceso de la información. Utilizar los medios de la red con fines propagandísticos o comerciales. Congestionar intencionalmente enlaces de comunicaciones o sistemas informáticos mediante el envío de información o programas concebidos para tal fin. Congestionar enlaces de comunicaciones o sistemas informáticos mediante la transferencia o ejecución de archivos o programas que no son de uso propio del trabajo. Además se añaden como normas de uso propias de la O.T.I. las siguientes: Se prohibe: Intentar o realizar accesos a cuentas de usuario que no sean las propias (utilizando cualquier protocolo, telnet, ftp etc., aunque no se consiga) Exportar los ficheros de password o realizar cualquier manipulación sobre los mismos, en concreto intentar averiguar los password de los usuarios Afectar o paralizar algún servicio ofrecido por la O.T.I. Modificación de ficheros que no sean propiedad del usuario aunque tengan permiso de escritura Acceder, analizar o exportar ficheros que sean accesibles a todo el mundo pero que no sean del usuario salvo que se encuentre en una localización que admita su uso público Se señala: que que que que las cuentas no son compartibles el usuario debe preservar su contraseña debe cambiar la contraseña regularmente. cualquier anomalía detectada debe comunicarse inmediatamente a la O.T.I. Todas las normas y recomendaciones anteriores son válidas independientemente de cual sea el tipo o medio de acceso a los servicios de la O.T.I., tanto desde dentro, como en accesos remotos a través de Proxys o mediante Modems. Solicitud de nombre de usuario Todo aquel que desee acceder a los recursos informáticos de la O.T.I. deberá solicitarlo por medio de una nota dirigida al Director de la O.T.I. y deberá llenar una hoja de solicitud con los datos personales del solicitante, así como su firma, indicando que se compromete a acatar estas normas. La solicitud deberá ir avalada por el Director del Organismo al cual pertenezca. El usuario deberá comunicar a la O.T.I., con la mayor brevedad posible, cualquier cambio que se produzca en la información contenida en su hoja de solicitud. El cambio se comunicará usando el servicio de e-mail o por nota dirigida al Director de la O.T.I. y, además, remitiendo a la O.T.I. una nueva hoja de solicitud con los datos actualizados, en la que se especificará claramente que se trata de una modificación de datos de un usuario ya existente. Si se produjera modificación en el Organismo o Servicio al que pertenece, la hoja de modificación deberá contener el aval del nuevo Director. Cuando el usuario deje de pertenecer al Organismo que avaló su inscripción, el director del mismo o el usuario podrá cursar a la O.T.I. una solicitud de baja de usuario, salvo el caso en que se tramite la migración de la cuenta de usuario a otro Organismo. En cualquier caso deberá comunicarse también mediante el servicio e-mail o por nota dirigida al Director de la O.T.I. Sin perjuicio de lo establecido en el punto anterior, el director del Organismo comenzará a recibir semestralmente de la O.T.I. una relación de los usuarios de su Organismo, la cual deberá devolver a la O.T.I. debidamente actualizada. Además de lo anterior aquellos usuarios que mantengan una inactividad en sus cuentas superior a un cierto período de tiempo, que inicialmente se estipula en seis meses, serán dados de baja, así como aquellos usuarios que habiéndoseles comunicado anomalías en la gestión de sus cuentas por dos veces, no hayan realizado ninguna acción para corregirlas. Propiedad Intelectual Los programas comerciales disponibles en la O.T.I. pueden ser utilizados únicamente en los ordenadores para los que se tiene licencia. Esta prohibido efectuar copias no autorizadas de dichos programas. Advertencia En caso de infracción de alguna de las normas anteriores, u otro tipo de abuso de los recursos de la O.T.I. que causen perjuicio a otros usuarios o a la seguridad o integridad de los sistemas, el infractor será advertido de la situación. Si la advertencia es ignorada, la O.T.I. pondrá en conocimiento de las autoridades del Organismo el hecho para adoptar las medidas disciplinarias o administrativas adecuadas, además de proceder a excluir al usuario infractor de cualquier uso posterior de los recursos de la O.T.I. Consideraciones Finales La operación sin tropiezos de la red informática recae sobre la conducta apropiada de los usuarios, quienes se deben de apegar a las guías estrictas. Estas guías se dan para que los usuarios sepan de las responsabilidades relacionadas al uso de la Internet. Con este instrumento nuevo de aprendizaje se espera que los Empleado de la Administración Publica de Neuquén comprendan y practiquen el uso apropiado y aceptable de Internet. Antes de que el empleado pueda usar Internet por medio de las computadoras de su lugar de trabajo: Recibirá instrucción con relación al Reglamento de Uso de Servicio de Internet por el Director del Organismo al cual pertenece. Aprenderá sus responsabilidades como usuario Firmará la Forma de Consentimiento y Dispensa del Usuario Normas de Uso de Correo Electrónico Los siguientes términos y condiciones rigen el uso del servicio de correo electrónico través de la Oficina de Tecnologías de Información. El uso del servicio implica la aceptación íntegra de los términos, condiciones y avisos aquí contenidos. Cuenta del usuario, contraseña y seguridad Para abrir una cuenta,deberá completar el formulario de inscripción facilitándonos la información actualizada, completa y precisa que se solicite en el mismo. El usuario es responsable de mantener la confidencialidad de su contraseña y de su nombre de cuenta; además, será el único responsable de todas y cada una de las actividades relacionadas con la misma. Deberá notificar de manera fehaciente, inmediatamente, a esta dirección cualquier uso no autorizado de su cuenta o cualquier otra vulneración de su seguridad. Privacidad de los usuarios La O.T.I. respetará la privacidad de sus usuarios. No divulgará información de carácter personal acerca de su cuenta de usuario o del uso que haga del Servicio a menos que la sea requerido para cumplir con procedimientos legales. Almacenamiento de mensajes, mensajes externos y otras limitaciones La cantidad de espacio de almacenamiento de correo electrónico por usuario está limitado a 10 MB por cuenta. Algunos mensajes de correo electrónico pueden no ser procesados debido a restricciones de espacio. El usuario acepta que la O.T.I. no es responsable de la eliminación o interrupción en el almacenamiento de mensajes o de otro tipo de información. Conducta de los usuarios Como condición al uso del Servicio, el usuario garantiza a la O.T.I. que no utilizará el Servicio para fines ilícitos o prohibidos por los presentes términos y condiciones. El Servicio sólo se presta a agentes de la administración pública provincial y únicamente para uso con fines de sus funciones. El usuario se compromete a usar el Servicio únicamente para enviar y recibir mensajes con ese propósito. Se prohibe expresamente cualquier uso personal o comercial no autorizado del Servicio. El agente compromete a cumplir con toda la normativa local, estatal, nacional e internacional aplicable y es único responsable de todos los actos u omisiones que sucedan en relación con su cuenta o contraseña, incluido el contenido de sus transmisiones a través del Servicio. A modo de ejemplo, pero sin limitarse a ello, el usuario acepta abstenerse de: Usar el Servicio en relación con encuestas, concursos, cartas en cadena, mensajes no deseados, correo molesto (spamming) o cualesquiera otros mensajes duplicativos o no solicitados (comerciales o de otro tipo). Difamar, insultar, acosar, acechar, amenazar o infringir de cualquier otra forma los derechos de terceros (tales como el derecho a la intimidad o a la propia imagen). Publicar, distribuir o divulgar cualquier información o material inapropiado, sacrílego, difamatorio, ilícito, obsceno, indecente o ilegal. Recopilar o de cualquier otro modo recabar información sobre terceros, incluidas sus direcciones de correo electrónico, sin su consentimiento. Transmitir o cargar archivos que contengan virus, caballos de Troya, gusanos o cualesquiera otros programas perjudiciales o nocivos. Interferir o interrumpir redes conectadas con el Servicio o infringir las normas, directivas o procedimientos de dichas redes. Intentar obtener acceso de forma no autorizada al Servicio, a otras cuentas, a sistemas informáticos o a redes conectadas con el Servicio, a través de búsqueda automática de contraseñas o por otros medios. Interferir con el uso del Servicio por parte de otros usuarios u Organismos La O.T.I. no tiene obligación de supervisar el Servicio ni el uso efectuado por un usuario ni conservar los contenidos de ninguna sesión del usuario. Renuncias / limitaciones de la responsabilidad La O.T.I. puede introducir en cualquier momento mejoras y/o cambios en el Servicio. La O.T.I. no declara ni garantiza que el Servicio sea ininterrumpido o libre de errores o que los defectos sean corregidos. Los usuarios aceptan expresamente que la O.T.I. no será responsable del acceso no autorizado o alteración de sus transmisiones o datos, de cualquier material o datos enviados o recibidos o no enviados o recibidos, ni de ninguna transacción realizada a través del Servicio. El usuario expresamente acepta que la O.T.I. no es responsable de ninguna conducta o contenido amenazador, difamatorio, obsceno, ofensivo o ilegal de ningún tercero ni de ninguna infracción de derechos de terceros, ni de responsabilidad sobre algún contenido enviado utilizando y/o incluido en el Servicio. Terminación La O.T.I. puede interrumpir o suspender su cuenta por inactividad, que se define como falta de acceso al Servicio por un período de tres meses. La O.T.I. no estará obligada a mantener ningún contenido en su cuenta ni a remitirle mensaje no leído o no enviado al usuario o a terceros. 2.5.1 Web, correo electrónico, chat, FTP. Los Servicios de Internet son: Navegación en el World Wide Web. Introducción El World Wide Web (también conocido como WWW o W3) es un sistema que permite visualizar, buscar y explotar el gran mundo de información digital contenida en Internet a través de documentos corelacionados entre sí. Esto es posible gracias a un poderoso concepto conocido como hipertexto. El World Wide Web fue desarrollado por el Centro Europeo de Investigación en Física de Partículas (CERN), localizado en Ginebra Suiza, como un medio para que los científicos de diversas partes del mundo que trabajan en física de altas energías pudieran colaborar más fácilmente, sin embargo el producto que obtuvieron resulto tan útil que en poco tiempo se comenzó a utilizar en las más diversas áreas del quehacer humano, tales como: el arte, el deporte, la política, la educación, el comercio, etc. ¿ Qué es el Hipertexto ? Cuando un texto está contenido en una computadora, las capacidades de procesamiento de esta permiten hacerlo más accesible y pleno de significado. Entonces el texto puede denominarse hipertexto porque las palabras, secciones e ideas están vinculadas y el usuario puede navegar a través de él en forma no lineal, rápida e intuitivamente. Utilizando hipertexto el usuario puede buscar electrónicamente entre todo el texto de un documento, localizar referencias a ciertas palabras y entonces ver la página en donde se encuentra cierta palabra en forma inmediata, incluso pueden tenerse referencias o ligas hacia otros documento, de tal forma que al ir consultando el usuario va realmente brincando de un documento a otro. Una palabra de texto se convierte entonces en palabra clave, de tal forma que si el usuario hace click sobre esta palabra, el sistema lo llevará automáticamente a una descripción más amplia de la misma, por ejemplo si en un texto en que se describen la obras del museo de Louvre se hace click sobre la palabra Leonardo, aparecerá de inmediato la biografía de Leonardo da Vinci. Doug Englebrat (inventor del ratón) y Ted Nelson (quien acuño el termino hipertexto en 1965) se han dedicado a promover el desarrollo de sistemas de hipertexto útiles, con el fin de combatir la forma tradicional del procesamiento lineal de los textos. Nelson asegura que la estructura básica del pensamiento no es lineal ni secuencial y que por lo tanto se logra mayor eficiencia y una mejor asimilación de la información cuando esta puede buscarse en forma no lineal. En el caso de World Wide Web existe una característica adicional que lo hace aún más poderoso: pueden establecerse ligas entre documentos que estén almacenados en dos equipos localizados en sitios totalmente diferentes del planeta y entonces al hacer click sobre la palabra de un documento el sistema se conectará automáticamente a la máquina que contiene la información relacionada y nos mostrará el documento ligado. Hipermedia Sin Fronteras La hipermedia es la extensión del hipertexto, pudiéndose relacionar entonces no tan solo palabras, sino también imágenes, sonidos e incluso vídeo. De esta forma al aparecer un documento con una imagen, tal vez al hacer clic sobre ella podamos ver esta misma imagen en un tamaño mayor, algunos detalles de la misma o una descripción de ella. Al hacer clic sobre ciertos iconos también podremos tal vez escuchar desde una explicación verbal relacionada con dicho icono hasta una sinfonía de Bethoven. Cuando hacemos clic en otros iconos también puede ser que se nos presente una película. En enero de 1992, Marc Andreessen un estudiante de la Universidad de Illinois en Champaign-Urbana, mientras trabajaba en el Centro Nacional de Aplicaciones de Supercomputo (NCSA), comenzó a desarrollar una herramienta que incorporará otras herramientas de INTERNET, que fuera de fácil utilización y que pudiera manejar hipermedia. Esta herramienta se denomino “NCSA Mosaic”. Otros programas desarrollados por el NCSA y otros centros de investigación han incluido varias herramientas de INTERNET, sin embargo ninguna rivaliza con Mosaic, cuya primera versión apareció en febrero de 1993, y esto resulta evidente al darnos cuenta que a fines de 1994 o sea a menos de dos años de su aparición existen ya cientos de servidores Mosaic en todo el mundo, con información y para aplicaciones de lo más variado. Si recordamos, World Wide Web (WWW) es un sistema que permite navegar en Internet a través de hiértexto, sin embargo ya que la hipermedia es la extensión del hipertexto, también podemos extender WWW, para que maneje hipermedia y esto es precisamente lo que se hizo, de tal forma que los servidores que contienen información en hipermedia, son en realidad servidores World Wide Web y la forma en que podemos acceder a su información depende realmente del cliente con el que contamos, si tenemos un cliente que solo maneja hipertexto, solo podremos ver precisamente la parte textual de la información, pero si contamos con un cliente que maneje hipermedia, tal como Mosaic, podremos ver también la información gráfica y/o de audio. Entonces existen tanto servidores Mosaic como clientes, de tal suerte que estos últimos permiten visualizar la información de hipermedia contenida en los servidores, resulta importante señalar que al igual que en el caso del hipertexto, las ligas entre los diferentes elementos textuales, gráficos o de audio, pueden darse entre documentos contenidos en máquinas localizadas en lugares totalmente diferentes del planeta, por ello decimos que este sistema nos permite manejar hipermedia sin fronteras. Además del Mosaic han aparecido otros clientes WWW que permiten manejar hipermedia, entre los cuales los más famosos son: Chello y Netscape. Cabe señalar que Netscape tiene algunas características que lo hacen incluso más versátil que Mosaic. Cada servidor debe de contar con su dirección INTERNET, la cual esta formada por: el nombre del servidor y el dominio al que pertenece el mismo, por ejemplo: wwwazc.uam.mx, en donde www-azc es el nombre del servidor o sea de la máquina y uam.mx es el dominio de la UAM. El misterioso URL Cada documento en el WWW tiene una dirección única que lo distingue de los demás y permite localizarlo y consultarlo a través de un visualizador, tal como Netscape, esta dirección se indica mendiante una notación conocida como Localizador Uniforme de Recursos (URL = Uniform Resource Locator), la cual tiene básicamente 4 partes: Protocolo://Nombre del Anfitrión/Trayectoria/Nombre del Documento El protocolo, indica precisamente con que protocolo se va a accesar el documento, si se trata de una página de Web, se utilizará el protocolo http y precisamente se indicará con estas siglas, si el documento se encuentra en un servidor de ftp, se indicará justamente con este nombre y así en cada caso. El nombre del Anfitrión, correponde al nombre que tiene en Internet, el equipo en que se encuentra el documento que deseamos consultar o bien su dirección IP. La trayectoria nos indica la ruta que debemos de seguir dentro de los directorios dentro del equipo anfitrión, en la cual se encuentra el documento. Finalmente se debe de indicar el nombre del documento, el cual si se trata de una página de Web, generalmente tendrá la terminacion: .html o bien .htm. Por ejemplo: http://www-azc.uam.mx/oe/csc/servicios/desc.htm En este caso el protocolo que se utiliza es http, el equipo en que se encuentra el documento se llama: www-azc.uam.mx, la trayectoria donde se encuentra el documento es /oe/csc/servicios y el nombre del documento es desc.htm. Cuando conocemos el URL del documento que queremos consultar, simplemente tenemos que abrir el menú File y escoger en este la opción Open Location, entonces aparecera una ventana en que se deberá de ingresar el URL corrspondiente y depues oprimir Accept, con lo cual Netscape, se conectará al equipo indicado y nos traerá el documento en cuestión. Navegadores de Internet. En la actualidad existen una diversidad de navegarores de Internet, pero principalmente el mercado esta dividido en dos partes: Los usuarios del programa Netscape Navigator y los usuarios del programa Microsoft Internet Explorer. La instalación de estos programas no es complicada, se puede realizar facilmente. Correo Electrónico (E-mail). El correo electrónico, conocido como e-mail es un tipo de comunicación que permite intercambiar mensajes entre dos usuarios de computadora localizados en diferentes partes del mundo, en una forma rápida, versátil y económica. Decimos que es rápido, ya que generalmente un mensaje de correo electrónico, llega a su destino en cuestión de segundos. El tiempo que tarda el mensaje en llegar depende de los diferentes dispositivos que se encuentran en el camino entre las computadoras y del trafico existente en la ruta. Resulta más versátil que por ejemplo el teléfono, ya que si llamamos a una persona y no la encontramos, tendremos que esperar y estar reintentando la llamada hasta que podamos localizarlo, para darle el mensaje que requerimos. En cambio en el correo electrónico, enviamos el mensaje y cuando el receptor revise su correspondencia electrónica, lo encontrara y podra respondernos. No se requiere saber gran cosa acerca de computadoras para utilizar el correo electrónico, en realidad es tan sencillo como enviar una carta por el servicio postal, tal vez la mayor diferencia, sea que en vez de escribir el mensaje en papel, se deberá de escribir mediante el teclado de una terminal o una microcomputadora, pero fuera de eso, el proceso consiste en escribir el mensaje, indicar la dirección del destinatario y enviarlo. Si la dirección no se encuentra el mensaje sera devuelto, tal como ocurre con la correspondencia normal. En realidad es más fácil que enviar una carta, ya que no hay que preocuparse, de sobres, timbres ir al correo, etc. Otra característica que lo hace muy interesante, es la posibilidad de enviar de una sola vez la misma información a un grupo de personas. Además de lo antes señalado el correo electrónico permite comunicar información compleja que telefónicamente resulta imposible de transmitir adecuadamente, además se puede adjuntar al mensaje algún archivo con más información, tal como: un texto largo, una gráfica, un dibujo, etc.. Otra ventaja del Correo electrónico sobre el teléfono consiste en que le permite a quien recibió un mensaje analizarlo cuidadosamente, antes de contestar, la única desventaja consiste en que la comunicación resulta más impersonal y se pierde por tanto la posibilidad de la retroalimantación inmediata. Por último una gran ventaja del correo electrónico consiste en las posibilidades que nos brinda de mantener organizada nuestra correspondencia, al poder visualizar fácilmente la correspondencia pendiente y al poder organizarla en la forma que más nos convenga. ¿ Cómo utilizar el correo electrónico: Acceso a Internet: Para poder recibir o enviar correo electrónico, primeramente deberá de tener acceso a una computadora conectada a Internet, ya sea directamente o por vía telefónica. Programas de Correo: Para poder enviar su correspondencia electrónica también requerirá de un programa de correo electrónico. Existen diversos programas, sin embargo todos ellos cuentan con las principales funciones mismas que se describirán más adelante. Buzón Electrónico: Al estar conectados a la red si se cuenta en la máquina con algún software de correo se pueden enviar mensajes, sin embargo para poder recibir correspondencia, se requiere tener un "buzón" en alguna máquina multiusuario reconocida por Internet, ya sea que su Institución este conectada o bien que se contrate este servicio con alguna de las empresas que a ello se dedican. Dirección de Correo Electrónico (E-mail address): Su buzón tendrá cierta dirección, en forma similar a la dirección de un apartado postal, esta contendrá toda la información necesaria para que Internet pueda hacer llegar a su buzón los mensajes que le envíen. Las direcciones de correo son en realidad muy simples, consisten de una parte que define el equipo en donde reside el buzón y otra que define especificamente de que buzón se trata dentro de dicho equipo. Estas dos partes se separan mediante un arroba "@". Con la cuenta que le sea asignada, un signo @ y el nombre completo de la máquina, en donde reside su cuenta, se formará su dirección de correo electrónico, por ejemplo: si se le asignara la cuenta qtr, en una maquina llamada panix.com su dirección de correo electrónico sería: [email protected]. Como puede notarse esta dirección contiene: la dirección Internet del equipo donde reside el buzón de la persona y la clave de usuario de dicha persona. Programas de lectura de correo electrónico. Existen en la actualidad una gran variedad de programas de lectura de correo electrónico. Cada uno con su interfaz y comandos de manejo de este servicio. Los programas de correo electrónico, más utilizados en la UAM Azcapotzalco, son Netscape Mail, Netscape Messenger, Microsoft Internet Mail, Microsoft Outlook y Eudora Mail. Estos programas se encuentran disponibles en nuestro servidor FTP Anónimo, tanto para plataforma PC y MAC. Conexión Remota ( Telnet ). Introducción. En la década de los 80's se fue incrementado el uso de equipos de computo conocidos como sistemas multiusuarios, los cuales le dan servicio a varios usuarios a la vez por medio de terminales, utilizando la técnica de tiempo compartido la cual consiste en que el computador atiende a los usuarios uno a la vez dedicándole una "rebanada de tiempo", pero en una forma tan rápida que para los usuarios es como si fueran los únicos usuarios del computador. En esa época las terminales de los usuarios se encontraban conectadas directamente al computador, debiéndose utilizar un cable para cada terminal con lo cual el problema de cableado resultaba bastante complejo sobre todo cuando las terminales se encontraban dispersas en lugares alejados del sistema. Con el advenimiento de las redes de computadoras que toma un fuerte impulso en los 90's, se resuelve el problema de la conexión de las terminales a los equipos multiusuario, conectando estos en red. El conectar los equipos a una red además de resolver el problema de cableado permite también que un usuario pueda desde su estación de trabajo conectarse no solo a un equipo multiusuario en particular, sino a cualquiera de los equipos multiusuarios que se encuentren conectados a la red, permitiendo con ello desde un solo sitio trabajar con el equipo más adecuado para una aplicación especifica. Este concepto que permite que desde una estación de trabajo, normalmente una microcomputadora personal, se pueda acceder a varios equipos multiusuarios es conocido como protocolo de acceso a terminales remotas (TELNET). ¿ Cómo utilizar Telnet ? En general para utilizar el servicio de terminales remotas, también conocido como terminales virtuales se requiere conocer la dirección INTERNET del equipo al que nos deseamos conectar o bien su alias en la tabla de HOSTS. La dirección INTERNET de un equipo es un número de 32 bits que identifica en forma única cada equipo de la red. Este tipo de direcciones son también conocidas como direcciones IP y normalmente se dan en notación decimal separando los 32 bits en cuatro octetos separados por puntos, por ejemplo: 128.127.50.999 ó 192.25.32.6 El recordar la dirección de un equipo puede resultar difícil por ello es posible asignar un nombre y varios alias a cada equipo de tal forma que se pueda accesar la máquina deseada con solo dar su nombre o bien su alias. Estos nombres deben de estar definidos en el equipo que se este utilizando como terminal en un archivo llamado HOSTS. En el archivo de HOSTS se incluyen las direcciones de cada uno de los equipos de la red con su nombre y sus alias. En redes muy grandes dinamicas en cuanto a la integración de nuevos equipos se puede utilizar también un servidor de nombres conocido precisamente como DOMAIN NAME SERVER. Además de conocer la dirección o el nombre del equipo al que deseamos conectarnos se requiere también tener una cuenta en dicho equipo y conocer el sistema operativo en cuestión. Existen en el mercado diversos productos para realizar la conexión remota de terminales vía la red, a continuación se describe el uso del programa Telnet que trae el sistema operativo Windows 95. Este software es un emulador de terminales que opera en PC's bajo sistema operativo Windows 95, utilizando como protocolo TCP/IP. Su función es la de permitir entrar como terminal de cualquier Host de la red desde cualquier PC conectada a un nodo de esta. Este paquete se provee configurado para emular una terminal VT100, aunque se pueden configurar otro tipo de terminales. La forma de invocar al servicio de Telnet, es la siguiente: 1. Ejecutar el programa Telnet: Con esta ejecución, el programa abrirá una nueva ventana que corresponde al servicio de telnet: 2. Establecer la conexión con el host remoto. Para establecer la conexión con el host remoto, nos vamos al menú de "Conectar" y seleccionamos la opción de "Sistema Remoto" y se desplegará la pantalla de conexión de telnet: Esta pantalla tiene los siguientes campos: Nombre del Host: Corresponde al nombre del servidor al cual deseamos conectarnos o en dado caso la dirección INTERNET de éste. Puerto: Corresponde al puerto del servidor por el cual vamos a accesar, generalmente esta ocpión se deja como esta por default. Tipo de terminal: Se refiere a que tipo de configuración de terminal vamos a tener al conectarnos, generalmete esta opción se deja como esta pro default. Conectar: Una vez que hayamos llenado los campos anteriores con este botón empezamos a estbalecer la conexión con el servidor. Cancelar: Para abortar todos la configuración que hallamos introducido. Nota Importante: Cuando usted realice una conexión remota, es indispensable que usted tenga cuenta en el host, asi como el conocer el sistema operativo de éste. 3. Entrar al host. Una vez que se efectuó la conexión al hosts, este le pedirá que se identifique dando sus claves de acceso a éste. Y podrá usted trabajar en el sistema remoto. 4. Terminar la Conexión Remota. Para salirse de la conexión remota, basta con salir del sistema al cual esta usted conectado y cuando realice esto, el programa de telnet le indicará que ya se desconecto con el siguiente mensaje. Y podrá salirse después del progrma de telnet, o conectarse a otro host. Tranferencia de Archivos ( FTP ). . Introducción. Dentro de la red internacional conocida como Internet, existe una manera de transmitir información entre los equipos que conforman dicha red. Esta herramienta es conocida con el nombre de FTP el cual proviene de su nombre en inglés File Transfer Protocol ( protocolo de transferencia de archivos ). FTP le permite transferir archivos a, y desde todas las redes anfitrionas en Internet sin importar su sistema operativo. Para soportar las funciones básicas de transferencia de archivos, FTP tiene una larga lista de comandos, y opciones en los mismos. Primero discutiremos algunas convenciones establecidas en la transferencia de archivos para después mostrar algunos de los comandos y opciones mas usuales en el uso de FTP, por último se mostrará la forma en que se debe de terminar una sesión típica de ftp y un breve resumen de todo lo anterior. Los requerimientos para el uso de FTP son los siguientes: 1.- Necesita conocer el nombre oficial del HOST, alias o dirección Internet (IP) del HOST remoto con el cual se desea transferir archivos. 2.- Debe tener una cuenta válida de usuario en el HOST que intenta usar. 3.- Necesita estar familiarizado con la designación de nombres de archivos en el HOST que está usando (Tal como aquellos usados en UNIX o DEC VMS). La sintaxis del comando FTP es: ftp host_name Donde host_name es el nombre oficial del HOST, alias o dirección Internet. Convenciones en la transferencia de archivos. Las siguientes son algunas convenciones típicas usadas durante la transferencia de archivos. - Interpretación de comandos. Cuando se hace una transferencia de archivos, cada argumento en los comandos GET o PUT, es interpretado por el sistema operativo leyendo o escribiendo el archivo. Los nombres de archivos (formato), los caracteres usados para indicar drivers y directorios y las características de resolución varían de host a host. - Escribiendo sobre archivos. Al utilizar los comandos GET o PUT puede ocurrir una sobreescritura (esto es, sustitución) de archivos que ya existen. Por ejemplo, si usted manda un archivo llamado test.doc desde su HOST a un HOST remoto que también tiene un archivo con el mismo nombre, el archivo de su HOST será sustituido por el del HOST remoto. Si usted trae un archivo llamado test.exe desde una HOST remoto y su HOST tiene ya un archivo llamado test.exe, el archivo del HOST remoto sustituir al archivo de su HOST. Tome en cuenta entonces que si inadvertidamente realiza una sobre escritura de un archivo, no podrá recuperar la información perdida. - Comodines. Los comodines '*' y '?' pueden usarse en los comando de FTP, sólo si la opción GLOB se encuentra habilitada y sólo en los comandos mget, mput y mdelete. - Accesando archivos en drivers y directorios no corrientes. Los sistemas operativos en todos los HOST remotos asumen que los archivos que se mencionan en los comandos GET y PUT se encuentran en el drive y el directorio actual. Usted debe especificar ambos, el nombre del archivo local y el archivo remoto cuando transfiera archivos desde otro directorio. El sistema operativo en su HOST usa el drive y el directorio donde tiene corriendo TCP/IP como drive y directorio corriente. Si usted quiere traer un archivo desde o mandar un archivo a un disco en un drive diferente, debe escribir antes del nombre del archivo la letra del drive y (:). Por ejemplo, si esta corriendo FTP desde el drive c: y quiere mandar el archivo llamado test.doc desde el drive a: a el host remoto, debe proporcionar la siguiente información para el nombre del archivo local: A:test.doc Si quiere traer un archivo desde o mandar un archivo a un directorio diferente, debe especificar la ruta adecuada del archivo. La ruta consiste de el nombre del directorio separado del nombre del archivo por la contradiagonal (\) o diagonal (/), dependiendo del sistema operativo. Por ejemplo, si quiere mandar el archivo llamado example.doc desde su HOST, el cual se encuentra en el directorio llamado DOCUMENT, a un host UNIX con el nombre de archivo example.doc en el directorio llamado UNIXDOC, debe utilizar el siguiente comando: put \document\example.doc unixdoc/example.doc Las convenciones de otros sistemas operativos pueden usar diferentes nombres para los drives y directorios por lo que puede diferir de estos ejemplos. Consulte al administrador de la red para más detalles. - Nota acerca de los nombres de archivos. Si usted transfiere un archivo de su HOST a un HOST remoto, deberá copiar con un nombre de archivo legal para el sistema operativo en cuestión; éste puede ser de una longitud no mayor a ocho caracteres (letras o números), y puede tener una extensión (separada de un punto (.)) de una longitud no mayor a tres caracteres (Para D.O.S). Si especifica el nombre del directorio completo en una transferencia y no especifica el nombre del archivo destino ( en un put ), la transferencia puede resultar no satisfactoria. Usted debe especificar el nombre del archivo remoto. Si quiere enviar un archivo a una impresora conectada a una HOST en vez de salvarlo en disco, puede especificar PRN como el destino para el nombre del archivo. Iniciando el uso deGET mediante FTP. Esta sección consta de 3 pasos que ilustran el uso de GET. La ultima sección de éste capítulo describe el uso de cada comando FTP en detalle. -Desplegando la información de ayuda de FTP. Este ejemplo muestra como iniciar FTP y como desplegar la información de ayuda. Paso 1.- Para iniciar el programa FTP, teclee FTP : >ftp PathWay for DOS--user FTP ( versión 1.1 ) Copyright 1986,...1990 The Wollongong Group, Inc. ftp> Paso 2.- Uno de los comandos que puede teclear en este punto es ) el cual despliega la ayuda en la pantalla : help ( ? ftp> ? Commands may be abbreviated. Commands are : ! dir mget quit test append form mkdir quote trace ascii get mls recv type bell glob mode remotehelp verbose binary hash mput rename ? bye help open rmdir (null) cd lcd prompt send close ls sendport status delete mdelete put struct debug mdir pwd tenex ftp> El carácter '!' tecleado después del prompt de FTP ejecuta un comando del sistema operativo en su HOST local. Por ejemplo, ftp>!dir lista los archivos y directorios en el directorio actual de trabajo.(Si se trabaja con D.O.S) Paso 3.- Para traer información acerca de uno de estos comandos teclee el comando ? seguido de un espacio y a continuación el nombre del comando que se desea. Por ejemplo : ftp>? dir dir list contents of remote directory Usando los comandos OPEN, PUT, GET Y CLOSE. Este ejemplo muestra como iniciar FTP y como transferir un archivo usando los comandos OPEN,GET,PUT y CLOSE. Paso 1.- Teclee FTP sin especificar el nombre del HOST en la línea de comando. Esto produce el prompt de FTP ( ftp> ). Los comandos de FTP pueden ahora ser utilizados. >ftp PathWay for DOS--user FTP ( versión 1.1 ) Copyright 1986,...1990 The Wollongong Group, Inc. ftp> Paso 2.- Para transferir un archivo desde un HOST remoto, llamado TWG, hacia el HOST local, se deberá abrir una conexión con el HOST remoto usando el comando OPEN, como se muestra en el siguiente ejemplo : ftp> open twg Connected to twg 220 twg FTP server ( Versión 1.61 Aug 25 1987 ) ready (username) Paso 3.- Teclee su username y presione la tecla enter, como se muestra en el siguiente ejemplo : (username): linda 331 Password required for user linda Password : Paso 4.- Teclee su password y teclee enter, como se muestra en el siguiente ejemplo : Password : 230 User linda logged in ftp> Paso 5.- Si queremos que el archivo a transferir tenga el mismo nombre en el HOST remoto basta con que lo enviemos como lo ilustra el siguiente ejemplo: ftp>put local_file_name Paso 6.- Si fuera necesario que el archivo a enviar tuviera un nombre distinto podrá usar el comando PUT de la siguiente forma: ftp>put local_file_name remote_file_name Usando esta alternativa, los archivos localtest y remotetest podrán transferirse de la siguiente forma: ftp>put localtest remotetest Cuando la transferencia es llevada acabo ,FTP provee información de como se efectúa la transmisión de datos como se muestra en el siguiente ejemplo: ftp> put localtest remotetest 200 PORT command okay 150 Opening data connection for remotetest (89.0.0.8,5320) 226 Transfer complete 105 bytes sent in 0.10 seconds ftp> Paso 7.- Cuando la transferencia es completada usted regresará al prompt de FTP. Puede verificar que el archivo fue transferido usando el comando ls, el cual checa el directorio del HOST remoto (Esto si el HOST remoto está corriendo en un sistema operativo UNIX ) : ftp>ls 200 PORT okay 150 Opening data connection for remotest (89.0.0.8,3490) 22 Transfer complete file_name file_name file_name remotetest file_name 149 bytes received in 0.25 seconds Paso 8.- Use el comando GET para transferir un archivo desde el HOST remoto hasta el HOST local, teclee el nombre del archivo remoto como se muestra en el siguiente ejemplo ftp>get remotetest Paso 9.- Como en el caso del comando PUT; podemos poner otro nombre al archivo que será enviado al host remoto de la siguiente forma: ftp>get remote_file local_file_name Usando esta alternativa, el archivo remotetest podrá ser transferido de la siguiente forma : ftp>get remotetest localtest cuando se está ejecutando la transferencia, FTP provee información de como se está efectuando, como se muestra en el siguiente ejemplo : ftp> get remotetest localtest 200 PORT command okay 150 Opening data connection for remotetest (89.0.0.78,6489) 226 Transfer complete 345 bytes sent in 0.13 seconds ftp> Paso 10.- Usted ha regresado al prompt de FTP. Para verificar que el archivo fue transferido teclee !dir , para desplegar su directorio local. El comando ! ejecuta un comando del sistema operativo en su HOST local. Paso 11.- Una vez que la transferencia se completó, se debe de cerrar la conexión con el host remoto usando el comando CLOSE : ftp>close 221 good bye FTP connection closed ftp> Paso 12.- Usted puede establecer una nueva conexión a otro HOST con el comando OPEN. Para terminar la sesión de FTP teclee QUIT o BYE, para regresar al prompt de su sistema operativo. ftp>bye Usando el comando STATUS. De los comandos anteriormente vistos FTP proporciona dos más, que muestran el status de la red y el progreso de la transferencia de archivo : STATUS y VERBOSE. Con el comando STATUS, el comando FTP despliega el estado actual de las opciones de ambiente de FTP. Ejemplo : ftp>status Connected to 3b20 Mode : stream; Type: ascii; Form : non-print; Structure : file; Verbose off; Bell : off; Prompting : off; Globbing : on; Debug : on; Hash mark printing : on; Use of port cmds : on Un segundo modo para mostrar información acerca del procesamiento de FTP es mediante el uso del comando verbose. El programa FTP toma el modo verbose activado por default , FTP responde con mayor detalle a sus comandos; por ejemplo. Cuando usted invoca al comando put FTP le indica cuando comienza a transmitir y cuando termina. El siguiente ejemplo muestra una sesión de FTP en la cual el mismo archivo es transferido, primero con el modo verbose desactivado y luego activado : C:\WINDOWS>ftp PathWay for DOS -- User FTP (Versión 1.1) (C)Copyright 1986, ...1990 The Wollongong Group, Inc. All rights reserved ftp>open 3b20 Connected to 3b20 220 twg3b20 TCP FTP server (Versión 1.61 Aug 25 1987) ready (username)sam 331 Password required for sam Password: 230 User sam logged in ftp>put myfile yrfile 200 PORT Command OK 150 Opening data connection for yrfile 226 transfer completed 781 bytes send in 2.04 seconds (382 bytes/sec) ftp>close 3b20 221 Goodbye ftp>verbose Verbose mode off open 3b20 (username) sam Password: ftp>put myfile yrfile ftp> ftp>close 3b20 ftp>quit Comandos de Comunicación. open host_name Donde host_name es el nombre oficial del host, alias, o dirección Internet del host remoto. Abre una conexión con el HOST remoto. user name Donde name es el usuario o login en un host remoto. Sirve para intentar de nuevo el ingreso al host remoto en caso de error, al momento de teclear su nombre de usuario. close Cierra la conexión con el host remoto pero no sale de FTP. Una vez desconectado, usted puede abrir una conexión para un nuevo host con el comando open. bye Cierra la conexión con el host remoto y nos saca del programa FTP. El comando quit es el mismo que el comando bye. <Ctrl>c Cancela cualquier operación en progreso de FTP y nos saca del mismo. quit Realiza lo mismo que bye. Comandos de Transferencia de Archivos. En este sumario de comandos, rfile es un archivo en un host remoto, lfile es un archivo en el host local, ldir es un directorio en el host local, rdir es un directorio en el host remoto, y command es un comando FTP. get rfile lfile Regresa una copia de rfile y copia este como lfile. La transferencia es realizada en código ASCII a menos que se haya especificado que la transferencia sea en código binario. Si lfile es omitido, rfile es copiado con el mismo nombre en el host local. Si lfile es el nombre de un archivo existente en el host local, FTP sobre escribe el archivo sin mandarle a usted un mensaje de alerta avisándole que ya hay un archivo con ese nombre. El comando recv hace lo mismo que el comando get. put lfile rfile Guarda una copia de lfile como rfile. La transferencia es realizada en código ASCII a menos que se haya especificado que la transferencia sea en código binario. Si rfile es omitido, lfile es copiado con el mismo nombre en el host remoto. Si rfile es el nombre de un archivo existente en el host remoto, FTP sobre escribirá ese archivo sin mandarle un mensaje de alerta avisándole que ya hay un archivo con ese nombre. El comando send hace lo mismo que el comando put. delete rfile Borra rfile en el host remoto append lfile rfile Pega lfile al final de rfile. Si rfile no es especificado o si es especificado pero no existe, FTP copia lfile a un archivo nombrado rfile en el host remoto. rename rold rnew Donde rold es el nombre de un archivo existente en el host remoto y rnew es el nuevo nombre de el archivo en el host remoto. Cambia el nombre de el archivo rold por el nombre rnew. mget rfile1 rfile2 ... Donde rfile1 y rfile2 son nombres de archivos en el host remoto. Regresa una copia de los archivos rfile1 y rfile2 que se localizan en el directorio de trabajo actual del host remoto y los coloca en el directorio actual del host local con el mismo nombre. Cualquier número de archivos remotos puede ser listado en la línea de comando separados por un espacio en blanco. mput lfile1 lfile2 Donde lfile1 y lfile2 son nombres de archivos en el host local. Envía una copia de los archivos lfile1 y lfile2 con el mismo nombre hacia el directorio de trabajo actual del host remoto. Cualquier número de nombres de archivo locales pueden ser listados en la línea de comando separados por un espacio en blanco. mdel rfile1 rfile2 ... Donde rfile1 y rfile2 son nombres de archivos en el host remoto. Borra los archivos rfile y rfile2 del directorio actual de trabajo en el HOST remoto. Cualquier número de archivos puede ser listado en la línea de comando separados por un espacio en blanco. recv rfile lfile Realiza lo mismo que get. send lfile rfile Realiza lo mismo que put. lcd ldir Cambia el directorio de trabajo actual en el host local a ldir. No hay un directorio por default para este comando, usted debe especificar un directorio. pwd Despliega el nombre del directorio de trabajo actual del host remoto. cd rdir Cambia el directorio de trabajo en la máquina remota a rdir. ls rdir lfile Muestra una lista de los nombres de todos los archivos en el directorio rdir. El listado es puesto en el archivo lfile en el host local. Si rdir no es especificado, el directorio de trabajo actual es usado. Si lfile no es especificado, el listado es desplegado en algún dispositivo estandar de salida. El listado que este comando produce es en formato corto, es similar al comando dir de DOS. mkdir rdir Crea un directorio llamado rdir en el host remoto. rmdir rdir Borra el directorio rdir en el host remoto. dir rdir lfile Regresa el listado del los nombres de los archivos en el directorio rdir, y lo escribe en el archivo lfile. Si rdir no está especificado, el directorio actual usa el host remoto. Si lfile no está especificado, el listado es desplegado en el dispositivo de salida estandar. El listado que produce este comando, está en formato largo e incluye la siguiente información: nombres de archivo, longitud, propietario, permisos, y la fecha y el tiempo de las ultimas modificaciones. Comandos de Presentacion de Archivos. type name Donde name es el nombre del archivo que transfiere el comando type. Cambia el nombre del archivo transferido a name. Dos tipos de transferencia son disponibles: binario y ASCII. El tipo de transferencia por omisión es el ASCII. Si name no se especifica, el tipo de transferencia del archivo corriente es desplegado. Este comando elabora la misma función que los comandos ASCII o BINARY para cambiar el tipo de transferencia. ascii Cambia el tipo de transferencia a ASCII. El formato ASCII es usualmente el formato correcto para los archivos de texto tales como los archivos de hojas de calculo, y el código del programa fuente. FTP convierte los archivos en ASCII automáticamente al formato correcto para el host para los cuales esta siendo transferido. El tipo de transferencia de archivo se cambia a ASCII por default. binary Cambia el tipo de transferencia de archivos a binario. FTP no convierte archivos binarios de ningún tipo; ellos son transferidos bit por bit. Comandos de Ambiente. glob Cambia el status de on/off de la opción glob. Cuando glob es activado, FTP reconoce los comodines del sistema operativo * y ? en comandos de FTP. Los únicos comandos en los cuales los caracteres son reconocidos son mput, mget y mdel. Si glob es desactivado, estos caracteres son tratados como parte de un nombre de archivo. glob es activado por default. verbose Cambia el status de on/off de la opción verbose. Cuando verbose es activado, todas las respuestas del server FTP son desplegadas al usuario. Por ejemplo; será comunicado cuando usted esta conectado a un host remoto, cuando una transferencia de archivo está en progreso y cuando la transferencia ha concluido. Después de la transferencia, será informado del tamaño del archivo y que tan rápido ha sido terminado. verbose se activa por default. bell Cambia el status de on/off de la opción bell. Poniendo la opción bell causa que la terminal suene cuando la transferencia es completada, bell es no activa por default. hash Conmuta el status de on/off de la opción hash. Activando hash causa que el carácter '#' sea desplegado en la salida estandar cada vez que un paquete es enviado o recibido durante la transferencia. Hash se desactiva por default. prompt Conmuta el status de on/off de la opción prompt. Prompt provoca que los comandos mput, mget, y mdel se desplieguen con los nombres de los archivos correspondientes a los comandos. Respondiendo con n provoca que el archivo sea brincado. Respondiendo con cualquier carácter diferente de n provoca que el archivo sea procesado por el comando especificado. Si el comando prompt es apagado, múltiples comandos con o sin parámetros de comodín se procesarán en todos los archivos. Prompt es activado por omisión. status Muestra el estado de la conexión en turno, el modo de transferencia, mensajes, hash, bell, y otras opciones de la sesión FTP actual. Comandos de Ayuda. help command Muestra información de ayuda acerca de command. Si command no es especificado, FTP imprime una lista de estos comandos. El comando ? es el mismo que help. remotehelp command Muestra información de ayuda a cerca de command y su relación con el host remoto. Si se omite command FTP muestra la lista de los comandos FTP que son reconocidos por el host remoto. ? command Hace lo mismo que help. Sesión Típica de FTP Una sesión típica de FTP consta de 2 pasos generales: 1.-Establecer una conexión con un host remoto 2.-transferir uno o mas archivos Para completar una transmisión de archivos, estos pasos son subdivididos en otros pasos más específicos; los cuales son listados más adelante. Los parámetros encerrados en corchetes son opciones para el HOST. Si no son especificados, FTP preguntara por la información necesaria. PASO 1 - La forma de iniciar el programa de FTP es: > ftp host_name Donde host_name es el nombre oficial del host, alias o dirección internet del host con el cual se va a transferir archivos. Después de ejecutarse el comando de FTP, el programa responde con este prompt: ftp>. Cuando éste prompt se presenta, puede usar el programa de FTP. Para ayuda teclee el signo de interrogación: ftp>? PASO 2 - Si no especifica host_name en el paso 1, use el comando de open para establecer la conexión. ftp>open host_name después de esto se le pedirá su nombre de usuario (login) y password. PASO 3 - Para mandar un archivo al host remoto, utilice el comando: PUT ftp>put local_file_name remote_file_name O, para traer un archivo desde un host remoto, use el comando: GET ftp>get remote_file_name local_file_name Si el nombre del archivo remoto o local no es reconocido por el correspondiente host, no ocurrir la transferencia del archivo. PASO 4 - Cuando finalice, teclee QUIT o BYE. Esto rompe la conexión FTP con el host remoto y lo regresa a DOS. ftp>bye 221 Goodbye. Ahora, en la actualidad, toda esta serie de comandos se engloban en programas con interfaz gráfica, la cuál hace que todo se realice de una manera muy sencilla e inttuitiva. Si deseas obtener algunos de estos FTP nuevos, te recomendamos que visites el siguiente sitio: http://ftp.azc.uam.mx/pub/ftp ¿ Qué es el servicio FTP Anonymous ? El FTP anonymous es un SERVICIO ESPECIAL que te permite, SIN TENER UN 'USERID' o CUENTA en un equipo, poder acceder a sus archivos. Esta es, de hecho, la manera más comoda de permitir que todo el mundo tenga acceso a cierta información, sin que para ello el administrador de un sistema tenga que crear una cuenta para cada persona interesada en disponer de ella. Si una maquina posee servicio 'FTP anonymous' solamente con teclear la palabra "anonymous" - anónimo en ingles - cuando dicha maquina pregunte por tu usuario, tendras acceso a ese sistema. No necesitas una palabra de paso (contraseña) aunque, eso si, tendras menos privilegios que un usuario normal. Normalmente solo podras leer, y por supuesto copiarte, los archivos existentes, pero no modificarlos ni crear otros nuevos. ¿ Qué puedes encontrar en un equipo con servicio FTP Anonymous ? Estos equipo es que permiten que se acceda a ellos mediante 'FTP anonymous' disponen de multitud de archivos de todo tipo, abarcan un sin fin de temas. Entre los que podriamos comentar estos pocos: - Software para todo tipo de equipoes, desde equipoes personales hasta supercomputadores. Desde juegos, pasando por antivirus, hasta procesadores de textos y utilidades para el sistema operativo. Y por supuesto software de conexion a la red para sacarle aun mas partido. - Archivos Graficos. Imagenes de los programas espaciales de la NASA, fotos via satelite de muchos paises del mundo, imagenes de plantas o animales, de chicas guapas (y de chicos!), mapas meteorologicos, etc. - Bases de Datos con multitud de archivos accesibles. Dedicadas a veces a temas exclusivos como: Biologia Molecular, Geologia y Geofisica, Ciencias de la Salud, Alcoholismo, etc. - Archivos Cientificos que tratan de encuentros, experimentos o articulos publicados. Otros que recopilan bibliografia de publicaciones ya puedan ser de matematicas, fisica, educacion, nutricion, etc. - Revistas publicadas periodicamente en temas que tratan desde musica, literatura, leyes, educacion o recetas de cocina, hasta biologia, matematicas o ciencias de la informacion. - Archivos sobre el propio funcionamiento de la red. Y lo mas importante, archivos dedicados exclusivamente a informar de muchos de los recursos que existen y surgen dia tras dia a lo largo de la red, explicando como hacer uso de ellos. Recursos que abarcan nuevas Bases de Datos, apariciones de revistas electronicas, accesos a Bibliotecas .Publicas, etc. Y LO MEJOR DE TODO ELLO es que toda esa informacion es absolutamente GRATIS. No pagas por los derechos de autor. NO PAGAS por el software que gentilmente la gente pone a disposicion de todo el mundo. NO PAGAS por la publicacion de las revistas en las que estas interesado, etc. Gopher. ¿ Qué es GOPHER ? Para el novato la palabra gopher en inglés puede significar topo, pero en Internet un gopher es un medio para el intercambio de información en forma cliente/servidor. Originalmente gopher fue diseñado para ser una herramienta de recuperación de texto, pero ha evolucionado a una herramienta de recuperación de información de multimedia. Nuevos servidores gopher nos dan la posibilidad de recuperar texto, imágenes, sonidos y vídeo. Usualmente el gopher es una aplicación cliente-servidor. El cliente gopher es un programa que corre en la computadora y nos da la conexión al servidor gopher. El servidor gopher proporciona una interfaz manejada por menús para cubrir las vastas cantidades de información que existen en una gran diversidad de tópicos. Clientes y servidores gopher existen en muchos sistemas, incluyendo UNIX, NeXTStep, DOS, WINDOWS, MACINTOSH, VMS, OS/2, VM/CMS y MVS. Usando GOPHER. Siendo un cliente gopher se puede encontrar más información acerca de éste, usando el gopher por sí mismo. Para usar gopher se tiene que teclear: gopher Usted se conectará por default al servidor gopher, el cual está definido por un administrador gopher ( algunas veces llamado gophermaster ) cuando el cliente gopher se instala. La mayoría de los clientes gopher que trabajan en ambiente windows y Mac, permiten la definición del servidor gopher por default cuando se configura el cliente gopher en el sistema. Si se desea conectar a un gopher diferente al asignado por default se debe teclear gopher server-name donde server-name es el nombre del servidor gopher al cual se desea conectar. Si se quiere conectar al servidor gopher de la Universidad de Minnesota por ejemplo (gopher.tc.umn.edu). Se debe teclear. gopher gopher.tc.umn.edu Pocos segundos después de conectarse al servidor gopher se desplegará un menú en la pantalla estructurado de la siguiente forma. Internet Gopher Information Client 2.0 pl8 Root gopher server: gopher.tc.umn.edu --> 1. Information About Gopher/ 2. Computer Information/ 3. Discussion Groups/ 4. Fun & Games/ 5. Internet File Server (FTP) sites/ 6. Libraries/ 7. News/ 8. Other Gopher and Information Servers/ 9. Phone Books/ 10. Search Gopher Titles at the University of Minnesota <?> 11. Search lots of places at the University of Minnesota <?> 12. University of Minnesota Campus Information/ El menú de gopher puede ser navegado, usando las flechas del teclado para moverse al número de opción deseado, o tecleando el número que tiene asignada dicha opción. El menú en realidad, puede variar dependiendo del cliente gopher que se esté utilizando. Cuando usted vea que la opción en el menú gopher este indicada con un punto (.) después del titulo, indica que la opción del menú es un archivo; no hay más menús de opciones debajo de esa selección. Si se selecciona esta opción se recuperará el contenido de un archivo gopher. Cuando se vea una opción con una diagonal (/) significa que es un directorio, en el cual existen más opciones de información por debajo de éste. Cuando se vea una opción con un signo de interrogación entre brakets ( <?> ), indica que hay una pantalla de selección de búsqueda debajo de ésta. En el ejemplo, si se selecciona la opción número 1 que dice "Information About Gopher/ " se desplegará el siguiente menú: Information About Gopher --> 1. About Gopher. 2. Search Gopher News <?> 3. Gopher News Archive/ 4. GopherCON '94/ 5. Gopher Software Distribution/ 6. Commercial Gopher Software Distribution/ 7. Gopher Protocol Information/ 8. University of Minnesota Gopher software licensing policy. 9. Frecuently Asked Questions About Gopher. 10. Gopher+ Example Server/ 11. comp.infosystems.gopher (USENET newsgroup)/ 12. Gopher T-shirt on MTV #1 <Picture> 13. Gopher T-shirt on MTV #2 <Picture> 14. How to get your Information into Gopher. 15. Reporting Problems or Feedback. Usando la ayuda de GOPHER. Además de la opciones de menú existen otras, presionando '?' se tiene acceso a la ayuda del sistema gopher por ejemplo: Quick Gopher Help ----------------Moving around Gopherspace ------------------------Press return to view a document Uses the Arrows Keys or vi/emacs equivalent to move around Up .........................: Move to previous line. Down .......................: Move to next line. Right Return ...............: "Enter"/Display current item. Left, u ....................: "Exit" current item/Go up a level. >, +, Pgdwn, space .........: View next page. <, -, Pgup, b ..............: View previous page. 0-9 ........................: Go to specific line. m ..........................: Go back to the main menu. Bookmarks --------a : Add current item to the bookmark list. A : Add current directory/ search to bookmark list. v : View bookmark list. d : Delete a bookmark/ directory entry. Other commands -------------- s : Save current item to a file. D : Download a file. q : Quit with prompt. Q : Quit unconditionally. = : Display Technical Information about current items. o : Open a new gopher server. O : Change options. / : Search for a item in the menu. n : Find next search item. l, $ : Shell Escape (UNIX) or Spawn subprocess (VMS) Usando búsqueda por índices. En el siguiente ejemplo se usa una búsqueda por índices en el servidor. Oprima la tecla enter o la tecla '->', enseguida posicionese en la opción 2, y aparecerá la ventana de búsqueda de selección sobre el menú anterior. Internet Gopher Information Client 2.0 p18 Information About Gopher 1. About Gopher. --> 2. Search Gopher News <?> 3. Gopher News Archive/ 4. GopherCON '94/ 5. Gopher Software Distribution/ 6. Commercial Gopher Software/ +-------------------------------------------------------------------------+ | | | | | Words to search for | | | | | | | | | | [Cancel: ^G] [Erase: ^U] [Accept: Enter] | | | +-------------------------------------------------------------------------+ 15. Reporting Problems or Feedback. Introduzca la palabra que desea encontrar. Deben ser palabras en inglés, y al hacer esto aparecerá una lista en pantalla conteniendo todos los títulos de temas que contienen dicha palabra, posteriormente, seleccione una opción de las mostradas (de la misma forma que se ha venido realizando). Búsqueda de un tópico en el menú. Gopher proporciona la posibilidad de buscar un tópico en un menú multipantalla. En el siguiente ejemplo se despliega una lista de todos los servidores gopher de los Estados Unidos. Internet Gopher Information Client 2.0 p18 USA -- > 1. All/ 2. General/ 3. alabama/ 4. arizona/ 5. california/ 6. colorado/ 7. connecticut/ 8. delaware/ 9. florida/ 10. georgia/ 11. hawaii/ 12. idaho/ 13. illinois/ 14. indiana/ Oprima ' / ' y se abrirá una ventana de selección: Internet Gopher Information Client 2.0 p18 USA -- > 1. All/ 2. General/ 3. alabama/ 4. arizona/ 5. california/ 6. colorado/ +-----------------------------------USA--------------------------------+ | | | Search directory titles for: | | | | New York | | | | [Cancel: ^G] [Erase: ^U] [Accept: Enter] | | | +--------------------------------------------------------------------------+ 16. kansas/ 17. kentucky/ En este ejemplo, al escribir New York Gopher posicionará el cursor a la posición 32 donde está New York: Internet Gopher Information Client 2.0 p18 USA 20. maryland/ 21. massachusetts/ 22. michigan/ 23. minnesota/ 24. mississippi/ 25. missouri/ 26. montana/ 27. nebraska/ 28. nevada/ 29. new hampshire/ 30. new jersey/ 31. new mexico/ --> 32. new york/ 33. north carolina/ Entrando a un nuevo servidor GOPHER Se puede conectar directamente a un gopher a través del nombre del servidor gopher, pero también se puede entrar a otro servidor gopher desde el actual servidor en el cual nos encontramos. Presione "o" y se abrirá una ventana como la siguiente: Internet Gopher Information Client 2.0 pl8 Root gopher server: gopher.tc.umn.edu --> 1. Information About Gopher/ 2. Computer Information/ 3. Discussion Groups/ +--------------------Connect to a new Gopher Server-----------------------------+ | | | Hostname panix.com | | Port 70 | | Selector (Optional) | | | | | | | | [Switch Fields: TAB] [Cancel: ^G] [Erase: ^U] [Accept: Enter] | | | +---------------------------------------------------------------------------------------------+ E introduzca el nombre del servidor gopher al cual se desea conectar. WAIS. WAIS, es una herramienta que nos permite localizar documentos sobre cierto tema en función al texto que contiene. En este caso lo que se tiene es un conjunto de bases de datos de documentos, contenidas en máquinas alrededor del mundo e indexadas por el contenido de dichos documentos. Al igual que ARCHIE, WAIS ya no es utilizado en la actualidad ya que los buscadores sobre WWW realizan esta función. ARCHIE. Esta herramienta permite localizar un archivo o directorio sobre cierto tema, dentro de los equipos que se encuentran conectados a INTERNET, con el fin de posteriormente recuperarlo utilizando FTP. Esta herramienta ya no es muy utilizada, debido a que en la actualidad los buscadores, sobre el WWW ya realizan esta función. Acceso vía PPP (Internet desde tu casa) ¿ Qué es la Cuenta PPP ? La cuenta PPP es una cuenta que proporciona la UAM para tener acceso a Internet vía módem, es decir el tener Internet desde su casa. La universidad cuenta con el servicio de PPP (Point to Point Protocol), este es un protocolo que permite realizar una conexión TCP/IP (Protocolo de Internet) vía telefónica, convertiendo a su computadora en un nodo Internet en la conexión. ¿ Qué requiero para la Cuenta PPP ? Los requisitos para la cuenta PPP son los siguientes: 1. Ser Personal Académico oAdministrativo de la Universidad Autónoma Metropolitana. 2. Contar con línea Telefónica. 3. Su computadora debe tener un módem (velocidad mínima de 9600 bps). 4. Tener cuenta de e-mail (correo electrónico) por parte de la Universidad. 5. Tener cuenta de acceso vía PPP. 6. Tener el software de conexión. ¿ Para que Sistemas Operativos esta liberado el servicio de PPP? El acceso vía PPP esta elaborado solamente para los siguientes sistemas operativos: 1. Windows 3.xx 2. Windows 95/98 3. Windows NT 4. MAC OS. ¿Cómo obtengo mi cuenta PPP ? Primeramente usted debe ser usuario de correo electrónico, ya la cuenta de PPP llega por este medio. Si usted no tiene cuenta de e-mail y/o la cuenta de acceso vía PPP, solicítela en la Coordinación de Servicios de Cómputo - Servicios de Internet (Edificio T - 2° Piso.), con el Ing. Juan Carlos Pedral o el Ing. David Martínez. Los Datos requeridos son: - Nombre Completo. Número Económico. División o Coordinacción. Departamento o Sección. Ubicación (Edificio, Nivel, Cubículo y No. telefonico de casa u oficina). ¿ Necesito un software especial para la conexión vía PPP ? Dependiendo del sistema operativo que tenga en su casa es el software que necesita, para la plataforma Windows 3.xx se requieren tres discos de 3.5" de ata densidad y para la platorforma Windows 95/98 se requiere un disco de 3.5" de alta densidad; para las plataformas MAC tendrá que comunicarse con el Ing. Alfonso Barrera Pérez a la Ext. 9259, y él le indicará los pasos a seguir para la conexión vía PPP con plataforma MAC. El software tanto para plataforma PC o MAC se puede obtener en el FTP Anónimo de la Universidad Autónoma Metropolitana Azcapotzalco. ¿ Cómo instalo el software en mi computadora ? Para poder instalar el software y configurar la conexión PPP, usted tiene que seguir un sencillo instructivo (sólo Windows 3.xx y Windows 95/98), donde se le indica los pasos a seguir en la instalación, configuración y conexión de la Cuenta PPP. Este manal de instalación se les proporciona en el juego de discos del software de la cuenta PPP, pero si usted desea leer el manual antes existen dos formas de consulta, estas son: 1. Obtener el instructivo de instalación de la cuenta PPP (elaborado en Word para Windows, versión 6.0): doc3x.exe (Instructivo de Instalación para Windows 3.1x) doc95.exe (Instructivo de Instalación para Windows 95 y Windows 98) Nota: Le recomendamos que guarde el archivo que contiene el instructivo un directorio temporal. Para esta opción se tienen que realizar los siguientes pasos: a) Cuando ya haya bajado (grabado) el documento de instalación, cree un directorio temporal (ejemplo: c:\> md tmp <ENTER> ) b) Coloquese dentro del directorio y ejecute desde este el archivo que bajo anteriormente (ejemplo: c:\tmp>c:\temp\doc95.exe <ENTER>) c) Cuando usted haya ejecurtado la instrucción anterior, podrá observar el proceso de descompresión del manual de instalacion. d) Una vez que haya terminado la descompresión del manual, usted ya podra borrar el archivo que bajo (ejemplo: c:\tmp> del c:\temp\doc95.exe <ENTER> ) e) Ahora solo queda que usted cargue el instructivo de instalación con Microsoft Word para Windows, versión 6.0 o posterior para leerlo o imprimirlo. ¿ Cuáles son los números telefónicos de acceso para la cuenta PPP ? La UAM cuenta con 30 líneas telefónicas para proporcionar el acceso a Internet vía módem, estas lineas estan agrupadas en 1 número telefónico. Este número es: Número Telefónico Lineas Vía de Comunicación 5-483-99-10 30 Rectoría General Chat. Este Servicio nos permite el realizar una platica remota en " tiempo real " con una persona o un grupo de personas. Además de permitirnos mandar archivos, recibir archivos y en algunos escuchar música. El Chat se ha vuelto muy popular en este tiempo, ya que es una manera de interactuar de forma real con personas que estan distantes de nosotros. En la actualidad, existen chats que se conectan mediante el WWW, y otros en los cuales se requiere instalar un programa de conexión al servirdor de pláticas. Existen una gran variedad de programas para este servicio, los hay desde programas en modo texto hasta programas con una interfaz gráfica amigable. Todos los Servicios de proporciona servicios de Internet estan apoyados sobre la infraestructura de la red de datos de la Universidad Autónoma Metropolitana, TeleUAM. ¿Que es la red TeleUAM? La red TeleUAM, es la encargada de enlazar a todas las unidades que conforman la Universidad Autónoma Metropolitana con el resto del mundo, y proporcionar servicios generales como son los Servicios de Internet. 2.6 Desarrollo de aplicaciones en Internet. 2.6.1 Lenguaje de marcas (HTML). HTML, HyperText Markup Language, es un lenguaje simple utilizado para crear documentos de hipertexto para WWW. No es un lenguaje de descripción de página como Postcript; HTML no permite definir de forma estricta la apariencia de una página, aunque una utilización algo desviada hace que se utilice en ocaciones como un lenguaje de presentación. Además, la presentación de la página es muy dependiente del browser (o programa navegador) utilizado: el mismo documento no produce el mismo resultado en la pantalla si se visualiza con un browser en modo línea, Mosaic o Netscape, o sea, HTML se limita a describir la estructura y el contenido de un documento, y no el formato de la página y su apariencia. Una de las claves del éxito de WWW, aparte de lo atractivo de su presentación es sin duda, su organización y coherencia. Todos los documentos WWW comparten un mismo aspecto y una única interfaz, lo que facilita enormemente su manejo por parte de cualquier persona. Esto es posible porque el lenguaje HTML, en que están escritos los documentos, no solo permite establecer hiperenlaces entre diferentes documentos, sino que es un "lenguaje de descripción de página" independiente de la plataforma en que se utilice. Es decir un documento HTML contiene toda la información necesaria sobre su aspecto y su interacción con el usuario, y es luego el browser que utilicemos el responsable de asegurar que el documento tenga un aspecto coherente, independientemente del tipo de estación de trabajo desde donde estemos efectuando la consulta. Su simplicidad es tal que no es necesario utilizar un editor particular. Su gran permisividad exige rigor y atención en la estructura de documentos con el fin de que éstos se visualicen correctamente al margen del contexto y el browser utilizado. Por tanto, como hemos visto, HTML es un lenguaje muy sencillo que nos permite preparar documentos Web insertando en el texto de los mismos una serie de marcas (tags) que controlan los diferentes aspectos de la presentación y comportamiento de sus elementos. Para escribir HTML lo único que se necesita es un editor de texto ASCII, como EDIT del MS-DOS o el Bloc de notas de Windows. Las marcas o tags que controlan el comportamiento del documento son fragmentos de texto encerrados entre los signos "mayor que" y "menor que" (<marca>). Existen diferentes tipos de marcas: algunas controlan simplemente la presentación del texto del documento; otras, la forma en que se incluirán en él imágenes; otras, finalmente, los hiperenlaces con documentos o con diferentes partes del mismo documento. Existen una serie de programas que ayudan en la elaboración de documentos HTML, como HTMLED (shareware) o HTML Assistant, ambos para Windows, pero no son imprescindibles para escribir el código. Lo que si es necesario es un programa cliente WWW, tal como Mosaic, o Netscape, para probar el documento a medida que lo vamos desarrollando. Las marcas funcionan muchas veces por parejas, una para indicar el inicio de enlace o formato, y otra para señalar el final. La marca de inicio consiste en una letra o una palabra (por ejemplo, estas son marcas de inicio: <B>, <TITLE>). La marca de final es la misma letra o palabra precedida por la barra inclinada o "slash" (es decir,</B>, </TITLE>). Existen, no obstante, algunas marcas que no requieren su pareja de cierre, como <BR> (que fuerza un salto de línea). Es importante señalar que las marcas, en general pueden estar indistintamente en mayúsculas o en minúsculas. Como todo lenguaje, está en constante evolución. La versión en curso es la versión 2.0 pero existe ya un proyecto para la versión 3.0. Evolución del lenguaje El lenguaje HTML nace en 1991 de manos de Tim Bernes-Lee del CERN como un sistema hipertexto con el único objetivo de servir como medio de transmisión de información entre físicos de alta energía como parte de la iniciativa WWW. En 1993 Dan Connelly escribe el primer DTD (Document Type Definition) de SGML describiendo el lenguaje. En 1994 el sistema había tenido tal aceptación que la especificación se había quedado ya obsoleta. Por aquel entonces WWW y Mosaic eran casi sinónimos debido a que el browser Mosaic del NCSA (National Center for Supercomputing Applications) era el más extendido debido a las mejoras que incorporaba. Es entonces cuando nace el HTML 2.0 en un draft realizado también por Dan Connelly. El crecimiento exponencial que comienza a sufrir el sistema lleva a organizar la First International WWW Conference en Mayo de 1994. El principal avance de 2.0 de HTML es la incorporación de los llamados forms, formularios que permiten que el usuario cliente envie información al servidor y ésta sea recogida y procesada allí. Precisamente con este fin, NCSA presenta la especificación del CGI, Common Gateway Interface, versión 1.0 que define un interfaz entre programas ejecutables y el sistema WWW. Con la incorporación de los forms, aparecen por primera vez campos donde el usuario puede escribir, menús "pull-down" y los denominados "radio-buttons" integrados en páginas WWW. Desde entonces, el lenguaje ha seguido creciendo como algo dinámico, como una lengua humana, algo vivo, siendo modificado sobre todo por las personas que lo utilizan. Asi, una evolución en el lenguaje suele surgir de una propuesta que es adoptada por algunos clientes (browsers). Con el uso se ve si es eficiente y es adoptada y si es así, finalmente se incorpora al estándar. De este modo, a finales de 1993 se comienza a hablar de HTML+ propuesto por Dave Raggett, de HEP Labs, en Bristol que evoluciona a un nuevo draft de Marzo de 1994 para la versión HTML 3.0 incorporando nuevas posibilidades como la realización de tablas complejas, control de proceso de formatos e incorporación de expresiones matemáticas. El testigo pasa del browser Mosaic al Netscape, que incorpora nuevas mejoras. Aunque el equipo de Netscape anuncia desde el principio que su browser trata HTML 3.0, lo cierto es que no se adapta al estándar. Por el momento, el único browser de HTML 3.0 es experimental y recibe el nombre de Arena. El lenguaje de Netscape, el más utilizado en la actualidad, incorpora etiquetas no definidas en HTML 3.0, y tiene algunas diferencias con algunas de las definidas, por ejemplo en la realización de tablas. Por otra parte, hasta la versión 2.0, recién aparecida, no permitía el empleo de expresiones matemáticas (al escribir este artículo el autor aún no ha analizado la versión 2.0). Y como gran idea propone la incorporación de un tipo MIME experimental que permite la actualización dinámica de documentos, del que se hablará en el apartado dedicado a la programación de CGI. Por ello, en "los ambientes" se ha comenzado a denominar este lenguaje de Netscape como NHTML 1.1 para diferenciarlo de la verdadera propuesta de HTML 3.0. 2.6.2 Lenguaje de scripts: JavaScript (diseño de páginas web, encuestas, comercio electrónico) El JavaScript permite crear aplicaciones específicamente orientadas a su funcionamiento en la red Internet. Usando JavaScript, se pueden crear páginas HTML dinámicas que procesen la entrada del usuario y que sean capaces de gestionar datos persistentes usando objetos especiales, archivos y bases de datos relacionales. Con JavaScript se pueden construir aplicaciones que varían desde la gestión de la información corporativa interna y su publicación en Intranets hasta la gestión masiva de transacciones de comercio electrónico. Aunque se trata de algo que se sale del alcance de este curso, es importante reseñar que JavaScript puede utilizar una tecnología propietaria de Netscape, denominada LiveConnect; con el propósito de que las aplicaciones JavaScript puedan tener acceso a aplicaciones basadas en objetos distribuidos CORBA y Java. En cualquier caso, es importante señalar que, pese a la similitud de nombres, JavaScript no es Java. Las aplicaciones cliente y servidor en JavaScript comparten el mismo núcleo de lenguaje. Este núcleo se corresponde con ECMA-262, el lenguaje de scripts estándar de la Oficina de Estándares de la Unión Europea, con algunos añadidos extra. Aunque Javascript de cliente y de servidor comparten el mismo conjunto base de funciones y características; en algunos casos se utilizan de distinta forma. Los componentes de JavaScript son los siguientes: -Núcleo de JavaScript (Core JavaScript). -JavaScript para Cliente. -JavaScript para Servidor. JavaScript para cliente engloba el núcleo del lenguaje y algunos elementos adicionales como, por ejemplo, una serie de objetos predefinidos que sólo son relevantes para la ejecución de JavaScript en el contexto de un cliente Web. Así mismo, JavaScript para servidor incluye también el núcleo de lenguaje y los objetos predefinidos y funciones necesarias para el correcto funcionamiento en el marco de un servidor. El código JavaScript para cliente se integra directamente en páginas HTML y es interpretado, en su totalidad, por el cliente Web en tiempo de ejecución. Puesto que con frecuencia es necesario ofrecer el mayor rendimiento posible, las aplicaciones JavaScript desarrolladas para servidores se pueden compilar antes de instalarlas en dichos servidores. JavaScript es el lenguaje que nos permite interactuar con el navegador de manera dinámica y eficaz, proporcionando a las páginas web dinamismo y vida. Conceptos básicos Todos los que hasta ahora hayan seguido el curso de HTML, se habrán dado cuenta de una cosa: crear un documento HTML es crear algo de caracter estático, inmutable con el paso del tiempo. La página se carga, y ahí termina la historia. Tenemos ante nosotros la información que buscábamos, pero no podemos INTERACTUAR con ella. Así pues, como solución a este problema, nace JavaScript. ¿Y qué es JavaScript? Se trata de un lenguaje de tipo script compacto, basado en objetos y guiado por eventos diseñado específicamente para el desarrollo de aplicaciones cliente-servidor dentro del ámbito de Internet. Los programas JavaScript van incrustados en los documentos HMTL, y se encargan de realizar acciones en el cliente, como pueden ser pedir datos, confirmaciones, mostrar mensajes, crear animaciones, comprobar campos... Versiones El programa que va a interpretar los programas JavaScript es el propio navegador, lo que significa que si el nuestro no soporta JavaScript, no podremos ejecutar las funciones que programemos. Desde luego, Netscape y Explorer lo soportan, el primero desde la versión 2 y el segundo desde la versión 3. Navegador Version de JavaScript Soporte ECMA Nestcape 2 Javascript 1.0 -- Internet Explorer 2 No soporta JavaScript -- Nestcape 3 Javascript 1.1 -- Internet Explorer 3 Javascript 1.0 -- Nestcape 4 Javascript 1.2 - 1.3 incompleta ECMA-262-compliant hasta la version 4.5 Internet Explorer 4 Javascript 1.2 ECMA-262-compliant Nestcape 6 ECMA compliant Javascript 1.4 Full ECMAScript-262 Internet Explorer 5 ECMA compliant Javascript 1.3 Full ECMAScript-262 Las diferentes versiones de JavaScript han sido finalmente integradas en un estándar denominado ECMAScript-262. Dicho estándar ha sido realizado por la organización ECMA dedicada a la estandarización de información y sistemas de comunicación. Las versiones actuales de los navegadores soportan este estándar, así que basaremos el curso sobre él. http://www.webestilo.com/javascript/js00.phtml Dónde y cómo incluir JavaScript Por Lola Cárdenas y Joaquin Gracia. rinconprog.metropoli2000.com Existen distintos modos de incluir lenguaje JavaScript en una página. La forma mas frecuente de hacerlo es utilizando la directiva <script> en un documento HTML (se pueden incluir tantas directivas <script> como se quiera en un documento). El formato es el siguiente: <script language="Javascript 1.3"> El atributo lenguaje hace referencia a la versión de JavaScript que se va a utilizar en dicho script. Otro atributo de la directiva script es src, que puede usarse para incluir un archivo externo que contiene JavaScript y que quiere incluirse en el código HTML. <script language="JavaScript" src ="archivo.js"> </script> El archivo externo simplemente es un archivo del texto que contiene código JavaScript, y cuyo nombre acaba con la extensión js. Puede incluirse también código JavaScript como respuesta a algún evento: <input type="submit" onclick="alert('Acabas de hacer click');return false;" value="Click"> Click Nota: Los scripts pueden incluirse como comentarios para asegurar que su código no es "visto" por navegadores viejos que no reconocen JavaScript y así evitar errores. <script ....> <!Código JavaScript //--> </script> http://www.webestilo.com/javascript/js01.phtml Gramática Por Lola Cárdenas y Joaquin Gracia. rinconprog.metropoli2000.com Si conoce algún otro lenguaje de programación ya estará familiarizado con el uso de variables, operadores, declaraciones... Lo que se resume en la tabla siguiente son los elementos principales de la gramática de JavaScript. Cada uno de los elementos se verá en detalle a lo largo del manual. Nota importante: JavaScript es sensible a mayúsculas y minúsculas, todos los elementos de JavaScript deben referenciarse cómo se definieron, no es lo mismo "Salto" que "salto". Variables Etiquetas que se refieren a un valor cambiante. Operadores Pueden usarse para calcular o comparar Ejemplo: pueden sumarse dos valores, pueden compararse dos valores... Expresiones Cualquier combinación de variables, operadores, y declaraciones que evalúan a algún resultado. Ejemplo: intTotal=100; intTotal > 100 Sentencias Una sentencia puede incluir cualquier elemento de la grámatica de JavaScript. Las sentencias de JavaScript pueden tomar la forma de condicional, bucle, o manipulaciones del objeto. La forma correcta para separarlas es por punto y coma, esto sólo es obligatorio si las declaraciones múltiples residen en la misma línea. Aunque es recomedable que se acostumbre a terminar cada instrucción con un punto y coma, se ahorrará problemas. Objetos Estructura "contenedora" de valores, procedimientos y funciones, cada valor refleja una propiedad individual de ese objeto. Funciones y Métodos Una función de JavaScript es bastante similar a un" procedimiento" o" subprograma" en otro lenguaje de programación. Una función es un conjunto que realizan alguna acción. Puede aceptar los valores entrantes (los parámetros), y puede devolver un valor saliente. Un método simplemente es una función contenida en un objeto. http://www.webestilo.com/javascript/js02.phtml Variables Por Lola Cárdenas y Joaquin Gracia. rinconprog.metropoli2000.com valores. Las variables almacenan y recuperan datos, también conocidos como "valores". Una variable puede referirse a un valor que cambia o se cambia. Las variables son referenciadas por su nombre, y el nombre que les es asignado debe ser conforme a ciertas reglas (debe empezar con una letra o ("_"); los carácteres siguientes pueden ser números (0-9), letras mayúsculas o letras minúsculas). Ejemplos de definiciones erróneas: var Mi Variable, 123Probando, $Variable, for, while; Ejemplos de definiciones correctas: var _Una_Variable, P123robando, _123, mi_carrooo; Por supuesto, podemos inicializar una variable al declararla: var Una_Variable="Esta Cadenita de texto"; Las variables en JavaScript pueden ser de alcance global o local. Una variable global es accesible desde cualquier <script> de la página mientras que una variable local sólo lo es desde la función en la que fue declarada. Normalmente, usted crea una nueva variable global asignándole simplemente un valor: globalVariable=5; Sin embargo, si usted está codificando dentro de una función y usted quiere crear una variable local que sólo tenga alcance dentro de esa función, debe declarar la nueva variable haciendo uso de var: function newFunction() { var localVariable=1; globalVariable=0; ... } http://www.webestilo.com/javascript/js03.phtml Tipos de datos Por Lola Cárdenas y Joaquin Gracia. rinconprog.metropoli2000.com Javascript reconoce seis tipos de valores diferentes: numéricos, lógicos, objetos, cadenas, nulos e indefinidos. JavaScript tiene la peculiaridad de ser un lenguaje débilmente tipado, esto es, una variable puede cambiar de tipo durante su vida, por ejemplo uno puede declarar una variable que ahora sea un entero y más adelante una cadena. MiVariable=4; y después: MiVariable="Una_Cadena"; A diferencia de otros lenguajes y como ya hemos visto, en Javascript no es necesario declarar las variables especificando el tipo de dato que contendrán, será el propio interprete el que le asignará el tipo apropiado. (Esto es así para seguir la filosofía de diseño de Javascript que indica que se realizan programas pequeños y que la idea es lograr que el programador realice los scripts de la manera más rápida posible). Tipos de Datos: Números Enteros o coma flotante. Boleanos True o False. Cadenas Los tipos de datos cadena deben ir delimitados por comillas simples o dobles. Objetos Obj = new Object(); Nulos Null Indefinidos Un valor indefinido es el que corresponde a una variable que ha sido creada pero no le ha sido asignado un valor. http://www.webestilo.com/javascript/js04.phtml Operadores Por Lola Cárdenas y Joaquin Gracia. rinconprog.metropoli2000.com Los operadores toman una o más variables o valores (los operando) y devuelve un nuevo valor; por ejemplo el ' +' operador puede agregar dos números para producir un tercero. Lo operadores están clasificados en varias clases dependiendo de la relación que ellos realizan: Operadores Aritméticos Los operadores aritméticos toman los valores numéricos (literales o variables) como sus operando y devuelve un solo valor numérico. Los operadores aritméticos normales son: Operador Nombre Ejemplo Descripción + Suma 5 + 6 Suma dos números - Substracción 7 - 9 Resta dos números * Multiplicación 6 * 3 Multiplica dos números / División 4 / 8 Divide dos números % Módulo: el resto después de la división 7 % 2 Devuelve el resto de dividir ambos números, en este ejemplo el resultado es 1 ++ Incremento. a++ Suma 1 al contenido de una variable. -- Decremento. a-- Resta 1 al contenido de una variable. - Invierte el signo de un operando. -a Invierte el signo de un operando. <!-- Manual de JavaScript de WebEstilo.com --> <html> <head> <title>Ejemplo de JavaScript</title> </head> <body> <script language="JavaScript"> a = 8; b = 3; document.write(a + b); document.write("<br>"); document.write(a - b); document.write("<br>"); document.write( a * b); document.write("<br>"); document.write(a / b); document.write("<br>"); a++; document.write(a); document.write("<br>"); b--; document.write(b); </script> </body> </html> http://www.webestilo.com/javascript/js05.phtml Operadores de comparación Por Lola Cárdenas y Joaquin Gracia. rinconprog.metropoli2000.com Un operador de la comparación compara sus operando y devuelve un valor lógico basado en si la comparación es verdad o no. Los operando pueden ser numéricos o cadenas. Operador == Descripción " Igual a" devuelve true si los operandos son iguales === != !== > >= < <= Estrictamente "igual a" (JavaScript 1.3) " No igual a" devuelve true si los operandos no son iguales Estrictamente " No igual a" (JavaScript 1.3) " Mayor que" devuelve true si el operador de la izquierda es mayor que el de la derecha. " Mayor o igual que " devuelve true si el operador de la izquierda es mayor o igual que el de la derecha. " Menor que" devuelve true si el operador de la izquierda es menor que el de la derecha. "Menor o igual que" devuelve true si el operador de la izquierda es menor o igual que el de la derecha. Nota: En JavaScript 1.3 y JavaScript 1.1 o anteriores, los operadores de comparación realizaban 'una conversión de tipos' si era necesario. Es decir, si un operando era una cadena y el otro era un valor numérico, JavaScript realizaba la conversión de la cadena a numérico antes de realizar la comparación. JavaScript 1.2 no realizaba 'conversiones de tipo', por eso si dos operadores eran de tipos distintos no se realizaba la comparación. Finalmente, en las últimas versiones de JavaScript se añaden los operadores de 'comparación estricta', los cuales realizarán la comparación si los dos operandos son del mismo tipo. <!-- Manual de JavaScript de WebEstilo.com --> <html> <head> <title>Ejemplo de JavaScript</title> </head> <body> <script language="JavaScript"> a = 8; b = 3; c = 3; document.write(a == b);document.write("<br>"); document.write(a != b);document.write("<br>"); document.write(a < b);document.write("<br>"); document.write(a > b);document.write("<br>"); document.write(a >= c);document.write("<br>"); document.write(b <= c);document.write("<br><br>"); document.write(3 == "3");document.write("<br>"); document.write(3 === "3");document.write("<br>"); </script> </body> </html> http://www.webestilo.com/javascript/js06.phtml Operadores Lógicos Por Lola Cárdenas y Joaquin Gracia. rinconprog.metropoli2000.com Los operadores Lógicos se utilizan para combinar múltiples comparaciones en una expresión condicional. Un operador lógico toma dos operandos cada uno de los cuales es un valor true o false y devuelve un valor true o false. Operador Descripción && " Y " Devuelve true si ambos operadores son true. || " O " Devuelve true si uno de los operadores es true. ! "No" Devuelve true si la negación del operando es true. <!-- Manual de JavaScript de WebEstilo.com --> <html> <head> <title>Ejemplo de JavaScript</title> </head> <body> <script language="JavaScript"> a = 8; b = 3; c = 3; document.write( (a == b) && (c > b) );document.write("<br>"); document.write( (a == b) || (b == c) );document.write("<br>"); document.write( !(b <= c) );document.write("<br>"); </script> </body> </html> http://www.webestilo.com/javascript/js07.phtml Operadores de Cadena Por Lola Cárdenas y Joaquin Gracia. rinconprog.metropoli2000.com Los valores cadena pueden compararse usando los operadores de comparación. Adicionalmente, usted puede concatenar cadenas usando el operador + <!-- Manual de JavaScript de WebEstilo.com --> <html> <head> <title>Ejemplo de JavaScript</title> </head> <body> <script language="JavaScript"> Nombre = "Jose" document.write( "Hola " + Nombre +"." ); </script> </body> </html> Ejecutar ejemplo Ver código Operadores de Asignación El operador de asignación '=' le permite asignar un valor a una variable. Operador Descripción = Asigna el valor del operando de la derecha a la variable de la izquierda. Ejemplo: inttotal=100; += (tambien - =, * =, / =) Añade el valor del operando de la derecha a la variable de la izquierda. Ejemplo: inttotal +=100 &= (también |=) Asigna el resultado de (operando de la izquierda & operando de la derecha) al operando de la izquierda <!-- Manual de JavaScript de WebEstilo.com --> <html> <head> <title>Ejemplo de JavaScript</title> </head> <body> <script language="JavaScript"> a = 8; b = 3; a += 3; document.write(a);document.write("<br>"); a -= 2; document.write(a);document.write("<br>"); b *= 2; document.write(b); </script> </body> </html> http://www.webestilo.com/javascript/js08.phtml Operadores especiales Por Lola Cárdenas y Joaquin Gracia. rinconprog.metropoli2000.com Varios operadores de JavaScript, es difícil clasificarlos en una categoría en particular. Estos operadores se resumen a continuación. Operador Descripción (condición) ? trueVal : falseVal Asigna un valor especificado a una variable si la condición es true, por otra parte asigna un valor alternativo si la condición es false. New El operador new crea una instancia de un objeto. This La palabra clave 'this' se refiere al objeto actual. , Delete El operador ',' evalúa los dos operados. El operador delete borra un objeto, una propiedad de un objeto, o un elemento especificado de un vector. Void Typeof El operador Void especifica una expresión que será evaluada sin devolver ningún valor. Devuelve el tipo de dato de un operando. http://www.webestilo.com/javascript/js09.phtml Objetos Por Lola Cárdenas y Joaquin Gracia. rinconprog.metropoli2000.com Una primera clasificación del modelo de objetos lo dividiría en dos grandes grupos. Por una parte, tendríamos los objetos directamente relacionados con el navegador y las posibilidades de programación HTML (denominados, genéricamente, objetos del navegador) y por otra parte un conjunto de objetos relacionados con la estructura del lenguaje, llamados genéricamente objetos del lenguaje. El Objeto String Este objeto nos permite hacer diversas manipulaciones con las cadenas, para que trabajar con ellas sea más sencillo. Cuando asignamos una cadena a una variable, JS está creando un objeto de tipo String que es el que nos permite hacer las manipulaciones. Propiedades length. Valor numérico que nos indica la longitud en caracteres de la cadena dada. prototype. Nos permite asignar nuevas propiedades al objeto String. Métodos anchor(nombre). Crea un enlace asignando al atributo NAME el valor de 'nombre'. Este nombre debe estar entre comillas " " big(). Muestra la cadena de caracteres con una fuente grande. blink(). Muestra la cadena de texto con un efecto intermitente. charAt(indice). Devuelve el carácter situado en la posición especificada por 'indice'. fixed(). Muestra la cadena de caracteres con una fuente proporcional. fontcolor(color). Cambia el color con el que se muestra la cadena. La variable color debe ser especificada entre comillas: " ", o bien siguiendo el estilo de HTML, es decir "#RRGGBB" donde RR, GG, BB son los valores en hexadecimal para los colores rojo, verde y azul, o bien puede ponerse un identificador válido de color entre comillas. Algunos de estos identificadores son "red", "blue", "yellow", "purple", "darkgray", "olive", "salmon", "black", "white", ... fontsize(tamaño). Cambia el tamaño con el que se muestra la cadena. Los tamaños válidos son de 1 (más pequeño) a 7 (más grande). indexOf(cadena_buscada,indice) Devuelve la posición de la primera ocurrencia de 'cadena_buscada' dentro de la cadena actual, a partir de la posición dada por 'indice'. Este último argumento es opcional y, si se omite, la busqueda comienza por el primer carácter de la cadena. italics(). Muestra la cadena en cursiva. lastIndexOf(cadena_buscada,indice). Devuelve la posición de la última ocurrencia de 'cadena_buscada' dentro de la cadena actual, a partir de la posición dada por 'indice', y buscando hacia atrás. Este último argumento es opcional y, si se omite, la busqueda comienza por el último carácter de la cadena. link(URL). Convierte la cadena en un vínculo asignando al atributo HREF el valor de URL. small(). Muestra la cadena con una fuente pequeña. split(separador). Parte la cadena en un array de caracteres. Si el carácter separador no se encuentra, devuelve un array con un sólo elemento que coincide con la cadena original. A partir de NS 3, IE 4 (JS 1.2). strike(). Muestra la cadena de caracteres tachada. sub(). Muestra la cadena con formato de subíndice. substring(primer_Indice,segundo_Indice). Devuelve la subcadena que comienza en la posición 'primer_Indice + 1' y que finaliza en la posición 'segundo_Indice'. Si 'primer_Indice' es mayor que 'segundo_Indice', empieza por 'segundo_Indice + 1' y termina en 'primer_Indice'. Si hacemos las cuentas a partir de 0, entonces es la cadena que comienza en 'primer_Indice' y termina en 'segundo_Indice - 1' (o bien 'segundo_Indice' y 'primer_Indice 1' si el primero es mayor que el segundo). sup(). Muestra la cadena con formato de superíndice. toLowerCase(). Devuelve la cadena en minúsculas. toUpperCase(). Devuelve la cadena en minúsculas. <!-- Manual de JavaScript de WebEstilo.com --> <HTML> <HEAD> <title>Ejemplo de JavaScript</title> </HEAD> <BODY> <script LANGUAGE="JavaScript"> <!-var cad = "Hello World",i; var ja = new Array(); ja = cad.split("o"); with(document) { write("La cadena es: "+cad+"<BR>"); write("Longitud de la cadena: "+cad.length+"<BR>"); write("Haciendola ancla: "+cad.anchor("b")+"<BR>"); write("En grande: "+cad.big()+"<BR>"); write("Parpadea: "+cad.blink()+"<BR>"); write("Caracter 3 es: "+cad.charAt(3)+"<BR>"); write("Fuente FIXED: "+cad.fixed()+"<BR>"); write("De color: "+cad.fontcolor("#FF0000")+"<BR>"); write("De color: "+cad.fontcolor("salmon")+"<BR>"); write("Tamaño 7: "+cad.fontsize(7)+"<BR>"); write("<I>orl</I> esta en la posicion: "+cad.indexOf("orl")); write("<BR>En cursiva: "+cad.italics()+"<BR>"); write("La primera <I>l</I> esta, empezando a contar por detras,"); write(" en la posicion: "+cad.lastIndexOf("l")+"<BR>"); write("Haciendola enlace: "+cad.link("doc.htm")+"<BR>"); write("En pequeño: "+cad.small()+"<BR>"); write("Tachada: "+cad.strike()+"<BR>"); write("Subindice: "+cad.sub()+"<BR>"); write("Superindice: "+cad.sup()+"<BR>"); write("Minusculas: "+cad.toLowerCase()+"<BR>"); write("Mayusculas: "+cad.toUpperCase()+"<BR>"); write("Subcadena entre los caracteres 3 y 10: "); write(cad.substring(2,10)+"<BR>"); write("Entre los caracteres 10 y 3: "+cad.substring(10,2)+"<BR>"); write("Subcadenas resultantes de separar por las <B>o:</B><BR>"); for(i=0;i<ja.length;i++) write(ja[i]+"<BR>"); } //--> </script> </BODY> </HTML> http://www.webestilo.com/javascript/js10.phtml El Objeto Array Por Lola Cárdenas y Joaquin Gracia. rinconprog.metropoli2000.com Este objeto nos va a dar la facilidad de construir arrays cuyos elementos pueden contener cualquier tipo básico, y cuya longitud se modificará de forma dinámica siempre que añadamos un nuevo elemento (y, por tanto, no tendremos que preocuparnos de esa tarea). Para poder tener un objeto array, tendremos que crearlo con su constructor, por ejemplo, si escribimos: a=new Array(15); tendremos creada una variable a que contendrá 15 elementos, enumerados del 0 al 14. Para acceder a cada elemento individual usaremos la notación a[i], donde i variará entre 0 y N-1, siendo N el número de elementos que le pasamos al constructor. También podemos inicializar el array a la vez que lo declaramos, pasando los valores que queramos directamente al constructor, por ejemplo: a=new Array(21,"cadena",true); que nos muestra, además, que los elementos del array no tienen por qué ser del mismo tipo. Por tanto: si ponemos un argumento al llamar al constructor, este será el número de elementos del array (y habrá que asignarles valores posteriormente), y si ponemos más de uno, será la forma de inicializar el array con tantos elementos como argumentos reciba el constructor. Podríamos poner como mención especial de esto lo siguiente. Las inicializaciones que vemos a continuación: a=new Array("cadena"); a=new Array(false); Inicializan el array a, en el primer caso, con un elemento cuyo contenido es la cadena cadena, y en el segundo caso con un elemento cuyo contenido es false. Lo comentado anteriormente sobre inicialización de arrays con varios valores, significa que si escribimos a=new Array(2,3); NO vamos a tener un array con 2 filas y 3 columnas, sino un array cuyo primer elemento será el 2 y cuyo segundo elemento será el 3. Entonces, ¿cómo creamos un array bidimensional? (un array bidimensional es una construcción bastante frecuente). Creando un array con las filas deseadas y, después, cada elemento del array se inicializará con un array con las columnas deseadas. Por ejemplo, si queremos crear un array con 4 filas y 7 columnas, bastará escribir: a=new Array(4); for(i=0;i<4;i++) a[i]=new Array(7); y para referenciar al elemento que ocupa la posición (i,j), escribiremos a[i][j]; Propiedades length. Esta propiedad nos dice en cada momento la longitud del array, es decir, cuántos elementos tiene. prototype. Nos permite asignar nuevas propiedades al objeto String. Métodos join(separador). Une los elementos de las cadenas de caracteres de cada elemento de un array en un string, separando cada cadena por el separador especificado. reverse(). Invierte el orden de los elementos del array. sort(). Ordena los elementos del array siguiendo el orden lexicográfico. <!-- Manual de JavaScript de WebEstilo.com --> <HTML> <HEAD> <title>Ejemplo de JavaScript</title> </HEAD> <BODY> <script LANGUAGE="JavaScript"> <!-var j=new Array(2),h=new Array(1), i=new Array(1,"Hola",3); var b=new Array("Palabra","Letra","Amor","Color","Cariño"); var c=new Array("Otra cadena con palabras"); var d=new Array(false); j[0]=new Array(3); j[1]=new Array(2); j[0][0]=0; j[0][1]=1; j[0][2]=2; j[1][0]=3; j[1][1]=4; j[1][2]=5; document.write(c); document.write("<P>"+d+"<P>"); document.write("j[0][0]="+j[0][0]+"; j[0][1]="+j[0][1]+ "; j[0][2]="+j[0][2]+"<BR>"); document.write("j[1][0]="+j[1][0]+"; j[1][1]="+j[1][1]+ "; j[1][2]="+j[1][2]); document.write("<P>h= "+(h[0]='Hola')+"<P>"); document.write("i[0]="+i[0]+"; i[1]="+i[1]+"; i[2]="+i[2]+"<P>"); document.write("Antes de ordenar: "+b.join(', ')+"<P>"); document.write("Ordenados: "+b.sort()+"<P>"); document.write("Ordenados en orden inverso: "+b.sort().reverse()); //--> </script> </BODY> </HTML> http://www.webestilo.com/javascript/js11.phtml El Objeto Math Por Lola Cárdenas y Joaquin Gracia. rinconprog.metropoli2000.com Este objeto se utiliza para poder realizar cálculos en nuestros scripts. Tiene la peculiaridad de que sus propiedades no pueden modificarse, sólo consultarse. Estas propiedades son constantes matemáticas de uso frecuente en algunas tareas, por ello es lógico que sólo pueda consultarse su valor pero no modificarlo. Propiedades E. Número 'e', base de los logaritmos naturales (neperianos). LN2. Logaritmo neperiano de 2. LN10. Logaritmo neperiano de 10. LOG2E. Logaritmo en base 2 de e. LOG10E. Logaritmo en base 10 de e. PI. Número PI. SQRT1_2. Raíz cuadrada de 1/2. SQRT2. Raíz cuadrada de 2. Métodos abs(numero). Función valor absoluto. acos(numero). Función arcocoseno. Devuelve un valor cuyas unidades son radianes o NaN. 'numero' debe pertenecer al rango [-1,1], en otro caso devuelve NaN. asin(numero). Función arcoseno. Devuelve un valor cuyas unidades son radianes o NaN. 'numero' debe pertenecer al rango [-1,1], en otro caso devuelve NaN. atan(numero). Función arcotangente. Devuelve un valor cuyas unidades son radianes o NaN. atan2(x,y). Devuelve el ángulo formado por el vector de coordenadas (x,y) con respecto al eje OX. ceil(numero). Devuelve el entero obtenido de redondear 'numero' "por arriba". cos(numero). Devuelve el coseno de 'numero' (que debe estar en radianes) o NaN. exp(numero). Devuelve el valor enumero. floor(numero). Devuelve el entero obtenido de redondear 'numero' "por abajo". log(numero). Devuelve el logaritmo neperiano de 'numero'. max(x,y). Devuelve el máximo de 'x' e 'y'. min(x,y). Devuelve el mínimo de 'x' e 'y'. pow(base,exp). Devuelve el valor baseexp. random(). Devuelve un número pseudoaleatorio entre 0 y 1. round(numero). Redondea 'numero' al entero más cercano. sin(numero). Devuelve el seno de 'numero' (que debe estar en radianes) o NaN. sqrt(numero). Devuelve la raíz cuadrada de número. tan(numero). Devuelve la tangente de 'numero' (que debe estar en radianes) o NaN. http://www.webestilo.com/javascript/js12.phtml El Objeto Date Por Lola Cárdenas y Joaquin Gracia. rinconprog.metropoli2000.com Este objeto nos va a permitir hacer manipulaciones con fechas: poner fechas, consultarlas... para ello, debemos saber lo siguiente: JS maneja fechas en milisegundos. Los meses de Enero a Diciembre vienen dados por un entero cuyo rango varía entre el 0 y el 11 (es decir, el mes 0 es Enero, el mes 1 es Febrero, y así sucesivamente), los días de la semana de Domingo a Sábado vienen dados por un entero cuyo rango varía entre 0 y 6 (el día 0 es el Domingo, el día 1 es el Lunes, ...), los años se ponen tal cual, y las horas se especifican con el formato HH:MM:SS. Podemos crear un objeto Date vacío, o podemos crealo dándole una fecha concreta. Si no le damos una fecha concreta, se creará con la fecha correspondiente al momento actual en el que se crea. Para crearlo dándole un valor, tenemos estas posibilidades: var var var var var Mi_Fecha Mi_Fecha Mi_Fecha Mi_Fecha Mi_Fecha = = = = = new new new new new Date(año, Date(año, Date(año, Date(año, Date(año, mes); mes, día); mes, día, horas); mes, día, horas, minutos); mes, día, horas, minutos, segundos); En día pondremos un número del 1 al máximo de días del mes que toque. Todos los valores que tenemos que pasar al constructor son enteros. Pasamos a continuación a estudiar los métodos de este objeto. Métodos getDate(). Devuelve el día del mes actual como un entero entre 1 y 31. getDay(). Devuelve el día de la semana actual como un entero entre 0 y 6. getHours(). Devuelve la hora del día actual como un entero entre 0 y 23. getMinutes(). Devuelve los minutos de la hora actual como un entero entre 0 y 59. getMonth(). Devuelve el mes del año actual como un entero entre 0 y 11. getSeconds(). Devuelve los segundos del minuto actual como un entero entre 0 y 59. getTime(). Devuelve el tiempo transcurrido en milisegundos desde el 1 de enero de 1970 hasta el momento actual. getYear(). Devuelve el año actual como un entero. setDate(día_mes). Pone el día del mes actual en el objeto Date que estemos usando. setDay(día_semana). Pone el día de la semana actual en el objeto Date que estemos usando. setHours(horas). Pone la hora del día actual en el objeto Date que estemos usando. setMinutes(minutos). Pone los minutos de la hora actual en el objeto Date que estemos usando. setMonth(mes). Pone el mes del año actual en el objeto Date que estemos usando. setSeconds(segundos). Pone los segundos del minuto actual en el objeto Date que estemos usando. setTime(milisegundos). Pone la fecha que dista los milisegundos que le pasemos del 1 de enero de 1970 en el objeto Date que estemos usando. setYear(año). Pone el año actual en el objeto Date que estemos usando. toGMTString(). Devuelve una cadena que usa las convenciones de Internet con la zona horaria GMT. http://www.webestilo.com/javascript/js13.phtml El Objeto Boolean Por Lola Cárdenas y Joaquin Gracia. rinconprog.metropoli2000.com Este objeto nos permite crear booleanos, esto es, un tipo de dato que es cierto o falso, tomando los valores true o false. Podemos crear objetos de este tipo mediante su constructor. Veamos varios ejemplos: a a a a a a = = = = = = new new new new new new Boolean(); asigna a 'a' el valor 'false' Boolean(0); asigna a 'a' el valor 'false' Boolean(""); asigna a 'a' el valor 'false' Boolean(false); asigna a 'a' el valor 'false' Boolean(numero_distinto_de_0); asigna a 'a' el valor 'true' Boolean(true); asigna a 'a' el valor 'true' http://www.webestilo.com/javascript/js14.phtml El Objeto Number Por Lola Cárdenas y Joaquin Gracia. rinconprog.metropoli2000.com Este objeto representa el tipo de dato número con el que JS trabaja. Podemos asignar a una variable un número, o podemos darle valor, mediante el constructor Number, de esta forma: a = new Number(valor);, por ejemplo, a = new Number(3.2); da a a el valor 3.2. Si no pasamos algún valor al constructor, la variable se inicializará con el valor 0. Propiedades MAX_VALUE. Valor máximo que se puede manejar con un tipo numérico MIN_VALUE. Valor mínimo que se puede manejar con un tipo numérico NaN. Representación de un dato que no es un número NEGATIVE_INFINITY. Representación del valor a partir del cual hay desbordamiento negativo (underflow) POSITIVE_INFINITY. Representación del valor a partir del cual hay desbordamiento positivo (overflow) Para consultar estos valores, no podemos hacer: a = new Number(); alert(a.MAX_VALUE); porque JS nos dirá undefined, tenemos que hacerlo directamente sobre Number, es decir, tendremos que consultar los valores que hay en Number.MAX_VALUE, Number.MIN_VALUE, etc. http://www.webestilo.com/javascript/js15.phtml Jerarquía Por Lola Cárdenas y Joaquin Gracia. rinconprog.metropoli2000.com Con esta entrega comienza la descripción de las propiedades y los métodos de los objetos del navegador. No es mi intención hacer una descripción exhaustiva de todas y cada una de las propiedades y métodos, objeto por objeto, con todo detalle. Mi intención es hacer una descripción más o menos detallada de las propiedades y métodos que tienen más posibilidad de ser usados. Es decir, que si me dejo alguna propiedad y/o método por comentar, siempre podeis buscarla los manuales de referencia de los respectivos navegadores. En este capítulo vamos a estudiar la jerarquía que presentan los objetos del navegador, atendiendo a una relación "contenedor - contenido" que se da entre estos objetos. De forma esquemática, esta jerarquía podemos representarla de esta manera (al lado está la directiva HTML con que se incluyen en el documento objetos de este tipo, cuando exista esta directiva): * window + history + location + document <BODY> ... </BODY> - anchor <A NAME="..."> ... </A> - applet <APPLET> ... </APPLET> - area <MAP> ... </MAP> - form <FORM> ... </FORM> + button <INPUT TYPE="button"> + checkbox <INPUT TYPE="checkbox"> + fileUpload <INPUT TYPE="file"> + hidden <INPUT TYPE="hidden"> + password <INPUT TYPE="password"> + radio <INPUT TYPE="radio"> + reset <INPUT TYPE="reset"> + select <SELECT> ... </SELECT> - options <INPUT TYPE="option"> + submit <INPUT TYPE="submit"> + text <INPUT TYPE="text"> + textarea <TEXTAREA> ... </TEXTAREA> - image <IMG SRC="..."> - link <A HREF="..."> ... </A> - plugin <EMBED SRC="..."> + frame <FRAME> * navigator Según esta jerarquía, podemos entender el objeto area (por poner un ejemplo) como un objeto dentro del objeto document que a su vez está dentro del objeto window. Hay que decir que la notación '.' también se usa para denotar a un objeto que está dentro de un objeto. Por ejemplo, si queremos hacer referencia a una caja de texto, tendremos que escribir ventana.documento.formulario.caja_de_texto donde ventana es el nombre del objeto window (su nombre por defecto es window), documento es el nombre del objeto document (cuyo nombre por defecto es document), formulario es el nombre del objeto forms (veremos que forms es un array) y caja_de_texto es el nombre del objeto textarea (cuyo nombre por defecto es textarea). En la mayoría de los casos podemos ignorar la referencia a la ventana actual (window), pero será necesaria esta referencia cuando estemos utilizando múltiples ventanas, o cuando usemos frames. Cuando estemos usando un único frame, podemos pues ignorar explícitamente la referencia al objeto window, ya que JS asumirá que la referencia es de la ventana actual. También podemos utilizar la notación de array para referirnos a algún objeto, por ejemplo, cuando los objetos a usar no tienen nombre, como en este caso: document.forms[0].elements[1]; hace referencia al segundo elemento del primer formulario del documento; este elemento será el segundo que se haya creado en la página HTML. http://www.webestilo.com/javascript/js16.phtml El objeto window Por Lola Cárdenas y Joaquin Gracia. rinconprog.metropoli2000.com Se trata del objeto más alto en la jerarquía del navegador (navigator es un objeto independiente de todos en la jerarquía), pues todos los componentes de una página web están situados dentro de una ventana. El objeto window hace referencia a la ventana actual. Veamos a continuación sus propiedades y sus métodos. Propiedades closed. Válida a partir de Netscape 3 en adelante y MSIE 4 en adelante. Es un booleano que nos dice si la ventana está cerrada ( closed = true ) o no ( closed = false ). defaultStatus. Cadena que contiene el texto por defecto que aparece en la barra de estado (status bar) del navegador. frames. Es un array: cada elemento de este array (frames[0], frames[1], ...) es uno de los frames que contiene la ventana. Su orden se asigna según se definen en el documento HTML. history. Se trata de un array que representa las URLS visitadas por la ventana (están almacenadas en su historial). length. Variable que nos indica cuántos frames tiene la ventana actual. location. Cadena con la URL de la barra de dirección. name. Contiene el nombre de la ventana, o del frame actual. opener. Es una referencia al objeto window que lo abrió, si la ventana fue abierta usando el método open() que veremos cuando estudiemos los métodos. parent. Referencia al objeto window que contiene el frameset. self. Es un nombre alternativo del window actual. status. String con el mensaje que tiene la barra de estado. top. Nombre alternativo de la ventana del nivel superior. window. Igual que self: nombre alternativo del objeto window actual. Métodos alert(mensaje). Muestra el mensaje 'mensaje' en un cuadro de diálogo blur(). Elimina el foco del objeto window actual. A partir de NS 3, IE 4. clearInterval(id). Elimina el intervalo referenciado por 'id' (ver el método setInterval(), también del objeto window). A partir de NS 4, IE 4. clearTimeout(nombre). Cancela el intervalo referenciado por 'nombre' (ver el método setTimeout(), también del objeto window). close(). Cierra el objeto window actual. confirm(mensaje). Muestra un cuadro de diálogo con el mensaje 'mensaje' y dos botones, uno de aceptar y otro de cancelar. Devuelve true si se pulsa aceptar y devuelve false si se pulsa cancelar. focus(). Captura el foco del ratón sobre el objeto window actual. A partir de NS 3, IE 4. moveBy(x,y). Mueve el objeto window actual el número de pixels especificados por (x,y). A partir de NS 4. moveTo(x,y). Mueve el objeto window actual a las coordenadas (x,y). A partir de NS 4. open(URL,nombre,caracteristicas). Abre la URL que le pasemos como primer parámetro en una ventana de nombre 'nombre'. Si esta ventana no existe, abrirá una ventana nueva en la que mostrará el contenido con las características especificadas. Las características que podemos elegir para la ventana que queramos abrir son las siguientes: o toolbar = [yes|no|1|0]. Nos dice si la ventana tendrá barra de herramientas (yes,1) o no la tendrá (no,0). o location = [yes|no|1|0]. Nos dice si la ventana tendrá campo de localización o no. o directories = [yes|no|1|0]. Nos dice si la nueva ventana tendrá botones de dirección o no. o status = [yes|no|1|0]. Nos dice si la nueva ventana tendrá barra de estado o no. o menubar = [yes|no|1|0]. Nos dice si la nueva ventana tendrá barra de menús o no. o scrollbars = [yes|no|1|0]. Nos dice si la nueva ventana tendrá barras de desplazamiento o no. o resizable = [yes|no|1|0]. Nos dice si la nueva ventana podrá ser cambiada de tamaño (con el ratón) o no. o width = px. Nos dice el ancho de la ventana en pixels. o height = px. Nos dice el alto de la ventana en pixels. o outerWidth = px. Nos dice el ancho *total* de la ventana en pixels. A partir de NS 4. o outerHeight = px. Nos dice el alto *total* de la ventana el pixels. A partir de NS 4 o left = px. Nos dice la distancia en pixels desde el lado izquierdo de la pantalla a la que se debe colocar la ventana. top = px. Nos dice la distancia en pixels desde el lado superior de la pantalla a la que se debe colocar la ventana. prompt(mensaje,respuesta_por_defecto). Muestra un cuadro de diálogo que contiene una caja de texto en la cual podremos escribir una respuesta a lo que nos pregunte en 'mensaje'. El parámetro 'respuesta_por_defecto' es opcional, y mostrará la respuesta por defecto indicada al abrirse el cuadro de diálogo. El método retorna una cadena de caracteres con la respuesta introducida. scroll(x,y). Desplaza el objeto window actual a las coordenadas especificadas por (x,y). A partir de NS3, IE4. scrollBy(x,y). Desplaza el objeto window actual el número de pixels especificado por (x,y). A partir de NS4. scrollTo(x,y). Desplaza el objeto window actual a las coordenadas especificadas por (x,y). A partir de NS4. setInterval(expresion,tiempo). Evalua la expresión especificada después de que hayan pasado el número de milisegundos especificados en tiempo. Devuelve un valor que puede ser usado como identificativo por clearInterval(). A partir de NS4, IE4. setTimeout(expresion,tiempo). Evalua la expresión especificada después de que hayan pasado el número de milisegundos especificados en tiempo. Devuelve un valor que puede ser usado como identificativo por clearTimeout(). A partir de NS4, IE4. o Me dejo en el tintero otras propiedades y métodos como innerHeight, innerWidth, outerHeight, outerWidth, pageXOffset, pageYOffset, personalbar, scrollbars, back(), find(["cadena"],[caso,bkwd]), forward(), home(), print(), stop()... todas ellas disponibles a partir de NS 4 y cuya explicación remito como ejercicio al lector interesado en saber más sobre el objeto window. <!-- Manual de JavaScript de WebEstilo.com --> <HTML> <HEAD> <title>Ejemplo de JavaScript</title> <script LANGUAGE="JavaScript"> <!-function moverVentana() { mi_ventana.moveBy(5,5); i++; if (i<20) setTimeout('moverVentana()',100); else mi_ventana.close(); } //--> </script> </HEAD> <BODY> <script LANGUAGE="JavaScript"> <!-var opciones="left=100,top=100,width=250,height=150", i= 0; mi_ventana = window.open("","",opciones); mi_ventana.document.write("Una prueba de abrir ventanas"); mi_ventana.moveTo(400,100); moverVentana(); //--> </script> </BODY> </HTML> Ejecutar ejemplo Ver código Jerarquía El objeto frame Aportaciones de usuarios Añadir una aportación jbosch(vosk) 20/12/2003 Esta es la primera aportacion que hago en el manual, y se refiere a una operacion concreta con el objeto 'window'. La idea de esta aportacion sale de una pregunta formulada por Rober (el 02/12/2003) en el foro de JavaScript que por causas que ignoro no admite respuestas (tal vez deba reportarlo como error). La práctica consiste en detectar si una ventana (secundaria) ha sido abierta desde otra (principal). Para ello me voy a valer del evento 'onError' (presupongo que no hay ningun error en el codigo fuente de la página) y de la propiedad 'opener'. El script resultante es de la forma: <script language="JavaScript"> function A() { window.onerror=B window.opener.focus(); window.focus(); alert("Esta ventana SI tiene opener"); } function B() { alert("No hay ningun opener para esta ventana."); return true; } </script> Supongamos que desde una ventana principal se abre una secundaria que lleva este script y mediante un evento 'onLoad' en la etiqueta 'body' se llama y se ejecuta la funcion A();. En esta funcion primero se define que en caso de error (onError) se ejecute la funcion B() para evitar la alerta de error que viene por defecto en el navegador. Esta funcion B() solo se ejecutará en caso de que se produzca un error durante la ejecución de la funcion A(), y lleva la instruccion de no retornar y reemprender la ejecucion de la funcion desde la que fué llamada. La funcion A() simplemente trata de acceder a un objeto de una posible ventana parental para forzar un error conocido; en este caso trato de forzar el error accediendo a la propiedad 'opener' de la ventana secundaria: si no existe este 'opener' se producirá el error ("'window.opener' es nulo o no es un objeto"); si existe se continuará con la ejecucion de la función. Para evitar confusiones es necesario que esta funcion solo esté dirigida a forzar el error en vez de hacer otras operaciones no relacionadas con la finalidad de forzar este error conocido y que puedan originar otro error (en estos casos el evento onError se activaria igualmente aun existiendo realmente una ventana parental); por ejemplo supongamos que hay la siguiente funcion A(): function A() { window.onerror=B window.opener.focus(); window.focus(); document.getElementById('a').style.visibility = "hidden"; //referida a un objeto inexistente alert("Esta ventana SI tiene opener"); } En caso que por despiste no exista realmente ningun objeto identificado como 'a' se produciría el error aun habiendo sido abierta la página desde otra principal. para evitar estos errores es necesario utilizar esta funcion de forma aislada y dirigida a un solo obetivo (forzar y detectar este error); tambien se puede hacer comparando el mensaje de error esperado con el que realmente se produce, de la siguiente forma: <script language="JavaScript"> function A() { window.onerror=B window.opener.focus(); window.focus(); document.getElementById('a').style.visibility = "hidden"; alert("Esta ventana SI tiene opener"); } function B(mensaje) { if (mensaje=="'window.opener' es nulo o no es un objeto") { alert(mensaje); return true; } return true; } </script> donde lo que se hace simplemente es comprobar que el error que se produce es el esperado. Los codigos han sido probados en MS Internet Explorer versiones 5.0, 5.5 y 6.0. Espero que sea de ayuda. jbosch(vosk) http://www.webestilo.com/javascript/js17.phtml Unidad 3. Tecnologías de última generación 3.5 La sociedad de la Información. 3.5.1 Comunicación. Proceso de intercambio de información. En la comunicación intervienen los siguientes elementos: Emisor: es el que elabora el mensaje codificando la idea que desea transmitir de forma que pueda ser entendida por el receptor. Receptor: es el destinatario de la información y deberá, por tanto, estar preparado para recibir el mensaje y conocer el código empleado. Canal: medio por el que se transmite el mensaje. La transmisión del mesaje puede hacerse a través de distintos medios de comunicación (escritos, orales o gestuales) y empleando diferentes tecnologías (computadora, teléfono, televisión, etc.). Ruido: es cualquier cosa que impide o dificulta la comunicación. como el uso de códigos ambiguos, una maña conexión telefónica, el ruido ambiente en la comunicación oral, etc. Retroalimentación: proceso y propiedad del lenjuaje por el cual cada mensaje sirve a la vez como respuesta a la precedente, y como parte del estímulo para el siguiente, cuya finalidad es verificar que el mensaje enviado ha sido "correctamente" codificado, transmitido, decodificado y entendido. La comunicación se ha convertido en los últimos tiempos en una herramienta imprescindible para cualquier organización (por estas se entiende: empresas, instituciones, comunidades, un estado-gobierno) para perseguir sus objetivos como entidades sociales. Para gestionar está herramienta nació la figura del Director de Comunicación, comunmente denominado dircom, y tambien el rol del "Planificador comunicacional". Cada uno se encarga de gestionar la comunicación intra y extraorganización, acorde a los intereses, objetivos y la cultura donde desarrollan actividades. 3.5.2 Educación a distancia. La Educación a distancia es un método educativo en el que los estudiantes no necesitan asistir físicamente a ningún aula. Normalmente, se envía al estudiante por correo el material de estudio (textos escritos, videos, cintas de audio, CD-Roms y el devuelve los ejercicios resueltos. Hoy en día, se utiliza también el correo electrónico y otras posibilidades que ofrece internet. Al aprendizaje desarrollado con las nuevas tecnologías de la comunicación se le llama e-learning. En algunos casos, los estudiantes deben o pueden acudir a algunos despachos en determinadas ocasiones para recibir tutorías, o bien para realizar exámenes. Existe educación a distancia para cualquier nivel de estudios, pero lo más usual es que se imparta para estudios universitarios. Una de la características atractivas de esta modalidad de estudios es su flexibilidad de horarios. El estudiante se organiza su período de estudio por sí mismo, lo cual requiere cierto grado de autodisciplina. Una de las universidades de educación a distancia más antiguas es la Universidad de Sudáfrica, la cual lleva ofreciendo este servicio desde 1946. En el Reino Unido, la más grande es la Open University que se fundó en 1969. En Alemania, la Fernuniversität Hagen se fundó en 1974. Estas tres universidades tienen más de 100.000 alumnos, lo cual es posible gracias al bajo coste que supone la educación a distancia. En 1999, el European Graduate School empezó su labor por internet desde Suiza y Estados Unidos. La educación a distancia es el desarrollo de los cursos por correspondencia, que empezó de la necesidad de impartir enseñanza a alumnos en lugares aislados, en los que no era posible construir un colegio. Tales cursos se ofrecen normalmente al nivel de primaria y secundaria, y en ellos, a menudo, son los padres quienes supervisan el progreso educativo del alumno. En España, existe la Universidad de Educación a Distancia (UNED). 3.5.3 Diseño asistido por computadora. Diseño Asistido por computadora (CAD). Cualquier profesional que tiene necesidad de hacer planos requiere de una herramienta de CAD. Podemos distinguir las herramientas de CAD, que son orientadas a satisfacer cualquier disciplina de ingeniería, sea esta Civil, Mecánica, Arquitectura, Minas, etc. (como AutoCAD) o las herramientas de CAD Especializadas, las cuales se orientan a una sola disciplina e incorporan funciones especializadas que permiten aumentar la productividad dramáticamente. AutoCAD 2004 : Es el único producto CAD que no necesita presentación. Es el líder absoluto de CAD 2D de múltiple propósito. Así en todo el mundo se emplea para diseñar y dibujar planos de Ingeniería Mecánica, Civil, Arquitectura, Mapas, Catastro, etc. http://www.semco.com.pe/SEMCOCad/Cadd_Cad.htm Diseño Asistido por Computadora El Programa de Diseño Asistido por Computadora (CAD) prepara a estudiantes con las habilidades necesarias de traducir ideas de ingeniería en dibujos activos. Todo deseño es realizado por computadoras en preparación para el mercado de empleo, aprendiendo a ser técnicos en detalles, delineantes, o especializándose en ingenería mecánica, fabricación, arquitectura, o ingeniería civil. Los estudiantes reciben la capacitación en varios aplicaciones de software de CAD de ultima generación http://www.vbisd.org/techcenter/esp/programs/cad/Default. htm CAD (Computer-Aided Design).- Diseño asistido por computadora. El uso de computadoras para el diseño de productos. Los sistemas CAD son estaciones de trabajo especializadas o computadoras personales de alto rendimiento que emplean software CADA y dispositivos de entrada tales como tabletas gráficas y exploradores. La salida de un CAD es la entrada a un sistema CAM (Computer Aided Manufacturing - fabricación asistida por computadora), para integrar el diseño y la fabricación (CAD/CAM). El software CAD está disponible para usos generales o para usos especializados tales como el diseño arquitectónico, eléctrico y mecánico. Puede asimismo estar altamente especializado para crear productos tales como circuitos impresos e integrados. Los sistemas CAD son a menudo sistemas llave en mano que son armados por fabricantes que pueden desarrollar o integrar software con un hardware estándar u optimizado. A excepción de unos pocos casos, los sistemas CAD se basan en el uso extensivo de gráficos. Véase graphics, CADD y CAE. CAD/CAM (Computer-Aided Design/Computer-Aided Manufacturing).- Diseño Asistido por computadora/Fabricación Asistida por Computadora La integración del diseño asistido por computadora con la fabricación controlada por computadora. Implica que los productos diseñados en el sistema CAD son ingresados directamente al sistema CAM. Por ejemplo, después de que una pieza de maquinaria es diseñada en el CAD, su imagen electrónica es transferida a un lenguaje de programación de control numérico, el cual genera las instrucciones para controlar la máquina que fabrica la pieza. http://www.itlp.edu.mx/publica/revistas/revista_isc/glosario/c.html 3.5.4 Ciencia, investigación e ingeniería. 3.6 Aplicación de tecnologías emergentes en los sectores productivos, de servicios y de gobierno. 3.7 Aspectos éticos de la actividad profesional. La Relacion Ciencia, Tecnica y Desarrollo Social. Automatización Rapidez en la búsqueda de recuperación de datos Modificación de patrones de trabajo Acerca recursos a mayor numero de gente Impacto cultural Responsabilidad del Ingeniero en Sistemas Computacionales Asistiendo a cursos Asistiendo a congresos Revistas de computación Asistiendo a seminario Asistiendo a Exhibiciones de computación Inscribirse a Asociciones (ACM) El profesional informatico ante los problemas del Mexico de hoy. Formación: Nuestro propósito es formar profesionales capaces de diseñar y desarrollar sistemas de software, así como especificar y evaluar configuraciones de sistemas de cómputo en todo tipo de organizaciones. Responsabilidad Diseñar compiladores, sistemas operativos y demás recursos computacionales. Instalar y evaluar redes de teleproceso y participar en la programación de dispositivos de control digital. Evaluar, seleccionar e instalar equipo de cómputo. Analizar la organización y arquitectura de los equipos de cómputo. Las habilidades anteriores se ven reforzadas con la promoción de actitudes de creatividad de servicio, actualización ética y de liderazgo en su disciplina. Los derechos humanos frente a la informatica. Confidencialidad Controles Generales: Los controles generales regulan el acceso a un sistema de computación. Incluyen los controles de acceso, de hardware o equipo, de organización[, de sistema, de datos y procedimientos y de peligro. Controles de Acceso. Los controles de Acceso protegen al equipo y las instalaciones de la computadora. Pueden requerir nada mas que colocar el equipo de la computadora detrás de una puerta asegurada. O involucra equipo o procedimientos muy elaborados: vigilancia con cámaras de TV de circuito cerrado, de los locales de las computadoras, cerraduras de puerta con seguros de combinación, o verificación de tarjetas de identificación (ID) en puntos de entrada. Los controles de acceso típicos para un ambiente de mainframe incluyen localizar el equipo de la computadora en un cuarto sin ventadas separado de las oficinas de la organización. Las contraseñas frecuentemente controlan el acceso a los sistemas de red, especialmente los que tienen terminales remotas. El usuario debe introducir la contraseña para que se le admita. Algunos sistemas de contraseña notifican al personal de seguridad si el usuario no proporciona la contraseña correcta en tres intentos. Esto impide que usuarios no autorizados traten de adivinar la manera de entrar al sistema. Algunos sistemas en línea son diseñados para sacar del sistema automáticamente al usuario que no haya introducido datos por un determinado lapso; por ejemplo, 20 minutos. Esto evita que personas no autorizadas utilicen una computadora o terminal no atendida. Las organizaciones pueden restringir el acceso datos especifico de varios modos. Las compañías que usan maxicomputadoras o mainframes frecuentemente contratan a un encargado (bibliotecario) datos que controle quien obtiene acceso a los archivos de datos. Un cajón de escritorio bien asegurado puede proporcionar suficiente control de acceso para los disquetes de computadora o a otros medio removibles de almacenamiento. Controles de equipo. Los controles de equipo están incorporados en las computadoras para regular quien puede usarlas. Además de requerir contraseñas, las maxicomputadoras o mainframes y las minicomputadoras pueden también estar equipadas con bitácoras de consola (consolé logs), dispositivos que registran que acciones efectúan los usuarios en las maquinas. Estos medios controlan incluso que cintas fueron montadas en que unidades y por los operadores, cuales archivos han sido alterados y que respuestas dio el operador a las indicaciones (prompts) o instrucciones de la computadora. Controles de Organización. Los controles de organización dividen las operaciones de procesamientos de datos entre diversos usuarios. Por ejemplo, una persona puede colectar datos de cuentas por cobrar, mientras que otra los registra. Dicha división de labores hace los fraudes u otros delitos más difíciles de cometer, ya que esto tiene que involucra colaboración. Los controles de organización de una compañía pueden dirigir que la programación y la operación de las computadoras sean ejecutadas por diferentes individuos, que un bibliotecario controle los archivos de datos o que los operadores se turnen (roten) cuando se estén corriendo programas importantes. Los controles organizacionales también pueden emplearse para asegurar el funcionamiento eficaz de la compañía. Por ejemplo, las empresas frecuentemente separan su departamento de computación de otro departamento de modo que pueda funcionar según los mejores intereses de la organización. En contraste, si el personal del departamento de computación depende, por ejemplo, de un funcionario de una oficina de contraloría, puede demandar mas atención por parte de esa oficina que otro personal de la compañía. Controles de sistema. Los controles de sistema aseguran el desarrollo apropiado de los sistemas de información. De suma importancia es la participación de los usuarios y la dirección en el desarrollo de un sistema. Implementar un nuevo sistema también requiere controles de inversión, tales como cuentas de registros y comparaciones de archivos a fin de que todos los registros del anterior sistema sean convertidos con seguridad. La compañía debe probar luego el nuevo sistema. Finalmente, para mantener al mínimo los errores del sistema, una empresa debe controlar que cambios deben hacerse a un sistema y quien puede efectuarlos. Controles de datos y de procedimientos: Los controles de datos aseguran su ingreso apropiado. En el procesamiento por lotes, los trabajadores frecuentemente envían volante de control de lotes junto con los documentos que los operadores introducen a la computadora. Estos volantes de control establecen cuantos documentos están en el lote y proporcionan totales de control que pueden usarse para comprobar la exactitud de la transcripción. Por ejemplo, un total de control para una aplicación de cuentas por cobrar, podría ser el gran total de todos los cargos que corresponden a los clientes enlistados en un archivo. Control de programas: El control de programas verifica que los datos se introduzcan y procesen apropiadamente y que la información resultante quede expresada correctamente como salida. Estos controles suelen denominarse comúnmente controles de entrada de procesamiento y de salida. Controles de entrada: Los controles de entrada son vitales por ayudan asegurar que los datos introducidos en el sistema sean correctos. Los controles de entrada pueden incluir volantes de control de lotes (en sistema de lotes) y pruebas de límite, que determinan si el valor introducidos en un campo excede de cierto máximo establecido. Por ejemplo, una prueba de límite para una aplicación de nómina podría revisar totales semanales de tarjetas de tiempo, para asegurarse que no haya empleado que tenga mas de, por ejemplo, 60 hrs de trabajo. Tales pruebas también pueden ser efectuadas para comprobar si los datos de campo son numéricos, o si un campo contiene espacios en blanco, un valor positivo o negativo o el nombre de un empleado, o entidad para el cual los datos están siendo registrados, existe el archivo maestro. Al programa o módulo que contiene las diversas comprobaciones de control de programa usualmente se le llama programa editado en un sistema de lotes y módulo de editado en un sistema de tiempo real. Los registros de lotes que contuvieran errores se suspenden en el procesamiento y se registran en una lista de tales registros. En el sistema de procesamiento real, la computadora usualmente despliega el campo erróneo con un mensaje de error, de modo que el usuario puede hacer correcciones inmediatamente. Controles de procesamiento: Los controles de procesamiento proporcionan evidencia están siendo procesados adecuadamente. Un control de procesamiento es el control total que el programa general. El usuario puede comparar entonces el control total con el paso anterior, y notar y corregir cualesquiera discrepancias en los totales. Otros controles de procesamiento incluyen el rotulado externo en discos o cintas. La rotulación apropiada asegura que el usuario cargue el medio de almacenamiento adecuado para un cierto trabajo. Los controles lógicos dentro de un programa aseguran que los valores clave en una aplicación sean razonables. Por ejemplo, no seria razonable para un valor de inventario real que fuera negativo. Si esto ocurre, el programa debe desplegar un mensaje de error. Controles de salida: Los controles de salida comprenden la conciliación de los totales del control de un paso de trabajo a otro, y el rastreo de la salida para asegurarse de que los datos fueron procesados correctamente. Pueden implicar también el envío de la salida a una persona autorizada. Libertad La protección legal primaria que tienen los fabricantes o productores de software es la de Copyright o derechos de autor. Esta es la forma más sencilla y menos cara de protección que uno puede obtener, pero no proporciona tanta protección como una patente. Las leyes federales no son claras respecto a que derechos proporciona el Copyright a unos productos de software, pero las cortes han hecho pagar hasta 100 000 dólares de indemnización por la infracción de Copyright para cada copia pirata de un software con licencia. Muchos fabricantes de software han tratado de colocar medios o dispositivos de protección contra copia en sus discos de software para impedir la piratería. Sin embargo, mucha gente objeta fuertemente los medios de protección contra copia, que creen que penaliza injustamente a los usuarios honrados de software, haciéndoles difícil crear copias de respaldo legitimas de software adquirido legalmente. Los medios de protección también pueden dañar al sistema operativo de discos de una computadora. Como resultado, la mayoría de los productores de software han dejado de instalar protección contra copias en sus paquetes de aplicación mas conocidos. Muchos de los desarrolladores de software no venden la programatica real a los usuarios sino que ofrecen una forma de convenio de licencia, que especifica el derecho al uso de un paquete particular en una computadora. Estas licencias especiales (shrink-wrap) no proporcionan ni garantía de software ni las provisiones de compensación si el software no funciona bien. El propósito de tales políticas es impedir al usuario comprar un programa de software, copiarlo y luego devolver el elemento adquirido alegando que resulto defectuoso. Eventualmente, la corte determinara si la licencia especial es valida o no. Además hay mucha confusión acerca e como se puede usar el software. Por ejemplo, nadie puede estar seguro de sí un usuario que adquiere un disco de software para procesamiento de palabras con licencia para una computadora, no pueda usar el disco tanto para la oficina y el hogar, si es para el mismo trabajo. Las licencias especiales son particularmente problemáticas para las escuelas. Con grupos de software que ofrecen facilidad para la información acerca de las copias ilegales, muchas escuelas han implantado disposiciones que establecen que cualquier persona a la que se descubra copiando software propiedad de la escuela puede ser castigada y expulsada. La manera más sencilla de evitar problemas es no copiar software, a menos que lo haya adquirido para usted mismo. Privacidad La privacia ha sido definida como la demanda de personas, grupos o instituciones para determinar para ellos mismos cuando, como y que información personal es de comunicar a otros. Algunas personas creen que la enorme capacidad de las computadoras de almacenar y recuperar información hace más fácil para el gobierno o las empresas infringir nuestro derecho a la primacía. Las instituciones que almacenan datos sobre personas, como escuelas, bancos, oficinas de crédito, oficinas de licencias de conducir, oficinas de rentas internas estatales y federales, oficinas de acción legal, bibliotecas, compañías de seguros y muchas más. Tan solo el gobierno federal tiene miles de sistemas de recolección y almacenaje de datos. Un solicitante de un préstamo de un banco será interrogado y habrá de dar información acerca de su lugar de trabajo, prestamos restantes, nombres y saldos actuales de tarjetas de crédito y otras informaciones similares. Al solicitante se le pedirá también firmar un documento que autoriza al banco a verificar el estado de crédito del solicitante. Usualmente tales datos se usan en beneficio. De cualquier modo, también es posible que esa información sea usada para perjuicio. Los datos son almacenados en un sistema de información computadorizado pude compararse con datos en otros sistemas. Por ejemplo, al cotejar un registro de computadora de empleados del gobierno federal y una lista de computadorizada de que prestamos a estudiantes no liquidados, el gobierno identifica a mas de 47,000 de sus propios empleados que no realizaron el pago de prestamos otorgados a ellos como estudiantes. En otro ejemplo de confrontación de registros, los empleados de una agencia federal, deudores de pagos asistenciales por sostenimiento de hijos fueron sometidos a escrutinio de datos por computadora para cumplir con las leyes de asistencia. El gobierno descubrió que 540 de sus empleados no estaban en condición legal en tales pagos. Tal comparación puede desarrollarse con cualquier numero de sistemas de información computadorizada. Los oponentes a tal indagación por computadora declararon el proceso como un peligro a la primacía y demandaron su control. Los propugnantes afirmaron que tal cotejo de registros es un método efectivo para descubrir fraudes y hacer cumplir la ley. Los sistemas de transferencia electrónica de fondos (EFT) (TEF) también parecen implicar un atentado a la privaría. Un sistema EFT transfiere electrónicamente un cheque de pago de una persona a una cuenta de banco. La persona entonces pudo usar una tarjeta débito para hacer adquisiciones de comestible, gasolina, libros, etc. El importe de cada adquisición se rebaja automáticamente de la cuenta, y es registrada y transferida a la cuenta apropiada del proveedor. Este sistema es muy popular entre los proveedores ya que la mala escritura de un cheque sea cosa del pasado. El beneficio para los bancos es que el sistema reduce los tramites (o papeleo) requeridos para procesar los cheques. A final de mes, el banco envía a sus cuentahabientes EFT una lista detallada de todos los lugares donde hicieron adquisiciones. De cualquier modo, dicho sistemas pintan un detallado retrato financiero de los cuentahabientes. La pregunta es A quien le esta permitido tener acceso a esa información? Algunas personas creen que estos sistemas imponen una amenaza sin precedentes a la privacia y a la libertad, argumentando que el acceso del gobierno a tal información EFT cae en una especie de control por el Bog Brother. (Hermano Mayor, de la novela de ciencia-ficción). La suprema corte de justicia tiene aun que revisar un caso que ha demandado una reglamentación directa de exactamente que derechos a la privacia tiene un ciudadano bajo la Constitución. Sin embargo, en un gran numero de casos notables, la corte ha dictaminado que un derecho a la privacia esta implícito en las Enmiendas Primera, Tercera, Cuarta y Novena. Las organizaciones pueden ayudar a salvaguardar la privacia de los datos y reducir sus oportunidades de convertirse en víctimas de delitos informáticos de computadora instituyendo un sistema de seguridad. Un sistema de seguridad debe incluir un programa de control interno, procedimientos organizacionales diseñados para proteger las instalaciones de la computadora, equipo, software y bases de datos. La información es uno de los recursos mas preciados que posee una organización. La meta de la seguridad de las computadoras y del control interno es proteger esos recursos, sin embargo, una compañía debe de tener un balance apropiado entre los costos de seguridad y los costos de reemplazo de los bienes protegidos. Antes de implementar medidas extensivas de seguridad, muchas compañías emprenden un estudio de análisis de riesgos para determinar sus necesidades de seguridad cuanto costara cumplir con esas necesidades. El costo de la seguridad puede implicar mas que el precio de instalar un sistema. Los controles internos innecesariamente estrictos pueden interferir en el flujo evadiendo saltando, dichos controles, creando un caos con los sistemas de seguridad en el proceso. Privacia y correo electronico Las redes de área local han incrementado en gran cantidad el uso del software de correo electrónico para enviar mensajes dentro de una red. Desde luego, muchos de estos mensajes no están estrictamente relacionados con el trabajo. Algunas compañías hacen una obligación monitorear el correo electrónico. Esto ha llevado a numerosos litigios por parte de empleados y a algunos juicios por la violación de la privacia. Algunos de eso actos han sido desechados por cortes menores, que rechazan cualquier derecho a la privacia en sistemas propiedad de los patrones. Algunas de esas reglas sin duda serán desafiadas por apelaciones. Cuando esta utilizando un sistema de correo electrónico, tenga en mente que los mensajes pueden ser monitoriados. Los controles pueden ser divididos en tres categorías básicas: controles generales, controles de programas y documentación. Crimen y fraude computacional. El delito en computadoras es la comisión de actos fuera de la ley usando la tecnología de la computación o la informática. Husmeadores destructivos El "gang 414" fue un grupo de jóvenes "husmeadores" (hackers) de computación de Wisconsin, que usaron las microcomputadoras para obtener acceso a sistemas de cómputo electrónico por todo Estados Unidos. Los miembros de esa pandilla de adolescentes obtenían o adivinaban las contraseñas de un sistema, examinaban archivos, corrían programas y descubrían tanto como fuera posible de ese sistema. Durante sus incursiones electrónicas, dañaron archivos clave de diversas compañías. También penetraron en el sistema de un hospital destinado a monitores pacientes críticamente enfermos. Un médico aseveró que varias personas podrían haber muerto si el grupo hubiera dañado el sistema. Los miembros del "gang 414" terminaron con sus computadoras confiscadas, y algunos tuvieron que pagar fuertes multas. Virus informaticos Una nueva forma de delito de computadora es la propagación de los llamados virus informáticos, o de la s computadoras. Como sus contrapartes biológicas, esoptas virus puede infectar muchas partes del sistema anfitrión: Programas de aplicación, archivos de datos y sistemas operativos de discos, y son autorreproducibles. Los sistemas pueden quedar infectados por los servicios en línea, tableros de boletines electrónicos y discos de usuarios. Una vez en el RAM en la computadora, los virus pueden infectar a otros programas que sean cargados para su ejecución. Los virus informáticas hacen estragos al destruir datos, modificar información, o sabotear la impresión. El bicho en la maquina puede hacer desplegar el mensaje "GOTCHA " ("al diablo") y volver a iniciar el sistema, haciendo que todo lo que este en la RAM se pierda; puede destruir la tabla de asignaciones de modo que los archivos no puedan ser encontrados por el sistema operativo; o reformatear un disco que contenga información clave, destruyendo de este modo su contenido, un evento particularmente dañino para un usuario de disco duro. Los virus informáticos pueden ser creados y liberados o difundidos por programadores, algunas veces por travesura pero más frecuentemente con propósitos malignos. "Scores"("puntuaciones"), el virus mas ampliamente difundido que infectó a las microcomputadoras Apple Macintosh, fue diseñado originalmente para atacar las aplicaciones de clientes usadas por una compañía de Texas. El virus crea dificultades al correr ciertos programas Apple, y en la impresión de aplicaciones y origina que el sistema se embrolle o inactive cuando se inician ciertas aplicaciones. Pirateria informatica La piratería informática consiste en la reproducción ilegal de programas o software, un problema continuo para la industria de la programatica. Los fabricantes de software estiman que por cada paquete vendido de aplicaciones de microcomputadora. Los piratas ya han hecho cuatro copias no autorizadas. La piratería informática cuesta a los desarrolladores de software miles de millones de dólares al año, e incrementa el costo de las versiones originales para el "honrado" consumidor típico. El copiado ilegal puede ser efectuado por personas o compañías que desean usar copias gratis de paquetes de software, o puede ser cometido con la intención de vender esas reproducciones piratas. Tratando de evitar la adquisición de software, se han descubierto empresas que han hecho hasta mas de 100 copias ilícitas de un solo programa de software. La venta de copias pirata de software existe particularmente en países como Brasil, Taiwan y Arabia Saudita. La ética es el estudio de la conducta y el juicio moral En el futuro cercano, expresan algunas organizaciones y profesionales de la educación, toda persona que quiera (y necesite) encontrar un buen trabajo descubrirá que es muy importante tener conocimientos de computación además de dominar las clásicas " tres R " (en inglés, reading: leer, (w) writing: escribir, (a) arithmetic: hacer cuentas). Si esto es así, estamos éticamente obligados a incorporar l a instrucción en el uso de computadoras en el plan de estudios de las escuelas elementales y asegurarse de que los estudiantes son "letrados en computación" en el momento que están listos para ingresar al campo de trabajo. Las definiciones de lo que es ser letrado en "computación" varían. Algunos lo definen como ser capaz de escribir un programa que permita a la computadora desarrollar alguna tarea. Según dicha norma, nuestro sistema educativo debe introducir a los estudiantes de la escuela elemental a lenguajes simples como BASIC o LOGO. Otros definen al "alfabetización en la ciencia y técnica de la computación " debe de enseñar principalmente el impacto o influencia que tienen las computadoras en la sociedad humana actual. 3.8 Software propietario y libre. Software propietario, tal como lo ha definido la Fundación del Software Libre, es cualquier programa que no cumple los criterios de la Fundación para el software libre. Propietario significa que algún individuo o compañía retiene el derecho de autor exclusivo sobre una pieza de programación, al mismo tiempo que niega a otras personas el acceso al código fuente del programa y el derecho a copiarlo, modificarlo o estudiarlo. El término "propietario" alude a que está "poseído y controlado privadamente". No obstante, el programa puede seguir siendo propietario aunque su código fuente se haya hecho público, si es que se mantienen restricciones sobre su uso, distribución o modificación (p.e., la versión comercial de SSH.) Por otro lado, el programa se puede considerar no-proprietario, una vez que se haya lanzado con una licencia que permita a otros crear versiones del software modificadas independientemente ("forks"), sin restricciones onerosas, aun cuando los derechos de autor puedan permanecer en manos de un individuo en particular. Al menos en teoría, se ha cedido el control. Software libre es el nombre por el que se le conoce a cierto tipo de rutinas, y al movimiento que lo promueve, que se caracteriza por promover las siguientes libertades y obligaciones al usuario final y a los desarrolladores: Libertad de ser utilizado por cualquier persona para cualquier propósito. Libertad de ser copiado y distribuido libremente (se le puede pasar al vecino sin ningún problema). En este punto hay una diferencia importante entre las licencias tipo BSD y tipo GPL. BSD: La libertad de distribución es total. Esto incluye cambiar la licencia, "cerrando" el código. GPL: La redistribución de versiones modificadas ha de hacerse bajo la misma la licencia. De este modo se impide que de programas licenciados bajo GPL puedan derivar en programas propietarios. Libertad de estudiarlo (para esto es indispensable contar con el código fuente) Libertad de modificarlo. Si se redistribuyen los cambios en el caso de GPL es obligatorio hacerlo bajo la misma licencia (por supuesto, el código fuente también es prerrequisito de este enunciado). Si se modifica para uso interno y no se redistribuye, no es necesario publicar los cambios. En este punto también hay matices, por ejemplo entre la GPL y la LGPL: GPL: Cualquier código que utilice código GPL (a través del aporte de código, enlazamiento de librerías etc), debe ser necesariamente liberado bajo la GPL. LGPL: Se pueden enlazar dinámicamente librerías LGPL con programas con licencias distintas, incluso propietarios. Unidad 4. Modelos de computadora 4.4 Elementos de circuitos digitales AND, OR, NOT. La compuerta AND o compuerta Y Es una de las compuertas mas simples dentro de la Electrónica Digital. Su representación es la que se muestra en las figuras que vemos en las dos figuras del lado derecho. Como se puede ver tiene dos entradas A y B, aunque puede tener muchas más (A,B,C, etc.) y sólo tiene una salida X. compuerta AND de 2 entradas compuerta AND de 3 entradas La compuerta AND de 2 entradas tiene la siguiente tabla de verdad Se puede ver claramente que la salida X solamente es "1" (1 lógico, nivel alto) cuando tanto la entrada A como la entrada B están en "1". En otras palabras "La salida X es igual a 1 cuando la entrada A y la entrada B son 1 A 0 0 1 1 B 0 1 0 1 X 0 0 0 1 Esta situación se representa en el álgebra booleana como: X = A * B o X = AB Una compuerta AND de 3 entradas se puede implementar con interruptores de la siguiente manera: A B C Lámpara Abierto Abierto Abierto Apagada Abierto Abierto Cerrado Apagada Abierto Cerrado Abierto Apagada Abierto Cerrado Cerrado Apagada Cerrado Abierto Abierto Apagada Cerrado Abierto Cerrado Apagada Cerrado Cerrado Abierto Apagada Cerrado Cerrado Cerrado Encendida Una compuerta AND puede tener muchas de entradas. Una AND de múltiples entradas puede ser creada conectando compuertas simples en serie. Si nosotros necesitamos una AND de 3 entradas y no la tenemos disponible, sería fácil crearla con dos compuertas AND en serie o cascada como se muestra en la siguiente figura A 0 0 0 0 1 1 1 1 Tabla de verdad B C 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 X 0 0 0 0 0 0 0 1 De manera igual al gráfico de con dos compuertas en cascada anterior, se puede implementar circuitos AND de 4 o más entradas La compuerta OR o compuerta O Es una de las compuertas mas simples dentro de la Electrónica Digital.. Su representación es la de la siguiente figura Tabla de verdad A B C 0 0 0 0 1 1 1 0 1 1 1 1 Y se representa con la siguiente función booleana X=A+B o X=B+A Esta misma compuerta se puede implementar con interruptores como se muestra en la siguiente figura, en donde se puede ver que: cerrando el interruptor A "O" el interruptor B se encenderá la luz "1" = cerrado , "0" = abierto, "1" = luz encendida En las siguientes figuras se muestran la representación de la compuerta "OR" de tres entradas con su tabla de verdad y la implementación con interruptores Representación de una compuerta OR de 3 entradas con su tabla de verdad Compuerta "OR" de 3 entradas implementada con interruptores Se puede ver claramente que la luz se encenderá cuando cualquiera: A o B o C este cerrada La compuerta NOT o compuerta inversora Dentro de la electrónica digital, no se podrían lograr muchas cosas si no existiera la compuerta NOT (compuerta NO), también llamada compuerta inversora, que al igual que las compuertas AND y OR tiene una importancia fundamental. La compuerta NOT se representa con el siguiente símbolo, y su tabla de verdad es: La salida de una compuerta "NOT" tiene el valor inverso al de su entrada. En el caso del gráfico anterior la salida X = A’. Esto significa que si a la entrada tenemos un "1" lógico, a la salida hará un "0" lógico y si a la entrada tenemos un "0" a la salida habrá un "1" NOTA: ver que el apóstrofe en la siguiente expresión significa NEGADO X = A’ La compuertas NOT se pueden conectar en cascada, logrando después de dos compuertas, la entrada original. Ver la siguiente fig. 4.5 Álgebra de Boole Para utilizar el análisis de los circuitos lógicos y tambien para expresar su operación matemática se utilizan diferentes teoremas booleanos que nos permiten simplificar las expresiones y los circuitos lógicos. Existe un primer grupo de teoremas ( compuesta por 8 teoremas), de una sola variable en donde x puede ser un "0" ó "1".Estos teoremas no necesitan de mucha explicación debido a su simplicidad para entenderlos; tales teoremas son: 1. 2. 3. 4. 5. 6. 7. 8. x*0=0 x*1=x x*x=x x * x' = 0 x+0=x x+1=1 x+x= x x + x' = 1 A continuación se presentan otros teoremas en los cuales implican ya no solo una variable sino múltiples: 9. x * y= y * x 10. x+y = y +x 11. x + (y+z) = (x+y) +z 12. x(yz) = (xy)z = xyz 13. [x(y+z) = xy + xz]..........[(w+x)(y+z) = wy + xy + wz + xz ] 14. x + xy = x 15. x + x'y = x + y Los teoremas 9 y 10 son leyes conmutativas, osea que el orden con que se opere una compuerta OR ó AND no afecta el resultado. Los teoremas 11 y 12 son las leyes asociativas, quiere decir que se puede agrupar variables en una OR ó AND como se quiera. Las dos reglas del teorema 13 son el de las leyes distributivas. Teoremas de Demorgan. Los teoremas de morgan son de gran utilidad para la simplificación de funciones en las cuales se invierte un producto ó suma de variables: 16. 17. ( x + y) = x' * y' (x* y) = x' + y' El teorema 16 dice que al invertir la suma OR de dos variables, esta inversión es la misma de la de cada variable en forma individual pero con la operación AND. En el teorema 17 al invertir el producto de dos variable, es lo mismo que invertir cada variable operadas con OR. Se define como álgebra de Boole a un sistema matemático con un conjunto de elementos B y dos operaciones binarias cerradas (·) y (+) siempre y cuando se cumplan los siguientes postulados: • P1.- las operaciones tienen la propiedad conmutativa. a+b = b+a a·b = b·a • P2.- las operaciones son distributivas entre sí a·(b+c) = a·b + a·c a+(b·c) = (a+b)·(a+c) • P3.- las operaciones tienen elementos identidad diferentes dentro de B. Estos elementos son definidos como 0 para (+) y 1 para (·). a+0 = a a·1 = a • P4.- para cada elemento, a, del conjunto B, existe otro elemento denominado complemento, a también del conjunto B, tal que se cumple: a+a = 1 a·a = 0 Como podemos ver, en cualquier álgebra booleana se cumple el principio de dualidad: Cualquier teorema o identidad algebraica deducible de los postulados anteriores puede transformarse en un segundo teorema o identidad válida sin mas que intercambiar las operaciones binarias y los elementos identidad. Como en cualquier álgebra, podemos disponer de constantes y de variables. Así, una constante se define como cualquier elemento del conjunto B. Mientras que una variable es un símbolo que representa un elemento arbitrario del álgebra, ya sea una constante o una fórmula algebraica completa. En cualquier álgebra de Boole se pueden demostrar los siguientes teoremas: Teorema 2.1.- El elemento a del 4º postulado (denominado complemento o negación de a) está unívocamente determinado, es decir, es único. Demostración.- Supongamos que existen dos complementos de a: a1 y a2. a2 = a2·1 = a2·(a+ a1) = a2·a + a2·a1 = a·a1 + a2·a1 = (a + a2)·a1 = a1 Teorema 2.2.- (o Teorema de elementos nulos) Para cada cualquier elemento a, se verifica a+1 = 1 y a·0 = 0 Demostración.a+1 = 1·(a+1) = (a+a’)·(a+1) = a + a’·1 = a + a’ = 1 a·0 = a·0+0 = a·0 + a·a’ = a·(a’+0) = a·a’ = 0 Teorema 2.3.- Cada uno de los elementos identidad es el complemento del otro, es decir, 1’ = 0 y 0’ = 1 Demostración.- Si fuese cierto, deberían cumplir el cuarto postulado del álgebra: 1 = 0 + 0’ 0 = 0 · 0’ Por ser único l complemento: 0’ = 1 1 = 1 + 1’ 0 = 1 · 1’ Por ser único el complemento: 1’ = 0 Teorema 2.4.- (o Teorema de idempotencia) Para cada elemento a, se verifica: a+a=a a·a=a Demostración.- a + a = a + a · 1 = a + a · (a + a’) = a + a · a + a · a’ = a · (1 + a) = a · 1 =a a · a = a · a + 0 = a · a + a · a’ = a·(a + a’) = a·1 = a Teorema 2.5.- (o Teorema de involución) Para cada elemento de a, se verifica que el complemento del complemento de a es a, es decir, (a’)’ = a Demostración.a’ + (a’)’ = 1 = a + a’ = a’ + a a = (a’)’ a’ · (a’)’ = 0 = a · a’ = a’ · a a = (a’)’ Teorema 2.6.- (o Teorema de absorción) Para cada par de elementos, a y b, se verifica: a+a·b=a a · (a + b) = a Demostración.a + a · b = a · 1 + a · b = a · (1 + b) = a · 1 = a a·(a + b) = (a + 0) · (a + b) = a + 0 · b = a Teorema 2.7.- Para cada par de elementos, a y b, se verifica: a + a’ · b = a + b a · (a’ + b) = a · b Demostración.a + a’ · b = (a + a’)·(a + b) = 1·(a + b) = a + b a · (a’ + b) = a · a’ + a · b = a · b Teorema 2.8.- (o Leyes de DeMorgan) Para cada par de elementos, a y b, se verifica (a + b)’ = a’ · b’ (a · b)’ = a’ + b’ Demostración.- Se comprobará si se satisface el cuarto postulado a + b + (a + b)’ = a + b + a’ · b’ = a + a’ · b’ + b + b’ · a’ = = a + b’ + b + a’ = a + a’ + b + b’ = 1 + 1 = 1 (a + b) · (a’ · b’) = a · a’ · b’ + b · b’ · a’ = b’ · 0 + 0 · a’ = 0 + 0 = 0 a · b + (a · b)’ = a · b + a’ + b’ = a · b + a’ + a · b + b’ = = a + a’ + b + b’ = 1 + 1 = 1 a · b · (a’ + b’) = a · a’ · b + a · b · b’ = 0 · b + a · 0 = 0 + 0 = 0 Teorema 2.9.- (o Leyes de DeMorgan generalizadas) Para cualquier conjunto de elementos se verifica: (X0 + X1 + … + Xn) = X0 · X1 · … · Xn (X0 · X1 · … · Xn) = X0 + X1 + … + Xn Teorema 2.10.- (o Teorema de asociatividad) Cada uno de los operadores binarios (+) y (·) cumple la propiedad asociativa, es decir, para cada tres elementos, a, b y c, se verifica (a + b) + c = a + (b + c) (a · b) · c = a · (b · c) 4.5.1 El modelo Von Neumann. IAS La computadora IAS fue eventualmente construída en los 50s, y su diseño ha servido como inspiración para la mayoría de las computadoras modernas, conociéndose como "arquitectura de von Neumann". Von Neumann y Goldstine avanzaron en el diseño lógico de los computadores, resolviendo los problemas asociados al almacenamiento de datos y programas en una memoria en común, proponiendo el sistema numérico binario, que se aplicó por primera vez en 1949 en el EDSAC de la Universidad de Cambridge y es de la base sobre la que se asientan los computadores desde entonces. Las ideas de von Neumann encontraron su plasmación más acabada en Princeton, el primer prototipo fue el IAS, o máquinas de Von Neumann, a partir de la que se construyeron la AVIDAC, la ORDVAC, la ORACLE, la SILLIAC, la ILLIAC, la MANIAC o la JOHNNIAC antes mencionada.Sobre el modelo estándar de las IAS, la IBM introdujo el sistema de tarjetas perforadas que permitió desarrollar la IBM-701 en 1953. El concepto central en la Arquitectura Von Neumann es el de programa almacenado, según el cual las instrucciones y los datos tenían que almacenarse juntos en un medio común y uniforme, en vez de separados, como hasta entonces se hacía. De esta forma, no sólo se podían procesar cálculos, sino que también las instrucciones y los datos podían leerse y escribirse bajo el control del programa. A partir de esta idea básica se sigue que un elemento en la memoria tiene una calidad ambigua con respecto a su interpretación; esta ambigüedad se resuelve, sólo temporalmente, cuando se requiere ese elemento y se ejecuta como una instrucción, o se opera como un dato. Un beneficio de esta ambigüedad es el hecho de que un dato, obtenido como resultado de algunas operaciones en la unidad aritmetico-lógica del computador, podía colocarse en la memoria como si fuera cualquier otro dato, para entonces usarlo y ejecutarlo como si fuera una instrucción. Además la Máquina de Von Neumann presentaba como característica importante un pequeño número de registros para mantener la instrucción del programa en curso, y el registro de datos que se estaban procesando. La máquina operaba en un ciclo repetitivo de pasos para localizar y ejecutar en secuencia las instrucciones del programa. Resulta evidente que esta breve descripción puede aplicarse a casi todos los computadores que desde 1946 se han construido, por lo que la aportación de Von Neuman a las Ciencias de la Computación es más que notable. Tanto los computadores con gran volumen de memoria y alta velocidad de proceso (llamados "main-frame") como los computadores personales de nuestras oficinas u hogares ("PC" o "Mac") o las máquinas de video-juegos ("flippers" electrónicos) tienen una "CPU" con esta misma estructura y que cumple las mismas funciones básicas. Para poder realizar su trabajo, el computador debe tener además componentes que permitan ingresar los datos y el programa, y sería inútil sin otros destinados a entregar los resultados solicitados: son los "periféricos" de entrada y de salida. Un periférico típico de entrada es el teclado y uno de salida es la impresora, como lo es también el monitor de video, el cual permite una mejor interacción del usuario con la máquina (para ver a la vez lo que él ingresa y lo que sale). Representación de la arquitectura básica de John Von Neumann. 4.5.2 Concepto de programa almacenado. El concepto de programa almacenado significa que las instrucciones se ejecutan para una función específica en un computador (conocida como programa) y residen en la memoria, y pueden ser reemplazadas rápidamente por otro conjunto de instrucciones para otra función o propósito diferente. Durante esta época surgieron lenguajes de programación sofisticados tales como COBOL y FORTRAN. Estos reemplazaron el utilizado código de máquina. http://www.bufoland.cl/apuntes/computacion/generaciones_computadores.p hp El término arquitectura, que apareció por primera vez en el documento First Draft of a Report on the EDVAC (1945), fue acuñado por el propio John von Neumann, que propuso el concepto de programa almacenado (software), ya que hasta entonces las computadoras se programaban mediante un específico cableado (hardware) adecuado para la resolución de solo un determinado problema. http://www.programacion.com/blogs/44_diario_de_un_profesor_de_informtica/archive/409_que _es_la_arquitectura_informtica.html El concepto de programa almacenado en la memoria fue ideado por John Von Neumann en 1946. Para realizar un programa hay que proponer primeramente una solución a un problema, es decir, pensar en una estrategía para solucionarlo. Posteriormente se pasa al análisis en donde se averigua que tipo de problema es y como le vamos a dar solución, así como selecionar el lenguaje en el que se va a programar . Los pasos uno a uno son: 1.-Análisis y propuesta de solución al problema: aquí se identifica el tipo de problema y el área a la que pertenece. Se piensa también en posibles soluciones, con sus tiempos establecidos. 2.-Identificación de variables constantes y actores involucrados en el problema: se identifican, ya que son las tres cosas que nos pueden cambiar al problema o alterar su curso. 3.-Planificación del programa: se elige el lenguaje de programación a trabajar dependiendo de la solución y se crea el plan de trabajo el cual contiene la busqueda bibliográfia del problema y el cronograma de cada una de las etapas de los que consta la solución al problema. 4.-Algoritmo: desarrollo de la secuencia lógica de pasos para la solución del problema (en este paso también involucra a los diagramas de flujo). 5.- Diagramas de Flujo: seguir los pasos del Algoritmo checando que el problema se resuelva correctamente. 6.-Desarrollo de las especificaciones: cuando se elije el lenguaje de programación, existen variables, constantes y actores que hay que declararse antes de comenzar el programa, o si se va a utilizar ecuaciones matemáticas o funciones, las cuales requieren de cierta de escribirse entro del programa. Estas especificaciones involucran ciertas características del problema y ciertas características del lenguaje seleccionado. 7.-Codificación (se requiere conocer la syntaxis del lenguaje) y Depuración: conversión del Algoritmo en un programa escribiéndolo en un lenguaje de programación lo más eficientemente posible. (nota: nadie programa igual ya que cada uno de nosoros no razona igual y el proceso de llegar a una solución depende de este proceso de razonar). 8.-Ejecución y Verificaciónde errores: introducir el programa en la memoria, ejecutarlo y probar sus resultados, corrigiendo los errores hasta su punto final de tal forma que se obtenga la solución a su problema. 9.-Prueba Final: Se tiene la plena seguridad de que el problema quedo resuelto ya que se agotaron todas las pruebas posibles de que el programa no falle al introducir ciertos valores o rangos de valores. 10.-Documentación: mantenimiento y cración de los documentos descriptivos como el manual del programador y manual del usuario. Herramientas Empleadas 1.-Diagramas y/o Organigramas 2.-Algoritmo 1.-Es la representación gráfica de un problema dado, para la definición, análisis, o solución, es decir, la representación gráfica de un algoritmo. 2.-Conjnto de reglas o instrucciones que indican una secuencia lógica de opraciones que proporciona la respuesta a cualquier tipo de problema dado. Estilos de Programación. Se entiende por estilos de programación los métodos que existen para mejorar la calidad de los programas de computación. Las carcterísticas de un buen programa son: 1.-El programa debe funcionar. 2.-El programa no debe tener dificultades. Hay que anticipar las situaciones a las que los usuarios van a poner en el programa, es decir, que este libre de errores. 3.-El programa debe estar bien documentado. La documentación puede estar de dos formas: documentación externa, que incluye diagramas de flujo, descripciones de los algoritmos, etc. La documentación interna o comentarios en el propio programa que va dirigido exclusivamente al programador. 4.-El programa debe ser eficiente. Que sea un programa fácil de leer y de comprender. http://w3.mor.itesm.mx/~lssalced/estruc.html 4.5.3 Lenguaje de máquina (instrucciones y datos). El lenguaje de máquina de una computadora consta de cadenas de números binarios (ceros y unos) y es el único que "entienden" directamente los procesadores. Todas las instrucciones preparadas en cualquier lenguaje de máquina tienen por lo menos dos partes. La primera es el comando u operación, que dice a la computadora cuál es la función que va a realizar. Todas las computadoras tiene un código de operación para cada una de sus funciones. La segunda parte de la instrucción es el operando, que indica a la computadora donde hallar o almacenar los datos y otras instrucciones que se van a manipular; el número de operandos de una instrucción varía en las distintas computadoras. En el principio de la computación este era el lenguaje que tenía que "hablar" el ser humano con la computadora y consistía en insertar en un tablero miles de conexiones y alambres y encender y apagar interruptores. Aunque en la actualidad ya no se emplea, es importante reconocer que ya no es necesario que nos comuniquemos en este lenguaje de "unos" y "ceros", pero es el que internamente una computadora reconoce o "habla". Lenguaje de máquina es el sistema de códigos directamente interpretable por una máquina, como el microprocesador de un ordenador. Este lenguaje está compuesto por un conjunto de instrucciones que determinan acciones a ser tomadas por la máquina. Un programa de computadora consiste en una cadena de estas instrucciones de lenguaje de máquina (más datos). Estas instrucciones son normalmente ejecutadas en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos. El lenguaje de máquina es específico de cada máquina o arquitectura de la máquina, aunque el conjunto de instrucciones disponibles pueda ser similar entre ellas. El lenguaje de máquina sólo utiliza dos signos. Y éstos se corresponden exactamente con las únicas dos constantes del álgebra booleana, y también con los dos estados exclusivos de un conmutador. Estos signos, constantes o estados de conmutación son el 1 y el 0, llamados dígitos binarios. Claude Elwood Shannon, en su Analysis of Relay and Switching Circuits, y con sus experiencias en redes de conmutación sentó las bases para la aplicación del álgebra de Boole a redes de conmutación. Una red de conmutación es un circuito de interruptores eléctricos que al cumplir ciertas combinaciones booleanas con las variables de entrada, define el estado de la salida. Este concepto es el núcleo de las Compuertas Lógicas, las cuales son por su parte, los ladrillos con que se construyen sistemas lógicos cada vez más complejos. Shannon utilizaba al relay como dispositivo físico de conmutación en sus redes. El relay, igual que el interruptor de una lámpara eléctrica, es 1 o es 0; está prendido o está apagado. El desarrollo tecnológico ha permitido evolucionar desde las redes de relays electromagnéticos de Shannon, pasar a circuitos con tubos de vacío, luego a redes transistorizadas, hasta llegar a los modernos circuitos integrados. El microprocesador de la CPU del ordenador opera en lenguaje máquina, ya que su repertorio de instrucciones consiste en la ejecución de conjuntos binarios. Por cierto que Shannon fue quien aportó el término bit para los guarismos 1 y 0, abreviatura inglesa de binary digits o "dígitos binarios"). 4.5.4 Ciclo de ejecución de instrucciones. 4.6 Algoritmos numéricos. Aqui se ven algunos de los algoritmos mas utiles para procesamiento de secuencias de números. Actualmente existen muchos más. Lista de algoritmos de conjuntos accumulate() inner_product() partial_sum() adjacent_difference() accumulate() Función template <class InputIterator, class T> T accumulate(InputIterator first, InputIterator last, T init) { for ( ; first != last; ++first) init = init + *first; return init; } template <class InputIterator, class T, class BinaryOperation> T accumulate(InputIterator first, InputIterator last, T init, BinaryOperation binary_op) { for ( ; first != last; ++first) init = binary_op(init, *first); return init; } Descripción accumulate() incrementa el valor de init utilizando el operator+(). La version que recibe una función como argumento aplica en cada iteracion una operacion binaria a init y un elemento de la secuencia y lo asigna a init. inner_product() Función template <class InputIterator1, class InputIterator2, class T> T inner_product(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, T init) { for ( ; first1 != last1; ++first1, ++first2) init = init + (*first1 * *first2); return init; } template <class InputIterator1, class InputIterator2, class T, class BinaryOperation1, class BinaryOperation2> T inner_product(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, T init, BinaryOperation1 binary_op1, BinaryOperation2 binary_op2) { for ( ; first1 != last1; ++first1, ++first2) init = binary_op1(init, binary_op2(*first1, *first2)); return init; } Descripción inner_product() calcula el pruducto vectorial de dos secuencias, es decir las multiplica componente a componente y va acumulando los resultados. partial_sum() Función template <class InputIterator, class OutputIterator> OutputIterator partial_sum(InputIterator first, InputIterator last, OutputIterator result) template <class InputIterator, class OutputIterator, class BinaryOperation> OutputIterator partial_sum(InputIterator first, InputIterator last, OutputIterator result, BinaryOperation binary_op) Descripción partial_sum() suma a cada elemento de una secuencia la suma de los valores anteriores. Podemos cambia la operacion de suma utilizando la version que permite pasarle un objeto función. adjacent_difference() Función & template <class InputIterator, class OutputIterator> OutputIterator adjacent_difference(InputIterator first, InputIterator last, OutputIterator result) template <class InputIterator, class OutputIterator, class BinaryOperation> OutputIterator adjacent_difference(InputIterator first, InputIterator last, OutputIterator result, BinaryOperation binary_op) Descripción adjacent_difference() crea una secuencia de salida que consiste en la diferencia existente entre cada par de elementos adjacentes. Podemos utilizar otra funcion diferente a las resta mediante la versió nque permite utilizar un objeto función.