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ť.

DevOps Enginner / Online Bezpečnosť

Pre IT spoločnosť, ktorá sa venuje online bezpečnosti hľadáme do tímu DevOps Medior Engineer. Spoločnosť má 20-členný tím s...

Senior Java Consultant

Hľadáš, kam by si sa posunul? Možno ťa táto práca zaujme. Ide o Senior JAVA konzultanta v nadnárodnej IT...

Ruby on Rails Junior-Medior Developer / REMOTE

Je tvoj život príliš v “koľajniciach”? Urob si odbočku a skús sa pridať do tímu Ruby on Rails developerov.Ide...

JS Sencha Senior Developer / Homeoffice

Máš rád svoju slobodu, pracuješ na projektoch, ideálne remote? Pre medzinárodnú softwarovú spoločnosť hľadáme JS Sencha Developera.Po dvoch týždňoch...

Junior Angular Developer / REMOTE

Pre nášho partnera hľadáme ITčkára na pozíciu Angular Developer. Spoločnosť sa venuje vývoju platformy pre firmy na znižovanie nákladov...

Frontend Medior Developer

Medzinárodná IT spoločnosť, ktorá vyvíja finančný softvér.Práca je v Bratislave na TPP. Odmena sa pohybuje od 2000+ EUR.Tvoje úlohy...

.NET Core Medior Developer / REMOTE

Svoju budúcnosť máš vo svojich rukách, skús to teraz ako .NET Core developer. Ide o startup projekt, ktorý vyvíja...

GIRL ́S DAY 2020: Už po siedmy raz môžu stredoškoláčky nahliadnuť do IT firiem po celom Slovensku.

Občianske združenie Aj Ty v IT už siedmy rok prepája IT firmy a organizácie so stredoškoláčkami po...

DIGITALEUROPE: Na digitalizáciu pôjde z plánu obnovy až pätina prostriedkov. Ako zareaguje Slovensko?

Výzva v podobe zníženej globálnej konkurencieschopnosti, ako aj kríza spojená s pandémiou postavili Európu...

OpenSlava 2020 tentokrát online!

OpenSlava 2020 je 8. ročník úspešnej konferencie pre IT komunitu na Slovensku...

Čí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ť.