Tak se po dlouhé (více jak 10-ti leté) odmlce v IT rozmýšlím, v čem budu dál programovat. Ne že bych se s tím plánoval nějak významněji dál živit (i když na druhou jeden dopředu nikdy neví), ale tak nějak jsem na tom závislý – když si jednou týdně nenapíšu aspoň hello world, mám absťák :).
Nutno dopředu říci, že k tomu přistupuji s jistými předsudky. Začínal jsem na Atari s BASICem, dost jsem toho napsal v C pod Linuxem a asi nejvíc v PHP. Kdysi jsem dělal i HTML stránky, ale to bylo ještě předtím, než přišli CSS. Pak už jsem na to měl lidi :). O dnešní verzi HTML toho už moc nevím a nijak zvlášť po tom ani netoužím. Už jsem si ho v životě užil dost. Trochu se orientuji i třeba v C++, ale tento moloch nepovažuji za vhodný prostředek pro moderní vysokoúrovňové programování. Taky moc nemusím Javu a podobné jazyky. Zato bych byl rád, kdyby to s (víceméně) jedním kódem šlo přeložit pod Windows, Linux, macOS, Android, iOS a nejlépe i použít jako web app. A, i když to už jsem asi trochu moc rozmlsaný, rád bych vizuální návrh GUI, pokud možno s propojením na obsluhu událostí ve výkonném kódu. Jsem totiž maličko líný :).
S vlastním programovacím jazykem jsem měl docela jasno. Python. Je jednoduchý, přehledný, multiplatformní, vysokoúrovňový a snad jediný, který se odvážil zbavit závorek pro definici bloků, které vám jinak v C-like jazycích zbytečně zabírají třetinu obrazovky – no, když to shrnu, prostě vypadá, jako bych ho navrhli přímo pro mě :). Také je dobře podporovaný dalšími knihovnami a existují k němu na internetu kvalitní kurzy (dokonce i češtině, viz třeba: Nauč se Python nebo Online kurzy programování Python – Největší český e-learning (itnetwork.cz)). Zcela vynikající je pro analýzu dat a strojové učení či AI. A, v neposlední řadě, programátoři v Pythonu jsou velmi dobře placení :).
Nicméně, v čem budu dělat ta okýnka pro frontend? Začal jsem tedy zkoumat, co je kde k mání. Samozřejmě jsem zdaleka nestihl projít všechno a ani se do jednotlivých řešení hlouběji ponořit, nicméně se podělím o to, k čemu jsem zatím došel. Říkám si, že když k tomu ostatní, co do toho vidí hlouběji, přidají své komentáře, může to mě i dalším pomoci v rozhodování, do čeho se pustit.
- Python nad Qt propojený přes PyQt nebo PySide v IDE Qt Creator byla logicky moje první volba, když jsem chtěl používat Python. Qt a Qt Creator je nativně v/pro C++, ale kasá se i podporou Pythonu. No, v zásadě to v něm propojit jde – ovšem ručně. Většina intuitivní podpory IDE při tvorbě app je pryč, pokud nepoužijete C++.
- Takže jsem šel zkusit MS Visual Studio. Vzpomínám si, že tehdy v tom člověk naklikal app s GUI třeba ve Visual Basicu, i když o tom nic moc nevěděl. Doufal jsem v něco podobného, ovšem modernějšího a přenositelného mezi platformami. I MS Visual Studio se kasá podporou Pythonu (resp. podporou skoro všeho). A skoro všechno tam skutečně jde – prokonzolovéapps. Pokud ale chcete současně vizuální návrh GUI app a přenositelnost mezi platformami, jste v podobné situaci jako u předchozího řešení. Jde to při použití C++. Možná i v JS, ale to jsem moc dobře nepochopil. Nebo pokud app bude pouze pro Windows (platforma UPW se to tuším jmenovalo). Nejrozumnější mi přišlo použít .NET core v C# (rozhodně lepší C# než C++; runtime .NETu musíte samozřejmě tahat sebou – třeba na Linuxu se to myslím jmenuje Mono – ale prý to šlape docela slušně), nicméně ani v tom ta vizuální podpora propojení návrhu s výkonným kódem není nic převratného (pro porovnání, vzpomínáte třeba na Delphi?). Nicméně jsem se pomalu začal smiřovat s tím, že pro frontend budu potřebovat jiný jazyk a to propojení výkonného kódu s GUI nepůjde udělat jenom kliknutím.
- Pak jsem při zkoumání správce hesel BitWarden narazil na platformu Electron + JS/HTML/CSS (moje specializace je cyber security, to programování mám zatím tak spíše pro zábavu). V zásadě jde o HTML5 stránky, oživené JS, s přístupem k ostatním funkcím systému pomocí knihovny nodeJS. A Electron pak z toho udělá desktopové aplikace – tím, že vytvoří okno s containerem prohlížeče a zprostředkovává komunikaci. Díky tomu je to dokonale přenositelné kamkoli, kde funguje prohlížeč. Je to trochu líné (i když pro rychlostně kritické funkce snad existuje i nějaká možnost ten JS něco jako předkompilovat), ale použitelné. A z JS už dnes také existuje rozhraní snad pro cokoliv. Pokud už umíte dobře JS, HTML5 a CSS (nebo pokud alespoň toužíte se ho naučit), přijde mi to jako skvělá volba, jak svoji tvorbu snadno rozšířit i na desktopové aplikace. Já to po tom buhužel zase tak moc netoužím 🙁
- Načež jsem (při zkoumání dalšího správce hesel, tentokrát AuthPass 🙂 ) narazil na platformu Flutter v programovacím jazyce Dart. Jako IDE jsem použil Android Studio. Na rozdíl od předchozího to lze přeložit pro všechny platformy do nativního kódu (pro webové aplikace se to transpiluje do JS). Existují i webové apps pro vizuální návrh GUI (https://flutterflow.io/, https://flutterstudio.app/), ale ještě jsem je nestihl prozkoumat. Ne že bych byl z Dart tak nadšený jako z Pythonu, ale lepší než Java, C++ nebo čistý JS. Možná by to do budoucna mohlo být pro mě to pravé ořechové pro tvorbu GUI / frontendu. Takže si s tím teď po chvilkách hraju :).
Komentáře