LUIS JONATHAN RAMIREZ ESTUDIANTE DEL PRIMER AÑO DE INGENIRIA COMERCIAL DE LA UNACH PRESENTAN EL SIGUIENTE TRABAJO INVESTIG...
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Prologo de Informatica
Próxima SlideShare
Cargando en…5
×

Prologo de Informatica

2.506 visualizaciones

Publicado el

0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
2.506
En SlideShare
0
De insertados
0
Número de insertados
3
Acciones
Compartido
0
Descargas
8
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Prologo de Informatica

  1. 1. LUIS JONATHAN RAMIREZ ESTUDIANTE DEL PRIMER AÑO DE INGENIRIA COMERCIAL DE LA UNACH PRESENTAN EL SIGUIENTE TRABAJO INVESTIGATIVO REFERENTE AL AREA DE INFORMATICA ESPERANDO SEA DE SU AGRADO Y PUEDA SERVIR COMO PUNTO DE PARTIDA PARA UNA INVESTIGACION MAS AMPLIA EN EL AREA ANTES REFERIDA…<br />SISTEMA OPERATIVO<br />HISTORIA<br />Los primeros sistemas (1945 - 1950) eran grandes máquinas operadas desde la consola maestra por los programadores. Durante la década siguiente (1950 - 1960) se llevaron a cabo avances en el hardware: lectoras de tarjetas, impresoras, cintas magnéticas, etc. Esto a su vez provocó un avance en el software: compiladores, ensambladores, cargadores, manejadores de dispositivos, etc.<br />A finales de los años 80, un Amiga equipado con una aceleradora Video Toaster, era capaz de producir efectos comparados a sistemas dedicados que costaban el triple. Un Video Toaster junto a Lightwave ayudó a producir muchos programas de televisión y películas, entre las que se incluyen Babylon 5, Seaquest DSV.<br />DEFINICION<br />Un Sistema operativo (SO) es un software que actúa de interfaz entre los dispositivos de hardware y los programas usados por el usuario para manejar un computador.[1] Es responsable de gestionar, coordinar las actividades y llevar a cabo el intercambio de los recursos y actúa como estación para las aplicaciones que se ejecutan en la máquina.<br />Uno de los más prominentes ejemplos de sistema operativo, es el núcleo Linux,[2] el cual junto a las herramientas GNU, forman las llamadas distribuciones Linux.<br />Nótese que es un error común muy extendido denominar al conjunto completo de herramientas sistema operativo, pues este, es sólo el núcleo y no necesita de entorno operador para estar operativo y funcional. Este error de precisión, se debe a la modernización de la informática llevada a cabo a finales de los 80, cuando la filosofía de estructura básica de funcionamiento de los grandes computadores se rediseñó a fin de llevarla a los hogares y facilitar su uso, cambiando el concepto de computador multiusuario, (muchos usuarios al mismo tiempo) por un sistema mono usuario (únicamente un usuario al mismo tiempo) más sencillo de gestionar. Uno de los propósitos de un sistema operativo como programa estación principal, consiste en gestionar los recursos de localización y protección de acceso del hardware, hecho que alivia a los programadores de aplicaciones de tener que tratar con estos detalles. Se encuentran en la mayoría de los aparatos electrónicos que utilizan microprocesadores para funcionar. (Teléfonos móviles, reproductores de DVD, computadoras, radios, etc.)<br />Parte de la infraestructura de la World Wide Web está compuesta por el Sistema Operativo de Internet, creado por Cisco Systems para gestionar equipos de interconexión como los conmutadores y los enrutadores. <br />PROBLEMAS DE EXPLOTACIÓN Y SOLUCIONES INÍCIALES<br />El problema principal de los primeros sistemas era la baja utilización de los mismos, la primera solución fue poner un operador profesional que lo manejase, con lo que se eliminaron las hojas de reserva, se ahorró tiempo y se aumentó la velocidad.<br />Para ello, los trabajos se agrupaban de forma manual en lotes mediante lo que se conoce como procesamiento por lotes sin automatizar.<br />MONITORES RESIDENTES<br />Fichas en lenguaje de procesamiento por lotes, con programa y datos, para ejecución secuencial.<br />Según fue avanzando la complejidad de los programas, fue necesario implementar soluciones que automatizaran la organización de tareas sin necesidad de un operador. Debido a ello se crearon los monitores residentes: programas que residían en memoria y que gestionaban la ejecución de una cola de trabajos.<br />Un monitor residente estaba compuesto por un cargador, un Intérprete de comandos y un Controlador (drivers) para el manejo de entrada/salida.<br />SISTEMAS CON ALMACENAMIENTO TEMPORAL DE E/S<br />Los avances en el hardware crearon el soporte de interrupciones y posteriormente se llevó a cabo un intento de solución más avanzado: solapar la E/S de un trabajo con sus propios cálculos, por lo que se creó el sistema de buffers con el siguiente funcionamiento:<br />Un programa escribe su salida en un área de memoria (buffer 1).<br />El monitor residente inicia la salida desde el buffer y el programa de aplicación calcula depositando la salida en el buffer 2.<br />La salida desde el buffer 1 termina y el nuevo cálculo también.<br />Se inicia la salida desde el buffer 2 y otro nuevo cálculo dirige su salida al buffer 1.<br />El proceso se puede repetir de nuevo.<br />Los problemas surgen si hay muchas más operaciones de cálculo que de E/S (limitado por la CPU) o si por el contrario hay muchas más operaciones de E/S que cálculo (limitado por la E/S).<br />SPOOLERS<br />Hace aparición el disco magnético con lo que surgen nuevas soluciones a los problemas de rendimiento. Se eliminan las cintas magnéticas para el volcado previo de los datos de dispositivos lentos y se sustituyen por discos (un disco puede simular varias cintas). Debido al solapamiento del cálculo de un trabajo con la E/S de otro trabajo se crean tablas en el disco para diferentes tareas, lo que se conoce como Spool (Simultaneous Peripherial Operation On-Line).<br />SISTEMAS OPERATIVOS MULTIPROGRAMADOS<br />Surge un nuevo avance en el hardware: el hardware con protección de memoria. Lo que ofrece nuevas soluciones a los problemas de rendimiento:<br />Se solapa el cálculo de unos trabajos con la entrada/salida de otros trabajos.<br />Se pueden mantener en memoria varios programas.<br />Se asigna el uso de la CPU a los diferentes programas en memoria.<br />Debido a los cambios anteriores, se producen cambios en el monitor residente, con lo que éste debe abordar nuevas tareas, naciendo lo que se denomina como Sistemas Operativos multiprogramados, los cuales cumplen con las siguientes funciones:<br />Administrar la memoria.<br />Gestionar el uso de la CPU (planificación).<br />Administrar el uso de los dispositivos de E/S.<br />Cuando desempeña esas tareas, el monitor residente se transforma en un sistema operativo multiprogramado.<br />LLAMADAS AL SISTEMA OPERATIVO<br />Definición breve: llamadas que ejecutan los programas de aplicación para pedir algún servicio al SO.<br />Cada SO implementa un conjunto propio de llamadas al sistema. Ese conjunto de llamadas es la interfaz del SO frente a las aplicaciones. Constituyen el lenguaje que deben usar las aplicaciones para comunicarse con el SO. Por ello si cambiamos de SO, y abrimos un programa diseñado para trabajar sobre el anterior, en general el programa no funcionará, a no ser que el nuevo SO tenga la misma interfaz. Para ello:<br />Las llamadas correspondientes deben tener el mismo formato.<br />Cada llamada al nuevo SO tiene que dar los mismos resultados que la correspondiente del anterior.<br />MODOS DE EJECUCIÓN EN UN CPU<br />Las aplicaciones no deben poder usar todas las instrucciones de la CPU. No obstante el Sistema Operativo, tiene que poder utilizar todo el juego de instrucciones del CPU. Por ello, una CPU debe tener (al menos) dos modos de operación diferentes:<br />Modo usuario: el CPU podrá ejecutar sólo las instrucciones del juego restringido de las aplicaciones.<br />Modo supervisor: la CPU debe poder ejecutar el juego completo de instrucciones.<br />LLAMADAS AL SISTEMA<br />Una aplicación, normalmente no sabe dónde está situada la rutina de servicio de la llamada. Por lo que si ésta se codifica como una llamada de función, cualquier cambio en el SO haría que hubiera que reconstruir la aplicación.<br />Pero lo más importante es que una llamada de función no cambia el modo de ejecución de la CPU. Con lo que hay que conseguir llamar a la rutina de servicio, sin tener que conocer su ubicación, y hacer que se fuerce un cambio de modo de operación de la CPU en la llamada (y la recuperación del modo anterior en el retorno).<br />Esto se hace utilizando instrucciones máquina diseñadas específicamente para este cometido, distintas de las que se usan para las llamadas de función.<br />INTERRUPCIONES Y EXCEPCIONES<br />El SO ocupa una posición intermedia entre los programas de aplicación y el hardware. No se limita a utilizar el hardware a petición de las aplicaciones ya que hay situaciones en las que es el hardware el que necesita que se ejecute código del SO. En tales situaciones el hardware debe poder llamar al sistema, pudiendo deberse estas llamadas a dos condiciones:<br />Algún dispositivo de E/S necesita atención.<br />Se ha producido una situación de error al intentar ejecutar una instrucción del programa (normalmente de la aplicación).<br />En ambos casos, la acción realizada no está ordenada por el programa de aplicación, es decir, no figura en el programa.<br />Según los dos casos anteriores tenemos las interrupciones y la excepciones:<br />Interrupción: señal que envía un dispositivo de E/S a la CPU para indicar que la operación de la que se estaba ocupando, ya ha terminado.<br />Excepción: una situación de error detectada por la CPU mientras ejecutaba una instrucción, que requiere tratamiento por parte del SO.<br />TRATAMIENTO DE LAS INTERRUPCIONES<br />Una interrupción se trata en todo caso, después de terminar la ejecución de la instrucción en curso.<br />El tratamiento depende de cuál sea el dispositivo de E/S que ha causado la interrupción, ante la cual debe poder identificar el dispositivo que la ha causado.<br />La ventaja de este procedimiento es que no se tiene que perder tiempo ejecutando continuamente rutinas para consultar el estado del periférico. El inconveniente es que el dispositivo debe tener los circuitos electrónicos necesarios para acceder al sistema de interrupciones del computador.<br />EXCEPCIONES<br />Cuando la CPU intenta ejecutar una instrucción incorrectamente construida, la unidad de control lanza una excepción para permitir al SO ejecutar el tratamiento adecuado. Al contrario que en una interrupción, la instrucción en curso es abortada. Las excepciones al igual que las interrupciones deben estar identificadas.<br />CLASES DE EXCEPCIONES<br />Las instrucciones de un programa pueden estar mal construidas por diversas razones:<br />El código de operación puede ser incorrecto.<br />Se intenta realizar alguna operación no definida, como dividir por cero.<br />La instrucción puede no estar permitida en el modo de ejecución actual.<br />La dirección de algún operando puede ser incorrecta o se intenta violar alguno de sus permisos de uso.<br />IMPORTANCIA DE LAS EXCEPCIONES<br />El mecanismo de tratamiento de las excepciones es esencial para impedir, junto a los modos de ejecución de la CPU y los mecanismos de protección de la memoria, que las aplicaciones realicen operaciones que no les están permitidas. En cualquier caso, el tratamiento específico de una excepción lo realiza el SO.<br />Como en el caso de las interrupciones, el hardware se limita a dejar el control al SO, y éste es el que trata la situación como convenga.<br />Es bastante frecuente que el tratamiento de una excepción no retorne al programa que se estaba ejecutando cuando se produjo la excepción, sino que el SO aborte la ejecución de ese programa. Este factor depende de la pericia del programador para controlar la excepción adecuadamente.<br />GESTIÓN DE PROCESOS<br />Un proceso es simplemente, un programa en ejecución que necesita recursos para realizar su tarea: tiempo de CPU, memoria, archivos y dispositivos de E/S. El SO es el responsable de:<br />Crear y destruir los procesos.<br />Parar y reanudar los procesos.<br />Ofrecer mecanismos para que se comuniquen y sincronicen.<br />La gestión de procesos podría ser similar al trabajo de oficina. Se puede tener una lista de tareas a realizar y a estas fijarles prioridades alta, media, baja por ejemplo. Debemos comenzar haciendo las tareas de prioridad alta primero y cuando se terminen seguir con las de prioridad media y después las de baja. Una vez realizada la tarea se tacha. Esto puede traer un problema que las tareas de baja prioridad pueden que nunca lleguen a ejecutarse. y permanezcan en la lista para siempre. Para solucionar esto, se puede asignar alta prioridad a las tareas más antiguas.<br />GESTIÓN DE LA MEMORIA PRINCIPAL<br />La Memoria es una gran tabla de palabras o bytes que se referencian cada una mediante una dirección única. Este almacén de datos de rápido accesos es compartido por la CPU y los dispositivos de E/S, es volátil y pierde su contenido en los fallos del sistema. El SO es el responsable de:<br />Conocer qué partes de la memoria están utilizadas y por quién.<br />Decidir qué procesos se cargarán en memoria cuando haya espacio disponible.<br />Asignar y reclamar espacio de memoria cuando sea necesario.<br />GESTIÓN DEL ALMACENAMIENTO SECUNDARIO<br />Un sistema de almacenamiento secundario es necesario, ya que la memoria principal (almacenamiento primario) es volátil y además muy pequeña para almacenar todos los programas y datos. También es necesario mantener los datos que no convenga mantener en la memoria principal. El SO se encarga de:<br />Planificar los discos.<br />Gestionar el espacio libre.<br />Asignar el almacenamiento.<br />EL SISTEMA DE E/S<br />Consiste en un sistema de almacenamiento temporal (caché), una interfaz de manejadores de dispositivos y otra para dispositivos concretos. El sistema operativo debe gestionar el almacenamiento temporal de E/S y servir las interrupciones de los dispositivos de E/S.<br />SISTEMA DE ARCHIVOS<br />Los archivos son colecciones de información relacionada, definidas por sus creadores. Éstos almacenan programas (en código fuente y objeto) y datos tales como imágenes, textos, información de bases de datos, etc. El SO es responsable de:<br />Construir y eliminar archivos y directorios.<br />Ofrecer funciones para manipular archivos y directorios.<br />Establecer la correspondencia entre archivos y unidades de almacenamiento.<br />Realizar copias de seguridad de archivos.<br />Existen diferentes Sistemas de Archivos, es decir, existen diferentes formas de organizar la información que se almacena en las memorias (normalmente discos) de los ordenadores. Por ejemplo, existen los sistemas de archivos FAT, FAT32, EXT2, NTFS, etc.<br />Desde el punto de vista del usuario estas diferencias pueden parecer insignificantes a primera vista, sin embargo, existen diferencias muy importantes. Por ejemplo, los sistemas de ficheros FAT32 y NTFS, que se utilizan fundamentalmente en sistemas operativos de Microsoft, tienen una gran diferencia para un usuario que utilice una base de datos con bastante información ya que el tamaño máximo de un fichero con un Sistema de Archivos FAT32 está limitado a 4 gigabytes, sin embargo, en un sistema NTFS el tamaño es considerablemente mayor.<br />SISTEMAS DE PROTECCIÓN<br />Mecanismo que controla el acceso de los programas o los usuarios a los recursos del sistema. El SO se encarga de:<br />Distinguir entre uso autorizado y no autorizado.<br />Especificar los controles de seguridad a realizar.<br />Forzar el uso de estos mecanismos de protección.<br />SISTEMA DE COMUNICACIONES<br />Para mantener las comunicaciones con otros sistemas es necesario poder controlar el envío y recepción de información a través de las interfaces de red. También hay que crear y mantener puntos de comunicación que sirvan a las aplicaciones para enviar y recibir información, y crear y mantener conexiones virtuales entre aplicaciones que están ejecutándose localmente y otras que lo hacen remotamente.<br />PROGRAMAS DE SISTEMA<br />Son aplicaciones de utilidad que se suministran con el SO pero no forman parte de él. Ofrecen un entorno útil para el desarrollo y ejecución de programas, siendo algunas de las tareas que realizan:<br />Manipulación y modificación de archivos.<br />Información del estado del sistema.<br />Soporte a lenguajes de programación.<br />Comunicaciones.<br /> GESTOR DE RECURSOS<br />Como gestor de recursos, el Sistema Operativo administra:<br />La CPU (Unidad Central de Proceso, donde está alojado el microprocesador).<br />Los dispositivos de E/S (entrada y salida)<br />La memoria principal (o de acceso directo).<br />Los discos (o memoria secundaria).<br />OFIMATICA<br />INTRODUCCION<br />Se llama ofimática al equipamiento hardware y software usado para crear, coleccionar, almacenar, manipular y transmitir digitalmente la información necesaria en una oficina para realizar tareas y lograr objetivos básicos. Las actividades básicas de un sistema ofimático comprenden el almacenamiento de datos en bruto, la transferencia electrónica de los mismos y la gestión de información electrónica relativa al negocio.[1] La ofimática ayuda a optimizar o automatizar los procedimientos existentes.<br />La ofimática con red de área local (LAN) permite a los usuarios transmitir datos, correo electrónico e incluso voz por la red. Todas las funciones propias del trabajo en oficina, incluyendo dictados, mecanografía, archivado, copias, fax, télex, microfilmado y gestión de archivos, operación de los teléfonos y la centralita, caen en esta categoría. La ofimática fue un concepto muy popular en los años 1970 y 1980, cuando los ordenadores de sobremesa se popularizaron.<br />DEFINICION<br />La ofimática es el conjunto de técnicas, aplicaciones y herramientas informáticas que se utilizan en funciones de oficina para optimizar, automatizar y mejorar los procedimientos o tareas relacionados.<br />Las herramientas ofimáticas permiten idear, crear, manipular, transmitir y almacenar información necesaria en una oficina. Actualmente es fundamental que estas estén conectadas a una red local y/o a internet.<br />Cualquier actividad que pueda hacerse manualmente en una oficina puede ser automatizada o ayudada por herramientas ofimáticas: dictado, mecanografía, archivado, fax, microfilmado, gestión de archivos y documentos, etc.<br />La ofimática comienza a desarrollarse en la década del 70, con la masificación de los equipos de oficina que comienzan a incluir microprocesadores, dejándose de usar métodos y herramientas por otras más modernas. Por ejemplo, se deja la máquina de escribir y se reemplaza por computadoras y sus procesadores de texto e incluso el dictado por voz automatizado.<br />HERRAMIENTAS Y PROCEDIMIENTOS OFIMÁTICOS<br />* Procesamiento de textos: Ver Procesador de texto.<br />* Hoja de cálculo<br />* Herramientas de presentación multimedia.<br />* Base de datos.<br />* Utilidades: agendas, calculadoras, etc.<br />* Programas de e-mail, correo de voz, mensajeros.<br />* Herramientas de reconocimiento de voz.<br />* Suite o paquete ofimático: paquete de múltiples herramientas ofimáticas como Microsoft Office, OpenOffice, etc.<br />La ofimática o la automatización de la oficina moderna, comienza con la máquina de escribir y con la fotocopiadora, que permitieron mecanizar tareas que antes eran manuales.<br />Más cerca en el tiempo, la automatización de la oficina también comenzó a incluir el traspaso de información hacia medios electrónicos.<br />Pero la revolución de la automatización llegó de la mano de las computadoras, en especial de las computadoras personales en 1980.<br />La ofimática básicamente se originó para la gestión de datos (gracias al poder de cálculo y procesamiento de las computadoras), luego para el almacenamiento de información (dado que la capacidad de almacenamiento crecía y se hacía más barato) y finalmente el intercambio de datos (gracias a las facilidades de las redes, la conexión a internet, etc.).<br />SUITE OFIMÁTICA<br />Una suite ofimática o suite de oficina es una recopilación de programas, los cuales son utilizados en oficinas y sirve para diferentes funciones como crear, modificar, organizar, escanear, imprimir, etc. archivos y documentos. Son ampliamente usados en varios lugares, ya que al ser eso (una recopilación), hace que sea asequible adquirir toda la suite, que programa por programa, lo cual es más complejo, al tener que conseguir programa por programa, y en caso del software pagado, más caro.<br />Generalmente en las suites ofimáticas, al incluir los programas en estas, no hay un estándar sobre los programas a incluir; pero la gran mayoría incluyen al menos un procesador de textos y una hoja de cálculo. Adicionalmente, la suite puede contener un Programa de presentación, un sistema de gestión de base de datos, herramientas menores de gráficos y comunicaciones, un gestor de información personal (agenda y cliente de correo electrónico) y un navegador web.<br />En la actualidad las suites ofimáticas dominantes en el mercado son, por parte del software pagado, Microsoft Office, la cual posee sus propios formatos cerrados de documentos para cada uno de sus programas. Respecto al software libre, está OpenOffice, desarrollado por Sun Microsystems, también con un formato para cada programa, pero de código abierto. Debido a esto y a la pobre compatibilidad entre las suites de Microsoft con otros formatos abiertos (como OpenDocument), en cada suite ofimática se hacen desarrollos que, generalmente, son poco adaptables a los cambios que hace una y otra suite.<br />SUITES OFIMÁTICAS POPULARES<br /> MULTIPLATAFORMA<br />OpenOffice.org: Suite libre y gratuita, utiliza el estándar OpenDocument (Está conformada por los programas Writer, Calc, Impress, Draw, Base).<br />Gnome Office: Suite libre y gratuita del proyecto GNOME (Conformada por Abiword, Gnumeric, GNOME-DB y GIMP).<br />StarOffice: Suite libre (hasta la versión 5.2) de Sun basada en OpenOffice.org, con algunos añadidos propietarios.<br />Corel WordPerfect Office: Suite propietaria de Corel (WordPerfect, Quattro Pro, Paradox, Corel Presentations, CorelCENTRAL y Dragon NaturallySpeaking).<br />Lotus: Lotus SmartSuite (Word Pro, Lotus 1-2-3, Lotus Organizer, Lotus Word Pro, Lotus Approach y Freelance Graphics).<br />Papyrus OFFICE: (Papyrus WORD, Papyrus BASE).<br />IBM Lotus Symphony: Suite libre y gratuita, desarrollada bajo OpenOffice (Documento, Presentación, Cálculo y Explorador Web).<br />SÓLO PARA MAC OS Y WINDOWS<br />Microsoft Office.<br />ThinkFree Office.<br />Sólo para Mac OS<br />NeoOffice: Parte de OpenOffice.org para Mac OS X.<br />MarinerPack.<br />iWork: Suite propietaria de Apple.<br />Apple Works: Suite propietaria de Apple para uso doméstico.<br />SÓLO PARA WINDOWS<br />EasyOffice.<br />Microsoft Works: Suite propietaria de Microsoft para uso doméstico.<br />SÓLO PARA UNIX, GNU/LINUX Y DERIVADOS<br /> Siag Office.<br />KOffice: Suite libre y gratuita del proyecto KDE (KWord, KSpread, KPresenter, Kexi, Kivio, Karbon14, Krita, KPlato, K-Factor, KChart, KFormula, Kugar).<br />Gnome Office: Suite libre y gratuita del proyecto GNOME<br />SOFTWARE LIBRE<br />HISTORIA<br />Entre los años 60 y 70 del Siglo XX, el software no era considerado un producto sino un añadido que los vendedores de las grandes computadoras de la época (las mainframes) aportaban a sus clientes para que éstos pudieran usarlos. En dicha cultura, era común que los programadores y desarrolladores de software compartieran libremente sus programas unos con otros. Este comportamiento era particularmente habitual en algunos de los mayores grupos de usuarios de la época, como DECUS (grupo de usuarios de computadoras DEC). A finales de los 70, las compañías iniciaron el hábito de imponer restricciones a los usuarios, con el uso de acuerdos de licencia.<br />Allá por el 1971, cuando la informática todavía no había sufrido su gran boom, las personas que hacían uso de ella, en ámbitos universitarios y empresariales, creaban y compartían el software sin ningún tipo de restricciones.<br />Con la llegada de los años 80 la situación empezó a cambiar. Las computadoras más modernas comenzaban a utilizar sistemas operativos privativos, forzando a los usuarios a aceptar condiciones restrictivas que impedían realizar modificaciones a dicho software.<br />En caso de que algún usuario o programador encontrase algún error en la aplicación, lo único que podía hacer era darlo a conocer a la empresa desarrolladora para que esta lo solucionara. Aunque el programador estuviese capacitado para solucionar el problema y lo desease hacer sin pedir nada a cambio, el contrato le impedía que mejorase el software.<br />El mismo Richard Stallman cuenta que por aquellos años, en el laboratorio donde trabajaba, habían recibido una impresora donada por una empresa externa. El dispositivo, que era utilizado en red por todos los trabajadores, parecía no funcionar a la perfección, dado que cada cierto tiempo el papel se atascaba. Como agravante, no se generaba ningún aviso que se enviase por red e informase a los usuarios de la situación.<br />La pérdida de tiempo era constante, ya que en ocasiones, los trabajadores enviaban por red sus trabajos a imprimir y al ir a buscarlos se encontraban la impresora atascada y una cola enorme de trabajos pendientes. Richard Stallman decidió arreglar el problema, e implementar el envío de un aviso por red cuando la impresora se bloqueara. Para ello necesitaba tener acceso al código fuente de los controladores de la impresora. Pidió a la empresa propietaria de la impresora lo que necesitaba, comentando, sin pedir nada a cambio, qué era lo que pretendía realizar. La empresa se negó a entregarle el código fuente.<br />En ese preciso instante, Richard Stallman se vio en una encrucijada: debía elegir entre aceptar el nuevo software privativo firmando acuerdos de no revelación y acabar desarrollando más software privativo con licencias restrictivas, que a su vez deberían ser más adelante aceptadas por sus propios colegas.<br />Con este antecedente, en 1984, Richard Stallman comenzó a trabajar en el proyecto GNU, y un año más tarde fundó la Free Software Foundation (FSF). Stallman introdujo la definición de free software y el concepto de " copyleft" , que desarrolló para otorgar libertad a los usuarios y para restringir las posibilidades de apropiación del software. <br />El software libre (en inglés free software, esta denominación también se confunde a veces con gratis por el doble sentido del inglés free en castellano) es la denominación del software que respeta la libertad de los usuarios sobre su producto adquirido y, por tanto, una vez obtenido puede ser usado, copiado, estudiado, cambiado y redistribuido libremente. Según la Free Software Foundation, el software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, modificar el software y distribuirlo modificado.<br />El software libre suele estar disponible gratuitamente, o al precio de costo de la distribución a través de otros medios; sin embargo no es obligatorio que sea así, por lo tanto no hay que asociar software libre a " software gratuito" (denominado usualmente freeware), ya que, conservando su carácter de libre, puede ser distribuido comercialmente (" software comercial" ). Análogamente, el " software gratis" o " gratuito" incluye en ocasiones el código fuente; no obstante, este tipo de software no es libre en el mismo sentido que el software libre, a menos que se garanticen los derechos de modificación y redistribución de dichas versiones modificadas del programa.<br />Tampoco debe confundirse software libre con " software de dominio público" . Éste último es aquel software que no requiere de licencia, pues sus derechos de explotación son para toda la humanidad, porque pertenece a todos por igual. Cualquiera puede hacer uso de él, siempre con fines legales y consignando su autoría original. Este software sería aquel cuyo autor lo dona a la humanidad o cuyos derechos de autor han expirado, tras un plazo contado desde la muerte de este, habitualmente 70 años. Si un autor condiciona su uso bajo una licencia, por muy débil que sea, ya no es del dominio público.<br />DEFINICION<br />El software libre (en inglés free software, esta denominación también se confunde a veces con gratis por el doble sentido del inglés free en castellano) es la denominación del software que respeta la libertad de los usuarios sobre su producto adquirido y, por tanto, una vez obtenido puede ser usado, copiado, estudiado, cambiado y redistribuido libremente. Según la Free Software Fundación, el software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, modificar el software y distribuirlo modificado.<br />El software libre suele estar disponible gratuitamente, o al precio de costo de la distribución a través de otros medios; sin embargo no es obligatorio que sea así, por lo tanto no hay que asociar software libre a " software gratuito" (denominado usualmente freeware), ya que, conservando su carácter de libre, puede ser distribuido comercialmente (" software comercial" ). Análogamente, el " software gratis" o " gratuito" incluye en ocasiones el código fuente; no obstante, este tipo de software no es libre en el mismo sentido que el software libre, a menos que se garanticen los derechos de modificación y redistribución de dichas versiones modificadas del programa.<br />Tampoco debe confundirse software libre con " software de dominio público" . Éste último es aquel software que no requiere de licencia, pues sus derechos de explotación son para toda la humanidad, porque pertenece a todos por igual. Cualquiera puede hacer uso de él, siempre con fines legales y consignando su autoría original. Este software sería aquel cuyo autor lo dona a la humanidad o cuyos derechos de autor han expirado, tras un plazo contado desde la muerte de este, habitualmente 70 años. Si un autor condiciona su uso bajo una licencia, por muy débil que sea, ya no es del dominio público.<br />LIBERTADES DEL SOFTWARE LIBRE<br />De acuerdo con tal definición, el software es " libre" se garantiza las siguientes libertades:<br />Libertad Descripción<br />0 La libertad de usar el programa, con cualquier propósito.<br />1 La libertad de estudiar cómo funciona el programa y modificarlo, <br /> adaptándolo a tus necesidades.<br />2 La libertad de distribuir copias del programa, con lo cual puedes <br /> ayudar a tu prójimo.<br />3 La libertad de mejorar el programa y hacer públicas esas mejoras a <br /> los demás, de modo que toda la comunidad se beneficie.<br />Ciertos teóricos usan este cuarto punto (libertad 3) para justificar parcialmente las limitaciones impuestas por la licencia GNU GPL frente a otras licencias de software libre (ver Licencias GPL). Sin embargo el sentido original es más libre, abierto y menos restrictivo que el que le otorga la propia situación de incompatibilidad, que podría ser resuelta en la próxima versión 3.0 de la licencia GNU GPL, causa en estos momentos graves perjuicios a la comunidad de programadores de software libre, que muchas veces no pueden reutilizar o mezclar códigos de dos licencias distintas, pese a que las libertades teóricamente lo deberían permitir.<br />En el sitio web oficial de Open Source Initiative está la lista completa de las licencias de software libre actualmente aprobadas y tenidas como tales.<2><br />El término software no libre se emplea para referirse al software distribuido bajo una licencia de software más restrictiva que no garantiza estas cuatro libertades. Las leyes de la propiedad intelectual reservan la mayoría de los derechos de modificación, duplicación y redistribución para el dueño del copyright; el software dispuesto bajo una licencia de software libre rescinde específicamente la mayoría de estos derechos reservados.<br />La definición de software libre no contempla el asunto del precio; un eslogan frecuentemente usado es " libre como en libertad, no como en cerveza gratis" o en inglés " Free as in freedom, not as in free beer" (aludiendo a la ambigüedad del término inglés " free" ), y es habitual ver a la venta CD de software libre como distribuciones Linux. Sin embargo, en esta situación, el comprador del CD tiene el derecho de copiarlo y redistribuirlo. El software gratis puede incluir restricciones que no se adaptan a la definición de software libre —por ejemplo, puede no incluir el código fuente, puede prohibir explícitamente a los distribuidores recibir una compensación a cambio, etc.—.<br />Para evitar la confusión, algunas personas utilizan los términos " libre" (software libre) y " gratis" (software gratis) para evitar la ambigüedad de la palabra inglesa " free" . Sin embargo, estos términos alternativos son usados únicamente dentro del movimiento del software libre, aunque están extendiéndose lentamente hacia el resto del mundo. Otros defienden el uso del término open source software (software de código abierto). La principal diferencia entre los términos " open source" y " free software" es que éste último tiene en cuenta los aspectos éticos y filosóficos de la libertad, mientras que el " open source" se basa únicamente en los aspectos técnicos.<br />En un intento por unir los mencionados términos que se refieren a conceptos semejantes, se está extendiendo el uso de la palabra " FLOSS" con el significado de free/libre and open source software e, indirectamente, también a la comunidad que lo produce y apoya.<br />TIPOS DE LICENCIAS<br />Una licencia es aquella autorización formal con carácter contractual que un autor de un software da a un interesado para ejercer " actos de explotación legales" . Pueden existir tantas licencias como acuerdos concretos se den entre el autor y el licenciatario. Desde el punto de vista del software libre, existen distintas variantes del concepto o grupos de licencias:<br />Licencias GPL<br />Una de las más utilizadas es la Licencia Pública General de GNU (GNU GPL). El autor conserva los derechos de autor (copyright), y permite la redistribución y modificación bajo términos diseñados para asegurarse de que todas las versiones modificadas del software permanecen bajo los términos más restrictivos de la propia GNU GPL. Esto hace que sea imposible crear un producto con partes no licenciadas GPL: el conjunto tiene que ser GPL.<br />Es decir, la licencia GNU GPL posibilita la modificación y redistribución del software, pero únicamente bajo esa misma licencia. Y añade que si se reutiliza en un mismo programa código " A" licenciado bajo licencia GNU GPL y código " B" licenciado bajo otro tipo de licencia libre, el código final " C" , independientemente de la cantidad y calidad de cada uno de los códigos " A" y " B" , debe estar bajo la licencia GNU GPL.<br />En la práctica esto hace que las licencias de software libre se dividan en dos grandes grupos, aquellas que pueden ser mezcladas con código licenciado bajo GNU GPL (y que inevitablemente desaparecerán en el proceso, al ser el código resultante licenciado bajo GNU GPL) y las que no lo permiten al incluir mayores u otros requisitos que no contemplan ni admiten la GNU GPL y que por lo tanto no pueden ser enlazadas ni mezcladas con código gobernado por la licencia GNU GPL.<br />Aproximadamente el 60% del software licenciado como software libre emplea una licencia GPL.<br />Licencias AGPL<br />La Licencia Pública General de Affero (en inglés Affero General Public License, también Affero GPL o AGPL ) es una licencia copyleft derivada de la Licencia Pública General de GNU diseñada específicamente para asegurar la cooperación con la comunidad en el caso de software que corra en servidores de red.<br />La Affero GPL es íntegramente una GNU GPL con una cláusula nueva que añade la obligación de distribuir el software si éste se ejecuta para ofrecer servicios a través de una red de ordenadores.<br />La Free Software Foundation recomienda que el uso de la GNU AGPLv3 sea considerado para cualquier software que usualmente corra sobre una red.<4><br />Licencias estilo BSD<br />Llamadas así porque se utilizan en gran cantidad de software distribuido junto a los sistemas operativos BSD. El autor, bajo tales licencias, mantiene la protección de copyright únicamente para la renuncia de garantía y para requerir la adecuada atribución de la autoría en trabajos derivados, pero permite la libre redistribución y modificación, incluso si dichos trabajos tienen propietario. Son muy permisivas, tanto que son fácilmente absorbidas al ser mezcladas con la licencia GNU GPL con quienes son compatibles. Puede argumentarse que esta licencia asegura “verdadero” software libre, en el sentido que el usuario tiene libertad ilimitada con respecto al software, y que puede decidir incluso redistribuirlo como no libre. Otras opiniones están orientadas a destacar que este tipo de licencia no contribuye al desarrollo de más software libre (normalmente utilizando la siguiente analogía: " una licencia BSD es más libre que una GPL si y sólo si se opina también que un país que permita la esclavitud es más libre que otro que no la permite" ).<br />Licencias estilo MPL y derivadas<br />Esta licencia es de Software Libre y tiene un gran valor porque fue el instrumento que empleó Netscape Communications Corp. para liberar su Netscape Communicator 4.0 y empezar ese proyecto tan importante para el mundo del Software Libre: Mozilla. Se utilizan en gran cantidad de productos de software libre de uso cotidiano en todo tipo de sistemas operativos. La MPL es Software Libre y promueve eficazmente la colaboración evitando el efecto " viral" de la GPL (si usas código licenciado GPL, tu desarrollo final tiene que estar licenciado GPL). Desde un punto de vista del desarrollador la GPL presenta un inconveniente en este punto, y lamentablemente mucha gente se cierra en banda ante el uso de dicho código. No obstante la MPL no es tan excesivamente permisiva como las licencias tipo BSD. Estas licencias son denominadas de copyleft débil. La NPL (luego la MPL) fue la primera licencia nueva después de muchos años, que se encargaba de algunos puntos que no fueron tenidos en cuenta por las licencias BSD y GNU. En el espectro de las licencias de software libre se la puede considerar adyacente a la licencia estilo BSD, pero perfeccionada.<br />Copyleft<br />Hay que hacer constar que el titular de los derechos de autor (copyright) de un software bajo licencia copyleft puede también realizar una versión modificada bajo su copyright original, y venderla bajo cualquier licencia que desee, además de distribuir la versión original como software libre. Esta técnica ha sido usada como un modelo de negocio por una serie de empresas que realizan software libre (por ejemplo MySQL); esta práctica no restringe ninguno de los derechos otorgados a los usuarios de la versión copyleft. También podría retirar todas las licencias de software libre anteriormente otorgadas, pero esto obligaría a una indemnización a los titulares de las licencias en uso. En España, toda obra derivada está tan protegida como una original, siempre que la obra derivada parta de una autorización contractual con el autor. En el caso genérico de que el autor retire las licencias " copyleft" , no afectaría de ningún modo a los productos derivados anteriores a esa retirada, ya que no tiene efecto retroactivo. En términos legales, el autor no tiene derecho a retirar el permiso de una licencia en vigencia. Si así sucediera, el conflicto entre las partes se resolvería en un pleito convencional.<br />RELACION CON EL SOFWARE DE CODIGO ABIERTO<br />Aunque en la práctica el software de código abierto y el software libre comparten muchas de sus licencias, la FSF opina que el movimiento de código abierto es filosóficamente diferente del movimiento del software libre. Apareció en 1998 con un grupo de personas, entre los que cabe destacar a Eric S. Raymond y Bruce Perens, que formaron la Open Source Initiative (OSI). Ellos buscaban darle mayor relevancia a los beneficios prácticos del compartir el código fuente, e interesar a las principales casas de software y otras empresas de la industria de la alta tecnología en el concepto. Mientras que la FSF y Richard Stallman, prefieren plantear el asunto en términos éticos empleando el término Software Libre.<br />Estos defensores ven que el término " código abierto" , en inglés open source, evita la ambigüedad del término en ese idioma que es free en free software. El término " código abierto" fue acuñado por Christine Peterson del think tank Foresight Institute, y se registró para actuar como marca registrada el término en inglés para los productos de software libre.<br />Mucha gente reconoce el beneficio cualitativo del proceso de desarrollo de software cuando los desarrolladores pueden usar, modificar y redistribuir el código fuente de un programa. (Véase también La Catedral y el Bazar). El movimiento del software libre hace especial énfasis en los aspectos morales o éticos del software, viendo la excelencia técnica como un producto secundario deseable de su estándar ético. El movimiento de código abierto ve la excelencia técnica como el objetivo prioritario, siendo la compartición del código fuente un medio para dicho fin. Por dicho motivo, la FSF se distancia tanto del movimiento de código abierto como del término " Código Abierto" (en inglés Open Source).<br />Puesto que la OSI sólo aprueba las licencias que se ajustan a la OSD (Open Source Definition, Definición de Código Abierto), la mayoría de la gente lo interpreta como un esquema de distribución, e intercambia libremente " código abierto" con " software libre" . Aun cuando existen importantes diferencias filosóficas entre ambos términos, especialmente en términos de las motivaciones para el desarrollo y el uso de tal software, raramente suelen tener impacto en el proceso de colaboración.<br />Aunque el término " código abierto" elimina la ambigüedad de Libertad frente a Precio (en el caso del Inglés), introduce una nueva: entre los programas que se ajustan a la definición de Código Abierto, que dan a los usuarios la libertad de mejorarlos, y los programas que simplemente tiene el código fuente disponible, posiblemente con fuertes restricciones sobre el uso de dicho código fuente. Mucha gente cree que cualquier software que tenga el código fuente disponible es de código abierto, puesto que lo pueden manipular (un ejemplo de este tipo de software sería el popular paquete de software gratuito Graphviz, inicialmente no libre pero que incluía el código fuente, aunque luego AT&T le cambió la licencia). Sin embargo, mucho de este software no da a sus usuarios la libertad de distribuir sus modificaciones, restringe el uso comercial, o en general restringe los derechos de los usuarios.<br />VENTAJAS DEL SOFTWARE LIBRE<br />Bajo costo de adquisición: Se trata de un software económico ya que permite un ahorro de grandes cantidades en la adquisición de las licencias.<br />Innovación tecnológica: Esto se debe a que cada usuario puede aportar sus conocimientos y su experiencia y así decidir de manera conjunta hacia donde se debe dirigir la evolución y el desarrollo del software. Este es un gran avance en la tecnología mundial.<br />Independencia del proveedor: Al disponer del código fuente, se garantiza una independencia del proveedor que hace que cada empresa o particular pueda seguir contribuyendo al desarrollo y los servicios del software.<br />Escrutinio público: Esto hace que la corrección de errores y la mejora del producto se lleven a cabo de manera rápida y eficaz por cada uno de los usuarios que lleguen a utilizar el producto.<br />Adaptación del software: Esta cualidad resulta de gran utilidad para empresas e industrias específicas que necesitan un software personalizado para realizar un trabajo específico y con el software libre se puede realizar y con costes mucho más razonables.<br />Lenguas: Aunque el software se cree y salga al mercado en una sola lengua, el hecho de ser software libre facilita en gran medida su traducción y localización para que usuarios de diferentes partes del mundo puedan aprovechar estos beneficios.<br />SOFTWARE FINANCIERO<br />INTRODUCCION<br />El software financiero es un conjunto de programas informáticos que son utilizados en el ámbito financiero como son las empresas comerciales las bolsas de valores los bancos este tipo de software les permite conocer su situación actual.<br />DEFINICIÓN<br />Los sistemas ERP son sistemas integrales de gestión para la empresa. Se caracterizan por estar compuestos por diferentes partes integradas en una única aplicación. Estas partes son de diferente uso, por ejemplo: producción, ventas, compras, logística, contabilidad (de varios tipos), gestión de proyectos, GIS (sistema de información geográfica), inventarios y control de almacenes, pedidos, nóminas, etc. Sólo podemos definir un ERP como la integración de todas estas partes. Lo contrario sería como considerar un simple programa de facturación como un ERP por el simple hecho de que una empresa integre únicamente esa parte. Ésta es la diferencia fundamental entre un ERP y otra aplicación de gestión. El ERP integra todo lo necesario para el funcionamiento de los procesos de negocio de la empresa. No podemos hablar de ERP en el momento que tan sólo se integra uno o una pequeña parte de los procesos de negocio. La propia definición de ERP indica la necesidad de " Disponibilidad de toda la información para todo el mundo todo el tiempo" .<br />Los objetivos principales de los sistemas ERP son:<br />Optimización de los procesos empresariales.<br />Acceso a toda la información de forma confiable, precisa y oportuna (integridad de datos).<br />La posibilidad de compartir información entre todos los componentes de la organización.<br />Eliminación de datos y operaciones innecesarias de reingeniería.<br />El propósito fundamental de un ERP es otorgar apoyo a los clientes del negocio, tiempos rápidos de respuesta a sus problemas, así como un eficiente manejo de información que permita la toma oportuna de decisiones y disminución de los costos totales de operación.<br />Las características que distinguen a un ERP de cualquier otro software empresarial, es que deben de ser sistemas integrales, con modularidad y adaptables:<br />Integrales, porque permiten controlar los diferentes procesos de la compañía entendiendo que todos los departamentos de una empresa se relacionan entre sí, es decir, que el resultado de un proceso es punto de inicio del siguiente. Por ejemplo, en una compañía, el que un cliente haga un pedido representa que se cree una orden de venta que desencadena el proceso de producción, de control de inventarios, de planificación de distribución del producto, cobranza, y por supuesto sus respectivos movimientos contables. Si la empresa no usa un ERP, necesitará tener varios programas que controlen todos los procesos mencionados, con la desventaja de que al no estar integrados, la información se duplica, crece el margen de contaminación en la información (sobre todo por errores de captura) y se crea un escenario favorable para malversaciones. Con un ERP, el operador simplemente captura el pedido y el sistema se encarga de todo lo demás, por lo que la información no se manipula y se encuentra protegida.<br />Modulares. Los ERP entienden que una empresa es un conjunto de departamentos que se encuentran interrelacionados por la información que comparten y que se genera a partir de sus procesos. Una ventaja de los ERP, tanto económica como técnica es que la funcionalidad se encuentra dividida en módulos, los cuales pueden instalarse de acuerdo con los requerimientos del cliente. Ejemplo: ventas, materiales, finanzas, control de almacén, recursos humanos, etc.<br />Adaptables. Los ERP están creados para adaptarse a la idiosincrasia de cada empresa. Esto se logra por medio de la configuración o parametrización de los procesos de acuerdo con las salidas que se necesiten de cada uno. Por ejemplo, para controlar inventarios, es posible que una empresa necesite manejar la partición de lotes pero otra empresa no. Los ERP más avanzados suelen incorporar herramientas de programación de 4ª Generación para el desarrollo rápido de nuevos procesos. La parametrización es el valor añadido fundamental que debe contar cualquier ERP para adaptarlo a las necesidades concretas de cada empresa.<br />Otras características destacables de los sistemas ERP son:<br />Base de datos centralizada.<br />Los componentes del ERP interactúan entre sí consolidando todas las operaciones.<br />En un sistema ERP los datos se ingresan sólo una vez y deben ser consistentes, completos y comunes.<br />Las empresas que lo implanten suelen tener que modificar alguno de sus procesos para alinearlos con los del sistema ERP. Este proceso se conoce como Reingeniería de Procesos, aunque no siempre es necesario.<br />Aunque el ERP pueda tener menús modulares configurables según los roles de cada usuario, es un todo. Esto significa: es un único programa (con multiplicidad de bibliotecas, eso sí) con acceso a una base de datos centralizada. No debemos confundir en este punto la definición de un ERP con la de una suite de gestión.<br />La tendencia actual es a ofrecer aplicaciones especializadas para determinadas empresas. Es lo que se denomina versiones sectoriales o aplicaciones sectoriales especialmente indicadas o preparadas para determinados procesos de negocio de un sector (los más utilizados).<br />Las soluciones ERP en ocasiones son complejas y difíciles de implantar debido a que necesitan un desarrollo personalizado para cada empresa partiendo de la parametrización inicial de la aplicación que es común. Las personalizaciones y desarrollos particulares para cada empresa requieren de un gran esfuerzo en tiempo, y por consiguiente en dinero, para modelar todos los procesos de negocio de la vida real en la aplicación.<br />Las metodologías de implantación de los ERP en la empresa no siempre son todo lo simples que se desearía, dado que entran en juego múltiples facetas.<br />No hay recetas mágicas ni guiones explícitos para implantaciones exitosas; solamente trabajo bien realizado, una correcta metodología y aspectos que deben cuidarse antes y durante el proceso de implantación, e inclusive cuando el sistema entra en función. Por ello, antes, durante y después de la implantación de un ERP es conveniente efectuar lo siguiente:<br />Definición de resultados a obtener con la implantación de un ERP.<br />Definición del modelo de negocio.<br />Definición del modelo de gestión.<br />Definición de la estrategia de implantación.<br />Evaluación de oportunidades para software complementario al producto ERP.<br />Alineamiento de la estructura y plataformas tecnológicas.<br />Análisis del cambio organizativo.<br />Entrega de una visión completa de la solución a implantar.<br />Implantación del sistema.<br />Controles de calidad.<br />Auditoría del entorno técnico y del entorno de desarrollo.<br />Benchmarking de la implantación.<br />IMPLANTACIÓN<br />Debido a que cubre un espectro de aspectos de la gestión de una empresa, un sistema de software ERP está basado en algunos de los productos de software de mayor tamaño y complejidad en la industria. Al implementar tales sistemas en una compañía la metodología tradicional solía involucrar a un grupo de analistas, programadores y usuarios. Este fue el esquema que se empleó, por lo menos, hasta el desarrollo de la Internet. Esta permite a los consultores tener acceso a las computadoras de la compañía con el fin de poder instalar los datos actualizados y estandarizados de implementación del ERP, sin ayuda profesional. Este tipo de proyectos pueden llegar a ser muy caros para grandes compañías, especialmente para las transnacionales. Las compañías especializadas en la implementación del ERP, sin embargo, pueden agilizar estos procesos y completar la tarea en menos de seis meses con un sólido examen piloto.<br />A la hora de realizar la implementación de los sistemas ERP, las compañías muchas veces buscan la ayuda de un proveedor o vendedor de ERP o de compañías consultoras. La consultoría en materia de ERP es de dos tipos, la consultoría de negocios y la consultoría técnica. La consultoría de negocios estudia los procesos de negocios actuales de la compañía y evalúa su correspondencia con los procesos del sistema ERP, lo cual generalmente incluye la personalización de ciertos aspectos de los sistemas ERP para las necesidades de las organizaciones. La consultoría técnica muchas veces implica programación. La mayoría de los vendedores de ERP permiten modificar su software para las necesidades de los negocios de sus clientes.<br />Muchas de las empresas que buscan la implantación de un ERP comenten el error de buscar soluciones a bajo coste, o no contratar a una empresa integradora. Este tipo de empresa, no solamente les ayuda en la implantación sino que les apoya a visualizar a su cliente en todos los aspectos de su negocio tanto en hardware, software y en la administración del cambio. Algunas de las empresas integradoras más importantes son Deloitte, EDS, PricewaterhouseCoopers, IBM, GETI, Neoris, o AVANADE.<br />Personalizar un paquete ERP puede resultar muy costoso y complicado, porque muchos paquetes no están diseñados para su personalización, así que muchos negocios implementan sus sistemas ERP siguiendo las mejores prácticas de la industria. Algunos paquetes ERP son muy genéricos en sus reportes e informes; la personalización de dichos elementos se debe hacer en cada implementación. Es importante tener en cuenta que en ciertas ocasiones tiene mucho más sentido la compra de paquetes de generación de reportes fabricados por terceros y que están hechos para interactuar directamente con el ERP.<br />Hoy en día, un buen número de sistemas ERP tienen una interfaz Web. La ventaja de este tipo de interfaz es que no requiere la instalación de una aplicación cliente. Mientras se tenga una conexión a Internet (o a la red local de la empresa, según sea el caso), se puede acceder a los ERP basados en Web a través del típico navegador web.<br />VENTAJAS<br />Una empresa que no cuente con un sistema ERP, en función de sus necesidades, puede encontrarse con muchas aplicaciones de software cerradas, que no se pueden personalizar, y no se optimizan para su negocio. Diseño de ingeniería para mejorar el producto, seguimiento del cliente desde la aceptación hasta la satisfacción completa, una compleja administración de interdependencias de los recibos de materiales, de los productos estructurados en el mundo real, de los cambios de la ingeniería y de la revisión y la mejora, y la necesidad de elaborar materiales substitutos, etc. La ventaja de tener un ERP es que todo esto, y más, está integrado.<br />El cambio como un producto está hecho en los detalles de ingeniería, y es como ahora será hecho. La efectividad de datos puede usarse para el control cuando el cambio ocurra desde una versión anterior a la nueva, en ambos productos los datos van encaminados hacia la efectividad y algunos van a la suspensión del mismo. Parte del cambio puede incluir la etiqueta para identificar el número de la versión (código de barras).<br />La seguridad de las computadoras está incluida dentro del ERP, para proteger a la organización en contra de crímenes externos, tal como el espionaje industrial y crimen interno, tal como malversación. Una falsificación en el escenario de los datos puede involucrar terrorismo alterando el recibo de materiales como por ejemplo poner veneno en los productos alimenticios, u otro sabotaje. La seguridad del ERP ayuda a prevenir el abuso.<br />Hay conceptos de mercadeo y ventas (los que incluyen CRM o la relación administrativa con los consumidores, back end (el trabajo interno de la compañía para satisfacer las necesidades de los consumidores) que incluye control de calidad, para asegurarse que no hay problemas no arreglados, en los productos finales; cadena de abastecimiento (interacción con los proveedores y la infraestructura). Todo esto puede ser integrado a través de la ERP, aunque algunos sistemas tengan espacios de menos comprensibilidad y efectividad. Sin un ERP que integre todo esto, puede ser complicado para la administración de la manufactura.<br />DESVENTAJAS<br />Muchos de los problemas que tienen las compañías con el ERP son debido a la inversión inadecuada para la educación continua del personal relevante, incluyendo los cambios de implementación y de prueba, y una falta de políticas corporativas que afectan a cómo se obtienen los datos del ERP y como se mantienen actualizados.<br />Limitaciones y obstáculos del ERP incluyen:<br />El éxito depende en las habilidades y la experiencia de la fuerza de trabajo, incluyendo la educación y como hacer que el sistema trabaje correctamente. Muchas compañías reducen costos reduciendo entrenamientos. Los propietarios de pequeñas empresas están menos capacitados, lo que significa que el manejo del sistema ERP es operado por personal que no está capacitado para el manejo del mismo.<br />Cambio de personal, las compañías pueden emplear administradores que no están capacitados para el manejo del sistema ERP de la compañía empleadora, proponiendo cambios en las prácticas de los negocios que no están sincronizados con el sistema.<br />La instalación del sistema ERP es muy costosa.<br />Los vendedores del ERP pueden cargar sumas de dinero para la renovación de sus licencias anuales, que no está relacionado con el tamaño del ERP de la compañía o sus ganancias.<br />El personal de soporte técnico en ocasiones contesta a las llamadas inapropiadas de la estructura coorporativa.<br />Los ERP son vistos como sistemas muy rígidos, y difíciles de adaptarse al flujo específico de los trabajadores y el proceso de negocios de algunas compañías, este punto se cita como una de las principales causas de falla.<br />Los sistemas pueden ser difíciles de usarse.<br />Los sistemas pueden sufrir problemas de " cuello de botella" : la ineficiencia en uno de los departamentos o en uno de los empleados puede afectar a otros participantes.<br />Muchos de los eslabones integrados necesitan exactitud en otras aplicaciones para trabajar efectivamente. Una compañía puede lograr estándares mínimos, y luego de un tiempo los " datos sucios" (datos inexactos o no verificados) reducirán la confiabilidad de algunas aplicaciones.<br />Una vez que el sistema esté establecido, los costos de los cambios son muy altos (reduciendo la flexibilidad y las estrategias de control).<br />La mala imagen de unión de la compañía puede causar problemas en su contabilidad, la moral de sus empleados y las líneas de responsabilidad.<br />La resistencia en compartir la información interna entre departamentos puede reducir la eficiencia del software.<br />Hay problemas frecuentes de compatibilidad con algunos de los sistemas legales de los socios.<br />Los sistemas pueden tener excesiva ingeniería respecto a las necesidades reales del consumidor.<br />Realidad virtual<br />¿Qué es realidad virtual?<br />Definitivamente un término muy sonado y controversial. En éstos días en que todo es virtual, encontramos mucha confusión en las personas expuestas de una u otra forma a los nuevos medios. En el nombre en sí hay una gran contradicción: Realidad Virtual. Algo que es, pero no es. Sin embargo no tenemos que complicarnos la vida tratando de explicar la paradoja. La realidad virtual es una representación de las cosas a través de medios electrónicos, que nos da la sensación de estar en una situación real en la que podemos interactuar con lo que nos rodea.<br />Para aquellos que prefieran examinar con mayor detalle sus características, a continuación hay información a mayor profundidad sobre realidad virtual:<br />La realidad virtual puede ser de dos tipos: inmersiva y no inmersiva. Los métodos inmersivos de realidad virtual con frecuencia se ligan a un ambiente tridimensional creado por computadora el cual se manipula a través de cascos, guantes u otros dispositivos que capturan la posición y rotación de diferentes partes del cuerpo humano. La realidad virtual no inmersiva utiliza medios como el que actualmente nos ofrece Internet en el cual podemos interactuar a tiempo real con diferentes personas en espacios y ambientes que en realidad no existen sin la necesidad de dispositivos adicionales a la computadora.<br />La realidad virtual no inmersiva ofrece un nuevo mundo a través de una ventana de escritorio. Este enfoque no inmersivo tiene varias ventajas sobre el enfoque inmersivo como: bajo costo y fácil y rápida aceptación de los usurarios. Los dispositivos inmersivos son de alto costo y generalmente el usurario prefiere manipular el ambiente virtual por medio de dispositivos familiares como son el teclado y el ratón que por medio de cascos pesados o guantes.<br />Actualmente Internet nos provee con medios para reunirnos con diferentes personas en el mismo espacio virtual. En este sentido Internet tiende a ser un mecanismo de telepresencia. Este medio nos brinda con espacios o realidades que físicamente no existen pero que sin embargo forman parte de nuestras formas de vida. Es a través de Internet como nace VRML, que es un estándar para la creación de mundos virtuales no inmersivos.<br />VRML es un acrónimo para Virtual Reality Modeling Language (Lenguaje para Modelado de Realidad Virtual). Técnicamente hablando, VRML no es un lenguaje para programar realidad virtual inmersiva ni tampoco un lenguaje de modelado. La realidad virtual inmersiva implica una experiencia tridimensional inmersiva y dispositivos externos como cascos o guantes digitales para lograr capturar otros sentidos diferentes al oído y a la vista. VRML no requiere o prevé una inmersión sensorial total. VRML provee un conjunto básico de primitivas para el modelaje geométrico tridimensional y tiene la capacidad de dar comportamiento a los objetos y asignar diferentes animaciones que pueden ser activadas por eventos generados por diferentes usuarios.<br />Definición <br />Realidad virtual es un sistema tecnológico, basado en el empleo de ordenadores y otros dispositivos, cuyo fin es producir una apariencia de realidad que permita al usuario tener la sensación de estar presente en ella. Se consigue mediante la generación por ordenador de un conjunto de imágenes que son contempladas por el usuario a través de un casco provisto de un visor especial. Algunos equipos se completan con trajes y guantes equipados con sensores diseñados para simular la percepción de diferentes estímulos, que intensifican la sensación de realidad. Su aplicación, aunque centrada inicialmente en el terreno de los videojuegos, se ha extendido a otros muchos campos, como la medicina, simulaciones de vuelo, etc.<br />Virtualidad<br />La virtualidad establece una nueva forma de relación entre el uso de las coordenadas de espacio y de tiempo, supera las barreras espaciotemporales y configura un entorno en el que la información y la comunicación se nos muestran accesibles desde perspectivas hasta ahora desconocidas al menos en cuanto a su volumen y posibilidades. La realidad virtual permite la generación de entornos de interacción que separen la necesidad de compartir el espacio-tiempo, facilitando en este caso nuevos contextos de intercambio y comunicación.<br />Autores como Levy, han señalado la existencia de diferentes niveles de virtualidad en su relación con la dimensión bidimensional/tridimensional y su relación con la realidad. Yendo desde un continuo que comienza con una menor virtualidad de aquellos aspectos que nos alejan de la realidad o que categorizamos a priori como claramente imaginarios o ilusorios, aumentando con lo bidimensional, hasta las posibilidades que ofrece la tridimensionalidad en su relación de semejanza o analogía con lo real.<br />Relación real/irreal<br />La realidad virtual ha eliminado la frontera existente entre realidad e irrealidad. No se trata en este caso de la imposibilidad de separación entre lo real y aquello que no lo es, sino la difusión de los límites que los separan. La amplia variedad de posibilidades que ésta ofrece, ha facilitado el establecimiento de un estatus de realidad, sustentado fundamentalmente en tres aspectos:<br />La realidad virtual es compartida con otras personas. Se centra generalmente en la interacción interpersonal, que a pesar de no producirse en el mismo espacio-tiempo, si es percibida como un acto colectivo.<br />Tiene una estrecha relación con el mundo físico dada su interrelación e influencia mutua. La experiencia en la realidad virtual viene mediada por la experiencia en el mundo real y ésta es influida por lo que allí es experimentado.<br />Está interconectada con la producción artística, ya que se convierte en un espacio más de creación con motivaciones estéticas.<br />La generación de nuevas oportunidades en entornos diversos ha facilitado la existencia de posibilidades emergentes para la reconstrucción de la propia identidad. Los entornos virtuales, y más concretamente la realidad virtual, han generado un espacio de moratoria para la construcción de la identidad sustentada en la creación de más de un yo. La existencia de estas identidades múltiples favorece la experimentación, pudiendo adoptar, potenciar o desestimar aspectos puestos en práctica en estos entornos, en la propia cotidianidad. Se trataría pues de un espacio de interrelación entre los espacios cotidianos y la realidad virtual, en que las propias experiencias en estos entornos producen una mutua influencia, generando una ruptura de las fronteras entre ambos.<br />Inmersión y navegación<br />La realidad virtual puede ser de dos tipos: inmersiva y no inmersiva. Los métodos inmersivos de realidad virtual con frecuencia se ligan a un ambiente tridimensional creado por un ordenador, el cual se manipula a través de cascos, guantes u otros dispositivos que capturan la posición y rotación de diferentes partes del cuerpo humano. La realidad virtual no inmersiva también utiliza el ordenador y se vale de medios como el que actualmente nos ofrece Internet, en el cual podemos interactuar en tiempo real con diferentes personas en espacios y ambientes que en realidad no existen sin la necesidad de dispositivos adicionales al ordenador. Nos acercamos en este caso a la navegación, a través de la cual ofrecemos al sujeto la posibilidad de experimentar (moverse, desplazarse, sentir) determinados espacios, mundos, lugares, como si se encontrase en ellos.<br />La realidad virtual no inmersiva ofrece un nuevo mundo a través de una ventana de escritorio. Este enfoque no inmersivo tiene varias ventajas sobre el enfoque inmersivo como son el bajo coste y fácil y rápida aceptación de los usuarios. Los dispositivos inmersivos son de alto coste y generalmente el usuario prefiere manipular el ambiente virtual por medio de dispositivos familiares como son el teclado y el ratón que por medio de cascos pesados o guantes.<br />El alto precio de los dispositivos inmersivos ha generalizado el uso de ambientes virtuales fáciles de manipular por medio de dispositivos más sencillos, como es el ejemplo del importante negocio de las videoconsolas o los juegos en los que numerosos usuarios interactúan a través de Internet. Es a través de Internet como nace VRML, que es un estándar para la creación de estos mundos virtuales no inmersivos, que provee un conjunto de primitivas para el modelaje tridimensional y permite dar comportamiento a los objetos y asignar diferentes animaciones que pueden ser activadas por los usuarios.<br />Por último hay que destacar algunas mejoras que facilitan los sistemas de realidad virtual, en lo que se refiere al tratamiento de enfermedades relativas a problemas de movilidad.<br />BIBLIOTECA DIGITAL O BIBLIOTECA VIRTUAL<br />INTRODUCCIÓN<br />Hablar hoy de telecomunicaciones no es ninguna novedad. Actualmente se están publicando numerosos libros y artículos sobre las redes que nos explican qué es una red, cuáles son sus herramientas básicas (correo electrónico, listas de discusión, listas de distribución, buscadores y recuperadores de información, aplicaciones para la transferencia de datos)  sus utilidades,  y de los cambios sociales que estos nuevos canales están generando desde el punto de vista educativo,  encontramos también trabajos de reflexión sobre las aplicaciones educativas de este nuevo canal para la localización, acceso y recuperación de variados tipos de información: gráficos, imágenes, textos, documentos multimedia,  desde lugares remotos y para la interacción entre personas o grupos de personas.  Aplicaciones que en general posibilitan ampliar el horizonte informativo y comunicativo de profesores y alumnos. <br />Por ello, es importante resaltar en este trabajo la utilización de centros de almacenamiento de información. Estos centros de banco de datos, almacenamiento o de acopio informativo lo llamaremos Biblioteca Virtual se constituirán una de las principales aplicaciones educativas, a todos los niveles, tal vez sea la posibilidad de comunicación e interacción mediante el uso del ciberespacio (WWW),  correo electrónico (e-mail) entre personas (profesores, alumnos, expertos en un tema) e instituciones que no se encuentran físicamente en el mismo lugar, ni en las mismas coordenadas temporales. Unir personas e instituciones geográficamente separadas no es ninguna novedad, esta función se ha venido realizando con el correo postal o con el teléfono. En cambio sí lo es la comunicación asincrónica, cuando los interlocutores intercambian ideas sin coincidir en un tiempo establecido. Por otra parte las distancias físicas no siempre son distancias geográficas importantes sino que muchas veces estas barreras físicas están en diferentes plantas de un mismo edificio. Algunas de las ventajas del ciberespacio sobre otros medios de interacción humana residen en:<br />Las redes de ordenadores, INTERNET, ofrece un canal de comunicación e interacción entre las personas distantes, suponen un espacio compartido para el intercambio de experiencias, ideas, proyectos, documentación… Desde la generalización de INTERNET se han configurado grupos de discusión en torno a News o Servicios de distribución de temáticas diversas. El objetivo de estos servicios es unir a los estudiantes y docentes en torno a un tema de interés común. Un paso más en la creación de espacios de comunicación y intercambio dentro de la red son las Bibliotecas Virtuales (BV). Estas son entornos basados en Web que agrupan personas relacionadas con una temática específica que además de las listas de distribución (primer nodo de la Biblioteca Virtual) comparten documentos y recursos de corte informativo… El concepto de Biblioteca virtual está íntimamente ligado a la existencia de INTERNET, para la que INTERNET no es una autopista sino una comunidad, no es un camino que va hacia cualquier sitio, sino que es un lugar (cuando alguien logra conectarse por primera vez dice ‘Ya estoy aquí’). Se trata de un universo paralelo creado y sustentado las telecomunicaciones al que se accede mediante cualquier ordenador conectado.<br />La Biblioteca Virtual es un subgrupo dentro del ciberespacio en general que no pertenecen a ninguna organización específica y por lo tanto no pueden ser atendidos por los servicios de las organizaciones de cada uno de los miembros de dicho grupo más enfocados a servicios locales e internos. Cubrir este hueco constituye uno de los objetivos al ofrecer servicios a la comunidad académica e investigadora.<br />DEFINICIONES<br />Un Sistema innovador de educación, orientado a mejorar la comunicación, incentivar el aprendizaje interactivo y personalizado, el análisis crítico y enfatizar el trabajo individual y en equipo, a través de  Internet.  Un medio para que el estudiante pueda cursar asignaturas desde la Red, enviar preguntas concretas o participar en grupos de discusión,  navegar a través de las páginas electrónicas y obtener  bibliografía, material didáctico, simulaciones y videos. Todo esto le proporciona, al estudiante, mayor riqueza de conocimientos y reduce la distancia geográfica. <br />Por ello consideramos la factibilidad  del Proyecto por tener criterios de prioridad nacional para la educación. Además de ser una novedad para las instituciones ofrece una oportunidad de incalculable valor para el proceso de enseñanza-aprendizaje. <br />Una biblioteca digital o biblioteca virtual es una biblioteca en que una proporción significante de los recursos de información se encuentran disponibles en el formato digital (pdf, doc, etc. o micro forma), accesible por medio de las computadoras. Es importante considerar que en el concepto de biblioteca digital está presente el efecto de la integración de la informática y las comunicaciones cuyo exponente esencial es Internet.<br />Para hablar de una biblioteca digital es necesario que las fuentes de información estén disponibles de alguna manera y su acceso sea ubicuo, es decir, no importe dónde residan físicamente ni quién se encargó específicamente de su procesamiento y almacenamiento.<br />Predomina el concepto de biblioteca como espacio y como proceso, por lo que es un concepto que refleja el dinamismo del internet. Lo digital tiene que ver con el propósito y la flexibilidad del sistema de medios de la biblioteca para poder articularse flexiblemente y responder a diversas demandas. Digital en este contexto se relaciona con el hecho que la biblioteca es relativa en espacio y tiempo, porque sus fronteras no las marca la geografía y su disponibilidad temporal es instancia de la demanda de quien la consulta.<br />La biblioteca permite que los documentos se encuentren cuando el usuario necesita consultarlos y para ello responde dinámicamente a partir de su red de fuentes de información.<br />Es un concepto que subraya la importancia del trabajo en red y los atributos de ubicuidad, sincronía, asincronía e hipermedialidad de Internet. Es la biblioteca como espacio compartido que preserva las funciones específicas de una colección sistematizada de documentos, pero que las incrementa a través de la flexibilidad que ofrece el uso de las tecnologías de la información y la comunicación. Es por tanto un concepto abarcador e incluye tanto a la biblioteca digital como a la electrónica que son modalidades anteriores en el tiempo.<br />En términos históricos el concepto de biblioteca ha acompañado a las tecnologías y ha estado muy condicionado por las mismas. Así se habló de bibliotecas como colecciones de tablillas de arcilla, o de papiros en la antigüedad, o como bibliotecas electrónicas cuando se automatizaron determinados procesos y servicios, o biblioteca digital cuando las colecciones de documentos comenzaron a soportarse en soporte digital. Se llega al concepto de biblioteca digital cuando las colecciones y servicios bibliotecarios en sus diversas modalidades comenzaron a integrarse en un espacio en red.<br />Al introducir las tecnologías de información en las bibliotecas han surgido diferentes terminologías que comúnmente son utilizadas de manera indistinta y confusa. Para los fines de este trabajo es imprescindible aclarar las diferencias entre los términos: biblioteca electrónica, biblioteca virtual y biblioteca digital. <br />Biblioteca electrónica es aquella que cuenta con sistemas de automatización que le permiten una ágil y correcta administración de los materiales que resguarda, principalmente en papel. Así mismo, cuenta con sistemas de telecomunicaciones que le permitirán acceder a su información, en formato electrónico, de manera remota o local. Proporciona principalmente catálogos y listas de las colecciones que se encuentran físicamente dentro de un edificio. <br />Biblioteca virtual, es aquella que hace uso de la realidad virtual para mostrar una interfaz y emular un ambiente que sitúe al usuario dentro de una biblioteca tradicional. Hace uso de la más alta tecnología multimedia y puede guiar al usuario a través de diferentes sistemas para encontrar colecciones en diferentes sitios, conectados a través de sistemas de cómputo y telecomunicaciones. <br />Biblioteca digital, es un repositorio de acervos y contenidos digitalizados, almacenados en diferentes formatos electrónicos por lo que el original en papel, en caso de existir, pierde supremacía. Generalmente, son bibliotecas pequeñas y especializadas, con colecciones limitadas a sólo algunos temas. En este tipo de biblioteca es en la concentraremos este trabajo. <br />Existen diferentes definiciones de qué es una Biblioteca Digital, en su concepto más simple, una biblioteca digital es un espacio en donde la información es almacenada y procesada en formato digital. La definición tomada por la Digital Libraries Federation es, en mi particular opinión, la más completa: <br />" Las Bibliotecas Digitales son organizaciones que proveen los recursos, incluyendo personal especializado, para seleccionar, estructurar, distribuir, controlar el acceso, conservar la integridad y asegurar la persistencia a través del tiempo de colecciones de trabajos digitales que estén fácil y económicamente disponibles para usarse por una comunidad definida o para un conjunto de comunidades." <br />OBJETIVOS <br />·        Crear espacio para la reflexión, en torno a los procesos de enseñanza-aprendizaje con uso de tecnología.  <br />·        Crear un espacio de trabajo colaborativo y en grupo, para que colectivos con un mismo perfil académico o científico que no pertenezcan a una organización específica pueda llevar a cabo trabajos en común. <br />·        Ofrecer un punto de encuentro, información y coordinación para todos los profesionales de la educación interesados en la Tecnología Educativa.  <br />·        Intercambiar experiencias y conocimientos relacionados con el diseño, explotación y evaluación de nuevos medios para la enseñanza.  <br />·        Promover y facilitar la colaboración en proyectos comunes de investigación, desarrollo y de innovación relacionadas con la aplicación de las Nuevas Tecnologías a la enseñanza.  <br />·        Difusión de información de interés relacionada con INTERNET (congresos, jornadas, seminarios, convocatorias, etc.)<br /> <br /> DESTINATARIOS<br />La Biblioteca Virtual va dirigida a estudiantes, docentes y profesionales interesados en investigar, promover, fomentar y estudiar el campo de las Nuevas Tecnologías aplicadas a la educación.<br /> CONCLUCIONES<br />La introducción de la biblioteca virtual como un instrumento más para la educación ha revolucionado la forma de realizar investigación para los estudiantes ya que no tendrán que estar encerrados en una habitación llena de libros desactualizados. <br />Mediante el uso de la biblioteca virtual se podrá encontrar información sin sujetarse a un horario con lo único que debemos contar es con acceso a internet. <br />COMPILADORES<br />Introducción: En 1946 se desarrolló el primer ordenador digital. En un principio, estas máquinas ejecutaban instrucciones consistentes en códigos numéricos que señalan a los circuitos de la máquina los estados correspondientes a cada operación. Esta expresión mediante códigos numéricos se llamó Lenguaje Máquina, interpretado por un secuenciador cableado o por un microprograma. Pero los códigos numéricos de las máquinas son engorrosos. Pronto los primeros usuarios de estos ordenadores descubrieron la ventaja de escribir sus programas mediante claves más fáciles de recordar que esos códigos numéricos; al final, todas esas claves juntas se traducían manualmente a Lenguaje Máquina. Estas claves constituyen los llamados lenguajes ensambladores, que se generalizaron en cuanto se dio el paso decisivo de hacer que las propias máquinas realizaran el proceso mecánico de la traducción. A este trabajo se le llama ensamblar el programa.Dada su correspondencia estrecha con las operaciones elementales de las máquinas, las instrucciones de los lenguajes ensambladores obligan a programar cualquier función de una manera minuciosa e iterativa. De hecho, normalmente, cuanto menor es el nivel de expresión de un lenguaje de programación, mayor rendimiento se obtiene en el uso de los recursos físicos (hardware). A pesar de todo, el lenguaje ensamblador seguía siendo el de una máquina, pero más fácil de manejar. Los trabajos de investigación se orientaron entonces hacia la creación de un lenguaje que expresara las distintas acciones a realizar de una manera lo más sencilla posible para el hombre. Así, en 1950, John Backus dirigió una investigación en I.B.M. en un lenguaje algebraico. En 1954 se empezó a desarrollar un lenguaje que permitía escribir fórmulas matemáticas de manera traducible por un ordenador. Le llamaron FORTRAN (FORmulae TRANslator). Fue el primer lenguaje considerado de alto nivel. Se introdujo en 1957 para el uso de la computadora IBM modelo 704. Permitía una programación más cómoda y breve que lo existente hasta ese momento, lo que suponía un considerable ahorro de trabajo. Surgió así por primera vez el concepto de un traductor, como un programa que traducía un lenguaje a otro lenguaje. En el caso particular de que el lenguaje a traducir es un lenguaje de alto nivel y el lenguaje traducido de bajo nivel, se emplea el término compilador. La tarea de realizar un compilador no fue fácil. El primer compilador de FORTRAN tardó 18 años-persona en realizarse y era muy sencillo. Este desarrollo del FORTRAN estaba muy influenciado por la máquina objeto en la que iba a ser implementado. Como un ejemplo de ello tenemos el hecho de que los espacios en blanco fuesen ignorados, debido a que el periférico que se utilizaba como entrada de programas (una lectora de tarjetas perforadas) no contaba correctamente los espacios en blanco. Paralelamente al desarrollo de FORTRAN en América, en Europa surgió una corriente más universitaria, que pretendía que la definición de un lenguaje fuese independiente de la máquina y en donde los algoritmos se pudieran expresar de forma más simple.Esta corriente estuvo muy influida por los trabajos sobre gramáticas de contexto libre publicados por Chomsky dentro de su estudio de lenguajes naturales. Con estas ideas surgió un grupo europeo encabezado por el profesor F.L.Bauer (de la Universidad de Munich). Este grupo definió un lenguaje de usos múltiples independiente de una realización concreta sobre una máquina. Pidieron colaboración a la asociación americana A.C.M. (Association for Computing Machinery) y se formó un comité en el que participó J. Backus que colaboraba en esta investigación. De esa unión surgió un informe definiendo un International Algebraic Language (I.A.L.), publicado en Zurich en 1958. Posteriormente este lenguaje se llamó ALGOL 58 (ALGOritmic Language). En 1969, el lenguaje fue revisado y llevó a una nueva versión que se llamó ALGOL 60. La versión actual es ALGOL 68, un lenguaje modular estructurado en bloques.En el ALGOL aparecen por primera vez muchos de los conceptos de los nuevos lenguajesalgorítmicos:<br />Definición de la sintaxis en notación BNF (Backus-Naur Form).<br />Formato libre.<br />Declaración explícita de tipo para todos los identificadores.<br />Estructuras iterativas más generales.<br />Recursividad.<br />Paso de parámetros por valor y por nombre.<br />Estructura de bloques, lo que determina la visibilidad de los identificadores.<br />Junto a este desarrollo en los lenguajes, también se iba avanzando en la técnica de compilación. En 1958, Strong y otros proponían una solución al problema de que un compilador fuera utilizable por varias máquinas objeto. Para ello, se dividía por primera vez el compilador en dos fases, designadas como el " front end" y el " back end" . La primera fase (front end) es la encargada de analizar el programa fuente y la segunda fase (back end) es la encargada de generar código para la máquina objeto. El puente de unión entre las dos fases era un lenguaje intermedio que se designó con el nombre de UNCOL (UNiversal Computer Oriented Language). Para que un compilador fuera utilizable por varias máquinas bastaba únicamente modificar su back end. Aunque se hicieron varios intentos para definir el UNCOL, el proyecto se ha quedado simplemente en un ejercicio teórico. De todas formas, la división de un compilador en front end y back end fue un adelanto importante.Ya en estos años se van poniendo las bases para la división de tareas en un compilador. Así, en 1959 Rabin y Scott proponen el empleo de autómatas deterministas y no deterministas para el reconocimiento lexicográfico de los lenguajes. Rápidamente se aprecia que la construcción de analizadores léxicos a partir de expresiones regulares es muy útil en la implementación de los compiladores. En 1968, Johnson apunta diversas soluciones. En 1975, con la aparición de LEX surge el concepto de un generador automático de analizadores léxicos a partir de expresiones regulares, basado en el sistema operativo UNIX.A partir de los trabajos de Chomsky ya citados, se produce una sistematización de la sintaxis de los lenguajes de programación, y con ello un desarrollo de diversos métodos de análisis sintáctico.<br />Con la aparición de la notación BNF - desarrollada en primer lugar por Backus en 1960 cuando trabajaba en un borrador del ALGOL 60, modificada en 1963 por Naur y formalizada por Knuth en 1964 - se tiene una guía para el desarrollo del análisis sintáctico. Los diversos métodos de parsers ascendentes y descendentes se desarrollan durante la década de los 60. En 1959, Sheridan describe un método de parsing de FORTRAN que introducía paréntesis adicionales alrededor de los operandos para ser capaz de analizar las expresiones. Más adelante, Floyd introduce la técnica de la precedencia de operador y el uso de las funciones de precedencia. A mitad de la década de los 60, Knuth define las gramáticas LR y describe la construcción de una tabla canónica de parser LR. Por otra parte, el uso por primera vez de un parsing descendente recursivo tuvo lugar en el año 1961. En el año 1968 se estudian y definen las gramáticas LL así como los parsers predictivos. También se estudia la eliminación de la recursión a la izquierda de producciones que contienen acciones semánticas sin afectar a los valores de los atributos.En los primeros años de la década de los 70, se describen los métodos SLR y LALR de parser LR. Debido a su sencillez y a su capacidad de análisis para una gran variedad de lenguajes, la técnica de parsing LR va a ser la elegida para los generadores automáticos de parsers. A mediados de los 70, Johnson crea el generador de analizadores sintácticos YACC para funcionar bajo un entorno UNIX. Junto al análisis sintáctico, también se fue desarrollando el análisis semántico.En los primeros lenguajes (FORTRAN y ALGOL 60) los tipos posibles de los datos eran muy simples, y la comprobación de tipos era muy sencilla. No se permitía la coerción de tipos, pues ésta era una cuestión difícil y era más fácil no permitirlo. Con la aparición del ALGOL 68 se permitía que las expresiones de tipo fueran construidas sistemáticamente. Más tarde, de ahí surgió la equivalencia de tipos por nombre y estructural. El manejo de la memoria como una implementación tipo pila se usó por primera vez en 1958 en el primer proyecto de LISP. La inclusión en el ALGOL 60 de procedimientos recursivos potenció el uso de la pila como una forma cómoda de manejo de la memoria . Dijkstra introdujo posteriormente el uso del display para acceso a variables no locales en un lenguaje de bloques.También se desarrollaron estrategias para mejorar las rutinas de entrada y de salida de un procedimiento . Así mismo, y ya desde los años 60, se estudió el paso de parámetros a un procedimiento por nombre, valor y variable. Con la aparición de lenguajes que permiten la localización dinámica de datos, se desarrolla otra forma de manejo de la memoria, conocida por el nombre de heap (montículo). Se han desarrollado varias técnicas para el manejo del heap y los problemas que con él se presentan, como son las referencias perdidas y la recogida de basura .La técnica de la optimización apareció desde el desarrollo del primer compilador de FORTRAN. Backus comenta cómo durante el desarrollo del FORTRAN se tenía el miedo de que el programa resultante de la compilación fuera más lento que si se hubiera escrito a mano. Para evitar esto, se introdujeron algunas optimizaciones en el cálculo de los índices dentro de un bucle. Pronto se sistematizan y se recoge la división de optimizaciones independientes de la máquina y dependientes de la máquina. Entre las primeras están la propagación de valores , el arreglo de expresiones, la eliminación de redundancias, etc.<br />Entre las segundas se podría encontrar lalocalización de registros, el uso de instrucciones propias de la máquina y el reordenamiento de código. A partir de 1970 comienza el estudio sistemático de las técnicas del análisis de flujo de datos. Su repercusión ha sido enorme en las técnicas de optimización global de un programa. En la actualidad, el proceso de la compilación ya está muy asentado. Un compilador es una herramienta bien conocida, dividida en diversas fases. Algunas de estas fases se pueden generar automáticamente (analizador léxico y sintáctico) y otras requieren una mayor atención por parte del escritor de compiladores (las partes de traducción y generación de código).De todas formas, y en contra de lo que quizá pueda pensarse, todavía se están llevando a cabo varias vías de investigación en este fascinante campo de la compilación. Por una parte, se están mejorando las diversas herramientas disponibles (por ejemplo, el generador de analizadores léxicos Aardvark para el lenguaje PASCAL). También la aparición de nuevas generaciones de lenguajes -ya se habla de la quinta generación, como de un lenguaje cercano al de los humanos-ha provocado la revisión y optimización de cada una de las fases del compilador. El último lenguaje de programación de amplia aceptación que se ha diseñado, el lenguaje Java, establece que el compilador no genera código para una máquina determinada sino para una virtual, la Java Virtual Machine (JVM), que posteriormente será ejecutado por un intérprete, normalmente incluido en un navegador de Internet. El gran objetivo de esta exigencia es conseguir la máxima portabilidad de los programas escritos y compilados en Java, pues es únicamente la segunda fase del proceso la que depende de la máquina concreta en la que se ejecuta el intérprete.<br />¿Qué es un compilador?Un traductor es cualquier programa que toma como entrada un texto escrito en un lenguaje, llamado fuente y da como salida otro texto en un lenguaje, denominado objeto.<br />CompiladorEn el caso de que el lenguaje fuente sea un lenguaje de programación de alto nivel y el objeto sea un lenguaje de bajo nivel (ensamblador o código de máquina), a dicho traductor se le denomina compilador. Un ensamblador es un compilador cuyo lenguaje fuente es el lenguaje ensamblador. Un intérprete no genera un programa equivalente, sino que toma una sentencia del programa fuente en un lenguaje de alto nivel y la traduce al código equivalente y al mismo tiempo lo ejecuta. Históricamente, con la escasez de memoria de los primeros ordenadores, se puso de moda el uso de intérpretes frente a los compiladores, pues el programa fuente sin traducir y el intérprete juntos daban una ocupación de memoria menor que la resultante de los compiladores. Por ello los primeros ordenadores personales iban siempre acompañados de un intérprete de BASIC (Spectrum, Commodore VIC-20, PC XT de IBM, etc.). La mejor información sobre los errores por parte del compilador así como una mayor velocidad de ejecución del código resultante hizo que poco a poco se impusieran los compiladores. Hoy en día, y con el problema de la memoria prácticamente resuelto, se puede hablar de un gran predominio de los compiladores frente a los intérpretes, aunque intérpretes como los incluidos en los navegadores de Internet para interpretar el código JVM de Java son la gran excepción. Ventajas de compilar frente a interpretar:<br />Se compila una vez, se ejecuta n veces.<br />En bucles, la compilación genera código equivalente al bucle, pero interpretándolo se traduce tantas veces una línea como veces se repite el bucle.<br />El compilador tiene una visión global del programa, por lo que la información de mensajes de error es más detallada.<br />Ventajas del intérprete frente al compilador:<br />Un intérprete necesita menos memoria que un compilador. En principio eran más abundantes dado que los ordenadores tenían poca memoria.<br />Permiten una mayor interactividad con el código en tiempo de desarrollo.<br />Un compilador no es un programa que funciona de manera aislada, sino que necesita de otros programas para conseguir su objetivo: obtener un programa ejecutable a partir de un programa fuente en un lenguaje de alto nivel. Algunos de esos programas son el preprocesador, el linker, el depurador y el ensamblador. El preprocesador se ocupa (dependiendo del lenguaje) de incluir ficheros, expandir macros, eliminar comentarios, y otras tareas similares. El linker se encarga de construir el fichero ejecutable añadiendo al fichero objeto generado por el compilador las cabeceras necesarias y las funciones de librería utilizadas por el programa fuente. El depurador permite, si el compilador ha generado adecuadamente el programa objeto, seguir paso a paso la ejecución de un programa. Finalmente, muchos compiladores, en vez de generar código objeto, generan un programa en lenguaje ensamblador que debe después convertirse en un ejecutable mediante un programa ensamblador.<br />2. Clasificación de Compiladores: El programa compilador traduce las instrucciones en un lenguaje de alto nivel a instrucciones que la computadora puede interpretar y ejecutar. Para cada lenguaje de programación se requiere un compilador separado. El compilador traduce todo el programa antes de ejecutarlo. Los compiladores son, pues, programas de traducción insertados en la memoria por el sistema operativo para convertir programas de cómputo en pulsaciones electrónicas ejecutables (lenguaje de máquina). Los compiladores pueden ser de:<br />una sola pasada: examina el código fuente una vez, generando el código o programa objeto.<br />pasadas múltiples: requieren pasos intermedios para producir un código en otro lenguaje, y una pasada final para producir y optimizar el código producido durante los pasos anteriores.<br />Optimación: lee un código fuente, lo analiza y descubre errores potenciales sin ejecutar el programa.<br />Compiladores incrementales: generan un código objeto instrucción por instrucción (en vez de hacerlo para todo el programa) cuando el usuario teclea cada orden individual. El otro tipo de compiladores requiere que todos los enunciados o instrucciones se compilen conjuntamente.<br />Ensamblador: el lenguaje fuente es lenguaje ensamblador y posee una estructura sencilla.<br />Compilador cruzado: se genera código en lenguaje objeto para una máquina diferente de la que se está utilizando para compilar. Es perfectamente normal construir un compilador de Pascal que genere código para MS-DOS y que el compilador funcione en Linux y se haya escrito en C++.<br />Compilador con montador: compilador que compila distintos módulos de forma independiente y después es capaz de enlazarlos.<br />Autocompilador: compilador que está escrito en el mismo lenguaje que va a compilar. Evidentemente, no se puede ejecutar la primera vez. Sirve para hacer ampliaciones al lenguaje, mejorar el código generado, etc.<br />Metacompilador: es sinónimo de compilador de compiladores y se refiere a un programa que recibe como entrada las especificaciones del lenguaje para el que se desea obtener un compilador y genera como salida el compilador para ese lenguaje. El desarrollo de los meta compiladores se encuentra con la dificultad de unir la generación de código con la parte de análisis. Lo que sí se han desarrollado son generadores de analizadores léxicos y sintácticos. Por ejemplo, los conocidos:generador de analizadores léxicosLEX: generador de analizadores sintácticosYACC:desarrollados para UNIX. Los inconvenientes que tienen son que los analizadores que generan no son muy eficientes.<br />Descompilador: es un programa que acepta como entrada código máquina y lo traduce a un lenguaje de alto nivel, realizando el proceso inverso a la compilación.<br />Funciones de un compilador: A grandes rasgos un compilador es un programa que lee un programa escrito es un lenguaje, el lenguaje fuente, y lo traduce a un programa equivalente en otro lenguaje, el lenguaje objeto. Como parte importante de este proceso de traducción, el compilador informa a su usuario de la presencia de errores en el programa fuente.A primera vista, la diversidad de compiladores puede parecer abrumadora. Hay miles de lenguajes fuente, desde los lenguajes de programación tradicionales, como FORTRAN o Pascal, hasta los lenguajes especializados que han surgido virtualmente en todas las áreas de aplicación de la informática. Los lenguajes objeto son igualmente variados; un lenguaje objeto puede ser otro lenguaje de programación o el lenguaje de máquina de cualquier computador entre un microprocesador y un supercomputador. A pesar de existir una aparente complejidad por la clasificación de los compiladores, como se vio en el tema anterior, las tareas básicas que debe realizar cualquier compilador son esencialmente las mismas. Al comprender tales tareas, se pueden construir compiladores para una gran diversidad de lenguajes fuente y máquinas objeto utilizando las mismas técnicas básicas.Nuestro conocimiento sobre cómo organizar y escribir compiladores ha aumentado mucho desde que comenzaron a aparecerlos primeros compiladores a principios de los años cincuenta. Es difícil dar una fecha exacta de la aparición del primer compilador, porque en un principio gran parte del trabajo de experimentación y aplicación se realizó de manera independiente por varios grupos. Gran parte de los primeros trabajos de compilación estaba relacionada con la traducción de fórmulas aritméticas a c

×