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.
§ 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:
§ 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.
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.
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