Gambas – Visual Basic pro Linux

Gambas - Logo
V následujících řádcích bych vám chtěl představit vývojovém prostředí Gambas, jehož nativním jazykem je Basic, který je svou syntaxí částečně podobný Visual Basicu verze 6.0 od společnosti Microsoft.

Pokud ve Visual Basicu umíte programovat, poskytne vám Gambas plnohodnotný RAD (Rapid Aplication Development) nástroj, jehož zvládnutí zabere minimum času. A jestliže programovat začínáte a nosíte v hlavě aplikaci, kterou byste rádi rychle realizovali pod Linuxem, je pro vás zvládnutí Gambasu nejsnadnější a nejrychlejší cestou, jak svou aplikaci vytvořit.

Pokud používáte jiné jazyky, nebo vás programování nechává chladným, můžete si přečtením tohoto článku alespoň rozšířit obzory.

„GAMBAS také znamená BASIC“ dala by se přeložit zkratka, z níž akronym GAMBAS (Gambas Also Mean BASic) vychází. A s níž před téměř třemi lety (vývoj však začal už v roce 1999) spustil svůj, pro Linux jistě významný, avšak zatím ne plně doceněný, projekt, dnes třicetiletý Francouz Benoît Minisini. A protože se projekt právě teď dostal do již dlouho očekávané verze 1.0, nastal čas se s ním blíže seznámit.

Abyste se hned na začátku vyvarovali některých nedorozumění ohledně „Visual Basicu“, který je avizován již v nadpisu, uveďme si nejprve, jak celý projekt charakterizuje sám autor. „Gambas je svobodný vývojový nástroj založený na interpretru jazyka Basic s objektovým rozšířením tak, jak je tomu u Visual Basicu. Gambas však v žádném případě není jeho klon!“ a dále pak ohledně jeho využití pokračuje, „S Gambasem můžete rychle navrhnout GUI své aplikace. Využívat MySQL, nebo PostgreSQL databáze. Řídit KDE aplikace s DCOP (Desktop COmmunication Protokol). Přeložit program do mnoha jazyků. Velmi jednoduše vytvářet síťové aplikace a mnoho dalšího.“

První spuštění

Nadchla vás autorova charakteristika Gambasu? Pojďte se tedy podívat, jak se věci skutečně mají. Stránky projektu Gambas naleznete na adrese http://gambas.sourceforge.net. V sekci „Download“ získáte všechny potřebné informace pro nainstalování Gambasu. S instalací by neměl být žádný problém. Pokud by se však vyskytl, máte možnost ho zkonzultovat v e-mailové konferenci v sekci „mailing list“. Toto samozřejmě platí i o všech ostatních problémech. Konference je živá a pokud na své otázky nenajdete odpovědi v archivu, její uživatelé vám jistě rádi poradí.

Nyní když jste si Gambas nainstalovali, můžete ho spustit. Po spuštění nás přivítá úvodní formulář, který vám umožní založit nový projekt, otevřít stávající projekt, vybrat si z naposledy otevřených projektů, otevřít příklad a nebo aplikaci ukončit. Protože význam zmíněných nabídek je zřejmý, zastavil bych se tu pouze u příkladů.

Gambas IDE

Příkladů nabízí Gambas celkem třicet dva. Jsou rozděleny do devíti kategorií, a to základy, automatizace, databáze, kreslení, spouštění jiných programů, hry, zvuk, síť a různé. Vřele doporučuji si všechny příklady vyzkoušet a prohlédnout si jejich kód. Mě osobně nejvíc zaujal příklad „Databáze“, který v sobě zahrnuje vše, co potřebujeme pro standardní práci s databázemi MySQL, PostgreSQL a SQLite. Mezi další velmi zdařilé příklady bych pak ještě zařadil vytvoření jednoduchého HTML prohlížeče, video přehrávače a a jedné hezké hry typu Solitaire, která vám nejen představí další možnosti Gambasu, ale ještě se u ní bezvadně pobavíte. Mimochodem docela by mě zajímalo, jestli se někomu Solitaire podařilo dohrát tak, aby mu po skončení na hrací ploše zůstal pouze jediný kámen.

Protože příklady nejsou všechno a vy se především chcete zabývat tvorbou vlastních aplikací, musíte si nejprve založit nový projekt. Při zakládání projektu nás vždy uvítá průvodce vytvořením nového projektu. Při tvorbě projektu máte na výběr ze tří typů. Grafického, terminálového a kopie již existujícího projektu. Další nabídky průvodce jsou pak závislé na tom, který typ projektu jste si zvolili. Jelikož se všechny volby dají v budoucnu změnit ve vlastnostech průzkumníka projektu, nebudeme se jimi teď už zabývat.

Po úspěšném založení nového projektu se již dostanete do samotného vývojového prostředí, které se v mnohém neliší od jiných známých IDE (Integrated Development Environment), například Visual Studia. Předtím, než si toto prostředí popíšeme, není od věci si říci, že celé IDE Gambasu je napsáno právě v něm samém. To samo o sobě může říci hodně o vyspělosti a možnostech Gambasu. Pokročilí uživatelé se pak studiem zdrojových textů mohou i mnohému přiučit.

Základní pracovní prostředí, tedy to, s nímž se při tvorbě programu budete setkávat nejčastěji, se v Gambasu skládá z okna průzkumníka projektu (Project Explorer), panelu nástrojů (Tool Box), editoru formulářů (Form Editor), editoru vlastností (Property Editor) a editoru kódu (Code Editor). Krátce si teď jednotlivé výše vyjmenované prvky pracovního prostředí popíšeme.

Průzkumník projektu, hlavní okno Gambasu, slouží k mnoha činnostem. Jeho prostřednictvím můžete otevírat, ukládat nebo zakládat nový projekt. Kompilovat nebo ladit projekt. Zobrazovat další pracovní okna Gambasu. A orientovat se v třídách, formulářích, modulech a datech příslušného konkrétního projektu. Panel nástrojů obsahuje všechny grafické prvky (tlačítka, popisky, list boxy, …) vztažené k vašemu projektu, které dvojklikem přenesete na plochu editoru formuláře. Editor formulářů vám tak ze zvolených prvků v panelu nástrojů umožní lehce vytvořit uživatelsky přátelské GUI aplikace. V editoru vlastností pak můžete snadno upravit mnoho vlastností jednotlivých prvků, a to dle svých představ a požadavků na jednotlivé prvky a formuláře vytvářené aplikace. Prostřednictvím editoru kódu pak aplikaci vdechnete život. Editor kódu umožňuje všechny základní věci pro psaní zdrojového kódu. Samozřejmostí je barevné zvýraznění syntaxe. Oproti Visual Basicu mě velmi potěšilo i párování závorek, což Visual Basic neumožňoval a což mnoho vývojářů mnohokrát nepěkně potrápilo.

Gambas - databazovy manazer

Programování

Ve své praxi jsem zažil mnoho neproduktivních debat o tom, zdali je Visual Basic objektovým, či strukturovaným jazykem. Stejně tak se můžete přít i u Gambasu, v jehož případě je možné psát kód stejně tak s objektovým, jak i se strukturovaným přístupem. Autor projektu však doporučuje, a z jeho příkladů je to znát, aby se v Gambasu programovalo pouze objektově. Možnost strukturovaného programovaní je zachována pouze pro snadnější migraci kódů psaných pro Visual Basic. Z tohoto důvodu jsou zachovány třeba moduly, které by jinak nebyly třeba. Proto až začnete v Gambasu programovat, myslete na tato slova a programujte s objektovým přístupem.

Teď už se však pojďte blíže seznámit s programováním. Jak jsme si již několikrát řekli, Basic Gambasu je v mnoha věcech velmi podobný Visual Basicu. Že tomu tak skutečně je, si za chvíli ukážeme na krátkém příkladu. Na příkladu, který najdeme snad ve všech programovacích jazycích, a to „Hello World“ (Ahoj, světe). Nejprve si uvedeme příklad v Gambasu a poté ve Visual Basicu.

„Hello World“ v Gambasu:

Vytvořte prázdný formulář.

1.Umístěte na něj tlačítko (Button1) a popisek (Label1).
2.A napište následující kód:

SUB Button1_Click()
Label1.Text="Hello"
END

„Hello World“ ve Visual Basicu:

1.Vytvořte prázdný formulář.
2.Umístěte na něj příkazové tlačítko (Command1) a popisek (Label1).
3.A napište následující kód:

Sub Command1_Click()
Label1.Caption="Hello"
End Sub

Jak je vidět, uvedené příklady se od sebe liší nepatrně. A protože již od začátku článku porovnáváme Basic Gambasu s Visual Basicem, pojďte se podívat, v čem důležitém se tyto dva jazyky liší. Podrobnější výčet naleznete v nápovědě, nebo na stránkách projektu. Předtím než začneme s popisem jazykových odlišností, zmínil bych zde ještě dvě odlišnosti, které s jazykem spjaty nejsou, ale je dobré o nich vědět. Visual Basic ukládá definici formuláře do stejného souboru jako kód k němu vztažený. Gambas tyto informace uchovává odděleně v souborech .form a .class. Projekt je v Gambasu definován jako adresář obsahující soubor .project a ostatní soubory v tomto adresáři. Nyní už ale k jazykovým odlišnostem.

Co Gambasu oproti Visual Basicu chybí? V pozastaveném programu nemůžete editovat kód. V Gambasu se základní datové typy (integer, string, … ) do funkcí a procedur předávají hodnotu. Ve Visual Basicu se datové typy standardně předávají odkazem. Pro předání hodnotou musíte ve Visual Basicu uvést ByVal. V Gambasu neexistují globální proměnné. Proměnné v Gambasu musíte vždy deklarovat. Neexistuje nic jako Option explicit. U jednotlivých grafických prvků neexistuje vlastnost, jakou je jejich indexování. Indexování ovládacích prvků je možné pouze v kódu.

A nyní – co má Gambas oproti Visual Basicu navíc? U aplikace ovládané pomocí příkazové řádky (command-line application), nemusí projekt Gambasu obsahovat žádný formulář. V Gambasu můžete tvořit skupiny prvků a k takové skupině pak přiřadit událost. Tím redukujete nadbytečný kód. Zatímco Viusual Basic dokáže spustit externí aplikaci pouze na pozadí, v Gambasu ji za pomoci příkazů shell a exec můžete synchronizovat s hlavní aplikací. Navíc vám Gambas umožní z takové externí aplikace číst její výstup a zapisovat na vstup. Celé to znamená, že až s neuvěřitelnou snadností můžeme vytvořit front-end téměř všem command-line aplikacím. Hezké ukázky na toto téma nalezneme v příkladech v kategorii „Exec“. Dále pak Gambas disponuje možností práce s unixovým rozhraním a speciálními soubory. To znamená, že například můžeme bez problémů pracovat se sériovým nebo paralelním portem. Grafické prvky a menu můžeme v Gambasu vytvářet dynamicky.

Jistě již některé programátory napadla otázka, zdali existuje snadná cesta převodu aplikace napsané ve Visual Basicu do Gambasu? Odpověď zní ano, i ne. Jak jsme si v předchozích řádcích ukázali, odlišnosti existují. Dokonce víc, než jsme si mohli popsat. A také záleží na tom, jaký a jak rozsáhlý projekt chceme převádět. Nicméně existuje malý skript napsaný v perlu, jehož jádrem jsou regulární výrazy a který nám část práce s převodem usnadní. Přesně řečeno: skript nám rozdělí soubor .frm z Visual Basicu na dva soubory .form a .class pro Gambas. Samozřejmě skript nepodporuje všechny prvky a vlastnosti. I přes toto je ale užitečné skript použít. Nalezneme jej pod jménem vb2gb na domovských stránkách projektu Gambas i s popisem instalace a návodem, jak s ním pracovat.

Další otázka se pak může týkat toho, jak hotovou aplikaci dále distribuovat? Průzkumník projektu nabízí v menu „Project“ tři možnosti. Vytvoření spustitelného souboru, pro jehož běh je však podmínkou nainstalovaný Gambas runtime. Vytvoření zdrojového archivu. A nakonec také vytvoření rpm balíčků pro distribuce Mandrake, Red Hat, Fedora a SUSE. V popisu je uváděný i Debian, vybrat se mi ho ale nepodařilo. Pro tvorbu rpm balíčků je v Gambasu připraven průvodce, takže by to pro nikoho neměl být velký problém. Pokud by se však něco nedařilo, opět doporučuji navštívit výše zmiňovanou emailovou konferenci.

Komponenty a průvodci

Důležitou součástí každého vývojového nástroje jsou komponenty, které významně rozšiřují jeho možnosti. V současnosti Gambas nabízí osmnáct komponent, pomocí kterých například můžeme pracovat se zvukem, komprimovat a dekomprimovat soubory, přistupovat k PostgreSQL, MySQL, SQLite databázím, implementovat síťové klienty nebo servery, implementovat GUI třídy založené na knihovně Qt či pracovat s XML soubory. Pokud by vám možnosti současných komponent nevyhovovaly a zvládáte jazyk C nebo C++, můžete si napsat vlastní. Návod jak na to naleznete podrobně na stránkách projektu nebo v nápovědě.

Příjemnou stránkou Gambasu je i jeho editor ikon a databázový manažer. Oba nástroje si teď představíme. Editor ikon, stejně tak i databazový manažer, spustíme z průzkumníka projektu. Předtím, než se dostanete k samotnému kreslení, musíte nejprve zvolit formát výsledného obrázku. Na výběr máte PNG, XPM a JPEG. Dále pak rozměr. Ten si volte buďto ze šesti předdefinovaných rozměrů, nebo jej ručně napište do příslušných textových polí. Pak už jen vložte jméno obrázku a kam ho chcete uložit a můžete malovat. Fantazii se meze nekladou. Pro samotné kreslení pak máte standardní paletu nástrojů jako například tužku, kapátko, plechovku, kreslení základních geometrických obrazců a lupu.

Gambas - Editor ikon

Databázový manažer vám přijde vhod vždy, když budete vytvářet databázovou aplikaci. V současné době umí pracovat s databázovými servery MySQL, PostgreSQL a souborovou databází SQLite. Po spuštění vám manažer nabídne databáze, které máme v systému aktuálně k dispozici. Pokud k nim máme jako uživatelé oprávnění, můžeme s nimi provádět většinu běžných úkonů, tzn. zakládat a rušit jednotlivé databáze a uživatele. Na úrovni jednotlivých databází pak můžeme vytvářet a rušit tabulky a plnit je daty. Dále pak máme možnost pokládat SQL dotazy. Data z takto vrácených dotazů můžeme exportovat do souboru .csv (comma-separated values).

Plány do budoucna

Pokud vám něco z vlastností Gambasu v předchozích řádcích chybělo, může to být tím, že jsem na to jednoduše zapomněl, a nebo tím, že to do Gambasu ještě nebylo implementováno. Pojďte se tedy nyní ve zkratce podívat, jaké jsou po vydání verze 1.0 plány do budoucna. Jak Benoît Minisini píše, plánují se jistá rozšíření jazykové syntaxe především na základě REFs (Request For Enhancement). Dále pak zdokonalení síťové komponenty, přidání SDL komponenty, která by plnila obdobnou funkci jako DirectX pod Windows. Implementace object persistence systém, o kterém se můžete dočíst na http://www.prevayler.org. Přidat report designer. A vytvořit perlovskou komponentu pro regulární výrazy. Pěkné, dá se říct. Pokud se i jen část podaří v nejbližší době realizovat, máme se skutečně na co těšit.

Závěr

Jestliže bych měl nyní Gambas zhodnotit jako člověk, který ho již nějakou chvíli používá, nemohu jinak, než ho pochválit. Myslím, že výše napsané řádky jsou toho důkazem. Na druhou stranu, tak jako téměř u všeho, co se vyvíjí, setkáte se čas od času i s nějakou chybovou hláškou, či se Gambas nebude chovat právě tak, jak by měl – tedy v souladu s dokumentací. Několikrát mě potkal i pád samotné aplikace, ale abych vás nevystrašil, určitě to není častým jevem a pokud nebudete Gambas moc trápit, třeba vás to ani nepotká. Navíc jsem možná smolař, protože mi několikrát spadl i Visual Basic.

Jako poslední informaci bych vám prozradil, že Gambas neznamená jen Basic, ale ve španělštině má význam „garnát“, malý mořský ráček, který je nejenom maskotem Gambasu, ale i součástí mnoha výborných mořských pochutin. No, nedivme se – jak jsme si v úvodu řekli, pan Benoît Minisini je přece Francouz.



Článek vyšel původně v časopisu LinuxEXPRES. Autor článku Lukáš Faltýnek.

Článek je uveřejněn s GNU FDL licencí (anglicky).

You can skip to the end and leave a response. Pinging is currently not allowed.

4 komentáře k “Gambas – Visual Basic pro Linux”

  1. jakub ši napsal:

    Prosím jsem začátečník ve Visual Basicu a taky začátečník v Linuxu. Mam nějákou literaturu pro učení visual basicu ale vše pro windows. Je pro mne tedy asi zbytečné tuto literaturu používat protože jak bylo v članku zmíněno tak se Basic od klasického Visual basicu docela liší. Je tedy nějáká literatura pro basic nebomi bude napomocn a i literatura určena pro windows??
    Děkuji

  2. geniv napsal:

    Ahoj, co se týče M$ visual basicu tak je to uplně mtvá věc, gambas má v reportoáru komponent i na konvertor (jako komponentu) z VB, na VB bych pod linuxem nespoléhal… nejlepší možnost je fakt ten Gambas, je navíc plně oop což se nedá říct o VB, co se ho týče, tak knížky jsou … 2 ale obě ve francouštině, nebo jiném jazyku, teď přesně nevím… ale ja gambas jsou manuálové stránky (pracuji na jejich překladu, ale jde to pomalu v jednom)…

  3. Marlos PRK napsal:

    V Gambasu dělám už nějaký čas a je to super.. dříve jsem profesionálně developil na Visual Studiu a to jak na C# tak i na VB a můžu říct, že gambas je bomba.. jen mám potíž jak ho nainstalit do OpenSUSE 11.4.. dříve jsem používal výhradně UBUNTU a čistej Debian, ale teď jsem na suse protože to je k tomuto datu jediná instalace s GNOME 3.. ale gambas potřebuju.. :(

  4. Nezmar napsal:

    Ahoj, trapim se s Gambasem uz par dni. Potrebuji poradit jak simulovat cliknuti mysi. Proste necham program najed na souradnice a cliknout.

Napište prosím komentář

You must be logged in to post a comment.