Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 4
Ir a la página 1, 2, 3, 4  Siguiente
 
Nueva funcionalidad en Gambas 3
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Nueva funcionalidad en Gambas 3 
 
Citar:

Hi,

In revision #5041, I started to implement automatic declaration of
undeclared local variable.

For example, if you type:

   X = Sin(A)

And if X is not declared, then the IDE will automatically add:

   Dim X As Float

At the beginning of the function.

This is not finished yet. The following is missing:
- Support for FOR / FOR EACH loop variables.
- Detection of the [ ... ] array creation operator.
- Lot of tests.

Enjoy it!

-- Benoît Minisini


Benoit no deja de sorprender. Esta vez nos facilita aún más el trabajo con nuestro código de forma que si usamos una variable que no haya sido declarada previamente, el IDE se encarga de generar la declaración de dicha variable al principio del método o función, intentando adivinar el tipo de dato usado.

Aún no está terminado, falta soporte para variables dentro de loops y detección de arrays y un montón de pruebas, aunque conociendo a Benoit no sería de extrañar que en unas pocas horas lo tenga finalizado.

Por supuesto, todo ello sólo disponible en las últimas revisiones SVN.


Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Nueva Funcionalidad En Gambas 3 
 
Un poco complejo tiene que ser.No debe ser fácil.

El tipo, el alcance.La repetición de la variable si ya existe.

La idea es buena.

Si os acordáis de VB, la mayoría de las variables que no se declaraban solían ser variants  (creo)
cuando no forzabas la declaración de las variables.Tenia sus mas y sus menos el uso de esta opción.

A lo mejor debería ser una opción optativa o lo sera.

Saludos.
 




===================
Gambas Básico
“Si no puedes explicar algo de forma sencilla, entonces es que tú no lo entiendes bien.” Albert Einstein
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Nueva Funcionalidad En Gambas 3 
 
Parece una buena mejora, aun que yo no soy muy partidario de que nadie me añada lineas de código no escritas por mi en mi código fuente.
Veremos a ver que tabulaciones, en que posiciones y como quedan esas líneas en nuestro código. Espero que se pueda desactivar y que sea opcional.
 



 
arubioc - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Nueva Funcionalidad En Gambas 3 
 
Coincido con arubioc.

Puede ser algo confuso.

Por cierto.¿ Sabe alguien como fue este tema de las variables automáticas en las posteriores versiones de VB a la 6 ?.
Yo me quede ahí.

¿ Reconocía los tipos ?.
El interprete tendría que evaluar la expresión y según el resultado asignarle un tipo a la variable.
A menos que por defecto use un tipo y si hay desbordamiento aplicar uno mayor.

Complicado.  

Saludos.
 




===================
Gambas Básico
“Si no puedes explicar algo de forma sencilla, entonces es que tú no lo entiendes bien.” Albert Einstein
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Nueva Funcionalidad En Gambas 3 
 
Shell escribió:  
Coincido con arubioc.

Puede ser algo confuso.

Por cierto.¿ Sabe alguien como fue este tema de las variables automáticas en las posteriores versiones de VB a la 6 ?.
Yo me quede ahí.

por ejemplo
 
Código: [Descargar] [Ocultar]
  1. dim variable
      
  2. variable=1
      
  3.  

genera un warning  al compilar y la variable pasa a ser de tipo variant

y si no la declaro
Código: [Descargar] [Ocultar]
  1. variable=1
      
  2.  

produce un error  y no compila

parece que se puede desactivar la opcion "option explicit" desde el ide para  desactivar y todas las variables no declaradas sean variant sin errores

esto es en la version 2005 en las mas  nuevas no se
 



 
última edición por codificador el Miercoles, 15 Agosto 2012, 22:29; editado 1 vez 
codificador - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Nueva Funcionalidad En Gambas 3 
 
Concido en que debería ser una característica opcional o mejor aún que no modifique el código automáticamente sino que se produzca una advertencia no intrusiva para que el programador sea quien decida qué hacer.

La cuestión respecto de la modificación automática del código es que puede conducir a errores lógicos. Por ejemplo, si declaro una variable con un nombre cualquiera y luego al usarla cometo un error de escritura cambiando un caracter en ese nombre, el IDE crearía una variable nueva cuando lo que ocurre, en realidad, es que quise usar la misma variable pero he escrito mal su nombre. Esto en ciertas situaciones puede convertirse en un error cuya detección y corrección, aunque es simple, demande una importante cantidad de tiempo.

gambas es muy particular en cuanto al manejo de tipos de datos: es de tipos fuerte, es decir que en principio una variable declarada de un tipo no puede alojar un valor de otro tipo, pero como la mayoría de los lenguajes de tipos fuertes, gambas utiliza conversiones para relajar estas restricciones; éstas pueden ser explícitas o implícitas y sus particularidades son que dispone de una importante cantidad de conversiones implícitas y que a pesar de exigir la declaración de tipos la verificación la realiza en tiempo de ejecución (esto último ¿tiene sentido?).

La misma existencia de conversiones de tipos implica un contrasentido, para qué en primer lugar existen esas restricciones si luego un lenguaje incorpora gran cantidad de conversiones explícitas o implícitas para saltearlas. Puede pensarse que en ciertas situaciones es útil que esas restricciones existan y en otras es útil poder evitarlas.

En realidad, las restricciones impuestas por un sistema de tipos vienen a ser una forma automática de verificación respecto de que a un tipo de datos sólo se le apliquen operaciones válidas. Desde un punto de vista más centrado en la programación orientada a objetos, un tipo es una clase y las operaciones que pueden ser aplicadas a esa clase son los mensajes a los que sabe responder (sus métodos).

De modo que en un lenguaje verdaderamente orientado a objetos la declaración del tipo de datos también puede ser implícita, porque lo que restringe las operaciones válidas sobre un tipo no tiene por qué ser su declaración, sino su protocolo de mensajes (la lista de sus métodos).

Entonces, no hay necesidad real de declarar el "tipo" de una variable ya que la determinación de su tipo se puede diferir al tiempo de ejecución, lo que comunmente se llama sistema de tipos dinámicos.

Declarar el tipo de las variables es una forma de documentar la funcionalidad buscada para un segmento de código e implica que el programador toma como una línea fundamental de razonamiento (aunque no la única) al sistema de tipos en sí mismo.

Sin embargo, ésto no sólo no es estrictamente necesario sino que muchas veces es contraproducente. Por qué un programador debería verse obligado a pensar en las reglas y restricciones de compilación del lenguaje, en vez de pensar en términos del dominio del problema (que es precisamente una de las principales ventajas de la programación orientada a objetos).

El problema se reduce a casi nada si el lenguaje tiene un diseño consistente porque dichas reglas de compilación se resumirán básicamente a que no puedes enviar al objeto A el mensaje X porque ni la clase del objeto A ni ninguna de sus superclases lo implementa. Sin embargo, si incluye "tipos de datos" que no son objetos y otras construcciones, símbolos, operadores que tampoco son objetos o mensajes, sino elementos particulares del lenguaje, el problema se hace evidente.

La mayor ventaja de un sistema de tipos fuerte (que obliga a la declaración explícita del tipo de datos de las variables) es que la verificación de tipos se haga en tiempo de compilación. Siguiendo la línea de razonamiento que impone el sistema de tipos un programa que no compila no es válido porque el programador intentó aplicar a un tipo de datos una operación no válida. Además, que la verificación de tipos sea estática, es decir, en tiempo de compilación, implica que la realimentación es inmediata.

Pero lenguajes como gambas obligan a declarar los tipos y realizan la verificación de tipos en tiempo de ejecución logrando, en mi humilde opinión, reunir lo peor de ambos mundos: obliga a declarar el tipo de las variables y no brinda realimentación inmediata porque es necesario ejecutar el programa y que el flujo de ejecución pase exactamente por la rutina y la línea de código que aplica la operación inválida para que el programador sea avisado mediante un mensaje de error.

Por supuesto, es algo con lo que todo programador gambas ha convivido y sabemos que no es un problema de vida o muerte. Sin embargo, lo importante es lo que subyace a todo esto y es precisamente qué líneas de razonamiento induce el lenguaje en el programador.

Si pensamos en que a un objeto sólo se le pueden enviar los mensajes que conoce (los métodos declarados en su clase o sus superclases), todo lo que el programador necesita del IDE es una ayuda memoria respecto de cuáles son los mensajes válidos (cuáles son las operaciones válidas sobre ese "tipo de datos").

Por supuesto, aún contando con esa ayuda esencial parece bastante obvio que cualquier ser humano puede cometer errores, más aún si el programa en desarrollo es extenso, si el programador puede estar trabajando bajo cierta presión (fechas de entrega), si carga con cierto cansancio normal o por distracciones que ningún ser humano puede evitar (normalmente la atención disminuye bruscamente por al menos unos 5 minutos después de 45 minutos de concentración intensa).

Debido a ello, sí que es útil que exista algún sistema de alertas que le avise al programador que cometió un error, por más que se trate de un error trivial. Pero ese sistema de avisos bien puede ser uno implementado por el IDE mediante alertas no intrusivas que incluyan una explicación del error y sugerencias de solución (al estilo eclipse).

Para ayudar al programador a darse cuenta que ha cometido un error de escritura, bastaría con el sistema de corrección automática típico de los procesadores de texto (la viborita roja debajo de la palabra mal escrita). Así, si utilizo una variable no declarada, lo primero que haría el IDE sería señalarme ese hecho: si se trata de un error de escritura podría permitirme la corrección mediante la pulsación de una combinación de teclas (implica que el IDE debe detectar qué variable ya declarada se asemeja más a lo que he escrito), en caso contrario mediante otra combinación de teclas podría permitirme incluir la declaración de la nueva variable.

Por supuesto esto es materia opinable y ni siquiera expresa una opinión formada de mi parte, sino más bien son sólo pensamientos en voz alta.

Saludos.
 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Nueva Funcionalidad En Gambas 3 
 
Hola fabian.

fabianfv escribió:  

La cuestión respecto de la modificación automática del código es que puede conducir a errores lógicos. Por ejemplo, si declaro una variable con un nombre cualquiera y luego al usarla cometo un error de escritura cambiando un caracter en ese nombre, el IDE crearía una variable nueva cuando lo que ocurre, en realidad, es que quise usar la misma variable pero he escrito mal su nombre. Esto en ciertas situaciones puede convertirse en un error cuya detección y corrección, aunque es simple, demande una importante cantidad de tiempo.


Normalmente el editor de gambas  lo que hace es mostrarte las variables que existen en una ventana emergente si estas escribiendo una parecida.
Con eso verías si ya existe y auto-completas el nombre.Por lo menos con las declaradas comunes a todo el código suele mostrar
el nombre, aunque me parece que muestra las variables sin importar su alcance dentro de ese formulario, modulo o clase.

En VB6 no se muestra los nombres de las variables cuando vas escribiendo y es algo importante para no equivocarte.
Acostumbrado cada día a como se acomoda el programador a la hora de trabajar, vamos a lo mas cómodo y también
practico.

Esto también tiene mucha gracia si lees algunas criticas de  otros programadores de lenguajes mas complejos,
luego el basic recibe criticas por que resulta un lenguaje que no tiene o tenia unas reglas sintácticas mas estrictas.
Cuanto mas complicado y enrevesado resulte lo sencillo, mejor quedas.

Este tópico me hace recordar un anuncio.

http://www.youtube.com/watch?v=RO6CII4LxWI

Si no entendieron el tópico, vean de nuevo el anuncio.

Saludos.
 




===================
Gambas Básico
“Si no puedes explicar algo de forma sencilla, entonces es que tú no lo entiendes bien.” Albert Einstein
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Nueva Funcionalidad En Gambas 3 
 
Yo no queria profundizar tanto, la verdad lo primero que he pensado es que a ningún escritor de novelas, word le añade frases, simplemente esto... no pretendia ni mucho menos empezar una discusión entre el bien y el mal, entre las buenas filosofias o malas filosofias de programación.
 



 
arubioc - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Nueva Funcionalidad En Gambas 3 
 
Shell.. dime cortito, pero que tiene que ver lo de Busco a Jaq's ?
No lo pillo...
 



 
arubioc - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Nueva Funcionalidad En Gambas 3 
 
arubioc:
Yo creo que Shell se refiere a esta frase que dice en su comentario:
Citar:

Cuanto mas complicado y enrevesado resulte lo sencillo, mejor quedas.


Y  el anuncio, trata de vender un perfume de hombre (que seria lo sencillo de decir)...pero si lo ves la 1º vez, resulta que no sabes muy bien lo que están vendiendo o anunciando (lo mismo puede ser una marca de sujetador, una empresa de abogados-buscadores, etc..), con lo sencillo que seria ir directamente anunciando  el perfume.      

En fin yo creo que es eso...      
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
9.00 9 9 1
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Nueva Version De Gambas 2.19 nrcefe General 11 Sabado, 17 Abril 2010, 01:11 Ver último mensaje
jguardon
No hay nuevos mensajes Nueva versión Gambas 2.21 jguardon General 4 Viernes, 06 Agosto 2010, 19:24 Ver último mensaje
jguardon
No hay nuevos mensajes Nueva funcionalidad en Gambas 3 jguardon General 3 Domingo, 29 Julio 2012, 21:43 Ver último mensaje
jsbsan
No hay nuevos mensajes Nueva En Gambas yamila35 General 6 Jueves, 08 Enero 2015, 17:57 Ver último mensaje
SoyDesarrollador
 

Publicar nuevo tema  Responder al tema  Página 1 de 4
Ir a la página 1, 2, 3, 4  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
No puede descargar archivos
No puede publicar eventos en el calendario