Mam takovy dotaz, na tenhle clanek jsem narazil nahodou, marne hledam na netu a nechce se mi cely cist ..... respektive nechce se mi cist cely sto-dilny serial. Ale jak ctu takove veci jako Rust, Julia nebo Lisp ..... nutne cloveku vytane na mysl, proboha proc? K cemu? K cemu by neco takoveho mohlo byt dobre? Co se tim programuje? Kde je nejake realne nasazeni a vyuziti?
Priznam se, ze v dobe, kdy mame fakticke etalony v podobe nejpozivanejsich a univerzalnich prakticky na vsechno typu C#/JAVA jinymi slovy s C++ syntaxi, hardcore na opravdu low-level jako C nebo "detske" jazyky idealni pro zavedeni si extremne spatnych programovacich navyku jako treba Python a pak specialni typu SQL ..... ale k cemu je proboha jako LISP?:o) Jako da se v LISPu naprogramovat nejaka aplikace? Kde bezi? Jakoze nejaka elektrarna nebo co? Delaji se v tom specialni firmwary? To dost pochybuju. Unika mi jejich vyznam, krom historicke zminky. A neberte to ironicky, vzhledem k tomu, ze jsem tu nasel desitky (mozna stovky) velmi revrubnych clanku o LISPu, Rustu, Julia a patrne dalsich "podivnostech", tak me fakt zajima, jestli je autor masochista, ze pise o desitky let mrtvych vecech nebo to fakt k necemu je.
Asi je to častá otázka, i když netuším proč. Poslední pokus o odpověď co jsem potkal viz https://lisp-journey.gitlab.io/who/ a odkazane linky.
A co jsem párkrát viděl je prototyp v Lispu, a po finalizaci produktu přepis do "mainstreamového" jazyka (Reddit -> python a pod.)
Nemohu se ubranit vnitrniho dojmu, ze kdyz se rekne LISP, znamena to neco podobneho jako kdyz se rekne LOTUS ..... proste dekady mrtva vec. A ano, i Lotusove databaze stale nekde bezi (jako vtipnou pripominku totalniho diletantstvi zminme treba FN Brno), ale to je prece nedela relevantnimi nebo jakkoliv zajimavymi. Jako chapu, ze v tom jde napsat hello world ..... ale jde v tom napsat i neco jineho? A hlavne, jde nejakym zpusobem o zajimavou vec? Ve smyslu, ze neexistuje lepsi alternativa v podobe moderniho jazyka a modernich nastroju? Pokud je to nekde v letadle nebo v druzici, chapu, ze dva lidi na svete to mozna jeste musi nejak ovladat (autor clanku je asi jednim z nich). Ale ma to jakoukoliv relevanci z hlediska moderni doby? Jakoze kdyz budu premyslet, v cem udelam aplikaci, ze by lisp mohl byt jednou z variant (a tim nemyslim, ze by nebyl uplne na konci, ale jakoze ho vubec brat v potaz)? Proste me nenapada JEDINY duvod dnes nasazovat nekde Lotus:o) Teda jeden velmi relevantni duvod asi bude a to bude platit i o Lispu ..... vendor lock ..... nebo spis developer lock:) Pokud v tom napisu kus kodu, ktery by nejak fungoval a byl pro firmu prospesny, tak ma clovek vystarano se zamestnanim, protoze tomu nikdo nebude rozumet a jineho Lisp vyvojare nikdy nikdo uz nesezene:o)
No, priznam se, ze me to zacalo dost zajimat a cim vic to ctu, tak nejde o samotny jazyk ve kterem by slo realne neco udelat. Od dob velkych frameworku by to bylo dost velka zoufalost. Ale ze je to proste jakoze doplnek k velkym frameworkum jako .NET, JAVA, kdy to k necemu muze slouzit. Osobne delam ETL v .NETu, protoze poskytuje vybornou podporu pro multiplatformni aplikace (fakticky i binarne shodny kod pro linux a windows) a hlavne je pekelne rychly a vytvari POSIXove binarky, takze nepotrebuje zadne zavislosti a jiny "linux-typical" bordel a svinstvo. A tak si rikam, jestli by se mi to nemohlo k necemu hodit ten clojure. Jako jestli ..... a ted fakt nevim, protoze posledni C# standard obsahuje snad vsechno myslitelne a bohuzel i nemyslitelne, takze zacina PERLit, coz me dost stve, protoze kod se diky tomu, ze lze delat ruzne zapisy pro "zjednoduseni", zacina byt cim dal hure citelny. Ale to jsem odbehl. Proste by me zajimalo, jestli ma Clojure co nabidnout jako doplnek k C#, ve smyslu nejake super-duper konstrukce, kde bych si zjednodusil praci, kdybych to zacal nejak pouzivat. Vidim, ze v nugetu je nejaka 16 hodin stara verze, tak to asi neni vyslovene mrtve:o)
Ja furt nevim, jestli se jedna o nejakou promyslenou legraci a delate si ze me srandu. Jako beznym hledanim veci jako LISP, CLOJURE atd. jsem v IT nenasel JEDINOU pozici. Nejenom, ze nikoho neznam, ale nikdy jsem ani neslysel o cloveku, co by v tom programoval. Takze kvantifikace "dost velky typ aplikaci" me opravdu na prdel neposadi ..... ptal jsem se JAKE?
Ja par lidi z Clojure znam. A vydelavaji hodne https://insights.stackoverflow.com/survey/2021#section-salary-salary-and-experience-by-language
(neni to samozrejme uplnej mainstream, ale to je ostatne pochopitelne - Gaussova krivka i tady funguje)
Priznam se, ze co me hned zaralilo je to, jak je tam vice vydelavajici bash "vyvojar" nez treba u Cecka (cili Javy atd.). Jakoze v bashi samozrejme nikdo nejake desetiradkove skripty nevyrabi jako full time. A urcite nikoho neplati vic nez uklizecku za znalost tech cca peti prikazu:o) Jako je to rozsahly popis, nechce se mi to vsecko cist, ale hned me zarazil pocet tech manazeru v pruzkumu.
LISP konkrétně nepoužívám, protože vyžaduju statické typování.
Ve všech svých projektech používám tyto jazyky:
Rust pro všechno svého, co má běžet zajímavě rychle (dříve jsem používal Haskell, ještě dříve C++).
Lua v případě nějakých dynamických podivností, ale postupně to opouštím.
PHP, Javascript na web, protože low-end hosting.
C#/Java/Python/PHP - když v tom má klient nějakou legacy věc (prostě práce pro peníze).
Proč nepoužívám C#/Java jako hlavní jazyky? Protože jsou blbé. Nedostatečný typový systém, ukecaná konzervativní syntaxe, runtime (studenej start). Když bych vážně uvažoval nad JVM, tak bych zkusil Kotlin, nebo Scalu, protože přidávají moderní vlastnosti v podobě lepších typů a syntaxe (zvláště ta Scala).
C++ nepoužívám, protože to v porovnání s Rustem je už zbytečné/neekonomické trápení. Přináší tolik zásadních výhod, že C++ je pro mě prostě mrtvá záležitost.
Tak ja hlavne C# (.NET), protoze ma obrovskou podporu, obrovsky framework (mozna nejvetsi), prijemne IDE, bezi bez nejakych zavislosti, rychly fakticky jako C++ (proto treba vyslovene nemam rad obskurnosti s JVM). A hlavne oproti C++ je "bezpecny", clovek nemusi resit resourcy atd. No, pak jeste trochu Python, protoze se ve firme pouziva, ale Python povazuju za novodoby mor, lidem akorat vnucuje spatne navyky a navic je to jazyk zcela na dve veci, pomaly jak cyp, protoze interpretovany, dynamicky typovany, coz je asi uplne nejvetsi zlo, co mohl kdy kdo vymyslet. Mel smysl tak pred 15ti lety, kdyz nebyl .NET Core a clovek potreboval neco v linuxu a nechtelo se mu votravovat s C++.
Nevim co beres jak nedostatecny typovy system:) Jak uz jsem psal, C# se (bohuzel) dost poperluje, takze tam jde delat vsechno (viz LINQ, coz povazuju za zrudnost) celkem jakoze jednoduse, vicevlaknove veci velice snadno, OOP, proste co si clovek vzpomene. Ale hlavne jazyk je tak silny jako komunita/framework .... pokud ma slaby framework, tak je to konecna. Pokud nema treba klienta pro DB a podobne, tak to muze byt skvely jazyk, ale ......
> Nevim co beres jak nedostatecny typovy system:) Jak uz jsem psal, C# ...
Buďme konkrétní.
1/ Chtěl bych vytvořit Enum, který má tři položky OK, Fail, FailWith(string). V Rustu, Haskellu, a dalších jazycích to je samozřejmost.
2/ Chtěl bych vytvořit funkci, která přijme hodnotu třídy Foo a nepřipustí Null. Jsem ochoten zkousnout, že mi to hodí runtime výjimku. (Snad v .NET 8) Nepřeložitelnost by samozřejmě bylo lepší (v jiných jazycích běžná věc).
3/ Chtěl bych, aby když udělám Enum, a dám tam switch, tak mě to upozornilo, že jsem nepoužil všechny varianty (v jiných jazycích běžná věc).
4/ Chtěl bych, aby když udělám metodu, která přijímá Potomka : Předka, tak dostala přednost před metodou, která přijímá Předka.
5/ Chtěl bych, aby u moderního jazyka se nepoužívali ve všech knihovnách a FW anemické objekty jako default a dokonce pro to byla syntaxe.
6/ Chtěl bych, aby to nešlo přeložit, když se změní signatura třídy knihovny, kterou používá knihovna, kterou používám.
A tak dále.
Tohle jsou takové ty trivialitky, které považuji za samozřejmost, a které C# deklasuje.
Samozřejmě beru, že kolegové v MS udělali s .NET ohromný kus práce. Je za tím ohromná komunita a vůbec. Nic to nemění na mém závěru, že je to bastl, který umí spoustu cinkrlátek, ale zásadní (typové) featury to nemá. Prostě zaspal dobu a můžou si s Go podat ruce.
Pises o enumu jako o necem posvatnem nebo mi prijde, ze nevis k cemu je enum. Jestli jsem to ad1) pochopil spravne, tak bys snad enumem chtel predavat nejakou hodnotu? Proto ten string v zavorce? Nebo to chapu spatne? Od toho snad neni enum ne? Ad2), od toho jsou nullable a non-nullable typy ne? Ad3), jako kam chces cpat jakysi switch? A pokud to chapu spravne, tak jen chyba programatora na kterou mozna upozorni compiler, pokud to nekdo povazoval za nutne, ale urcite ne jako warning, mozna jako tip/suggestion, kterych jsou po napsani par radku kodu, vzdycky tak desitky, aspon u me:o)
Ad4) to je snad dano jasne danymi OOP pravidly a pokud to chces nahodou jinak, tak to udelas jinak, nechapu problem.
Ad5) netusim o cem je rec. Ad6) opet zalezitost co potrebujes, tak pokud mas knihovnu a nedefinujes presne verzi, tak proc by to nemelo jit prelozit? To je naopak zadana vlastnost ne? A pokud ji zmenis, nemas ji podepsanou nebo nezmenis cislo verze, tak to prece nesouvisi s jazykem, ani nicim jinym. To je asi jako nadavat na textovy editor, protoze jiny proces mu muze smazat editovany soubor ...... je to proste vlastnost a pokud tomu chces predejit, tak to musis proste zaridit.
ad 1/ Přesně tak. V Haskelu, Rustu a dalších moderních jazycích je spojen bod 1 a bod 3 v elegantní symbióze. Můžeš si to představit jako speciální konstruktory v C#. Až na to, že ty konstruktory jsou sice stejného typu, ale různé variantě (instance) typu. A díky tomu se dají perfektně podchytit všechny strategie a na žádnou nezapomenout. Díky tomu, že metody/funkce mohou přijímat buď konkrétní typ, nebo jen konkrétní instanci toho typu, tak to opět hodně pomáhá.
ad 2/ ne, protože to nefunguje C# to (do verze 8 snad?) neumí.
ad 4/ neudělám to jinak, protože to nejde. Musím udělat jednu metodu a v ní pomocí instanceof větvit. Ne, že by to byla taková katastrofa, ale ve spojení s bodem 2 to je dost trapný.
ad 5/ to nevadí.
ad 6/ protože to zbuchne na produkci, páč tam zmizela metoda
Jako přeložit kód, kdy volám metodu, o které vím, že neexistuje, to ti od jazyka přijde v pořádku? (Nebavíme se o dynamic-dispatch, a pod prosím.)
Závěrem: Chtěl jsi vysvětlit, proč nám C#/Java nestačí. Tož tady to máš. Ber nebo nech být. Prostě mám určité požadavky, jsem trochu zmlsaný, a navíc v dnešní době si to mohu dovolit. Ty žiješ ve své bublině, až tak, že si nedovedeš představit, že by to mohlo být jinak. Můžeš se mnou nesouhlasit, můžeš si myslet, že problém je na mojí straně, nech sa páčí. Já jen uvedl pár příkladů, které mě teď z patra napadli a které mě schází. Asi bych našel i další. Určitě se ale nebudu o své pravdě přetahovat.
No jako ono C# v posledni veci umi spoustu novinek, jako ja jsem uhnil na verzi nekde pred 10ti lety, jako jsou veci dobre a uzitecne jako treba nulovatelne typy, ale zase veci kdy se da "zjednodusit" zapis ala PERL, tak to povazuju za mor, protoze to zcela zbytecne zneprehlednuje kod ..... jako ze zjednoduseni bych ponechal maximalne ++, pripadne --, ale kdyz jsou pak kombinace =+ nebo +=, kdo tomu ma jako rozumnet, co ktery znamena. A kdyz pak novy C# umoznuje zapisovat novou instanci jen jako new(), misto new Funkce(), tak se muze zdat, ze jde o malickost, zjednoduseni, ale kdo to vidi poprve, jako ja nekdy pred 14ti dny, tak je to jen uplne zbytecna picovina.
Ale zpet k veci, ja ti to neberu, proto je tu prave ta diskuze, me zajimalo, co treba ten Ruste nebo Lisp muze prinest .... jako jedna vec je ten programovaci jazyk a druha je framework, coz je dneska IMHO mnohem dulezitejsi a je to vlastne alfaomega dnesniho programovani. Muzes mit sice super duper jazyk, ale pokud nema ovladac pro tvoji databazi nebo pokud pro stazeni souboru z netu musis napsat kompletniho klienta jak v cecku pred 20ti lety, tak je to dost o nicem:) A treba takovy .NET ma patrne nejvetsi repositar ze vsech. Mozna jeste muze konkurovat JAVA, ale tam nevim jak to chodi, jestli maji neco jako Nuget, cili jednotne misto nebo je to rozbite mezi milion konkurencnich projektu. To i takovy detsky Python ma nejakou jakstaks udrzovanou repozitar, byt teda Python bych asi ani radeji nezminoval, protoze to je opravdu mor dnesni doby .....
"frameworkem" je zde myšlen ekosystém knihoven okolo jazyka, nebo nějaký konkrétní nástroj/technologie typu (řekněme) RoR?
Pokud jsou myšleny knihovny, tak například ty vybrané jsou zde https://github.com/razum2um/awesome-clojure a https://awesome-rust.com/ popř. ještě pro Clojure https://www.clojure-toolbox.com/
(btw celkový počet dostupných balíčků asi moc nemusíme porovnávat, tam to vyhraje hnůj v NPM. O použitelnosti v reálných - neřkuli produkčních - programech počet balíčků neříká vůbec nic, samozřejmě IMHO)
C# je brutálně pragmatický jazyk cílící na lidi, kteří původně dělali v Javě a v C++. Takže se od něho očekává nějaká ta dědičnost, anotace, a property byla velká sláva, na které demonstrovali jeho coolovitost. Požadavky, aby se programátor musel učit nové koncepty nebyli jeho cílem.
Aby si pochopil můj úhel pohledu, psal jsi:
> A pokud to chapu spravne, tak jen chyba programatora na kterou mozna upozorni compiler, pokud to nekdo povazoval za nutne, ale urcite ne jako warning, mozna jako tip/suggestion, kterych jsou po napsani par radku kodu,
Tohle je u mě přesně jinak. Mám problém který chci vyřešit pomocí nějakého jazyka. A chci, aby mi ten jazyk maximálně pomáhal. Fakt nejsem zvědavej na takové: "no na to jsi měl myslet", "to je starost programátora". Ať ten jazyk dělá co nejvíc. Ať mě vede za ručičku. Ať mi nedovolí udělat chybu. (Stejně ho přečůrám.)
Tak ta filozofie není nic nového, že. Je vidět na mnoha místech, třeba i na takovém prachsprosém SQL - "Prosím tě, nic nevymejšlej. Jen mi řekni, co chceš.".
Pak je ještě ten problém, že často musím řešiš kompromisy. Rychlost, kolegy, komunita,... Dřív jsem si myslel, že ten ideální kompromis je Haskell. Nyní používám Rust. Agda, nebo Idris je pro mě (zatím) neprozkoumaná oblast.
Jako uz jsem slysel spoustu nazoru (a ja s tim 100% souhlasim), ze pythonem se zacina vsude, jakozto jednoduchym jazykem, ale akorat to svadi si udelat vyslovene spatne programovaci navyky a vlastne nic se nenaucit. Python mel IMHO vyznam pred 15ti lety, kdyz mel framework stylu, ze kdyz chtel clovek stahnout neco z webu, nemusel pul dne programovat nejaky lowlevel inteface a hlavne, ze byl multiplatformni. Jinak je to samozrejme stale oneman show, kdy se dejou takove zasahy do zpetne kompatibility, ze clovek fakt jenom zira (naposled mi 15 let stary skript shodil interpreter - coz je taky vyborna vlastnost - kdyz Popen zmenil vystup stderr z str na stream z duvodu, ktery se asi da jen tezko hlavou pochopit). Treba takovy print a pridana nutnost zavorek, kdyz ANO, samozrejme je to logicke, ale klidne mohlo v ramci kompatibility zustat puvodni ...... jako python je peklo, wotomzadna! A vyslovene nebezpecne je grupovani pomoci tabulatoru a/nebo mezer .... kdy uz samo o sobe je to proste nebezpecne, ale kdyz umoznuje kombinaci tabulatoru a mezer v jednom souboru, tak to uz je opravdu genialni vlastnost, kterou taky nevymyslis:o)
Takze pred 15ti lety jsem to pouzival protoze to jelo na linuxu pro ruzne instalace, protoze pouziti bashe na vic jak 10 radku (respektive obludnost jako bash vubec pouzivat) je totalni silenstvi. Jako python ma mozna i dnes nejake opodstatneni pro skripty do 100 radku jako nahrada bashe, protoze python je vetsinou vsude .... ale kdyz clovek zacne pouzivat balicky, tak je vetsinou stejne v pasti, protoze na serverech tezko nekdo dovoli pristup k netu a mnohe balicky potrebujou kompilovat pro instalaci, takze nestaci prenest jen site-packages, no hruza. Proto jsem si hodne oblibil .NET core, protoze nema zadne zavislosti, bezi na posixu, cili na uplne nejnizsich konfiguracich nativne bez zhovadilych zavislosti, proste zkompiluju a jede to i na serveru, co nema pristup k netu. A jestli se treba takove MAUI ukaze byt tim, co tvrdi, cili bude mit i vlastni xserver (nikdy nepochopim, proc jeste nekdo neudelal xserver jako jedinou klihovnu bez jakekoliv zavislosti), tak bude mozne delat i graficke aplikace bez zhovadilosti. Libi se mi proste, ze to bezi nativne ve vsech OS, ma to obrovsky framework, obrovskou podporu, komunitu ... jak je nejaky ten pruzkum jazyku, tak C# mel byt jazyk roku 2021, ale predbehl ho opet python z nejakeho nepochopitelneho duvodu, zajimalo by me jak to pocitaji. Znam asi stejny pocet "opravdovych" aplikaci v pythonu jako pro lisp:o) Jako IMHO, pokud se tim clovek chce zivit a delat multiplatformni aplikace, jakoze skutecne aplikace, ne jenom nejake jednoduche skripty, tak to dnes bude JAVA nebo C#. Nerikam, na nejake speciality, se jiste muze hodit neco jineho/obskurniho:), ale general purpose jazyky jsou dnes celkem jasne.
Me na Pythonu neprijde nic elegantniho. Z principu toho, ze je to dynamicky typovany jazyk, tak je jednak silene pomaly a jednak fakticky nebezpecny a o nejakem OOP si muze tim padem nechat jen zdat. Ale asi nejvetsi katastrofa je, ze neni pouzitelne zadne IDE, protoze nenabizi spravne metody, kdyz nevi, co je to za typ. Vim, ze kdysi byla dokonce nejaka snaha explicitne typy definovat, ale myslim, ze to furt python neumi. A cisty a elegantni, kdyz umoznuje zapis v jednom souboru jak s mezerama, tak s tabulatorama, tak ma do cistoty hodne daleko. No a to ani nezminuju naprosto tristni neexistenci zpetne kompatibility, kdyz se nekde neco obcas proste vykydne. A nekonzistence jako zjistovani velikosti objektu jednou pomoci LEN, podruhe vnitrni metodou me uz nechavaji chladnym. Nekdo rika, ze je to snadny jazyk, ja rikam, ze pokud clovek chce jenom neobjektovy a zcela straight forward kod, tak jej napise uplne stejne v nejakem "C" jazyku, syntaxi se lisi, ale learning-curve je uplne stejna, navic navyky a syntaxi "C" pouziva spousta dalsich jazyku. No a tim, ze kdyz je dynamicky typovany a chci vedet jake metody ma treba takovy "file", tak musim na google, misto napsat tecku a IDE nabidne vsechny moznosti vcetne nejbeznejsich a jejich popisu, tak je to vlastne extremne neprijemny jazyk na programovani. S odstupem casu nemuzu prijit na jedinou vyhodu pythonu oproti cemukoliv jinemu ..... mozna proti bashi:o)
Python uz par let ma typove anotace, rekl bych typovy system v mnoha ohledech mocnejsi nez C#. Strukturalni typy, jednoduche zavislostni typy, celociselne generiky.
Ne vsude se to pouziva, ale vetsina opensource projektu to pouziva.
Netvrdim, ze Python je dokonaly, ale podle me jeho kritici ho casto neznaji a neumi spravne pouzivat. Muze za to castecne povest jednoduche ho jazyka.
"No a tim, ze kdyz je dynamicky typovany a chci vedet jake metody ma treba takovy "file", tak musim na google, misto napsat tecku a IDE nabidne vsechny moznosti vcetne nejbeznejsich a jejich popisu"
To neni pravda, zkuste ve vscode napsat open('neco).
20. 4. 2022, 22:06 editováno autorem komentáře
Tabulatory dnes nikdo nepouziva, staci soubor preformatovat "blackem". Vsichni dnes pouzivaji automaticke formatovace a lintery v CI, pres ktere tabulatory neprojdou.
K OOP, rekl bych ze v mnoha ohledech mocnejsi a flexibilnejsi nez v C#. Jestli je to dobre, je otazka. Dava vic moznosti autorum knihoven, ale nektere featury jako metaclassy je asi lepsi v aplikacnim kodu nepouzivat. V dobre otestovanych knihovnach, proc ne.
Prostě další validace v runtime: takové dynamické design-by-contract.
Z těch Ada likejazyků je třeba Eiffel moc pěkný... škoda že to kutí
stále skoro komerčně. Ten jazyk pomřel kvůli politice. Patnáct let zpět jsem nad Eiffelem a Adou trávil pěkné večery a říkal si proč tohle nikdo nepoužívá? :D (to jsem o funkcionálních jazycích ještě skoro nic nevěděl)
Pisu jednoduche zavislostni typy, je mozne napriklad odvodit navratovy typ z hodnoty parametru. To umi i Typescript. Jsi stejny ignorant jako Lojza, ten si aspon nehraje na intelektuala. Kdyz chces machrovat s ezoterickymi jazyky, nauc se nejdriv hlavni proud.
21. 4. 2022, 13:42 editováno autorem komentáře
Zde autor - masochista :)
Jako vývojář, který profesně (tedy za peníze) už vystřídal přibližně deset programovacích jazyků (viz * a **) si víc a víc myslím, že nakonec hlavní důvod "proč LISP" velmi pěkně shrnul Thomas Kuhn:
Paradigm in science not only affects the way you look at the world but it affects the way you can look at the world.
K tomu je vhodné jen dodat, že LISP (tedy i Common Lisp) je nejenom multiparadigmatický jazyk, ale navíc se mnoho (většina?) paradigmat nejprve vyzkoušela právě v Lispu (důvody - homoikonicita, makra, manipulace s AST).
* pracoval jsem i v Clojure, to byla asi nejlepší zkušenost vůbec. Už jen kvůli komunitě okolo Clojure - naprostá většina těch lidí byla/je daleko přede mnou, takže člověk nezakrněl
** mnoho míst okolo Clojure/Lispu se nenabízí přes Linked In, resp. někdy nabízí, ale cesta k nim je krkolomnější... to je na delší povídání a toto vlákno se pro to vůbec nehodí