Download marco teórico - Tesis Digitales

Document related concepts

Programación funcional wikipedia , lookup

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