Gambas: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Inserito template linguaggi di programmazioni, rimossa sezione Licenza (che compare nel template e nella sintesi in alto).
Nessun oggetto della modifica
 
(91 versioni intermedie di 44 utenti non mostrate)
Riga 1:
{{Linguaggio di programmazione
|nome = Gambas
|immagine = New-logoLogo Gambas.png
|didascalia =
|autore = [[Benoît Minisini]]
|data = 1999
|versione = 3.21.0 (20 ottobre 2025)
|utilizzo = generico
|paradigmi = [[Programmazione orientata agli oggetti]]
|tipizzazione = Forte, statica
|specifiche =
|estensione = <!-- Estensioni comuni dei file sorgenti -->
|influenzato_da = [[Visual Basic]], [[Java (linguaggio di programmazione)|Java]]
|ha_influenzato =
|ha_influenzato = <!-- Lista di linguaggi influenzati dal linguaggio in esame, citare le fonti -->
|implementazione_riferimento =
 
|implementazione_riferimento = <!-- Implementazione di riferimento: compilatore o interprete? -->
|sistema_operativo = Linux
|licenza = [[GNU General Public License|GPL]]
|lingua =
|lingua = <!-- Lingue supportate dall'impl. di riferimento -->
|sito_web =
|sito_web = [http://gambas.sourceforge.net gambas.sourceforge.net]
}}
[[File:Gambas 3.8.0.jpg|thumb|upright=1.2|L'esempio "MineGame" incluso in Gambas 3. In esecuzione è la versione 3.8.0 su sistema Linux Mint 17.2.]]
'''Gambas''' è un [[linguaggio di programmazione]] [[programmazione orientata agli oggetti|orientato agli oggetti]] disponibile per piattaforme [[GNU/Linux]] ed altri [[sistema operativo|sistemi]] [[Unix]] o assimilati la cui sintassi è basata sul linguaggio [[BASIC]].
Gambas indica al contempo sia il linguaggio sia l''''IDE''' ([[Integrated Development Environment|IDE]]), anch'esso scritto in Gambas. L'interprete di Gambas è scritto in [[C (linguaggio)|C]]/[[C++]].
 
La '''IDE di Gambas3''' è interamente tradotta in italiano e inoltre contiene una ''Software farm'' con centinaia di esempi scritti dagli stessi utenti di Gambas, non tutti aggiornati.
[[File:Gambas-Splashscreen.png|thumb|Lo splashscreen di Gambas su Ubuntu 7.10]]
'''Gambas''' è un [[linguaggio di programmazione]] [[programmazione orientata agli oggetti|orientato agli oggetti]] disponibile per piattaforme [[GNU/Linux]] ed altri [[sistema operativo|sistemi]] [[Unix]] o assimilati la cui sintassi è basata sul linguaggio [[BASIC]].
Gambas indica al contempo sia il linguaggio sia l''''IDE''' ([[Integrated Development Environment]]), anch'esso scritto in Gambas. L'interprete di Gambas è scritto in [[C]]/[[C++]].
 
==Storia==
Gambas è nato nel [[1999]] per mano di un [[programmatore]] francese di nome [[Benoît Minisini]] che voleva realizzare un nuovo linguaggio di programmazione per Linux, facile da apprendere e semplice da utilizzare come il [[Visual Basic]] di [[Microsoft]], di cui però non è un clone, come rimarca con decisione il suo autore <ref>[http://gambasdoc.org/help/doc/intro?en&view Gambas non è un clone di Microsoft Visual Basic] {{webarchive|url=https://web.archive.org/web/20110720073735/http://gambasdoc.org/help/doc/intro?en&view |data=20 luglio 2011 }} {{en}}</ref>. Anche se molto spesso si tende ad usare la similitudine con il Visual Basic per spiegare ai profani a cosa più assomiglia Gambas, i punti di contatto sono limitati al linguaggio di base, il BASIC, ma la sintassi dei comandi e la struttura dei programmi è diversa tant'è che un programma dell'uno non può girare sull'altro.
 
Gambas è [[free software]] ed è rilasciatodistribuito sotto [[licenza GPL]].
 
== Funzionalità ==
Con Gambas è possibile:
[[File:Gambas-IDE-grafica.png|thumb|Costruzione dell'interfaccia grafica di un'applicazione in Gambas|200px|right|Costruzione dell'interfaccia grafica di un'applicazione in Gambas]]Con Gambas è possibile:
* realizzare applicazioni ''stand-alone'' con interfaccia grafica ([[GUI]]) basate su [[GTK+]] o [[Qt (toolkit)|Qt]];
* accedere ai database [[MySQL]], [[PostgreSQL]], [[Firebird SQL|Firebird]], [[ODBC]] ed [[SQLite]];
* pilotare le applicazioni [[KDE]] con [[DCOP]];
* realizzare applicazioni 3D con [[OpenGL]];
* creare applicazioni web basate su [[Computer-generated imagery|CGI]];
* interfacciarsi alla cartografia [[OpenStreetMap]] e [[Google_Maps]];
* è possibile tradurre i propri progetti per renderli internazionali.
 
Il suo ambiente di sviluopposviluppo (IDE) è un complesso programma scritto in Gambas stesso che permette all'utente di creare le interfacce dei propri programmi semplicemente inserendo i [[widget (informatica)|widget]] sulle finestre delle applicazioni. L'IDE integra un [[Editor (informatica)|editor]] di codice con funzioni di [[autocompletamento]] per la stesura dei programmi in modo rapido e semplice.
 
== Il linguaggio Gambas ==
Gambas è un linguaggio di programmazione [[programmazione orientata agli oggetti|orientato agli oggetti]] [[programmazione strutturata|strutturato]] ed [[programmazione imperativa|imperativo]], [[tipizzazione forte|fortemente]] e [[tipizzazione statica|staticamente]] [[tipo di dato|tipizzato]].
Ciò significa che il controllo sui tipi dei dati delle variabili è eseguito in fase di compilazione e che il tipo di dati che una variabile conterrà non può essere modificato in fase di esecuzione.
 
Gambas è composto da circa 250 parole chiave e funzioni predefinite per gestire operazioni aritmetiche, manipolare stringhe, input ed output, file, date ed orari, ecc... Offre un gestore completo degli errori, un pieno controllo del processo con gestione tramite pseudo-terminale, pieno supporto all'internazionalizzazione delle applicazioni, possibilità di richiamare funzioni esterne.
 
Gambas è anche un linguaggio pienamente [[programmazione orientata agli oggetti|orientato agli oggetti]]. Gestisce infatti:
* [[Classe_Classe (informatica)|classi]] ed [[Programmazione orientata agli oggetti|oggetti]];
* proprietà, metodi, costanti ed eventi;
* simboli pubblici e privati;
* [[Polimorfismo (informatica)|polimorfismo]];
* [[Ereditarietà (informatica)|ereditarietà]];
* [[Costruttore (programmazioneinformatica)|costruttori]] e [[Distruttore (informatica)|distruttori]];
* [[Iteratore|enumeratori]] ed oggetti ordinabili.
 
Riga 63 ⟶ 65:
 
Infine, una classe nativa denominata Observer permette di intercettare qualunque evento sollevato da un oggetto.
 
=== Limitazioni ===
Gambas non permette di dichiarare dati enumerabili e non supporta le strutture di dati. Inoltre il componente [[GTK+]] non implementa tutte le caratteristiche di quello che gestisce le [[Qt (toolkit)|Qt]] (su cui è basato l'IDE di Gambas) per cui l'indipendenza grafica dei progetti dal desktop utilizzato non è ancora completa al 100%.
 
=== Linguaggio pseudo compilato ===
Gambas non è un [[linguaggio compilato]] come il [[C (linguaggio di programmazione)|C]], dove l'eseguibile viene creato durante la compilazione del sorgente, ma non è neanche un [[linguaggio interpretato]] come il vecchio BASIC, dove ogni istruzione viene analizzata ed eseguita via via che il flusso dell'elaborazione attraversa il listato del codice. Gambas può creare dei cosiddetti "''eseguibili''", che altro non sono che archivi non compressi contenenti l'applicazione scritta in Gambas convertita in [[bytecode]], uno pseudo codice a metà fra il [[linguaggio macchina]] puro ed il codice originale scritto in Gambas, che l'interprete Gambas può eseguire più velocemente rispetto ad una interpretazione del codice comando per comando. Questo modo di operare è comune ad altri linguaggi, ad esempio [[Python]] o [[Java (linguaggio di programmazione)|Java]]: anch'essi traducono il codice sorgente in bytecode la prima volta che viene eseguito il programma, in modo da avere la versione "più veloce" pronta per le successive esecuzioni.
 
=== Versioni ===
Lo sviluppo di Gambas iniziòè iniziato nel 1999 ma la prima versione del linguaggio ad essere pubblicata, la 0.20, videha visto la luce solo il [[28 febbraio]] [[2002]]. Gambas fuè stato sviluppato inizialmente con il supporto per le sole librerie Qt di [[Trolltech]]. A questa versione seguironosono seguiti 3 anni di intenso sviluppo durante i quali Gambas si arricchìè arricchito di comandi, funzioni e componenti fino ad arrivare al [[1º gennaio]] [[2005]], quando fuè stata rilasciatadistribuita la versione 1.0. L'ultimo rilascioaggiornamento delladel serieramo 1.x0 è datato [[16 luglio]] [[2007]], con l'uscita della versione 1.0.18. Gambas 1 non è più supportato.
[[File:Gambas-IDE-codice.png|thumb|L'editor di codice integrato in Gambas|200px|right|L'editor di codice integrato in Gambas]]
Lo sviluppo di Gambas iniziò nel 1999 ma la prima versione del linguaggio ad essere pubblicata, la 0.20, vide la luce il [[28 febbraio]] [[2002]]. Gambas fu sviluppato inizialmente con il supporto per le sole librerie Qt di [[Trolltech]]. A questa versione seguirono 3 anni di intenso sviluppo durante i quali Gambas si arricchì di comandi, funzioni e componenti fino ad arrivare al [[1º gennaio]] [[2005]], quando fu rilasciata la versione 1.0. L'ultimo rilascio della serie 1.x è datato [[16 luglio]] [[2007]], con l'uscita della versione 1.0.18. Gambas 1 non è più supportato.
 
Il [[9 gennaio]] 2005 iniziòè iniziato lo sviluppo di '''Gambas 2''', la nuova versione del linguaggio. Fra le molte novità, comparveè stato aggiunto il supporto alle librerie [[GTK+]], e sono stati aumentati di numero i componenti ed i [[widget (informatica)|widget]] grafici aumentarono di numero. Lo sviluppo duròè durato 3 anni, ed il [[2 gennaio]] [[2008]] venneè stata pubblicata la versione 2.0. L'ultima versione stabile, del ramo 2.0 è la 2.2024.20, è stata pubblicata il [[159 marzo]]aprile [[2010]] <ref>[http://gambas.sourceforge.net/en/changelog22012.html ChangelogGambas della2 versionenon 2.0]è più {{en}}</ref>supportato.
Il [[24 novembre]] 2010 è stata rilasciata la versione stabile 2.22.0.
 
'''Gambas 3''' ha visto la luce il 31 dicembre 2011. L'IDE è stata ridisegnata e basata sulle librerie QT e diversi componenti sono stati rivisti.
L'8 aprile 2011 è stata rilasciata la versione stabile 2.23.0.
Il 27 maggio è stata rilasciata la versione stabile 2.23.1
 
=== Esempi di codice ===
La versione 3.0.0 con l'IDE ridisegnata e basata sulle librerie QT4 è finalmente disponibile, dal 31 / 12 / 2011.
Ecco il classico '''[[Hello World'''world]] in Gambas:
 
<syntaxhighlight lang="vb">
=== Esempi di codice ===
Ecco il classico '''Hello World''' in Gambas:
PUBLIC SUB Main()
PRINT "Hello world!"
END
</syntaxhighlight>
 
L'esempio qui sopra stampa il messaggio "Hello World!" su terminale.
 
Questo è lo stesso esempio ma sfruttando l'interfaccia grafica:
 
<syntaxhighlight lang="vb">
PUBLIC SUB Form_Open()
Message.Info("Hello World!")
END
</syntaxhighlight>
L'istruzione Message.Info fa apparire una finestra di dialogo che visualizza il messaggio: Va inserita all'interno dell'evento ''Open()'' del ''form'' principale del programma.
 
L'istruzione <code>Message.Info</code> fa apparire una finestra di dialogo che visualizza il messaggio: Va inserita all'interno dell'evento ''Open()'' del ''form'' principale del programma.
 
Gambas supporta i [[Ciclo for|cicli.]], Eccola cui sintassi di un ciclo FOR..NEXT all'operaè la seguente:
 
<syntaxhighlight lang="vb">
Gambas supporta i cicli. Ecco un ciclo FOR..NEXT all'opera:
PUBLIC SUB Main()
DIM variabile AS Integer
FOR variabile = 0 TO 10
PRINT "Numero " & Str$(variabile)
NEXT
END
</syntaxhighlight>
 
Il programma stampa su terminale il valore della variabile ''variabile''. Qui si nota anche la tipizzazione forte di Gambas: ''variabile'' ed il suo tipo di dati devono essere definiti prima del suo utilizzo.
Riga 115 ⟶ 118:
 
=== Il compilatore ===
Il '''compilatore''' è un eseguibile scritto in C. E'È capace di compilare circa 128.000 linee di codice in un secondo su un AMD Athlon 2000+. Questa velocità permette un processo di sviluppo molto rapido perché si riduce il tempo di test rispetto a linguaggi prettamente compilati come il C. Il compilatore è capace di gestire e compilare le stringhe di traduzione per l'internazionalizzazione dei progetti grazie a strumenti quali [[Gettext]].
Il compilatore crea un file composto da bytecode, uno speciale codice a metà fra Gambas ed il codice macchina puro, più veloce da eseguire rispetto al linguaggio di partenza.
 
Riga 125 ⟶ 128:
 
== Origini del nome ==
La scelta del nome è curiosa. Il creatore di Gambas notò che diversi progetti software avevano nomi di animali (es.: [[Bonobo (informatica)|Bonobo]]), ed i linguaggi di programmazione non sfuggivano a questa regola (es.: [[CAML|Camel]]). Egli voleva però anche un nome che ricordasse ciò che il suo linguaggio era, vale a dire un derivato del BASIC. Fu scelto perciò '''GAMBAS''', che è l'[[acronimo ricorsivo]] di '''''G'''ambas '''A'''lmost '''M'''eans '''BAS'''IC'' (Gambas più o meno significa BASIC) ma che è anche il nome di un animale, dato che la parola in spagnolo significa ''gambero''<ref>[http://gambasdoc.org/help/doc/faq?en&view Le origini del nome spiegate dall'autore stesso di Gambas] {{webarchive|url=https://web.archive.org/web/20110726073926/http://gambasdoc.org/help/doc/faq?en&view |data=26 luglio 2011 }} {{en}}</ref>.
 
== Note ==
<references/>
 
== Altri progetti ==
{{interprogetto|commons=Category:Gambas}}
 
== Collegamenti esterni ==
* {{cita web|https://gitlab.com/gambas/gambas|Gambas Source Code}}
*[http://gambas.sourceforge.net Sito ufficiale]
*[http {{cita web|https://gambasdocgambaswiki.org/help Documentazionewiki|Wiki ufficiale] in inglese}}
* {{cita web|https://lists.gambas-basic.org/archive/|Mailing Lists}}
*[http://www.gambasforge.net/cgi-bin/index.gambas Sito contenente i sorgenti di applicazioni scritte in Gambas]
*[http {{cita web|https://www.gambas-it.org Sito/wiki/index.php/Guide_della_comunit%C3%A0|Wiki della comunità italiana di Gambas]}}
 
{{Portale|informatica|software libero}}
{{Principali linguaggi di programmazione}}
{{Portale|Informatica}}
 
[[Categoria:BASIC]]
[[Categoria:Linguaggi_di_programmazione]]
[[Categoria:Software libero]]
[[Categoria:Ambienti di sviluppo]]
[[Categoria:BASIC]]
 
[[ar:جامباس]]
[[ca:Gambas]]
[[de:Gambas (Programmiersprache)]]
[[el:Gambas]]
[[en:Gambas]]
[[eo:Gambaso]]
[[es:Gambas]]
[[fi:Gambas]]
[[fr:Gambas (langage)]]
[[he:גאמבס]]
[[id:Gambas (perangkat lunak)]]
[[ja:Gambas]]
[[la:Gambas]]
[[lt:Gambas]]
[[nl:Gambas]]
[[pl:Gambas]]
[[pt:Gambas]]
[[ru:Gambas]]
[[sv:Gambas]]
[[tr:Gambas]]
[[uk:Gambas]]
[[zh:Gambas]]