poznáme.it Programovanie Cloud, Containers, Clojure – lambda je “sranda” (1).

Cloud, Containers, Clojure – lambda je “sranda” (1).

  • Aký programovací jazyk zvoliť na budovanie škálovateľných cloudových riešení?
  • V akom jazyku programovať AI alebo hudbu?
  • Ako rýchlo vyrobiť nástroj na prácu so zoznamom dát?
  • Ako byť produktívny, deklaratívny a nestratiť sa v riešení stavu aplikácie pri tisíckach užívateľov?

Funkcionálne programovanie získava na popularite hlavne v prostredí distribuovaného computingu, v cloude. K tomu ho predurčuje jeho základná vlastnosť, bezstavová funkcionálna kompozícia, kde výsledok jednej funkcie je parametrom ďalšej. Dáta sú kód, kód sú dáta.

Uvedomili si to napríklad aj v jednom softvér house, ktorý sa rýchlo stal úspešnou bankou s backend riešením postaveným na funkcionálnom programovaní, pozrite si napríklad inšpirujúce video: “Real-time Financials with Microservices and Functional programing

alebo toto video s frontend riešením vytvoreným vo funkcionálnom jazyku „Using Clojurescript to launch iOS/Android apps to 1M users

Funkcionálne programovanie teoreticky vychádza z Lambda calculus konceptu vytvoreného Alonzom Churchom.

Lambda calculus bol implementovaný v programovacom jazyku LISP, v ktorom boli napísané známe aplikácie ako editor Emacs alebo vedomostný systém CyC.

Na sile získava aj vďaka implementácii v jazyku Clojure, dynamickom funkcionálnom jazyku bežiacom na Java Virtual Machine, JVM, kde zúžitkuje a vie využiť aj Java metódy a stovky overených Java knižníc. Ale nie je hybridom ako napríklad  Scala.

Na poli teórie počítačovej vedy sa vymyslelo a publikovalo mnoho skvelých nápadov a konceptov. Clojure obsahuje mnoho z najnovších a najväčších z týchto myšlienok, ktoré zatiaľ nenašli dobré (alebo žiadne) implementácie v iných jazykoch. Najzreteľnejšie sú tie, ktoré sa týkajú paralelného spracovania: Softvérová transakčná pamäť a spracovanie založené na agentoch sú zapracované do jazyka na základnej úrovni. Iné (napríklad pretrvávajúca nemennosť – persistent immutability) sú jemnejšie dizajnérske filozofie, ktoré sú syntézou moderného akademického výskumu a desaťročí reálnych skúseností z projektov.

Koncept Clojure je čisto funkcionálny a deklaratívny. Rozdiel medzi funkcionálnym a imperatívnym programom je znázornený na obrázku.

Zdroj: Practical Clojure (Expert’s Voice in Open Source) 1st ed. Edition,
by Luke VanderHart (Author), Stuart Sierra (Author)

V Clojure je všetko zoznam. Všeobecný (prvky) alebo špecifický ako mapa {kľúč hodnota}, vektor [prvky], množina #{unikátne prvky}. A to je vlastne celá štruktúra jazyka Clojure. Samozrejme plus zopár kľúčových slov, ktoré sú však tiež len zoznamy.

Všetko čo potrebujete pre základný beh prostredia Clojure je JVM a príkazový riadok. Clojure podporuje takzvaný REPL, Read, Evaluate, Print, Loop mód, ktorý poskytuje výhodu interaktívneho a iteratívneho developmentu s okamžitým testovaním a kompiláciou.

V princípe stačí zadať do terminálového okna

java -jar clojure-1.8.0.jar

a spustí sa interaktívny REPL mód. Clojure však má aj automatizačný generátor lein na vytváranie a riadenie Clojure projektov, ktorý taktiež poskytuje aj REPL mód. Je veľmi užitočné si ho nainštalovať, obsahuje množstvo templates na rôzne typy projektov a je samozrejme ľahko rozšíriteľný ako všetko v Clojure. Začnime teda:

Majme zoznam prirodzených čísel, v praxi napríklad telefónnych a chceme vyfiltrovať len párne. Zadefinujeme zoznam čísel ako Clojure zoznam, reprezentovaný okrúhlymi zátvorkami (def cisla [1 2 3 4 5 6 7 8]). Odklepneme, REPL spracuje, vytlačí výsledok a čaká na ďalší vstup.

Prvé slovo reprezentuje vyhradený výraz pre definíciu, druhé je názov zoznamu, tretia položka v hranatých zátvorkách je vektor čísel, môžme ho nahradiť zoznamom makra rozsahu (range 1 101), ktorý poskytne sekvenciu čísel od 1 po 100. Zo zoznamu cisla urobíme daľší zoznam s okrúhlymi zátvorkami (filter even? cisla), ktorý je dostatočne samovysvetľujúci. Stručné a efektívne.

Skúste napríklad filter z regulárným výrazom (apply str (re-seq #”[a-zA-Z]” “abc:sQ/SDQ_”))

Alebo zosumovať čísla od 1 po 100 pomocou redukcie. Tá može pracovať v sekvenčnom, ale aj paralelnom móde ako napr. Fork/Join v Jave. Sila.

Kde je reduce je aj map

Silu Clojure si môžete vyskúšať aj pri vyhľadávaní palindrómov. Palindróm je postupnosť symbolov, ktorá má tú vlastnosť, že ju možno čítať v ľubovoľnom smere (sprava doľava alebo zľava doprava) a má vždy rovnaký význam.

Snáď vás sila Clojure už v tomto krátkom úvode nadchla a bude sprevádzať odteraz naďalej.

Ak chcete odhaliť aj krásu, skúste sa pozrieť na http://lighttable.com/, editor novej generácie napísaný v Clojure, ClojureScripte.

Nabudúce, krátky program na zbieranie (scraping) dát z tabuliek na webstránkach.

Dobrý článok? Chceš dostávať ďalšie?

Už viac ako 6 200 ITečkárov dostáva správy e-mailom. Nemusíš sa báť, nie každé ráno. Len občasne.

Súhlasím so spracovaním mojich osobných údajov. ( Viac informácií. )

Tvoj email neposkytneme 3tím stranám. Posielame naňho len informácie z robime.it. Kedykoľvek sa môžeš odhlásiť.

Android Developer

Máš rád svoju slobodu, pracuješ na projektoch, ideálne remote? Máme pre teba projekt na kontrakt s odmenou 3500 - 4000+...

iOS Developer

Máš rád svoju slobodu, pracuješ na projektoch, ideálne remote? Máme pre teba projekt na kontrakt s odmenou 3500 - 4000+...

JavaScript Developer

Slovenská firma, ktorá má ambície vybodovať svetovú UX research platformu rozširuje svoj tím a hľadá JavaScript Developera. Pracoval by si...

Linux Admin

Pre spoločnosť, ktorá sa sa zaoberá hostingom webov a aktuálne rýchlo expanduje, hľadáme Linux Admina. Môžeš pracovať na kontrakt alebo...

Lead Developer Architect

Hľadáš istotu a stabilitu v zamestnaní? Medzinárodná spoločnosť, ktorá vyvíja finančný softvér hľadá Lead Developer Architect-a. Ide o prácu na...

.NET Developer

Máš rád svoju slobodu, pracuješ na projektoch, ideálne remote? Máme príležitosť pre .NET Developera. Projekt je na kontrakt s odmenou...

Tester_remote

Pracuj na svetovom SW produkte, ktorý je používaný miliónmi používateľov! Firma rýchlo rastie a vyvíja nové features. Poznáme ich prostredie...

GIRL´S DAY už po ôsmy raz priblíži stredoškoláčkam svet technológií

Už po ôsmy raz sa uskutoční celoslovenské podujatie GIRL´S DAY, ktoré prepája IT firmy a organizácie so stredoškoláčkami po...

Čo chcú ITčkári od firiem: Peniaze, peniaze, peniaze

Hlavný motivátor? Plat, Plat, Plat Najsilnejším motivačným faktorom pre respondentov je po novom platové ohodnotenie. Pri odpovedi na otázku “Čo...

Firmy častokrát nevedia využívať svoje dáta ako relevantný podklad pre rozhodovanie

Kvalitná analýza dát sa stáva v čoraz nevyspytateľnejšom ekonomickom prostredí jedným z najdôležitejších podkladov pre riadenie firiem. Konferencia Power BI Day...

Čítaj ďalej:

Dobrý článok? Chceš dostávať ďalšie?

Už viac ako 6 200 ITečkárov dostáva správy e-mailom. Nemusíš sa báť, nie každé ráno. Len občasne.

Súhlasím so spracovaním mojich osobných údajov. ( Viac informácií. )

Tvoj email neposkytneme 3tím stranám. Posielame naňho len informácie z robime.it. Kedykoľvek sa môžeš odhlásiť.