Portál AbcLinuxu, 1. května 2025 13:54
kde jazyk je zároveň datový formát i programovací jazykNevim, jestli muze byt neco vic zaroven datovy format i programovaci jazyk nez Lisp.
Lisp se takhle sice taky dá použít, ale má to moc málo dimenzí aby to byl pohodlný datový formát; představ si jak pohodlný by byl třeba JSON, kdybys tam měl jen pole, bez slovníků.Technicky to neni problem, staci si upravit reader a muzes mit, cokoliv si budes prat. Pokud chces nejakou beznou a bohatsi syntaxi, da se inspirovat u Clojure (viz EDN).
Nevim, jestli muze byt neco vic zaroven datovy format i programovaci jazyk nez Lisp.Tak třeba zrovna ten Rebol.
A nešlo by vlastní prostředí udělat v lispu snadněji? Kdysi jsem zkoušel napsat si vlastní lisp a byl jsem šokován tím jak snadné to bylo. Parser byl na pár řádcích (50) a pak už jen implementace pár základních forem a zbytek jazyka jsem udělal pomocí maker už v samotném lispu.Já jsem si ho napsal taky, takže vím co myslíš.
Dovedu si představit že vlastní prostředí pro vývoj image a zároveň exekuce programů by šlo udělat s podobnou lehkostí. Koneckonců, jak smalltalk tak i lisp znají techniku obrazů a není to podle mne náhoda. Myslím že jazyky se silnou reflekcí k tomu mají tendenci konvergovat.Asi by to šlo. Self mě v tomhle víc motivoval, neboť to prostředí v něm do velké míry je, i když neudržované a v mnoha ohledech nedotažené. Generu jsem chtěl párkrát zkusit, ale nikam to nevedlo, možná bych se měl zase podívat po emulátorech.
Lisp může sloužit i jako dobrý datový formát, samozřejmě, chtělo by si to vylepšit makrama tak abys měl pohodlnou notaci map a setů. Možná jen nechápu co přesně hledáš, ale lisp podle mne můžeš ohnout tak moc, že už to ani nebude lisp.Viz ten rebol. To je v podstatě lisp s hodně suggar candy parserama, které si můžeš i bezbolestně definovat sám. Úplně mi to nevyhovovalo.
ale lisp podle mne můžeš ohnout tak moc, že už to ani nebude lispBegs the question: K čemu je potom dobré do toho vůbec tahat lisp.
shitózní syntaxi, tak to nikdo nebude chtít používat.Syntaxe je jenom mala cast jazyka, semantika (a vyjarovaci schopnosti jednotlivych primitiv jazyka) je to, co jazyky hlavne odlisuje. LISP a Scheme maji stejnou syntaxi, ale semantika je jina. Z druhe strany, C i Java maji velice podobnou syntaxi, presto vyjadrovaci schopnosti jsou uplne jine.
Jednoduše protože jádro může být sebelepší, přesto pokud bude mít shitózní syntaxi, tak to nikdo nebude chtít používat.Ono, i kdyz budes mit jazyk s hezkou syntaxi a nebudes mit kolem toho pouzitelny tooling, tak to nebude pouzitelne tak jako tak. Takze pokud muzes pouzit nastroje pro hostitelsky jazyk, je to podstatne plus.
Syntaxe je jenom mala cast jazyka, semantika (a vyjarovaci schopnosti jednotlivych primitiv jazyka) je to, co jazyky hlavne odlisuje. LISP a Scheme maji stejnou syntaxi, ale semantika je jina. Z druhe strany, C i Java maji velice podobnou syntaxi, presto vyjadrovaci schopnosti jsou uplne jine.Pravda.
Ono, i kdyz budes mit jazyk s hezkou syntaxi a nebudes mit kolem toho pouzitelny tooling, tak to nebude pouzitelne tak jako tak. Takze pokud muzes pouzit nastroje pro hostitelsky jazyk, je to podstatne plus.Jasně no. Jak jsem psal, mým cílem není mít něco úplně praktického v běžném slova smyslu jak vnímáme jazyky. Tohle je jádro pro systém, které chci použít k různým experimentům, například na tom založit osobní wiki, nebo "objektovou databázi". Cílem je pro mě to experimentování, ne rozšíření mezi běžné developery. Z toho mimo jiné plyne například že tooling a praktičnost tolik neřeším, stejně jako pokud by někdo přidal nějakou super feature, která ale půjde proti tomu experimentování, tak mu to prostě nezamerguju.
Jak sam pises, v podstate to bude Self. Pak mi unika, proc prvni verzi nepsat primo v Selfu. V cem ma byt semantika tveho jazyka jina?O tom budou další díly toho druhého seriálu. Self je v dost špatném stavu a komunita kolem něj je hodně akademicky zaměřená. Víc je třeba zajímá funkce kompilátoru, než podpora unicode zobrazování. A většína kódu je slitek C++ a Self bindigů do toho C++, takže co se mě týče, tak snaha tam třeba přidat podporu unicode výstupu byla vyhodnocena jako složitější, než si napsat vlastní jazyk, do kterého mi navíc nikdo nebude kecat.
Ale o to prave jde, ne? Jadro noveho jazyka je prave v interpretru.Za mě ano, nicméně vlastnosti toho interpreteru a vlastně i syntaxe nejsou nepodstatné. Z mého pohledu ta volba toho lispu sice dává nějaké možnosti, ale zároveň je omezující (jak co do vlastností tak i syntaxe). Ta omezení dávají smysl když člověk dělá lisp/lisp-like jazyk, ale když chce dostatečně jiný jazyk, IMHO už to smysl až tak nedává. Ale nevim, jaký plány/požadavky má Bystroušák. Just my $.02
Z mého pohledu ta volba toho lispu sice dává nějaké možnosti, ale zároveň je omezující (jak co do vlastností tak i syntaxe).Muzes byt trochu konkretnejsi? Syntaxe LISP-like jazyku odpovida AST, takze pokud chces hezkou syntaxi, staci ti udelat jednoduchy prekladac do s-vyrazu/AST, coz neni tak narocny krok. Co se tyce vlastnosti, zaklad Lispu/Schemu ma vyjadrovaci schopnosti, ktere umoznuji velice jednoduse vybudovat konstrukty ostatnich jazyku, vcetne toho OOP.
Syntaxe LISP-like jazyku odpovida AST, takze pokud chces hezkou syntaxi, staci ti udelat jednoduchy prekladac do s-vyrazu/AST, coz neni tak narocny krok.
Tohle dělají v Guile – výchozí je Scheme, ale dá se přepnout (dokonce za chodu) i na JavaScript nebo EmacsLisp a v plánu jsou i další jazyky. Ale jak náročné to je, nevím – úplně triviální to asi nebude, jinak by asi těch jazyků bylo podporovaných už plno.
Muzes byt trochu konkretnejsi?No, z mého pohledu exekuční/evaluační model lispu má omezení v tom, že je relativně daleko od železa a nemapuje na něj úplně pohodlně. Koneckonců, v tomhle je to gro komplexních implementací jako CL nebo Clojure. Tj. záležitosti jako výkon a FFI bych na té cestě přes Scheme viděl jako potenciálně problematičtější. Se syntaxí je to podobné - běžné syntaxe nemusí pohodlně mapovat na lisp AST. Samozřejmě se to dá překonat, ale... viz níže. Ty vlastnosti toho RPythonu jsou takové jaká jsou ne náhodou, ale mimo jiné i z těhle důvodů.
Syntaxe LISP-like jazyku odpovida AST, takze pokud chces hezkou syntaxi, staci ti udelat jednoduchy prekladac do s-vyrazu/AST, coz neni tak narocny krok.Mně tohle přijde trochu v duchu "Your scientists were preoccupied...". Ano, můžeš (a asi celkem snadno) udělat překladač čehokoli do lisp AST a následně použít komplexní lispovou implementaci, aby ti to přechroustala do něčeho relativně stravitelného pro stroj, ale proč to dělat? U toho RPythonu mi přijde, že je na obou koncích méně daleko. Samozřejmě pypy taky není úplně jednoduchá záležitost, ale stále mi to přijde jako menší 'zacházka' a třeba to FFI v tom asi půjde celkem snadno (což je z mé strany jen odhad - můžu se mýlit).
Samozřejmě pypy taky není úplně jednoduchá záležitost, ale stále mi to přijde jako menší 'zacházka' a třeba to FFI v tom asi půjde celkem snadno (což je z mé strany jen odhad - můžu se mýlit).Ještě jsem ho nedělal, ale mělo by jít.
No, z mého pohledu exekuční/evaluační model lispu má omezení v tom, že je relativně daleko od železa a nemapuje na něj úplně pohodlně.Toto vidim jako ciste hypoteticky problem. CPython nebo PHP jsou zoufale pomale, mnohdy na urovni primocare implementace Lispu (nekdy i pomalejsi, osobne overeno) a presto to nebrani(lo) v jejich pouzivani na produkcnich vecech, nota bene pak na hobby projektech.
Se syntaxí je to podobné - běžné syntaxe nemusí pohodlně mapovat na lisp AST. Samozřejmě se to dá překonat, ale... viz níže.Opet hypoteticky problem. To mapovani syntaxe na AST je z principu trivialni, a pokud neni, tak je takove mapovani z principu trivialni, protoze pokud mas slozitejsi konstrukt, muzes ho namapovat na vlastni typ uzlu/makro a o expanzi se uz postara Lisp. Zadna komplexita zatim neni.
následně použít komplexní lispovou implementaci, aby ti to přechroustala do něčeho relativně stravitelného pro stroj, ale proč to dělat? U toho RPythonu mi přijde, že je na obou koncích méně daleko.Viz vyse.
Samozřejmě pypy taky není úplně jednoduchá záležitost, ale stále mi to přijde jako menší 'zacházka' a třeba to FFI v tom asi půjde celkem snadno (což je z mé strany jen odhad - můžu se mýlit).FFI neni problem ani u hobby Lispu.
Toto vidim jako ciste hypoteticky problem. CPython nebo PHP jsou zoufale pomale, mnohdy na urovni primocare implementace Lispu (nekdy i pomalejsi, osobne overeno) a presto to nebrani(lo) v jejich pouzivani na produkcnich vecech, nota bene pak na hobby projektech.No tak do CPythonu nebo PHP bych osobně v tomto případě taky nešel, ale máš pravdu, že hypotetické to je, protože moc neznám Bystroušákovy požadavky. Ještě bych (stále v rámci té hypotetičnosti) vedle RPythonu uvažoval např. o LuaJIT nebo webAssembly.
LuaJITTo jsem si původně myslel že bude asi nejlepší, ale nenašel jsem k tomu vůbec žádnou dokumentaci a kompilovat to přímo do lua jazyka, jak to dělá spousta projektů z Languages that compile to Lua mi přišlo jako hrozná prasárna. RPython sice možná nemá nejlepší dokumentaci, ale alespoň nějakou + jsou v tom udělané praktické projekty, které fakt fungují (pypy a ty různé smalltalky) a které měly ucházející papery se zkušenostmi.
webAssemblyRpython by mohl časem cílit i na tenhle backend.
Výsledky experimentů budou postupně vycházet na mém notion.so blogu: Bystroushaak's blog
Proč zrovna tam? Vždyť sám píšeš:
Sorry, no RSS yet, but I am working on it (one of the many reasons why notion.so sux).
A spousta podobných služeb skončila, odkazy umřely, obsah zmizel… Máš přece vlastní doménu, máš Abíčko, můžeš to dát na GitLab a nechat zbytek světa, aby to kopíroval atd.
<p>
tazích bez jakéhokoli specifikovaného formátování a každý má nastaveno jak se mu líbí.
Proč zrovna tam?Protože jsem pragmatik. Původně jsem chtěl notion.so jen vyzkoušet, když mi o něm nadšeně vyprávěl brácha. Zkouším tak nějak všechny možné osobní wiki, protože všechno má nějaké nedostatky a chtěl jsem vidět klady a zápory všemožných přístupů předtím než se pustím do vlastního řešení. Takže jsem se zaregistroval, chvíli to zkusil používat, moc se mi to nelíbilo a lehce jsem to hejtoval (javascript, hipsteřina, uzavřenost, viz Disadvantages of notion.so). Pak jsem si asi po týdnu vzpomněl na můj starší blog Kübler-Rossová v IT, který jsem napsal abych právě popsal přesně tenhle pocit, kdy si myslím že nějaká technologie je sračka, přestože někdo jiný, o kom vím že není debil, o ní tvrdí, že je fajn. Upravil jsem tedy své očekávání a zkusil to použít bez předsudků a vcelku rychle jsem zjistil, že co se psaní týče, tak v tom mám větší celkovou produktivitu než třeba v CherryTree, které používám běžně na všechno možné. Ve zkratce tedy; Má to samozřejmě spoustu nevýhod, ale dobře se mi v tom píše. A relativně pohodlně se z toho dostávají věci ven. Nodu vyexportuju, uložim jí jako
.zip
s kopou obrázků a .md
souborem obsahující text v markdownu. Ten poté zkonvertuji pandocem do html, vyčistím kraťoučkým scriptem který odstraní většinu atributů co tam pandoc nacpal a to je všechno. Práce asi na minutu.
Oproti tomu v CherryTree se mi píše asi o stupínek lépe (přeci jen je to desktopová aplikace s podstatně lepší odezvou + mám rád ten jeho wysiwyg), ale neumí žádné pokročilé formátování. Vložit do něj jen pitomý obrázek je problém, protože interní rich text ho například downscaluje a už z něj nikdy nevytáhneš co jsi chtěl. A třeba dostat z CherryTree je totální peklo, na které mám napsaný konverzní program, který po 75 commitech pořád nezvládá všechno, protože interní zkurvenost rich textu co CherryTree používá je naprosto neuvěřitelná a nepopsatelná. To po mě například vyžaduje vcelku náročný postprocessing, kde není výjimkou, že konverzí článku jako je ten první díl o Selfu bych strávil klidně 30+ minut ručních editací HTML.
Notion oproti tomu taky umí všechno možné formátování, třeba tu vedlejší sérii článků o Selfu jsem psal v kanban boardu, kde každý štítek v něm byla samostatná textová noda (viz příloha) obsahující jednu kapitolu. Výsledek jsem pak vzal, naházel pod textovou nodu a dal to celé dohromady do článku. Dá se v něm inlinovat videa, různé další soubory, celé stránky.
Tohle má hodně blízko k systému, který bych chtěl vybudovat s tím svým programovacím jazykem a musím říct, že to prostě vede k větší produktivitě. A jak jsem psal na začátku, snažím se být pragmatik, tzn pokud má něco větší efektivitu, je to měřitelně lepší a výkonnější a jsi v tom produktivnější, tak je hloupost a sebe-škodění to nepoužívat.
Ostatně třeba zrovna linux taky nepoužívám protože by mi nějak extra vyhovoval, ale protože prostě není nic lepšího. Kdyby bylo, tak ho zahodím a utíkám až mi vlajou vlasy :]
A spousta podobných služeb skončila, odkazy umřely, obsah zmizel… Máš přece vlastní doménu, máš Abíčko, můžeš to dát na GitLab a nechat zbytek světa, aby to kopíroval atd.Pozor, tady je třeba rozlišit dvě věci. Mám vlastní doménu, ale nemám momentálne vlastní publikační systém. Už mnoho, mnoho let sbírám podněty a todo body a nápady, jak ho vytvořit a vím úplně přesně co chci. Co se mě týče, tak ať už tedy udělám cokoliv kromě toho systému, tak to vždycky bude náhražka, suboptimální řešení, které mě bude v něčem srát. Jestli teda používat github, nebo třeba notion.so je mi docela jedno. Co se týče druhé věci, tak nikdy bych nepoužíval službu, nad kterou nemám kontrolu alespoň ve smyslu že mám všechna data. A zrovna z toho notion.so si dělám pravidelné úplné exporty všech dat v markdownu, ale nedávno se mi navíc podařilo reverzovat jejcih API, takže si sahám přímo na různé javascriptové objekty, které to už chce jen ztransformovat do HTML / whatever.
vsimas si, jak jsi cim dal tim ve svych prispevcich vulgarnejsi? Snad jsi v poradku, vidavam to jako prvni symptom upadku ducha
A co že ty máš najednou starost o stav mého ducha? :)
Jinak osobně bych řekl, že moje používání sprostých slov je na úplném historickém minimu, myslím že kdybys fakt udělal komparativní analýzu, tak bys nestíhal čumět. Například se mi skoro podařilo eliminovat slovo mrdka používané jako úroveň kvality. Například Outlook jako mrdka shnilá, mrdka plesnivá, mrdka zlá a prohnaná. Podčůráčí a smažené řitní věnce už taky nerozhazuju na počkání a že je někdo kvazidebilní heptačůrák jsem taky neřekl ani nevím jak dlouho. A třeba fekální poezii jsem snad neskládal* od hejtu co jsem sem psal.
Takže za mě v poho ;)
*;
V reakci na úpadek ducha,
stříkám mrdku do dadova ucha.
Součástí jazyka od dávné doby,
je užití nadávek k ventilení zloby.
Místo symptomů hledej klady,
nebudem muset psát sračky tady.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.