Hlavní navigace

Nový český programovací jazyk

Ondřej Tučný

Je to už několik let, co se můj kolega Aleš Procháska a já systematicky věnujeme vývoji vlastního programovacího jazyka a jeho překladače, na kterém spolupracuje ještě několik dalších programátorů. Z původně malého projektu pro vlastní potřeby firmy se stal poměrně rozsáhlý projekt, který už před časem začal vystrkovat růžky na světlo světa. Co je ten Flex vlastně zač?

Je to už několik let, co se můj kolega Aleš Procháska a systematicky věnujeme vývoji vlastního programovacího jazyka a jeho překladače, na kterém spolupracuje ještě několik dalších programátorů. Z původně malého projektu pro vlastní potřeby firmy se stal poměrně rozsáhlý projekt, který už před časem začal vystrkovat růžky na světlo světa.

Co je ten Flex vlastně zač? Je to univerzální programovací jazyk s konzistentním designem, který nabízí všechny dobře známé jazykové konstrukce a klade důraz na takové věci, jako je silná typová kontrola, dobře vyřešená multiplatformita a objektové principy důsledně prostupující celý jazyk. Příznivci C++ a podobných jazyků budou asi mírně zklamáni, že Flex místo složených závorek a dalších speciálních znaků preferuje delší slovní vyjádření, například pro zmíněné { } pomocí klíčových slov begin…end. Svou syntaxí se Flex řadí do stejné rodiny jazyků jako Pascal nebo Ada.

Pokud pominete tento nezvyk, zjistíte, že základní návrhová kritéria Flexu jsou orientována zejména na bezpečnost programování, prevenci častých chyb, přehlednost programu (proto jsme zvolili „ukecanější“ syntaxi) a sjednocování jazykových konstrukcí. Díky tomu je programování ve Flexu jednodušší než v jiných, na bezpečnost orientovaných jazycích, jako je například Ada. Flex je komplexnější jazyk než třeba Java nebo C# a přináší více možností bez nutnosti používat mohutný aparát knihoven i na tak základní věci, jako je multitasking.

Na závěr základního povídání o Flexu, než přejdeme k modFlexu – implementaci Flexu pro web server Apache – si ukážeme jednoduchý příklad (nebojte se, nebude to další Hello World :-)), jak takový Flexový program vypadá:

-------------------------------------------------
program simple_get =
-- simple http get.
-------------------------------------------------

with
  standard,
  standard.characters,
  standard.streams,
  standard.sockets,
  standard.sockets.streams,
  standard.console;

var
  sock    : c_socket_stream;
-- komunikační socket
  wr      : c_stream_text_writer;
-- formátovač pro zápis
  re      : c_stream_text_reader;
-- formátovač pro čtení
  decoder : aliased c_character_decoder_utf8;
-- UTF-8 dekodér
  encoder : aliased c_character_encoder_utf8;
-- UTF-8 enkodér
  eod     : t_logical;
-- příznak konce dat
  line    : t_char32lstr;
-- načtený řádek dat

begin
  -- otevřít spojení na lokální web server a připojit formátovače
  sock.connect(ip_localhost,80);
  wr.init_text_writer(^c_output_stream:(sock),^encoder);
  re.init_text_reader(^c_input_stream:(sock),^decoder);

  -- odeslat primitivní HTTP hlavičku a zavřít výstupní stream
  c_text_writer:(wr).write_line('GET / HTTP/1.0');
  c_text_writer:(wr).write_line('');
  c_output_stream:(sock).close;

  -- přijímat od serveru data, dokud nezavře spojení
  loop
    eod:=c_text_reader:(re).read_line(line);
    write_line(line)
    until eod;

  -- zavřít vstupní stream
  c_input_stream:(sock).close;
  end simple_get; 

Ukecanost Flexu, která se spolu s dalšími pokročilými vlastnostmi nejlépe zúročí u delších než párřádkových prográmků, je na první pohled patrná. Syntaxe je ovšem navržena natolik intuitivně, že každému, kdo už má aspoň nějaké zkušenosti s programováním, nebude trvat dlouho naučit se ji i bez sáhodlouhého studování manuálů.

Složitější příklady čtenáři mohou nalézt na stránkách programu www.modflex.com. Mimochodem, překladač Flexu je jako každý pořádný překladač dospělého jazyka napsán sám v sobě.

modFlex – varianta Flexu pro psaní webů

Nejnovější distribuce překladače Flexu se jmenuje modFlex a představuje modul pro web server Apache pod Windows. modFlex umožňuje ve Flexu psát dynamické webové stránky stejně jako například v PHP. Velkou výhodou modFlexu oproti jednoúčelovým skriptovacím jazykům je to, že nabízí pokročilejší programovací jazyk, který za programátora hlídá mnohem více věcí, a může tak celkově urychlit vývoj a snížit pozdější náklady na opravování špatně odladěných webů.

Protože je PHP velmi rozšířené a představuje základ pro každého, kdo dnes chce programovat trochu chytřejší weby, rozhodli jsme se nabídnout programátorům podporu rozšiřujících PHP knihoven, které důvěrně zná velké množství vývojářů. V základní distribuci modFlexu tak naleznete Flexový binding na tyto knihovny a můžete začít programovat bez nutnosti učit se úplně jiné knihovny.

Provoz webu si dnes už málokdo dokáže představit bez odpovídající hostingové služby. Pozadu nezůstává ani modFlex, pro který je připraven vývojářsky orientovaný hostingový server. Píši vývojářsky orientovaný proto, že na rozdíl od jiných hostingových služeb se nezaměřuje na množství doplňkových služeb, ale poskytuje pro vývojáře důležité základní funkce – například verzovací systém Subversion, kvalitní databázi FireBird a velkou diskovou kvótu pro každý projekt. Do budoucna si představujeme vývoj hostingovému serveru směrem ke komunitnímu vývojářskému serveru, jako je Tigris nebo Sourceforge.

modFlex je zatím čerstvý produkt, má své nedokonalosti, uživatel například občas narazí na neimplementované rysy jazyka, představuje ovšem první kámen skládačky produktů, kterou chceme kolem Flexu vybudovat. Pokud není tvorba webu zrovna váš denní chléb, můžete si s pomocí windowsového překladače Flexu přiloženého v distribuci modFlexu vyzkoušet programování nativních aplikací pro Windows. V nejbližší době bude též ke stažení samostatná distribuce pro vývoj ve Windows. Součástí je i binding na celé Win32 API.

Málem bych zapomněl poznamenat, že modFlex je přirozeně distribuován zdarma. Sice bez zdrojových kódů překladače, zato s knihovnami se slibným potenciálem, a navíc je pro programátory k dispozici celá řada služeb včetně emailové technické podpory – též zdarma.

Open source projekty pro modFlex

Pro modFlex zatím kromě vzorových aplikací moc živých projektů nevzniklo – přeci jenom se jedná jen o pár dní starou novinku! modFlex už tím, že je distribuován zdarma, chce být přátelský k open source vývojářské komunitě a podporovat projekty, které kolem něj začnou vznikat. Jedna z věcí, kterou chceme zásadním způsobem vylepšovat, jsou možnosti vývojářského hostingového serveru.

Nová verze vývojářského serveru, tentokrát již naprogramovaná celá přímo v modFlexu (současná verze je z poloviny tvořena bashovými skripty), je jednou z aplikací, na které bychom rádi spolupracovali s nezávislými programátory. Další možností je například redakční systém nebo jiné typické aplikace dnes dostupné pro PHP, které dále zpříjemní a zrychlí vývoj webů pod modFlexem.

Pokud se vám tedy povídání o modFlexu až dosud líbilo a chcete si ho vyzkoušet, navštivte naše stránky www.modflex.com. Pokud se budete chtít podílet na vzniku nějakého open source projektu ve Flexu, dejte nám vědět! V každém případě se můžete spolehnout na maximální podporu přímo od vývojářů.

A co Linux?

Zatím jsme se bavili pouze o modFlexu, který běží pod Apachem pro Windows. Ale co Linux, přesněji jeho x86 verze? Podpora pro tento operační systém zatím pro Flex není hotová, ale představuje pro nás jednu z velkých priorit. K tomu, aby Flex běhal i na x86 Linuxu, jsou potřeba dvě zásadní věci – generátor spustitelných souborů ve formátu ELF a binding na API Linuxu.

Obě komponenty pro Flex existují v prototypové verzi, takže je jen otázkou času, kdy spatří světlo světa i v ostré distribuci. Zatím můžeme slíbit port modFlexu pro linuxového Apache na podzim letošního roku. A jak je u flexového týmu dobrým zvykem, nepůjde jen o linuxovou verzi modulu pro Apache, ale i o nativní překladač pro tuto platformu umožňující programování libovolných aplikací.

Související odkazy:

Našli jste v článku chybu?