Hlavní navigace

Senzory Martina Malého: Jaký jazyk bude používat Internet věcí

Martin Malý 3. 8. 2016

Jaký jazyk se bude používat za pět let? A jaký budu používat já? Před pěti lety to vypadalo na JavaScript, před deseti na PHP, ale upřímně: nevím.

Není nad pořádný flame o programovacích jazycích…

Promiňte, ale dva a půl roku jsem vedl magazín Zdroják, tehdy ještě pod stejným vydavatelem, jako má Lupa, a v komentářích jsem se dozvídal naprosto skvělé myšlenky. Třeba že vymýšlet cokoli po Javě nemá smysl, protože Java je univerzální stříbrný projektil, zlaté kladívko a neprůstřelný pancíř, univerzálně vhodná pro bankovní systémy, webové aplikace i jednočipy. Všechno ostatní je proto jen hype, reklamní bublina a nesmysl, módní vlna, kterou stejně nikdo používat nebude. Jakmile se takový fundamentalista objevil v komentářích, bylo o zábavu postaráno.

Já popravdě přiznávám, že netuším, jaký jazyk se bude používat za pět let. Natož jaký budu používat já. Před pěti lety to vypadalo na JavaScript, před deseti na PHP, ale upřímně: nevím. Možná bych měl v tomto roli jednodušší, kdybych taky věřil na všespásnost Javy, ale k tomu bych musel mít trošku sklony k náboženskému myšlení, a to nemám.

Když se mě ptají lidé, co tedy bude tím budoucím jazykem pro IoT, odpovídám: Nevím. Moje “nevím” je velmi kvalifikované a fundované, není to proto, že bych o tom byl líný přemýšlet, ale proto, že jsem o tom přemýšlel opravdu důkladně.

Je téměř jisté, že za pět let bude stále ten nejmainstreamovější jazyk připomínat svou syntaxí Céčko. Budou tam složené závorky a středníky a tečková notace a tak. Není to proto, že by tahle syntax byla nejlepší (to není), nebo že by byla skvěle parsovatelná (to taky není), ale je to proto, že ji skoro všichni programátoři znají, protože se s ní setkali. Vezměte si: C, C++, C#, Java, JavaScript, PHP – všechno má velmi podobný kód. S trochou fantazie do toho můžeme započítat i Python, když si k odsazení domyslíme složené závorky.

Budou to jazyky, co budou vládnout IoT? Velmi pravděpodobně ano, ale je potřeba říct jednu zásadní věc: Internet věcí má dva konce, totiž “internet” a “věci”, jestli to takto můžu zjednodušit. Na jednom konci jsou malé elektronické věcičky, s malými procesory a se specifickými požadavky, a na druhé straně jsou velké cloudové aplikace s obrovskými datovými toky. Na té “internetové” straně se asi žádných překvapení nedočkáme – tam se dál pojedou webové technologie jako dřív, jazyky zůstanou stejné, jen se budou vyvíjet stejně jako web.

Co ale na té “věcné” straně? Tam už to dnes vypadá na poměrně velký chaos a na bonanzu nových jazyků, které (ve velké většině) zazáří a pak pohasnou, oprašovány malou skupinkou nadšenců. Tato strana IoT má totiž specifické požadavky a většinou k nim patří: nízká spotřeba, málo RAM, málo ROM, jednojádro, relativně nízké frekvence.

Samozřejmě můžete stavět systémem “co čidlo, to BeagleBoard s ARMem a Linuxem”, a pak je jedno, v čem se to bude ovládat, jestli v Pythonu, JavaScriptu nebo třeba ve Scale. Ale když přijde řeč na menší procesory, zní odpověď jednoznačně: Céčko, popřípadě assembler. Jenže céčko je pro moderního programátora pořád velký low level a assembler ještě horší. Takže se jako houby po dešti vyrojily nové jazyky a každý z nich doufá, že dokáže prorazit.

Příkladem může být jazyk B# (čtěte B sharp). Jak název napovídá, bude mít cosi společného s C#, a je tomu přesně tak: B# je v podstatě C#, ořezané o některé vymoženosti, které nejsou moc kompatibilní s “low power small footprint” systémy. Běží nad virtuálním strojem EVM (Embedded Virtual Machine), který potřebuje ke svému běhu 24 kB FLASH a 2 kB RAM (tedy i malé ARMy mají dostatečnou kapacitu). S tímto jazykem je ale drobný problém: můžete najít seriál “jak programovat v B#”, ale tím to docela hasne a dál nic.

Zajímavé mohly být i jazyky BitC, Cyclone – takové “bezpečné C”, nebo Timber, založený na reaktivním paradigmatu. Všechny se tvářily tak, že jsou dobrým řešením pro embedded zařízení, ale všechny nějak tak po pár letech zemřely.

Drží se jazyk D a má i nějaké reálné aplikace. Google s Nestem navrhují Brillo, Apple nabízí Swift, ale nakonec rozhodne trh, a pravděpodobně rozhodne opět tak, jako rozhodl vždy, totiž že nezvítězí technicky nejlepší a nejvyspělejší řešení, ale to, co budou používat “skoro všichni”, ačkoli na to budou nadávat.

Šanci má třeba Lua, která není moc náročná na hardware, dá se snadno propojit se systémem v C (je napsaná v ANSI C) a je docela snadno naučitelná a použitelná. Hraje pro ni fakt, že se ji podařilo implementovat do malých jednočipů, a například pro ESP8266 existuje implementace NodeMCU, kdy nepotřebujete kromě malého čipu už nic víc a máte programovatelné zařízení, připojené přes WiFi… Ze stejné líhně je MicroPython s implementací pro ESP8266 i pro STM32.

Výhodou těchto jazyků je, že jim stačí relativně malé “běhové prostředí”, které jednak může zabránit určitým chybám a zajistit bezpečné zotavení, ale zároveň může sloužit jako abstraktní vrstva, která pomůže snadněji přenášet aplikace mezi různými platformami.

V souvislosti s embedded aplikacemi na mne vždy čas od času vykoukne jazyk FORTH. Jeho výhodou je minimální běhové prostředí a vysoký výkon, nevýhodou pak to, že FORTH byl navržen tak, aby byl jednoduchý pro počítač, ne pro programátora, takže jeho příkazy připomínají něco jako “programátorský těsnopis”. Ale přesto se používá poměrně často, protože je to ověřený a docela “starý” jazyk.

Objevují se i různé vizuální editory či generátory aplikací, které vycházejí z přístupu “vy si napište jen těch 10 řádků, co vás živí, zbytek zařídíme my”, a jejich výsledkem je zákazníkova byznys logika a kotel souborů .C a .H, které po přeložení vytvoří kýžený firmware.

Ale který z těchto přístupů a jazyků bude tím budoucím mainstreamem, to si netroufám odhadnout.

Našli jste v článku chybu?

4. 8. 2016 9:48

Zen (neregistrovaný)

C bezi na vsem.
Vcetne mimozmskych pocitacu - viz Independence Day


13. 8. 2016 14:02

RDa (neregistrovaný)

.. jenze to by moderni lidi co neumi nic vic nez jen klikat museli umet programovat :) Sebelepsi fotak, photoshop ci tiskarna [analogie k jazuku jakozto nastroji] z vas neudela umelce - tvurce. Vetsina lidi nikdy neprekroci hranici naucenych cinnosti, ale netusi jak to vlastne funguje. Dnes da kazdy na hype vic, nez aby se soustredil na to, aby si zjistil jak se veci maji :)

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Vitalia.cz: Vláknina: Rozpustná, nebo nerozpustná?

Vláknina: Rozpustná, nebo nerozpustná?

Vitalia.cz: Jak koupit Mikuláše a nenaletět

Jak koupit Mikuláše a nenaletět

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Vitalia.cz: Naučí vás péct kváskový chléb bez lepku i s lepkem

Naučí vás péct kváskový chléb bez lepku i s lepkem

120na80.cz: Rovnátka, která nejsou vidět

Rovnátka, která nejsou vidět

Root.cz: Telegram spustil anonymní blog Telegraph

Telegram spustil anonymní blog Telegraph

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Vitalia.cz: Manželka je bio, ale na sex moc není

Manželka je bio, ale na sex moc není

120na80.cz: 5 poporodních problémů a jejich řešení

5 poporodních problémů a jejich řešení

DigiZone.cz: Digi CZ výrazně zlevnila balíček HBO

Digi CZ výrazně zlevnila balíček HBO

Podnikatel.cz: Zavře krám u #EET Malá pokladna a Teeta?

Zavře krám u #EET Malá pokladna a Teeta?

120na80.cz: Bojíte se encefalitidy?

Bojíte se encefalitidy?

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Měšec.cz: Golfové pojištění: kde si jej můžete sjednat?

Golfové pojištění: kde si jej můžete sjednat?

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...