Download marco teórico - Tesis Digitales
Transcript
2 MARCO TEÓRICO En este capítulo abordaremos temas referentes al proyecto, tales como domótica, edificios inteligentes, tipos de controladores, lenguajes de programación que pueden utilizarse para la realización de este proyecto, y se presentaran diversos conceptos tales como desarrollo web, así como beneficios, ventajas y desventajas. 2.1 DOMÓTICA 2.1.1 ¿Qué es la domótica? La domótica es la automatización y control centralizado y/o remoto de aparatos y sistemas eléctricos y electrotécnicos en la vivienda. Los objetivos principales de la domótica es aumentar el confort, ahorrar energía y mejorar la seguridad. (Huidrobo Moya, J. M., 2010). Figura 1. Ejemplos de dispositivos de un Sistema de Domótica. 2.1.2 Los dispositivos Existe una gran variedad para la solución con domótica la cual varía desde un único dispositivo, que realiza una sola acción, hasta amplios sistemas que controlan prácticamente todas las instalaciones dentro de un edificio, laboratorio o vivienda. Los distintos dispositivos de los sistemas de domótica se pueden clasificar en los siguientes grupos: Controlador, son los dispositivos que gestionan el sistema según la programación y la información que reciben. Puede haber un solo 4 controlador, o varios distribuidos por el sistema. Actuador, es un dispositivo capaz de ejecutar y/o recibir una orden del controlador y realizar una acción sobre un aparato o sistema (encendido/apagado, subida/bajada, apertura/cierre, etc.). Sensor, es el dispositivo que monitoriza el entorno captando información que transmite al sistema (sensores de agua, gas, humo, temperatura, viento, humedad, lluvia, iluminación, etc.). Bus, es el medio de transmisión que transporta la información entre los distintos dispositivos por un cableado propio, por las redes de otros sistemas (red eléctrica, red telefónica, red de datos) o de forma inalámbrica. Interface, se refiere a los dispositivos (pantallas, móvil, internet, conectores) y los formatos (binario, audio) en que se muestra la información del sistema para los usuarios (u otros sistemas) y donde los mismos pueden interactuar con el sistema. Es preciso destacar que todos los dispositivos del sistema de domótica no tienen que estar físicamente separados, sino varias funcionalidades pueden estar combinadas en un equipo. (Huidrobo Moya, J. M., 2010). 2.1.3 ¿Cómo actúan los sistemas de domótica? Los sistemas de domótica actúan sobre, e interactúan con, los aparatos y sistemas eléctricos del edificio, laboratorio o vivienda según: El programa y su configuración. La información recogida por los sensores del sistema. La información proporcionada por otros sistemas interconectados. La interacción directa por parte de los usuarios. 2.1.4 Arquitectura La arquitectura de los sistemas de domótica hace referencia a la estructura 5 de su red. La clasificación se realiza en base de donde reside la “inteligencia” del sistema domótico (Huidrobo Moya, J. M., 2010). Las principales arquitecturas son: Arquitectura centralizada, es un sistema de domótica de arquitectura centralizada, un controlador centralizado, envía la información a los actuadores e interfaces según el programa, la configuración y la información que recibe de los sensores, sistemas interconectados y usuarios (Huidrobo Moya, J. M., 2010). Figura 2. Esquema de Arquitectura de Sistema Domótica Centralizada. Arquitectura descentralizada, aquí existen varios controladores, interconectados por un bus, que envía información entre ellos y a los actuadores e interfaces conectados a los controladores, según el programa, la configuración y la información que recibe de los sensores, sistemas interconectados y usuarios (Huidrobo Moya, J. M., 2010).. 6 Figura 3. Esquema de Arquitectura de Sistema Domótica Descentralizada. Arquitectura distribuida, cada sensor y actuador es también un controlador capaz de actuar y enviar información al sistema según el programa, la configuración, la información que capta por sí mismo y la recibe de los otros dispositivos del sistema (Huidrobo Moya, J. M., 2010). Figura 4. Esquema de Arquitectura de Sistema Domótica Distribuida. Arquitectura Híbrida/Mixta, se combinan las arquitecturas de los sistemas centralizados, descentralizados y distribuidos. A la vez que puede disponer de un controlador central o varios controladores descentralizados, los dispositivos de interfaces, sensores y actuadores pueden también ser 7 controladores (como un sistema distribuido) y procesar la información según el programa, la configuración, la información que capta por sí mismo, y tanto actuar como enviarla a otros dispositivos de la red, sin que necesariamente pase por otro controlador (Huidrobo Moya, J. M., 2010). Figura 5. Esquema de Arquitectura de Sistema Domótica Híbrida/Mixta. 2.1.5 Medios de Transmisión/Bus El medio de transmisión de la información, interconexión y control, entre los distintos dispositivos de los sistemas de domótica puede ser de varios tipos. Los principales medios de transmisión son: Cableado propio, la transmisión por un cableado propio es el medio más común para los sistemas de domótica, principalmente son del tipo: par apantallado, par trenzado (1 a 4 pares), coaxial o fibra óptica. Cableado compartido, varias soluciones utilizan cables compartidos y/o redes existentes para la transmisión de su información, por ejemplo la red eléctrica (corrientes portadoras), la red telefónica o la red de datos. Inalámbrica, muchos sistemas de domótica utilizan soluciones de 8 transmisión inalámbrica entre los distintos dispositivos, principalmente tecnologías de radiofrecuencia o infrarrojo. Cuando el medio de transmisión esta utilizado para transmitir información entre dispositivos con la función de “controlador” también se denomina Bus. El bus también se utiliza muchas veces para alimentar a los dispositivos conectados a él (Huidrobo Moya, J. M., 2010).. 2.1.6 Los protocolos de domótica Los protocolos de comunicación son los procedimientos utilizados por los sistemas de domótica para la comunicación entre todos los dispositivos con la capacidad de controlador (Huidrobo Moya, J. M., 2010).. Existe una gran variedad de protocolos, algunos específicamente desarrollados por la domótica y otros protocolos con su origen en otros sectores, pero adaptados para los sistemas de domótica. Los protocolos pueden ser del tipo estándar abierto (uso libre para todos), estándar bajo licencia (abierto para todos bajo licencia) o propietario (uso exclusivo del fabricante o los fabricantes propietarios). 2.1.7 Elección de sistemas de domótica No existe ningún sistema de domótica que es el mejor para todas las situaciones, desde todos los aspectos. Cada uno de los sistemas de domótica tienen sus ventajas e inconvenientes, , sin embargo, hay una gran oferta en el mercado y para cada situación hay uno o varios sistemas que se adaptarán a la mayoría de los criterios que se puede exigir de un sistema de domótica (Huidrobo Moya, J. M., 2010). Para una elección de sistema de domótica adecuada es preciso tener en cuenta los siguientes aspectos: Tipología y tamaño, la tipología del proyecto arquitectónico (apartamento, adosado, vivienda unifamiliar), y su tamaño. Nueva o construida, si la vivienda no se ha construido todavía hay 9 prácticamente libertad total para incorporar cualquier sistema, pero si la vivienda está ya construida, hay que tener en cuenta la obra civil que conllevan los distintos sistemas. Las funcionalidades, las funcionalidades necesarias de un sistema de domótica suele basarse en la estructura familiar (o la composición de los habitantes) y sus hábitos y si el uso es para primera vivienda, segunda vivienda o vivienda para alquiler, etc. La integración, además de los aparatos y sistemas que se controla directamente con el sistema de domótica hay que definir con que otros sistemas del hogar digital que se quiere interactuar. Las interfaces, hay una gran variedad de interfaces, como pulsadores, pantallas táctiles, voz, presencia, móvil, web, etc. para elegir e implementar. Los distintos sistemas disponen de varias interfaces. El presupuesto, el coste varía mucho entre los distintos sistemas, hay que equilibrar el presupuesto con los otros factores que se desea cumplir. Reconfiguración y mantenimiento, hay que tener en cuenta con qué facilidad se puede reconfigurar el sistema por parte del usuario y por otro lado los servicios de mantenimiento y post venta que ofrecen los fabricantes y los integradores de sistemas. 2.2 EDIFICIOS INTELIGENTES Es muy difícil dar con exactitud una definición sobre un edificio inteligente, por lo que se citarán dos diferentes conceptos: Según Intelligent Building Institute (IBI), es aquel que proporciona un ambiente de trabajo productivo y eficiente a través de la optimización de sus cuatro elementos básicos; estructura, sistemas, servicio y administración, con las interrelaciones entre ellos. Los edificios inteligentes 10 ayudan a los propietarios, operadores y ocupantes, a realizar sus propósitos en términos de costo, confort, comodidad, seguridad, flexibilidad y comercialización. Según la Compañía Honeywell, se considera como edificio inteligente aquél que posee un diseño adecuado que maximiza la funcionalidad y eficiencia en favor de los ocupantes, permitiendo la incorporación y/o modificación de los elementos necesarios para el desarrollo de la actividad cotidiana, con la finalidad de lograr un costo mínimo de ocupación, extender sus ciclo de vida y garantizar una mayor productividad estimulada por un ambiente de máximo confort. 2.2.1 Objetivos Los objetivos o finalidad de un edificio inteligente, son los siguientes: Arquitectónicos, satisfacer las necesidades presentes y futuras de los ocupantes, propietarios y operadores del edificio; la flexibilidad, tanto en la estructura como en los sistemas y servicios; el diseño arquitectónico adecuado y correcto. Tecnológicos, la disponibilidad de medios técnicos avanzados de telecomunicaciones; la automatización de las instalaciones; la integración de servicios. Ambientales, la creación de un edificio saludable, el ahorro energético, el cuidado del medio ambiente. Económicos, la reducción de los altos costos de operación y mantenimiento; beneficios económicos para la cartera del cliente; incremento de la vida útil del edificio. 2.3 CONTROLADORES 2.3.1 Controlador Lógico Programable (PLC) También llamado API (autómata programable industrial) es un equipo 11 electrónico, programable en lenguaje no informático, diseñado para controlar en tiempo real y en ambiente de tipo industrial, procesos secuenciales. Un PLC trabaja en base a la información recibida por los captadores y el programa lógico interno, actuando sobre accionadores de la instalación (Webb, John, 1992). 2.3.1.1 Campos de aplicación del PLC El PLC por sus especiales características de diseño tiene un campo de aplicación muy extenso. La constante evolución del hardware y software amplía constantemente este campo para poder satisfacer las necesidades que se detectan en el espectro de sus posibilidades reales (Webb, John, 1992).. Su utilización se da fundamentalmente en aquellas instalaciones en donde es necesario un proceso de maniobra, control, señalización, etc. Por tanto, su aplicación abarca desde procesos de fabricación industriales de cualquier tipo a transformaciones industriales, control de instalaciones, etc (Webb, John, 1992).. Sus reducidas dimensiones, la extremada facilidad de su montaje, la posibilidad de almacenar los programas para su posterior y rápida utilización, la modificación o alteración de los mismos, etc. hace que su eficacia se aprecie fundamentalmente en procesos en que se producen necesidades tales como: Espacio reducido Procesos de producción periódicamente cambiantes Procesos secuenciales Maquinaria de procesos variables Instalaciones de procesos complejos y amplios Chequeo de programación centralizada de las partes del proceso Ejemplo de aplicaciones generales: Maniobra de máquinas Maquinaria industrial de plástico 12 Maquinaria de embalajes Instalación de aires acondicionados, calefacción, etc. Instalaciones de seguridad Señalización y control como chequeo de programas y del estado de procesos 2.3.1.2 Ventajas e inconvenientes del PLC No todos los autómatas ofrecen las mismas ventajas sobre la lógica cableada, ello es debido, principalmente, a la variedad de modelos existentes en el mercado y las innovaciones técnicas que surgen constantemente. Por lo tanto nos podemos referir a ventajas que proporciona una autómata de tipo medio (Webb, John, 1992). Ventajas: Menor tiempo empleado en la elaboración de proyectos debido a que no es necesario dibujar el esquema de contactos y no es necesario simplificar las ecuaciones lógicas ya que, por lo general la capacidad de almacenamiento del módulo de memoria es lo suficientemente grande. La lista de materiales queda sensiblemente reducida. Posibilidad de introducir modificaciones sin cambiar el cableado ni añadir aparatos. Mínimo espacio de ocupación. Menor coste de mano de obra de la instalación. Además de aumentar la fiabilidad del sistema, al eliminar contactos móviles, los mismo autómatas pueden indicar y detectar averías. Posibilidad de gobernar varias máquinas con un mismo autómata. Menor tiempo para la puesta en funcionamiento del proceso al quedar reducido el tiempo cableado. Si por alguna razón la máquina queda fuera de servicio, autómata sigue 13 siendo útil para otra máquina o sistema de producción. Inconvenientes Como inconvenientes podríamos hablar, en primer lugar, de que hace falta un programador, lo que obliga a adiestrar a uno de los técnicos en tal sentido, pero hoy en día ese inconveniente está solucionado porque las universidades ya se encargan de dicho adiestramiento. El coste inicial también puede ser un inconveniente. 2.3.1.3 Funciones básicas de un PLC Detección, lectura de la señal de los captadores distribuidos por el sistema de fabricación. Mando, elaborar y enviar las acciones al sistema mediante los accionadores y preaccionadores. Dialogo hombre máquina, mantener un dialogo con los operarios de producción, obedeciendo sus consignas e informando del estado del proceso. Programación, para introducir, elaborar y cambiar el programa de aplicación del autómata. El dialogo de programación debe permitir modificar el programa incluso con el autómata controlando la máquina. Nuevas funciones: Redes de comunicación, permiten establecer comunicación con otras partes de control. Las redes industriales permiten la comunicación y el intercambio de datos entre autómatas a timepo real. En unos cuantos milisegundos pueden enviarse telegramas en intercambiar tablas de memoria compartida. Sistemas de supervisión, también los autómatas permiten comunicarse con ordenadores provistos de programas de supervisión industrial. Esta comunicación se realiza por una red industrial o por medio de una simple conexión por el puerto serie del ordenador. 14 Control de procesos continuos, además de dedicarse al control de sistemas de eventos discretos los autómatas llevan incorporadas funciones que permiten el control de procesos continuos. Disponen de módulos de entrada y salida analógicas y la posibilidad de ejecutar reguladores PID que están programados en el autómata. Entradas-Salidas distribuidas, los módulos de entrada salida no tienen por qué estar en el armario del autómata. Pueden estar distribuidos por la instalación, se comunican con la unidad central del autómata mediante un cable de red. Buses de campo, mediante un solo cable de comunicación se pueden conectar al bus captadores y accionadores, reemplazando al cableado tradicional. El autómata consulta cíclicamente el estado de los captadores y actualiza el estado de los accionadores. 2.3.2 Controlador de Interfaz periférico (PIC) Los PIC son una familia de microcontroladores de tipo RISC fabricados por Microship Technology Inc. y derivados del PIC1650, originalmente desarrollado por la división de microelectrónica de General Instrument. (Webb, John, 1992). Originalmente se diseño para ser usado con la nueva CPU de 16 bits CP16000. Siendo en general una buena CPU, ésta tenia malas prestaciones de entrada y salida, y el PIC de 8 bits se desarrolló en 1975 para mejorar el rendimiento del sistema quitando peso de E/S a la CPU. El PIC utilizaba microcódigo simple almacenado en ROM para realizar estas tareas, se trata de un diseño RISC que ejecuta una instrucción cada 4 ciclos del oscilador (Webb, John, 1992). El PIC usa un juego de instrucciones tipo RISC, cuyo número puede variar desde 35 para PIC's de gama baja a 70 para los de gama alta. Las instrucciones se clasifican entre las que realizan operaciones entre el acumulador y una constante, entre el acumulador y una posición de memoria, instrucciones de condicionamiento y de salto/retorno, implementación de interrupciones y una para 15 pasar a modo de bajo consumo llamado sleep. Microship vende compiladores para los PIC's de gama alta (Webb, John, 1992).. 2.3.2.1 Arquitectura central del PIC La arquitectura del PIC es sumamente minimalista. Esta caracterizada por las siguientes prestaciones: Área de código y de datos separadas. Un reducido número de instrucciones de largo fijo. La mayoría de las instrucciones se ejecutan en un solo ciclo de ejecución, con ciclos de único retraso en las bifurcaciones y saltos. Un solo acumulador. Todas las posiciones de la RAM funcionan como registros de origen y/o destino de operaciones matemáticas y otras funciones. Una pila de hardware para almacenar instrucciones de regreso de funciones. 2.3.2.2 Ventajas del PIC Incluye los siguientes elementos en un solo Circuito Integrado: micro de 40 pines, una memoria RAM de 28 pines, una memoria ROM de 28 pines y un decodificador de direcciones de 18 pines. Esto implica una gran ventaja en cuanto a su costo que es mucho menor a tener que conseguir las piezas individualmente. El tiempo de desarrollo del proyecto electrónico se disminuye considerablemente. 2.3.3 Computadoras Una computadora es un sistema digital con tecnología microelectrónica capaz de procesar datos a partir de un grupo de instrucciones denominado programa. La estructura básica de una computadora incluye microprocesador 16 (CPU), memoria y dispositivos de entrada/salida, junto a los buses que permiten la comunicación entre ellos. La característica principal que la distingue de otros dispositivos similares, como una calculadora no programable, es que puede realizar tareas muy diversas cargando distintos programas en la memoria para que los ejecute el procesador. (Webb, John, 1992). 2.3.3.1 Ventajas y desventajas de las computadoras La utilización de las computadoras para la realización de las actividades cotidianas, laborales y escolares, trae consigo muchas ventajas, se describen algunas: La computadora nunca se cansa, distrae, o se enoja. La información es procesada y almacenada. Realiza funciones con un índice menor de errores. Mayor rapidez en información. Se convierte en un medio de aprendizaje. Por otra parte podrían presentarse algunas desventajas con la utilización de las mismas: Representan una fuerte inversión, ya que los equipos son costosos y requieren el acondicionamiento del área laboral. El cambio constante de la tecnología. 2.3.4 Controlador de Alta Disponibilidad (PAC) Es una solución de alto rendimiento con opciones de redundancia extremadamente económicas para dotar a sus procesos de un alto grado de disponibilidad. La unidad de control y el sistema E/S son la base para un completo entorno de control y registro distribuido con capacidad para realizar control analógico continuo, lógico y secuencial combinado con registro seguro de datos en el punto de medición. El resultado es un proceso con la máxima rentabilidad. (Webb, John, 1992). 17 2.3.4.1 Características del PAC Si se necesita sencillez e innovación, este tipo de controlador de automatización es ideal. Cuenta con lo siguiente: Módulos de intercambio directo (Hot Swap). Funcionalidad de E/S integrada. Una tarjeta flash de personalidad. Indicación clara del estatus. 2.3.4.2 Ventajas y desventajas del PAC Ventajas: Fácil de usar, instalar, mantener y ampliar. Es de bajo precio. Con la tecnología E-Sync minimiza los costes de diseño, reduce el tiempo de instalación y simplifica el mantenimiento. Garantiza la máxima disponibilidad de sus procesos. En modo duplex ofrece redundancia de procesadores, fuente de alimentación y red con una relación calidad-precio jamás vista. La redundancia de reguladores es automática. Desventajas: El precio es alto comparado con el PLC. Aunque ha sido discutido por varios años no es confiable. Tiene volumen alto. La precisión en el proceso analógico es bajo. Su anti-interferencia es débil, porque maneja frecuencias altas y no resiste a las interferencias de dispositivos con las mismas frecuencias, se acerca a frecuencias de dispositivos comerciales. 18 Los tiempos en los intervalos de cómputo no son estables. 2.4 LENGUAJES DE PROGRAMACIÓN 2.4.1 C-Sharp (C#) Es un lenguaje de programación orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma .NET, es uno de los lenguajes de programación diseñados para la infraestructura de lenguaje común. Su sintaxis se deriva de C/C++ y utiliza el modelo de objetos de la plataforma .NET, similar al de Java, aunque incluye mejoras derivadas de otros lenguajes. El nombre de C Sharp fue inspirado por la notación musical, donde # indica que la nota es un semitono más alta, sugiriendo que C# es superior a C/C++ (Deitel & Deitel, 2007). Aunque C# forma parte de la plataforma .NET, ésta es una API, mientras que C# es un lenguaje de programación independiente diseñado para generar programas sobre dicha plataforma. Se puede generar programas para distintas plataformas como Windows, Unix y GNU/Linux (Deitel & Deitel, 2007). Sus ventajas son las siguientes: Al empezar a programar se puede definir una o más clases dentro de un mismo espacio de nombres. El tipo de datos es más amplio y definido, cada miembro de una clase tiene un atributo de acceso de tipo público, protegido, interno, interno protegido y privado. Antes que un método pueda ser redefinido en una clase base, debe declararse como virtual, se permite la declaración de propiedades centro de cualquier clase, permite mantener múltiples versiones de clases en forma binaria, colocándolas en diferentes espacios de nombres, esto permite que versiones nuevas y anteriores de software puedan ejecutarse en forma simultánea. 19 Las desventajas son las siguientes: Se tiene que conseguir una versión reciente de Visual Studio .NET, por otra parte se tiene que tener algunos requerimientos mínimos del sistema para poder trabajar adecuadamente tales como contar con Windows, tener alrededor de 4 Gb de espacio libre en el disco duro para la instalación, entre otras. Además para quien no está familiarizado con algún lenguaje de programación, le costará más trabajo iniciarse en su uso, y si se quiere consultar algún tutorial más explícito sobre la programación en C# se tendría que contar además conexión a internet. Sus aplicaciones no se pueden instalar en cualquier sistema operativo. 2.4.2 Java Es un lenguaje de programación orientado a objetos, desarrollado por Sun Microsystems a principios de los años 90. El lenguaje tiene de sintaxis parecida a la de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria. Con respecto a la memoria, su gestión no es un problema ya que ésta es gestionada por el propio lenguaje y no por el programador (Deitel & Deitel, 2008). La implementación original y de referencia del compilador, la máquina virtual y las bibliotecas de clases de Java fueron desarrolladas por Sun Microsystems en 1995. Desde entonces, Sun ha controlado las especificaciones, el desarrollo y evolución del lenguaje a través del Java Community Process, si bien otros han desarrollado también implementaciones alternativas de estas tecnologías de Sun, algunas incluso bajo licencias de software libre (Deitel & Deitel, 2008). Entre diciembre de 2006 y mayo de 2007, Sun Microsystems liberó la mayor parte de sus tecnologías Java bajo licencia GNU GPL, de acuerdo con las 20 especificaciones del Java Community Process, de tal forma que prácticamente todo el Java de Sun es ahora software libre (Deitel & Deitel, 2008). Ventajas: Portable, no debes volver a escribir el código si quieres ejecutar el programa en otra máquina siempre y cuando se tenga instalado la Java Virtual Machine. Orientado a objetos, tiene todos los beneficios que ésta metodología puede ofrecer. Puede hacer cualquier cálculo matemático, procesar palabras, base de datos, aplicaciones gráficas, animaciones, sonido, hoja de cálculo, etc. Puedes hacer páginas web dinámicas. Simple, elimina la complejidad de lenguajes como C. Robusto, maneja la memoria de la computadora por ti. Desventajas: La velocidad, los programas no tienden a ser muy rápidos. Si vas iniciando con la programación no es fácil de aprender, por la metodología orientada a objetos. Es nuevo y no se conocen bien todas sus capacidades. Hay diferentes tipos de soporte técnico para la misma herramienta, por lo que el análisis de la mejor opción se dificulta. Para manejo a bajo nivel deben usarse métodos nativos, lo que limita la portabilidad. El diseño de interfaces gráficas no es simple. Algunas herramientas tienen un costo adicional. 21 2.4.3 Python Python nació de la mano de Guido van Rossum, un programador de origen holandés que desarrolló este lenguaje de programación a finales de los años 80 para el Centro para las Matemáticas y la Informática de los Países Bajos que buscaba un lenguaje de programación para ser utilizado bajo el sistema operativo Amoeba de Andrew S. Tanenbaum que fuese capaz de sustituir al lenguaje ABC. ¿Y qué es Python? Es un lenguaje de programación de alto nivel que fue diseñado con una sintaxis muy limpia que permite obtener códigos que son fáciles de leer, es multiplataforma y soporta orientación a objetos, programación imperativa e, incluso, programación funcional (Lie Hetland, Magnus, 2005). En 1991, van Rossum publicó la versión 0.9.0 del lenguaje en el que aparecían clases con herencia o excepciones, 1994 se formó el primer foro de discusión alrededor de este lenguaje además de lanzarse, en el mes de enero, la versión 1.0 del lenguaje (que incluía herramientas para programación funcional). En 1995, van Rossum dejó el Centro para las Matemáticas y la Informática de los Países Bajos y se marchó a Estados Unidos a continuar el desarrollo de Python en la Corporation for National Research Initiatives hasta que en el año 2002, van Rossum y su equipo de desarrolladores se marcharon a BeOpen.com donde lanzaron Python 2.0 (que incluía un recolector de basura) hasta marcharse, de nuevo, a Digital Creations (ambos movimientos motivados por la idea de trabajar en software comercial) (Lie Hetland, Magnus, 2005). En el año 2000 Python era demasiado popular, y según la licencia de este lenguaje, estaba sujeto a la legislación del Estado de Virginia, lo cual era incompatible con la licencia GPL. En el año 2001, se creó la Python Software Foundation (PSF), siguiendo el modelo de Apache y se lanzó Python 2.1 bajo la licencia Python Software Foundation License. Esta fundación sin ánimo de lucro, a día de hoy, es la que salvaguarda todo el código de Python y toda su documentación, fomenta la comunidad de desarrolladores y es la encargada de impulsar el desarrollo de este lenguaje. Desde entonces, Python ha seguido evolucionando hasta llegar a la actual versión 3.2 que fue lanzada el 20 de febrero 22 de este año (Lie Hetland, Magnus, 2005). 2.4.3.1 Características de Python Simple, es un lenguaje simple y minimalístico. Leer un buen programa de Python se siente como leer ingles (pero un muy estricto ingles). El pseudocódigo natural de Python es una de sus grandes fortalezas ya que permite concentrarse en la solución del problema en lugar de la sintaxis, es decir el propio lenguaje. Sencillo de Aprender, con Python es extremadamente sencillo de iniciarse en la programación ya que ofrece una sintaxis extraordinariamente simple, a la que ya hicimos mención. Libre y de fuente abierta, Python es un ejemplo de un FLOSS (Free/Libre and Open Source Software – Gratuito/Libre y Software de Fuente Abierta). En términos simples, puedes distribuir libremente copias de este software, leer su código fuente, hacerle cambios, usar partes del mismo en nuevos programas libres, y en general lo que quieras. FLOSS está basado en un concepto de una comunidad que comparte conocimiento. Esta es una de las razones por las cuales Python es tan bueno, ha sido creado y mejorado por una comunidad que solo quiere ver un mejor Python. Lenguaje de alto nivel, cuando escribes programas en Python nunca debes preocuparte por detalles de bajo nivel, como manejar la memoria empleada por tu programa. Portable, debido a su naturaleza de ser Open Source, Python ha sido portado (es decir, cambiado para hacerlo funcional) a diversas plataformas. Todos tus programas trabajaran en alguna de estas plataformas sin requerir cambio alguno. Sin embargo, debes ser lo suficientemente cuidadoso de evitar las características con dependencia de sistema (es decir librerías o módulos que funcionan sólo en un Sistema en Particular). Puedes usar Python sobre Linux, Windows, Macintosh, Solaris, OS/2, Amiga, AROS, AS/400, BeOS, OS/390, z/OS, Palm OS, QNX, VMS, Psion, Acom RISC 23 OS, VxWorks, PlayStation, Sharp Zaurus, Windows CE y Pocket PC. Interpretado, un programa escrito en un lenguaje compilado como C o C++ es traducido de un lenguaje fuente (como los mencionados) en uno hablado por la computadora (código binario) empleando un compilador con varias opciones. Cuando ejecutas el programa, el software enlazador/cargador solo guarda el código binario en la memoria de la computadora e inicia la ejecución desde la primera instrucción en el programa. Cuando se usa un lenguaje interpretado como Python, no existen compilaciones separadas y pasos de ejecución. Solo se ejecuta el programa desde el código fuente. Internamente, Python convierte el código fuente en una forma intermedia llamada bytecodes, después los traduce en el lenguaje nativo de tu computadora y ejecuta. Todo esto hace el uso de Python mucho más sencillo. Solo se debe ejecutar el programa, no preocupa el proceso de enlazar y cargar librerías, etc. Esto lo convierte en portable, ya que solo debes copiar el código de tu programa Python en cualquier otro sistema y trabajará igualmente (Lie Hetland, Magnus, 2005). Orientado a Objetos, Python permite programación orientada a procedimientos así como orientada a objetos. En lenguajes orientados a procedimientos, el programa está construido sobre procedimientos o funciones los cuales no son nada más que piezas de programa reutilizables. En lenguajes orientados a objetos, el programa es construido sobre objetos los cuales combinan datos y funcionalidad. Python ofrece una manera muy poderosa y simple de emplear programación orientada a objetos, especialmente, cuando se compara con lenguajes como C++ o Java. Ampliable, si se necesita que una pieza de código se ejecute muy rápido, puedes lograrlo escribiéndola en C y después combinarla con tu programa de Python. Librerías extendidas, la librería estándar de Python es de hecho muy amplia. Puede ayudarte a hacer varias cosas que involucran: expresiones 24 regulares, generación de documentos, evaluación de unidades, pruebas, procesos, bases de datos, navegadores web, CGI, ftp, correo electrónico, XML, XML-RPC, HTML, archivos WAV, criptografía, GUI (graphical user interfaces / interfase gráfica del usuario) usando Tk, y también otras funciones dependientes del sistema. Recuerde, todo está siempre disponible donde quiera que Python se instala y forma parte de la denominada filosofía de Python “batteries included” (baterías incluidas). Además de la librería estándar, hay otras librerías de calidad superior como el Python Imaging Library que es una sorprendente librería para la manipulación de imágenes. 2.4.4 Ensamblador Es un lenguaje simbólico que se utiliza para codificar los programas origen que se procesan por el ensamblador. Este lenguaje es una colección de símbolos mnemónicos que representan operaciones (mnemónicos de instrucciones para la máquina o de directrices para el ensamblador), nombres simbólicos, operadores y símbolos especiales (Abel, Peter, 2005). El lenguaje ensamblador proporciona códigos de operación de los mnemónicos para todas las instrucciones de la máquina contenidas en la lista de instrucciones. Además, el lenguaje ensamblador contiene mnemónicos directrices, los cuales especifican acciones auxiliares que se llevan a cabo por el ensamblador. Estas directrices no siempre son traducidas a lenguaje máquina. Un programador escribe el programa origen en lenguaje ensamblador utilizando cualquier editor de textos o procesador de palabras que sea capaz de producir una salida de texto en ASCII (Abel, Peter, 2005). Una vez que el código origen ha sido escrito, el archivo origen es ensamblado mediante su procesamiento a través de algún ensamblador (Abel, Peter, 2005). Ventajas: Tamaño 25 Velocidad Flexibilidad Desventajas: Tiempo de programación Programas fuente grandes Peligro de afectar recursos inesperadamente Falta de portabilidad 2.4.5 Desarrollo Web Todos los lenguajes de programación para web necesitan de una arquitectura cliente-servidor, que es un modelo de aplicación distribuida en el que las tareas se reparten entre los proveedores de recursos o servicios, llamados servidores, y los demandantes, llamados clientes. Un cliente realiza peticiones a otro programa, el servidor le da respuestas. Esta idea también se puede aplicar a programas que se ejecutan sobre una sola computadora, aunque es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras. En esta arquitectura la capacidad de proceso está repartida entre los clientes y los servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño del sistema. La separación entre cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa. Los tipos específicos de servidores incluyen los servidores web, los servidores de archivo, los servidores de correo, etc. Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma. 26 Figura 6. Arquitectura cliente-servidor cliente para web. Una disposición muy común en los sistemas multicapa en los que el servidor se descompone en diferentes programas que pueden ser ejecutados por diferentes computadoras aumentando así el grado de distribución del sistema. La arquitectura cliente-servidor servidor sustituye a la arquitectura monolítica en la que no hay distribución, tanto a nivel físico como a nivel lógico. La red cliente-servidor servidor es aquella red de comunicaciones en la que todos los clientes están conectados a un servidor, en el que se centralizan los diversos recursos y aplicaciones con que se cuenta, y que los pone a disposición de los clientes cada vez que estos son solicitados. Esto significa que todas las gestiones que se realizan se concentran en el servidor, de manera que en él se disponen los requerimientos provenientes de los clientes que tienen prioridad, los archivos que son de uso público y los que son de uso restringido, los archivos que son de uso de sólo lectura y los que, por el contrario, pueden ser modificados, etc. Este tipo de red puede utilizarse conjuntamente en caso de que se esté utilizando en una red mixta. Así pues con la arquitectura cliente-servidor podremos implementar sistemas que estén al alcance de cualquier cliente sin necesidad de instalar un software especial en cada computadora que el cliente disponga, por lo tanto, se 27 podrá tener acceso desde cualquier equipo que pueda ver al servidor web en la red. Existen varios lenguajes de programación para desarrollar sistemas basados en web como PHP, ASP, JSP, etc. Todos pueden conectarse a bases de datos como Mysql o SQL Server, para así realizar páginas web dinámicas con información guardada en una base de datos. Python no se queda atrás en este contexto, también se pueden realizar páginas web con Python acompañado de un servidor web como Apache y una base de datos como Mysql. Para este proyecto se eligió Python Web por las características que se mencionaron antes sobre éste lenguaje de programación tan amigable, sencillo y portable, por mencionar algunas. 28