Lukáš Faltýnek: Gambas: Visual Basic pro Linux

Thursday, January 26, 2006 ·

Jak již název článku napovídá, v následujících řádcích se budeme bavit o vývojovém prostředí Gambas, jehož nativním jazykem je Basic, který je svou syntaxí částečně podobný Visual Basicu do 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.

Abychom se hned na začátku vyvarovali některých nedorozumění ohledně „Visual Basicu“, který avizujeme již v nadpisu, pojďme si nejprve uvést, 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ž jsme si Gambas nainstalovali, můžeme ho spustit. Po spuštění nás přivítá úvodní formulář, který ná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ů.

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 my se především chceme zabývat tvorbou vlastních aplikací, musíme 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áme 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 jsme 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ž dostaneme 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í začneme popisovat, není od věci si říci, že celé IDE Gambasu je napsáno právě v něm samém. To nám samo o sobě může říci hodně o jeho vyspělosti a možnostech. 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ůžeme 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 našemu projektu, které dvojklikem přeneseme na plochu editoru formuláře. Editor formulářů ná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ůžeme 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 vdechneme ž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.

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ůžeme 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ďme 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ďme se podívat, v čem důležitém se tyto dva jazyky liší. Podrobnější výčet nalezneme 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ůžeme 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íme ve Visual Basicu uvést ByVal. V Gambasu neexistují globální proměnné. Proměnné v Gambasu musíme 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ůžeme tvořit skupiny prvků a k takové skupině pak přiřadit událost. Tím redukujeme 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ůžeme synchronizovat s hlavní aplikací. Navíc ná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 dostaneme k samotnému kreslení, musíme nejprve zvolit formát výsledného obrázku. Na výběr máme PNG, XPM a JPEG. Dále pak rozměr. Ten si volíme buďto ze šesti předdefinovaných rozměrů, nebo jej ručně napíšeme do příslušných textových polí. Pak už jen vložíme jméno obrázku a kam ho chceme uložit a můžeme malovat. Fantazii se meze nekladou. Pro samotné kreslení pak máme standardní paletu nástrojů jako například tužku, kapátko, plechovku, kreslení základních geometrických obrazců a lupu.

Databázový manažer nám přijde vhod vždy, když budeme 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í ná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.

Odkazy:

Stránka projektu

Článek vyšel původně v časopisu LinuxEXPRES, některé informace nemusejí být aktuální.

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



Lukáš Faltýnek

0 comments:

Články dle data



Učitelské listy

Nabídka práce

Česká škola - portál pro ZŠ a SŠ

Česká škola poskytuje svým čtenářům diskusní prostor k vyjádření názorů na školskou problematiku. Tyto příspěvky se nemusí shodovat se stanoviskem redakce České školy a jsou uveřejňovány jako podnět k dalším diskusím.

Obsah článků nemusí vyjadřovat stanovisko redakce nebo vydavatele Albatros Media, a.s.


Všechna práva vyhrazena.

Tento server dodržuje právní předpisy
o ochraně osobních údajů.

ISSN 1213-6018




Licence Creative Commons

Obsah podléhá licenci Creative Commons Uveďte autora-Neužívejte dílo komerčně-Nezasahujte do díla 3.0 Česká republika, pokud není uvedeno jinak nebo nejde-li o tiskové zprávy.



WebArchiv - archiv českého webu



Tyto webové stránky používají k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Informace o tom, jak tyto webové stránky používáte, jsou sdíleny se společností Google. Používáním těchto webových stránek souhlasíte s použitím souborů cookie.