Portál AbcLinuxu, 30. října 2025 20:16
btw: https://metacpan.org/pod/Class::Prototyped
V Perlu je modifikaci pole @ISA mozne za behu zmenit lookup metod z "rodicu" pripadne pouzit fallback metodu, ktera se zavola, kdyz volana metoda neexistuje.Vím co myslíš, to je v pythonu možné taky, ale má to podstatné výkonnostní penále (ve srovnání se Selfem). Ono to ale stejně dává smysl hlavně s tím zbytkem.
Perl je snad porad bezny jazyk, ne?Není, ale to je jedno. Na co je to narážka? Jsem líný to po sobě číst abych to pochopil.![]()
*.self zdrojáků? Přecejen, uč se jazyk v nějakém očividně plesnivém GUI místo v normálním editoru a s plným komfortem vlastního WM (já vím, že to běží jen v okně, ale stejně...). V minulém díle jsi o tom zprovoznění Selfu psal, ale zrovna tohle jsi vynechal:
Zajímavé jsou v podstatě jen dva switche;Proč to pravděpodobně jen tak nepoužijeme? A jak to pak funguje? Jestli jsem to správně pochopil, tak ten obraz paměti obsahuje i standardní knihovnu. Když spustím jen jeden osamocený zdroják, tak mi bude chybět, ne? A pak mi tu ještě trochu chybí zmínka o datových typech a nějaké zdrojáky na ukázku (Fibonacci a takové kraviny, ne jen demonstrace syntaxe).-f, pro načtení.selfsouboru (což pravděpodobně jen tak nepoužijete) a-s, který načítá uložený obraz paměti.
Díky za článek. Trochu mi v něm chybí návod, jak si Self jednoduše vyzkoušet. Ideálně bez nutnosti zprovozňovat to grafické rozhraní (Morphic), protože pokud mě na Selfu něco odrazuje, tak je to právě ten.Eh, to bylo v minulém dílu, ne?
Vypadá to příšerně neergonomicky a myšoidně a asi bych z toho zešílel (nemluvě o tom, že některé klávesové zkratky, co jsi zmiňoval, mi kolidují s těmi, co mám v i3). A abych řekl pravdu, ani mě to moc neoslovuje koncepčně. Z formálního hlediska to může být hezčí než současné systémy a umím si i představit, kde by se to třeba mohlo hodit, ale prakticky to (pro mě) použitelné prostě stejně není.Tak já netvrdím, že je to prakticky použitelné. Má to spoustu nevýhod, kterým se bude detailněji věnovat příští díl, ale rozhodně je to něco, co stoji za prozkoumání, když už kvůli ničemu jinému, tak kvůli rozšíření si obzorů. Je to něco podobného jako Acme pro Plan9 - člověka to fakt donutí vyjít z konformity a po chvíli používání vidí, že to dává svůj smysl, i když uzná, že třeba pro něj to není nejefektivnější. Tak jako se ti vyplatí si naprogramovat svůj vlastní lisp, tak se ti vyplatí se naučit používat tohle prostředí (+ smalltalk) čistě protože tě to nějak ovlivní a zbytek života budeš koukat na problémy z trochu jiného uhlu. Osobně například můžu říct, že mně hodně ovlivnila reflexe. To je něco na co když si zvykneš, tak začneš přemýšlet proč to vlastně jinde není a proč by se jako měl software chovat jako kus skla, který není možné rozebrat, když je to přitom spíš přístroj jako hodinky, kde můžeš jednoduše odklopením poklopu koukat jak se točí kolečka. V podstatě u libovolného systému, který teď vytvářím se snažím reflexi nějak podporovat, neboť mi to prostě umožňuje ten systém vidět a interagovat s ním nad běžnou úroveň. To mi dává učitý boost v podobě snížené kognitivní náročnosti a možnosti vynechávat cyklus "znova to spustím a něco vypíšu printem".
Jazyk ale vypadá zajímavě a asi ho někdy vyzkouším, ale zprovozňovat tu VM mě taky dost odrazuje (s ohledem na to, že bych si s tím stejně hrál jen chvíli). Když už se snažíš zvýšit o Selfu povědomí, nezvažoval jsi vytvoření balíků s tou VM a nějakým skriptem nebo imagem na spouštění *.self zdrojáků?Ani ne. K čemu by to bylo? Vždyť prostě stáhneš ten zip, tam máš rovnou binárku a ta umí spouštět
*.self zdrojáky parametrem -f. Pokud chceš image bez grafiky, tak použij přibalený core.snap.
Proč to pravděpodobně jen tak nepoužijeme? A jak to pak funguje? Jestli jsem to správně pochopil, tak ten obraz paměti obsahuje i standardní knihovnu. Když spustím jen jeden osamocený zdroják, tak mi bude chybět, ne?V tomhle bych tě asi spíš odkázal na manuál. Když načteš ten
core.self, tak to jde pustit přes run script zprávu, ale nevím jak automaticky načíst osamocený zdroják v tom kontextu. Určitě to nějak půjde, ale jsem moc líný studovat jak.
A pak mi tu ještě trochu chybí zmínka o datových typech a nějaké zdrojáky na ukázku (Fibonacci a takové kraviny, ne jen demonstrace syntaxe).Možná příště. Mrkni obecně do Selfu samotného (tzn do grafického rozhraní na globals / applications).
ad spouštění) Nakousl jsi to v minulém dílu, ale zmátlo mě to tvrzení, že to pravděpodobně jen tak nepoužijeme spolu s přirozeně se nabízející otázkou, jak to tedy bude s tou standardní knihovnou. Ale OK, zkusím na to kdyžtak mrknout.
ad GUI) Netvrdím, že tvrdíš, že je to prakticky použitelné. Souhlasím, že je to dobré na rozšíření obzorů a schopnosti uvažovat nad softwarem a programováním jinak, ale čtení těchto článků mi přijde jako dostatečný kompromis. Napoprvé bych to GUI asi vypnul po pár minutách (podobně jako ty), protože bych nevěděl co a jak, takže vyzkoušet si to během jediného večera v podstatě nedává smysl – odnesl bych si pak na Self nepřiměřeně negativní a především neobjektivní názor. Musel bych to opravdu zkusit používat, aby to mělo nějaký význam. A to už vyžaduje více času a především motivace. Já tu motivaci nyní nemám.
ad reflexe) Obávám se, že svůj názor nezměním. V ideálním případě bych chtěl něco jako AppleScript (ale s nějakým verzováním GUI, tj. aby to mohlo být opřené proti konkrétní verzi a všude jinde to skončilo s chybou), nebo pro začátek alespoň umět z autorizovaných programů oknům přímo posílat události. Pro vlastní programy by se mi líbíla možnost se připojit do živé VM a dívat se na objekty a proměnné nebo třeba pozastavit vykonávání a pozměnit kód metody (typický příklad: dlouho běžící výpočet/crawler, do kterého jsem zapomněl přidat nějaké logování apod.). S některými z těchto věcí mám zkušenost z Javy, ale na UX by bylo co zlepšovat. Na ty programy, kde bych to uplatnil ze všeho nejvíc, navíc JVM typicky vůbec nepoužívám.
Automatizovat nějakou operaci nad programem třetí strany tak, že budu přímo interagovat s jeho vnitřním stavem, bych považoval za extrémně špatnou a mnohdy nebezpečnou programátorskou praktiku, jejíž používání zákonitě nemůže být dlouhodobě udržitelné. Jsou případy, kdy to může být jediná rozumně uplatnitelná možnost, ale protože (reálně) tento mechanismus stejně neexistuje, nemá smysl se o tom přít. Pokud bych si ale stavěl vlastní prostředí, raději bych dbal na dobrý modulární design než na podporu hacku, který v případě krajní nouze bude možné použít i nad monolitickým a normálními cestami necustomizovatelným softwarem.
To je můj názor. Tvůj ti neberu.
Automatizovat nějakou operaci nad programem třetí strany tak, že budu přímo interagovat s jeho vnitřním stavem, bych považoval za extrémně špatnouJá moc nechápu, kde se to bere tohle. Už mi to vyčítal i děda jablko a tuším že i xkucf03. To že máš reflexi přece neznamená, že něco takového hned začneš dělat. Když vezmu ty hodinky, tak ti to taky dává možnosti nakouknout dovnitř, ale to přece neznamená, že do toho hned jdeš, jen máš tu možnost. Reflexe je něco jako když ke starému tesláckému osciloskopu přišlo i kompletní schéma a dokumentace a zároveň to mělo různé měřící body, takže jsi ho mohl kvalitně diagnostikovat. Neznamená to hned, že ten osciloskop rozebereš, napojíš se na něj svým vlastním zařízením a uděláš z toho hybrid u kterého není jasné kde končí jedna věc a kde začíná druhá. A když jo, tak se přece nemůžeš divit. Trochu mi to připomíná reakce lidí na dynamické typy, kde často vídám tendence reagovat ve stylu že to přece nemůže fungovat a že to lidi budou zneužívat a kde co. A ve výsledku to funguje naprosto v pohodě hlavně protože lidi prostě nemají tendenci strkat si klacek do kola na kterém jedou, protože tím ubližují sami sobě.
-g, o něčem pokročilejším si můžeš nechat zdát (a ono ani s tím gdb to nebude všude růžové, nevím, jak efektivně debugovat třeba init systém, ale rozhodně to bude vyžadovat nějaké větší úsilí).
Doplnil bych do prvního dílu, že se image načítá pomocí "-o" parametru.Je to tam napsané:
Zajímavé jsou v podstatě jen dva switche; -f, pro načtení .self souboru (což pravděpodobně jen tak nepoužijete) a -s, který načítá uložený obraz paměti. Zbytek jsou vesměs technické detaily vhodné pouze pro velmi pokročilé uživatele.
. Run_scaled zkusím.
Nicméně onen morphic se mi zobrazí strašně prťavý (14" display, full hd). Nejde v tom selfu nějak nastavit DPI a přizoomovat to? Stačilo by asi natvrdo, ať je každý pixel 2x větší - když je to prostředí/jazyk tak uzpůsobitelné, stačilo by upravit spravný objekt ne? Snižovat rozlišení se mi kvůli tomu nechce.Bohužel.
Nicméně onen morphic se mi zobrazí strašně prťavý (14" display, full hd). Nejde v tom selfu nějak nastavit DPI a přizoomovat to? Stačilo by asi natvrdo, ať je každý pixel 2x větší - když je to prostředí/jazyk tak uzpůsobitelné, stačilo by upravit spravný objekt ne? Snižovat rozlišení se mi kvůli tomu nechce.Trochu jsem zagooglil a našel jsem run_scaled. Můžeš to zkusit?
.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.