lunes, 12 de noviembre de 2012

Eiffel & Gambas por Victor Garcia


Eiffel
Eiffel. Es un lenguaje de programación escrito por Bertrand Meyer. Al contrario que Smalltalk, incluye un preprocesador que permite la traducción de código Eiffel a lenguaje C. Permite la encapsulación , control de acceso y tiene gran facilidad para las modificaciones.

Declaración de clases

En Eiffel una declaración de clases puede incluir:
§  Una lista de características exportables.
§  Una lista de las clases antecesora: clases de la que ésta es una derivación.
§  Una lista de declaraciones de características.

Ventajas

§  Es un lenguaje orientado a objetos puro.
§  Orientado hacia el diseño de grandes aplicaciones.
§  Es más simple, el lenguaje es más potente.
§  Garantiza un software robusto y eficiente.
§  Permite a los desarrolladores utilizar genericidady un modelo de herencia múltiple.
§  Reduce el tiempo de depuración del 90-95%.
§  Compila para múltiples plataformas: Windows (Classic y NET.), Unix, Linux, VMS,sistemas integrados y Mac OS X.
§   El paso intermedio a código C se puede considerar como una ventaja y no como un inconveniente, ya que aquellas secciones que sean difíciles de tratar con Eiffel pueden elaborarse a partir de código C. Su compatibilidad con C asegura también su portabilidad hacia otros sistemas operativos.

Desventajas

§  El manejo de la memoria, un punto delicado en todos los lenguajes orientados a objetos no es transparente como en el caso de Smalltalk.
§  Las librerías de clases son reducidas.
§  El rendimiento es mayor que el de Smalltalk, pero al tener que incluir un módulo Run-time dentro del ejecutable, su tamaño crece y su rendimiento baja.

 






Características de Eiffel

Eiffel es un lenguaje de programación creado por Bertrand Meyer en 1988. Entre las características que le hacen adecuado para la asignatura Programación II destacan el ser un lenguaje estructurado, con comprobación estricta de tipos, soporte para programación bajo contrato y verificación de programas. La característica fundamental de ser orientado a objeto será utilizada en cursos posteriores. Al no contemplarla en la asignatura, la descripción que se va a proporcionar a continuación será muy limitada y no contemplará partes esenciales del lenguaje.

·         Un programa en Eiffel consiste en un conjunto de clases, cada una de las cuales está formada por atributos (datos) y métodos (código, equivalente a subprogramas). Cada clase se almacena en un fichero con extensión .e y en el momento de compilar el programa se indica la clase y el método de ella que sirve como punto de entrada al programa.
·         Asociaremos el concepto de módulo al de método de una clase, y por lo tanto un método será el equivalente a un subprograma en Pascal. Sin embargo, es necesario tener en cuenta que esta asociación no es correcta desde el punto de vista de la programación orientada a objetos, y que por lo tanto el alumno deberá cambiar de punto de vista en cursos posteriores.
·         En Eiffel (como en la mayoría de lenguajes orientados a objeto) la definición de nuevos tipos de datos por el programador se sustituye por la definición de clases, que es un concepto más potente (una clase define no sólo la manera de representar los datos sino además las operaciones que se pueden efectuar sobre ellos).
·         Por lo tanto, cualquier tipo de datos que no sea simple1 se representa mediante una clase en Eiffel (esto incluye a los tipos de datos array, registro, cadena de caracteres, etc.). Los valores de estos tipos de datos se denominan objetos y se deben crear en tiempo de ejecución. Las variables cuyo tipo de datos es una clase almacenan referencias a objetos.


Método

Eiffel es un método y un lenguaje para la descripción y el desarrollo eficientes de sistemas de calidad. Como lenguaje, Eiffel es más que un lenguaje de programación. Abarca no sólo la programación en el sentido restringido de aplicación, también el espectro de desarrollo de software:
§  Análisis, modelado y especificación: Eiffel se puede utilizar como una herramienta puramente descriptiva para analizar y documentar la estructura y propiedades de sistemas complejos (aunque no de sistemas de software).
§  Diseño y arquitectura: Eiffel se puede utilizar para construir estructuras sólidas, el sistema es flexible.
§  Implementación: Eiffel ofrece soluciones prácticas de software con una eficacia comparable a las soluciones basadas en los enfoques tradicionales tales como C y Fortran.
§  Mantenimiento: Eiffel ayuda a la flexibilidad de arquitectura de los sistemas resultantes.
§  Documentación: Eiffel permite la generación automática de documentación textual y gráfica, desde el propio software, como un sustituto parcial de la documentación del software desarrollado y mantenido por separado.





 

Calidad

Aunque el lenguaje es la parte más visible, Eiffel se ve mejor como un método, que guía los analistas de sistemas y desarrolladores a través del proceso de construcción de software. El método Eiffel se centra en la productividad (la capacidad de producir sistemas a tiempo y dentro del presupuesto) y la calidad, con especial énfasis en los factores de calidad siguientes:
§  Fiabilidad: la producción del software es libre de errores.
§  Reutilización: permite desarrollar componentes de alta calidad, y transformar los elementos de software en estos componentes para su reutilización futura.
§  Extensibilidad: permite que el desarrollo de software pueda adaptarse a los cambios inevitables y frecuentes de los requisitos y otras limitaciones.
§  Portabilidad: permite producir software que se ejecutan en muchas plataformas diferentes.
Mantenimiento: permite estructurar y seguir adaptando y mejorando el software implementado


Propiedades generales

§  Enfoque orientado a objetos: Eiffel es una aplicación de pleno derecho de la tecnología de objetos, no un "híbrido" de los conceptos de OO y tradicionales.
§  Interfaces externas: Eiffel es una herramienta de software de composición y es de fácil interfaz, con el software escrito en lenguajes como C, C + +, Java y C #.
§  Apoyo del ciclo de vida completo: Eiffel es aplicable en todo el proceso de desarrollo, incluyendo el análisis, diseño, implementación y mantenimiento.
§  Clases como herramienta de estructuración básica: Una clase es la descripción de un conjunto de objetos en tiempo de ejecución, se especifica a través de las operaciones de aplicación y propiedades abstractas. Un sistema de Eiffel está hecho de clases, que actúa como mecanismo único de módulo.
§  Sistema de tipo constante: Cada tipo se basa en una clase, incluyendo los tipos básicos como entero, booleano, real, carácter, una cadena, array.
§  Diseño por Contrato: Cada componente del sistema puede estar acompañado de una especificación precisa de sus propiedades abstractas, que regulan su funcionamiento interno y su interacción con otros componentes.
§  Afirmaciones: El apoyo de método y notación por escrito, las propiedades lógicas de los estados de objetos expresan los términos de los contratos. Estas propiedades, conocidas como las afirmaciones, se puede controlar en tiempo de ejecución de pruebas y aseguramiento de la calidad. También sirven como mecanismo de documentación. Las afirmaciones son precondiciones, postcondiciones, invariantes de clase, invariantes de bucle entre otros.
§  Manejo de excepciones: Se puede configurar el software para detectar condiciones anormales, tales como señales inesperadas del sistema operativo y violaciones de contrato, de corrección, y recuperación.
§  Ocultamiento de información: Cada autor decide la clase, para cada función, si está disponible para todas las clases de clientes, a clientes específicos solamente, o solamente para propósitos internos.
§  Auto-documentación: La notación se ha diseñado para permitir a las herramientas ambiente para producir puntos de vista abstractos de las clases y los sistemas, textual o gráfica, y adecuado para cambio usuarios, mantenedores y los autores de los clientes.
§  Herencia: Se puede definir una clase como la extensión o la especialización de los demás.
§  Redefinición: Un rasgo heredado (la operación) se puede dar una implementación diferente o firma.
§  Redefinición explícita: Una redefinición característica debe ser explícita.
§  Subcontratación: Redefinición de normas que requieren nuevas afirmaciones para que sean compatibles con las heredadas.
§  Características diferidos y clases: Es posible que una característica, y la clase que la encierra, sean especificadas incluso con afirmaciones pero no se aplica. Clases diferido también se conocen como clases abstractas.
§  Polimorfismo: Una entidad puede llegar a ser apegado a los objetos de diferentes tipos.
§  Enlace dinámico: Llamar a una función en un objeto siempre activa la versión de la característica específicamente adaptados a ese objeto, incluso en la presencia del polimorfismo y la redefinición.
§  Tipos estáticos: Un compilador puede comprobar estadísticamente que todas las combinaciones de tipo serán válidas, por lo que ninguna situación en tiempo de ejecución tendrá lugar en el que uno se intentará aplicar una función a un objeto inexistente.
§  Intento de sesión ("estrechamiento de tipo"): Es posible comprobar en tiempo de ejecución si el tipo de un objeto se ajusta a una cierta expectativa, por ejemplo, si el objeto viene de una base de datos o una red.
§  La herencia múltiple: Una clase puede heredar de cualquier número de otros.
§  Función de cambio de nombre: Para eliminar conflictos de nombres en la herencia múltiple, o de dar nombres a nivel local mejor, una clase puede darle un nuevo nombre a un rasgo heredado.
§  Herencia repetida: el intercambio y la replicación: Como resultado de la herencia múltiple, una clase hereda de otra a través de dos o más rutas, el autor de clase puede especificar, para cada función en repetidas ocasiones hereditaria, que produce o bien una característica (compartir) o dos (replicación).
§  No hay ambigüedad en la herencia repetida: Redefiniciones en conflicto con la herencia repetida se resuelven a través de una "selección" de mecanismo.
§  Restricciones de genericidad: Una clase puede ser parametrizada, o genérica, para describir contenedores de objetos de un tipo arbitrario.
§  Genericidad restringida: Una clase genérica se puede afirmar, con una limitación genérica, para indicar que los tipos correspondientes deben cumplir algunas propiedades, como la presencia de una operación en particular.
§  Recolección de basura: El modelo dinámico está diseñado para que la recuperación de la memoria, en un ambiente de apoyo, pueda ser automática, en lugar de controlarla.
§  Sin fugas la estructura modular: Todo el software se construye fuera de clases, con sólo dos entre las relaciones de clase, el cliente y la herencia.
§  Las rutinas de una vez: Un elemento puede ser declarada "una vez", por lo que sólo se ejecuta para su primera convocatoria, posteriormente, vuelve siempre al mismo resultado (si es necesario). Esto sirve como un mecanismo de inicialización conveniente, y de los objetos compartidos.
§  Biblioteca estandarizada: La biblioteca del núcleo, ofrece abstracciones esenciales, está estandarizada a través de las implementaciones.
§  Otras bibliotecas: Eiffel se basa principalmente en las bibliotecas de alta calidad que cubre muchas necesidades comunes de desarrollo de software, a partir de algoritmos y estructuras de datos generales para la creación de redes y bases de datos.



Gambas

Gambas no es solo un lenguaje de programación, es también un entorno de programación
visual para desarrollar aplicaciones gráficas o de consola. Hace posible el desarrollo de
aplicaciones complicadas muy rápidamente. El programador diseña las ventanas de forma
gráfica, arrastra objetos desde la caja de herramientas y escribe el código en BASIC para
cada objeto.

Gambas, es un lenguaje de programación orientado a objetos, basado en Basic, parecido en su entorno a Visual Basic y tiene un buen porcentaje de semejanza en sintaxis, aunque Gambas lo supera, pues no tiene los errores y limitaciones que Visual Basic posee.

Gambas es una alternativa actual y fácil de manejar a la hora de construir aplicaciones nativas para Linux, desarrollándola en un entorno gráfico, para los programadores que no nos gusta mucho los lenguajes de programación carentes de esta característica, la cual hace más fácil y rápida la cristalización de una idea. 

También posee similitudes con Java, ya que en la ejecución de cualquier aplicación, se requiere un conjunto de librerías interprete previamente instaladas (Gambas Runtime) que entiendan el bytecode de las aplicaciones desarrolladas y lo conviertan en código ejecutable por el computador. Por otro lado, a diferencia de Java, no se experimentan ralentizaciones y es posible desarrollar grandes aplicaciones en poco tiempo.

¿ES GAMBAS SOFTWARE LIBRE?

Si. Gambas se distribuye con la licencia GPL GNU (General Public Licence). Significa que
se distribuye con el código fuente y respeta las cuatro libertades definidas por la Free
Software Fundation.


ELEMENTOS DE GAMBAS

Para poder desarrollar y ejecutar programas en Gambas, son necesarios los siguientes
elementos:
– Un compilador, que se encargará de transformar el código fuente y archivos que formen parte de un proyecto hecho en gambas, es un programa ejecutable.
– Un intérprete capaz de hacer que los programas hechos en Gambas sean ejecutados por el sistema operativo.
– Un entorno de desarrollo que facilite la programación y diseño de las interfaces gráficas de los programas.
– Componentes que añaden funcionalidad al lenguaje. La palabra componente en
Gambas tiene un significado especifico, ya que no alude a partes genéricas, sino a librerías especificas que le dotan de más posibilidades. En la actualidad existen componentes para usar xml, conexiones de red, opengl, ODBC, distintas bases de datos, escritorios basados en qt, en gtk, etc.
TIPOS DE DATOS

Los tipos de datos soportados por Gambas, son los siguientes:
Boolean: Solo acepta valores True o False.
Byte: Representa un numero entero positivo entre 0 y 255.
Short: Representa un numero entero con valores posibles entre 32.768
y +32.767
Integer: Representa un numero entero con valores posibles entre 2.147.483.648
y
+2.147.483.647.
Long: Representa un numero entero con valores posibles entre:
9.223.372.036.854.775.808
y +9.223.372.036.854.775.807
Single: Representa un numero real, con decimales, con valors posibles entre
1.7014118E+ 38 y +1,7014118E+38.
Float: Representa un numero real, con decimales, con valores posibles entre
8,98846567431105E+ 307 y + 8,98846567431105E+307.
Date: Almacena valores de fecha y hora. Internamente la fecha y la hora se
almacenan en formato UTC.
String: Se usa para almacenar una cadena de texto.
Variant: Significa cualquier tipo de dato, es decir, se puede almacenar integer, single,
boolean, etc.
Object: representa cualquier objeto creado en Gambas.


Ventajas:
§  Diseño de formularios sencillo (Arrastrar y soltar como en otros entornos).
§  Autocompletado de código.
§  Enlace a bases de datos: Mysql, PostgreSQL y SQLite.
§  Creación de videojuegos con OpenGL.
§  Desarrollo de aplicaciones para red.
§  Gestor para creación de compilados incluido.

Desventajas:
§  No es compatible con Visual Basic, y no lo pretende ser en el futuro.
§  Aun hay inconvenientes para instalarlo en Windows.
§  Sin soporte para conexion a SQL Server y Oracle (no que yo sepa de momento).
§  No permite realizar aplicaciones para Windows, solo para GNU/Linux.


Historia
Gambas nació como respuesta a la necesidad de tener un entorno de desarrollo rápido de aplicaciones (RAD) que cumple la necesidad de muchos programadores del lenguaje de Microsoft de tener un lenguaje de programación sencillo para plataformas libres (como GNU/Linux y BSD).
A pesar de estar basado en el lenguaje BASIC y poseer gran similitud con Visual Basic, Gambas no es un clon de este último.







Portabilidad
Gambas es un idioma portado a casi cualquier distribución de GNU/Linux, a excepción de Linspire en la cual hay problemas con las bibliotecas Qt. Además, ha sido portada a OpenBSD y es mantenido como un port oficial. Mientras que para sistemas operativos como Microsoft Windows o Mac, según informa la página oficial de Gambas, es posible en el primero compilar a través de Cygwin, pero muchos componentes principales como aquellos que conforman las GUI no podrán ser compiladas, y para el segundo es posible compilar sin problemas, aunque lo más probable es que al momento de la ejecución el resultante sea una falla crítica. En la página oficial se muestra el estado de la portabilidad de Microsoft Windows y Mac, y en ambos su estado tiene una calificación de «mala».

Diferencias con Visual Basic (6.0)

La principal diferencia con respecto a Visual Basic 6.0 es el soporte para orientación a objetos. En Gambas, no existen los arreglos de controles -muy populares en Visual Basic- pero dispone de un elemento similar llamado group, que utilizado conjuntamente con arrays de objetos ofrecen resultados análogos.
Gambas añade algunas propiedades nuevas en algunos de sus controles, como la alineación vertical/horizontal en etiquetas, o algunas propiedades gráficas en el elemento Button (Equivalente aCommandButton de Visual Basic).
El acceso a bases de datos es sumamente sencillo. Gambas incluye, al igual que Visual Basic, su propio empaquetador para la distribución de aplicaciones, que permite crear incluso paquetesDeb. Los componentes suministrados en Gambas 2.0 son realmente potentes, desde una biblioteca para el manejo de documentos PDF, hasta componentes para imágenes, sockets e informes (equivalentes a Crystal reports) y otras herramientas gratuitas alternativas.
Es importante señalar que prácticamente todos los proyectos desarrollados en este entorno son compatibles con versiones nuevas de Gambas, no así los hechos por Microsoft Visual Basic, es decir, por ejemplo un proyecto hecho en Microsoft Visual Basic 5.0 difícilmente funcionará en la última versión, ya que no es orientado a objetos, por lo tanto carece de herencia.
Gambas es una alternativa a la programación visual ofrecida en Visual Basic para entornos GNU/Linux. Su talón de Aquiles actualmente es la imposibilidad de crear aplicaciones para Windows y Mac OS X. Aunque muchos critican la escasa documentación, existen libros completos  (en español e inglés) que tratan a profundidad todos los componentes de este lenguaje de programación.

ELEMENTOS DE GAMBAS

Para poder desarrollar y ejecutar programas en Gambas, son necesarios los siguientes elementos:

§  Un   compilador,   que   se   encargará   de   transformar   el   código   fuente   y   archivos   que formen parte de un proyecto hecho en gambas, es un programa ejecutable.

§  Un intérprete capaz de hacer que los programas hechos en Gambas sean ejecutados por el sistema operativo.

§  Un   entorno   de   desarrollo   que   facilite   la   programación   y   diseño   de las   interfaces gráficas de los programas.

§  Componentes   que   añaden   funcionalidad   al   lenguaje.   La   palabra   componente   en Gambas tiene un significado especifico, ya que no alude a partes genéricas, sino a librerías   especificas   que   le   dotan   de   más   posibilidades.  

No hay comentarios:

Publicar un comentario