A Falcon programozási nyelv

Bevezetés

A Falcon egy nyílt forráskódú egyszerű, gyors, hatékony és könnyen elsajátítható programozási nyelv. A Falcon egy rendkívül rugalmas scriptnyelv, hat programozási paradigmát támogat (procedurális, objektum orientált, prototípus orientált, funkcionális, üzenet vezérelt és tabuláris), így bárki számára megfelelő lehet többszálú hatékonyságkritikus alkalmazások elkészítéséhez.

A nyelv megálmodója Giancarlo Niccolai 2007 februárjában kezdte elkészíteni a nyelvet régebbi ötletei alapján. Jelenleg (2009. jún.) a nyelv a 0.9.2-es verziónál tart, rengeteg érdekesség található benne és már gyakorlatban is használható, azonban a könyvtárkészlete egyelőre meglehetősen hiányos.

A Falcon egy gyengén típusos scriptnyelv akárcsak a Python, Ruby, PHP, Lua és a Perl. A nagy konkurencia ellenére vannak előnyei a nyelvnek a többihez képest. Összehasonlítás a többi nyelvvel:

  • Dokumentumba ágyazhatóság (+)
    Falcon kódrészletek beágyazhatóak szöveges dokumentumba (pl. HTML), így a PHP-hez hasonlóan dinamikus tartalmú dokumentumok hozhatóak létre.
  • Natív reguláris kifejezések (-)
    Sajnos a nyelv nem támogatja a nyelvi szinten a reguláris kifejezéseket (A Perl és a Ruby igen).
  • "Korutinok" (+)
    Ezt a könnyűsúlyú párhuzamosítást a Ruby-hoz és a Lua-hoz hasonlóan a Falcon is támogatja.
  • Többszálúság (+)
    Ugyan a Python és a Perl részben támogatja a valódia párhuzamos programozást, de ez az esetükben erős kompromisszumokkal jár. A Falcont viszont scriptnyelvek közül egyedülálló módon erre a célra tervezték.
  • Beágyazhatóság (+)
    A Falcon a Luához hasonlóan egy viszonylag "vékony" script engine-nel rendelkezik, aminek következtében sokkal könnyebben beágyazható idegen nyelven írt alkalmazásokba.
  • C DLI (+)
    Akárcsak a Python és a Lua, a Falcon is rendelkezik egy speciális felülettel (Dinamic Library Interface), amin keresztül C nyelvű könyvtárak használhatóak. Ugyan a Falcon megoldása nem olyan teljes mint a másik két nyelvé, de sokkal erőforrásgazdaságosabb és egyszerűbb, mint a Python Ctypes megoldása, és sokkal biztonságosabb, mint a Lua5 dinamic library loader-e.
  • Natív többnyelvűség (+)
    A többi nyelvvel ellentétben a Falcon természetesnek veszi, hogy egy alkalmazás képes legyen több nyelven is "megszólalni". Egyrészt a nyelv azonosítói leírhatók bármilyen ismert (vagy ismeretlen) nyelven aminek jelkészlete megtalálható az UTF-8 karakterkészletben, így bármelyik programozó képes saját nemzeti nyelvén programozni. Másrészt nyelvi szinten támogatott elem a polimorfikus string, amivel könnyedén készíthetünk többnyelvű alkalmazást.
  • Fordítási idejű metaprogramozás (+)
    A Falcon támogatja mind a C-hez hasonló makrókat, mind a C++ sablonjaihoz hasonló generikus metaprogramozást. Ez meglehetősen szokatlan dolog egy scriptnyelvtől, de pl. a Falcon lehetővé teszi, hogy néhány számítást már fordítási időben végrehajtsunk és az eredmények minden további lefutáskor elérhetőek legyenek.
  • Programozási paradigmák (+)
    Az összehasonlítás többi nyelve részben egészben támogatja a procedurális(Python, PHP, Lua, Perl), objektumorientált(Python, Ruby, PHP5, Perl), prototípus orientált programozást(Python, Lua, Perl). A Falcon ezeken kívül még lehetőséget biztosít a funkcionális, tabuláris (vagy táblázat orientált) és az üzenet orientált (az aspektus orientált programozás kiterjesztése) programozást. A multiparadigma miatt a Falconnak minden esélye megvan, hogy népszerű nyelvvé nője ki magát.
  • A Virtuális Gép sebessége (+)
    Mérések bizonyítják a Falcon nyelv előnyét sebesség terén. A Falcon 2x gyorsabb a PHP5-től, 2.5x gyorsabb a Pythontól, 3x gyorsabb a Perltől és 10x gyorsabb a Rubytól. Ezen a téren csupán a Luától van lemaradva ami megközelítőleg 20%-al gyorsabb mint a Falcon. A mérések az ún. majdnem üres ciklusok száma per másodperc technikával készültek (ld. részletesebben a Falcon honlapján).
  • Futásidejű programozás (+)
    A Falcon itt is előnyben van a vetélytársaival ellentétben, ugyanis hasonlóan a mai modern nyelvekhez (pl. Java, C#) támogatja a futásidejű programozást ún. Reflection-ök segítségével.
  • Nyelvi könyvtárak (-)
    Mivel a nyelv viszonylag új keletű és egyelőre csupán egy-két tucat programozó fejleszti, nem alakult ki gazdag sokrétű nyelvi könyvtárrendszer. Jelenleg pont ezen dolgoznak a nyelv készítői és remélhetőleg az 1-es verzióra sikerül faragniuk ebből a hátrányból. Ezt a hátrányt a készítők a már működő dynlib könyvtárral és a készülő falbind könyvtárral enyhítik. Az előbbi teljes kompatibilitást eredményez a C nyelvi könyvtáraival. Ezek egyszerűen és közvetlenül elérhetőek. A falbind jelenleg készül és igéretei szerint lehetővé teszi többek között a QT és a GTK használatát Falconnal. Remélhetőleg ez a két könyvtár áttörést fog jelenteni a nyelv számára.

  •