Autore Topic: Implementata istruzione GOSUB con rev. 4530  (Letto 2549 volte)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Implementata istruzione GOSUB con rev. 4530
« il: 04 Marzo 2012, 03:24:19 »
bene bene.... adesso ti nominiamo ambasciatore della comunità italiana di gambas sula mailing list internazionale  ;D

Ambasciata della Comunità italiana di Gambas sulla mailing list internazionale

Comunicazione n. 1 dal vostro Ambasciatore      ;D

Questa Ambasciata rende noto che con la revisione #4530 di Gambas-3 è stato implementato il comando GOSUB del vecchio Basic.

Si riporta di seguito quanto scritto da Minisini al riguardo:

"
Hi,

I have just succeeded (I think) in implementing the old Basic GOSUB
instruction in Gambas in revision #4530.

I did that, because it is faster than using a plain little function, if
you just need to call a small piece code without needing a specific
context nor arguments.

The syntax is the same as the GOTO instruction (with the same
restrictions on the label):

    GOSUB <label>

To return from a GOSUB, you must use the RETURN instruction alone.

    <label>:
         ...
         RETURN

Consequently, you cannot use RETURN to return from a subroutine if there
is a pending GOSUB. A little annoyance.

If the function end (or a CATCH instruction) is encountered, the
function is ended like before, even if there are pending GOSUB. In other
words, returning from a GOSUB is always explicit.

Enjoy it!

--
Benoît Minisini
"


Ma pare che non sia andata troppo bene.

...Amen !

Nota aggiunta:
...ma non potreste tutti...  >:( iscrivervi alla mailing list internazionale, così sopprimiamo questa inutile Ambasciata ?  :P
Per le iscrizioni:
https://lists.sourceforge.net/lists/listinfo/gambas-user
« Ultima modifica: 10 Dicembre 2013, 09:35:09 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: Implementata istruzione GOSUB con rev. 4530
« Risposta #1 il: 04 Marzo 2012, 15:03:45 »
...beh se vuoi la escort un poco di fatica la devi pur fare... :P
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Implementata istruzione GOSUB con rev. 4530
« Risposta #2 il: 04 Marzo 2012, 16:17:13 »
....ed io intanto mi domando:
"Ma 'sto GOSUB è davvero così utile ?"  ???
Non mi sembra che possa apportare capacità altrimenti non risolvibili.


Intanto, Minisini comunica che il problema è stato risolto:
"
Oops. Fixed in revision #4533.
--
Benoît Minisini
"
e successivamente aggiunge:
"
Here is a new implementation of GOSUB in revision #4534.

GOSUB can be used on any top-level label now.

GOSUB can be recursive now, because control variables are saved and
restored on the RETURN instruction.

GOSUB is still faster than calling a true method, and far faster when
using recursion. Stack allocation is heavier, and slower and slower as
far as the recursion level grows (dunno why). GOSUB does not have that
problem.

Enjoy it!

--
Benoît Minisini

"
« Ultima modifica: 05 Marzo 2012, 22:47:41 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Implementata istruzione GOSUB con rev. 4530
« Risposta #3 il: 05 Marzo 2012, 12:02:27 »
Credo che Minisini abbia riesumato uno dei più brutti costrutti che la programmazione mondiale abbia mai conosciuto. Oggi la programmazione deve essere orientata agli oggetti o ai dati e queste cose da "Turbo Pascal" fanno male alla buona programmazione. Il "salto della quaglia" offerto fa gosub (o GOTO per i nostalgici) è un obbrobrio e va combattuto!!! Già Gambas viene visto in malo modo se poi prendiamo ste cose degli anni 30 abbia finito di scavarci la fossa!

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Implementata istruzione GOSUB con rev. 4530
« Risposta #4 il: 05 Marzo 2012, 14:28:36 »
Credo che Minisini abbia riesumato uno dei più brutti costrutti che la programmazione mondiale abbia mai conosciuto. Oggi la programmazione deve essere orientata agli oggetti o ai dati e queste cose da "Turbo Pascal" fanno male alla buona programmazione. Il "salto della quaglia" offerto fa gosub (o GOTO per i nostalgici) è un obbrobrio e va combattuto!!! Già Gambas viene visto in malo modo se poi prendiamo ste cose degli anni 30 abbia finito di scavarci la fossa!

...anch'io, Ceskho, non sono molto entusiasta, ma comunque ormai c'è e.... ce lo dobbiamo tenere.  :-\
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Implementata istruzione GOSUB con rev. 4530
« Risposta #5 il: 05 Marzo 2012, 14:56:31 »
Credo che Minisini abbia riesumato uno dei più brutti costrutti che la programmazione mondiale abbia mai conosciuto. Oggi la programmazione deve essere orientata agli oggetti o ai dati e queste cose da "Turbo Pascal" fanno male alla buona programmazione. Il "salto della quaglia" offerto fa gosub (o GOTO per i nostalgici) è un obbrobrio e va combattuto!!! Già Gambas viene visto in malo modo se poi prendiamo ste cose degli anni 30 abbia finito di scavarci la fossa!

...anch'io, Ceskho, non sono molto entusiasta, ma comunque ormai c'è e.... ce lo dobbiamo tenere.  :-\

e che diamine... basta non usarla questa istruzione, no?  :-\

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Implementata istruzione GOSUB con rev. 4530
« Risposta #6 il: 05 Marzo 2012, 16:12:07 »
e che diamine... basta non usarla questa istruzione, no?  :-\

Be', sì...  :-[ non è certo obbligatoria.... in fondo, poi, può eventualmente sempre servire.


E poi... parlo del bene :angel:  e pratico il male :devil::
http://www.gambas-it.org/wiki/index.php/Indice#Controlli_vari
« Ultima modifica: 10 Dicembre 2013, 09:37:13 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Implementata istruzione GOSUB con rev. 4530
« Risposta #7 il: 06 Marzo 2012, 03:21:32 »
Minisini ha aggiunto:
"
Stack allocation through mmap() has been implemented in revision #4536.
Tested on my 64 bits system only.

Now recursion speed is equivalent between GoSub and normal functions as
soon as there are control variables. If there is no control variables to
save, GoSub is about 2.5 times faster than normal functions
.

Regards,

--
Benoît Minisini
"
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Implementata istruzione GOSUB con rev. 4530
« Risposta #8 il: 06 Marzo 2012, 12:58:11 »
Sono d'accordo con cesko sul fatto che l'introduzione sia alquanto fuori il moderno contesto, e posso dire anche che l'aggiunta di questo tipo di costrutti porta alla fine a risolvere in modo molto brutto e incontrollato eventuali problemi di programmazione che, ricordo, si possono sempre e comunque risolvere in maniera pulita... sempre!!!

Devo altresì ricordare che il GOTO è un'istruzione che riprende comunque una funzione base della programmazione a livello di linguaggio macchina, su cui il riferimento unico è l'assembler. Questo tipo di istruzione è basilare per la costruzione delle routine di bassissimo livello, e non ha alternative.

Detto questo, è ovvio che a parte l'assembler, qualsiasi linguaggio moderno, tanto più con logica ad oggetti, non utilizza nessuna istruzione di questo tipo, perchè oltre ad essere brutta, aiuta a costruire applicazioni da schifo. Tanto per dirla tutta, chi non riesce a risolvere in modo pulito e logico un problema di programmazione, avendo un GOTO a disposizione lo usa, a discapito poi di tutto il resto.

Mi ricordo dei programmi che leggevo a suo tempo (nel giurassico), su cui mi impazzivo perchè pieno di goto e gosub in mezzo a tutto il programma, saltando di palo in frasca senza alcuna logica, con relativi problemi in caso di anomalie.... mah?!? Non voglio tornare a questo, per cui il tempo che Minisini ha utilizzato per implementare queste istruzioni lo considero una gran perdita di tempo.
A mio avviso eliminerei anche tutte le altre istruzioni che contiene oggi Gambas, sostituendole con oggetti ad-hoc, o funzioni...