Portál AbcLinuxu, 30. dubna 2025 10:33
Historický přehled snah o použití Smalltalku přímo jako operačního systému.
Smalltalk byl vyvinut v sedmdesátých letech pro pro Xerox Alto, což byla velice drahá experimentální pracovní stanice s technickými parametry z říše snů. Tenkrát byl rozdíl mezi aplikací a operačním systémem velmi malý. Prostě jste do počítače vložili disk (opravdu disk, nikoliv disketu) a s pomocí jednoduchého zavaděče z něj spustili určitý program, který převzal nad strojem úplnou kontrolu. Jedním z programů, který jste měli k dispozici, byl Smalltalk.
Ten už definici toho, co si pod desktopovým operačním systémem představujeme dnes, naplňoval důsledněji. Poskytoval grafické uživatelské rozhraní ovládané s pomocí klávesnice a myši, multitasking, prostředky pro správu souborů, ukládání a obnovování aktuálního stavu systému, základní textový a grafický editor, pokročilé nástroje pro vývoj a dovoloval v sobě spouštět další programy.
V některých ohledech byl pokročilejší než operační systémy současnosti. Byl plně objektově orientovaný, vše mezi sebou komunikovalo unifikovaným způsobem pomocí zpráv. Byl pro uživatele naprosto otevřený a nekladl mu žádná umělá omezení, naopak se mu snažil úpravy čehokoliv v systému co nejvíce usnadnit svou propracovanou reflektivitou. Že uživatel má možnost za běhu například měnit kód plánovače procesů, může z dnešního pohledu vypadat jako bezpečnostní peklo, ale tenkrát ještě nebylo tolik zvykem se na uživatele dívat jako na zdroj potíži, v tom lepším případě jako na pouhého vykonavatele nějakého pracovního procesu. Na uživatele se nahlíželo jako na znalého řešitele problémů, který potřebuje mít přístup ke všem relevantním informacím a úkonům. Přístup, který v dnešním IT světě tak zoufale chybí.
O tom, jak Smalltalk na Altu vypadal a jak rychlý (hodilo by se spíše říct pomalý) byl, se můžete podívat na ukázce, kterou připravil Dan Ingalls. K pro osobní vyzkoušení je k dispozici zoufale pomalý JavaScriptový emulátor hardware Alta nebo podstatně živější verze Smalltalku-78 běžící rovněž v JavaScriptu. O schopnostech Smalltalku-80 jsem se podrobněji rozepsal například v článku Vývojové prostředí dávnověku.
Xerox potenciálu Smalltalku nikdy plně nevyužil. Drahé pracovní stanice Xerox Star Smalltalk jako operační systém nepoužívaly a těžily z něj pouze ideově. Z Xeroxu se odvodila společnost ParcPlace snažící se Smalltalk komercializovat a brzy si získala věhlas svou nenasytností. V roce 1992 se jednouživatelská licence ParcPlace ObjectWork prodávala za 3500 dolarů (ekvivalent dnešních 6200 dolarů). Neznám podrobnosti tehdejšího licencování, ale když si dnes budete chtít pořídit licenci VisualWorks, na stránkách Cincomu, pod jehož značkou se dnes prodávají pokračovatelé většiny komerčních implementací Smalltalku, cenu se ani nedozvíte. Vlastnění licence totiž znamená, že musíte odvádět i určitou část ze zisku a navíc se takto licencuje virtuální stroj, což znamená, že dokud jej nějaký váš zákazník používá, platíte.
Smalltalk/V společnosti Digitalk (dnes rovněž sloučen do VisualWorks) byla implementace pro osobní počítače s Dosem a později Windows. Nutno podotknout, že byl podstatně levnější, stál 500 dolarů, což byla cena srovnatelná s produkty Microsoftu a Borlandu pro C++ (viz zde). Byla to jedna z mála komerčních implementací Smalltalku, která se pojetí operačního systému do jisté míry blížila, protože ve verzi pro DOS byla schopna samostatně nabootovat z diskety. Smalltalk-80 existoval i pro Atari ST, kde by jej také bylo možné považovat za operační systém.
V roce 1996 původní autoři Smalltalku, Alan Kay a Dan Ingalls, oprášili starou licenci Smalltalku-80 společnosti Apple a vytvořili Squeak. Ten si brzy získal mnoho pozornosti a dočkal se portování na řadu platforem. Jednou z nich byla i verze pro DOS, což už v té době byl samozřejmě čirý archaismus. Squeak přišel příliš pozdě na to, aby dokázal zastavit rychlý odklon od Smalltalku, který IT průmysl v polovině devadesátých let zažíval. Alespoň ve verzi pro DOS si vystačil s pomalou 386kou a 3 MB RAM, takže ani o nějakých pět let dříve by nemusel mít pověst brutálně nenasytného pomalého bumbrlíčka.
Squeak v okamžiku, kdy spatřil světlo světa, byl zastaralý prakticky ve všech ohledech. V jedné věci zvláště. Všechny ostatní implementace v té době už dávno upustily od kompletního vlastního grafického systému a snažily se používat nativní prvky uživatelského rozhraní hostitelského systému. Squeak se ale chtěl zaměřit na mutlimediální aplikace a PDA, kde tato svébytnost byla spíše výhodou. Navíc to dovolovalo jednodušší portování na nové platformy.
Zároveň to umožnilo provozovat Squeak s minimálními požadavky na operačním systému a protože se nabídka dostupných programů rychle rozšiřovala, brzy byl schopen nabídnout prakticky kompletní svébytný desktop s přehrávačem videí a hudby, hrami, ale i s vlastním webovým prohlížečem jménem Scamper. Je jasné, že snahy nechat běžet jeho virtuální stroj na holém železe a zcela se tak obejít bez operačního systému na sebe nenechaly dlouho čekat. Tak vznikl projekt SqueakNOS (=No Operating System).
SqueakNOS využíval pro základní inicializaci systému Grub. Pak se z ISO souboru spustil virtuální stroj rozšířený o modul umožňující nízkoúrovňovou komunikaci s hardwarem. Vše ostatní, tedy i ovladače zařízení, bylo napsáno ve Smalltalku. Postupně se jejich záběr rozšířil, takže SqueakNOS dokázal pracovat se síťovou kartou, sériovým portem, diskem s FAT32. Dokázal běžet i na reálném notebooku. Jeho poslední verze je z roku 2011, která smísto Squeaku používá Pharo 1.1.
SqueakNOS nikdy nevyrostl ze stádia zajímavého experimentu, ale minimálně dokazuje, že mít systém s ovladači psanými v tak vysokoúrovňovém objektovém jazyce, jakým je Smalltalk, je možné. Vrtat se v živém kódu třeba ovladače klávesnice jak rozhodně zajímavý zážitek.
Existovala i snaha o vytvoření varianty Squeaku běžící na holém železe RaspberryPi jménem RaspberrySqueak. Tento projekt se však bohužel nikdy nedostal do stavu, který by byl alespoň trochu použitelný. Experimentovalo se i s implementací virtuálního stroje přímo v FPGA, ale nevím o tom, že by z těchto snah někdy vzešlo něco reálného.
SqueakNOS, že umožňuje spouštět pouze programy, které jsou pro něj určené, tedy programy psané ve Smalltalku, a má silně omezenou hardwarovou podporu. Praktičtějším přístupem je postavit systém nad něčím již existujícím. Zde se samozřejmě nabízí linuxové jádro nebo nějaká minimální Linuxová distribuce. Na tomto je postaven třeba PharoNOS. Tyto projekty, mezi něž lze vlastně zařadit i minimalistické obrazy pro Docker, cílí spíše na serverové nasazení, i když vzhledem k nemožnosti aktualizace takového systému to nelze považovat za příliš dobrý nápad.
Když už se vzdáte touhy použít Smalltalk jako plnohodnotný operační systém, stále máte možnost ho použít jako desktopové prostředí. I zde ovšem narazíte na problematické spojení se světem okolních aplikací, například pokud budete chtít v nějakém smalltalkovském okně zobrazit standardní webový prohlížeč. Kdysi existoval pokus mít ve Squeaku napsaný XServer. Dotáhl to do stavu, kdy byl schopen otevřít například xclock. Pak se nad ním zavřely vody. Je možné mít ve smalltalkovském prostředí otevřené VNC okno, což ale není to pravé ořechové. Smalltalkovský okenní manager pro X11 žádný neexistuje.
Lepší je situace v případě, že si vystačíte pouze s terminálovými aplikacemi. Squeak měl kdysi integrovaný plugin virtuálního stroje umožňující práci s pseudoterminály. Ten ale zavál čas. Podařilo se mi jej z těch závějí vyhrabat a přepsat tak, aby použil FFI. Toho se pak chytli další a výsledkem je PTerm. Není to žádný zázrak, ale lepší jak nic.
Lehkého oprášení se kupodivu dočkal i Scamper, webový prohlížeč pro Squeak, kde pár lidí z německého HPI opravilo ty největší chyby. V okamžiku, kdy snahu o udržování vlastního vykreslovacího jádra vzdal i Microsoft, to vypadá značně poťouchle, ale pro zobrazování jednoduchých stránek bez JavaScriptu třeba s nápovědou se může hodit.
Snahy udělat se Smalltalku opět operační systém, se periodicky objevují a záhy zase mizí, protože o něj vlastně nikdo nestojí natolik, aby do toho investoval dostatek času a peněz. Včetně mě, I když idea je to pořád lákavá.
Proč? Když se člověk podává třeba na Smalltalk ze sedmdesátých let, nemůže se ubránit údivu, co tenkrát dokázali všechno udělat. A netýká se to jen Smalltalku. Existuje jedna naprosto samozřejmá zákonitost. Jednoduché věci se dělají jednoduše. Opačně to bohužel většinou neplatí, často je mnohem jednodušší udělat věci složitě. Když najdete způsob, jak udělat jednoduše něco jednoduchého, máte vyhráno. Když se podíváte na to, k čemu lidé dnes počítačové systémy používají, většinou jsou to věci, na nichž není v principu nic složitého. Přesto souboj s komplexitou brutálně prohráváme a můžeme si za to sami. A pro Smalltalk to platí úplně stejně.
Když si pustím některou z těch starých verzí Smalltalku a prohrabu se v ní, zavírám je většinou naprosto okouzlen jejich elegantností. Tím nemyslím jejich uživatelské rozhraní a samozřejmě je v nich řada věcí příšerná, ale v jádru jsou tam věci řešeny velmi přímočaře. A fungují. Dnešní implementace Smalltalku, jako je Pharo, část tohoto ducha ztratily. Často z konkrétních rozumných důvodů, ale člověk se nemůže ubránit otázce, jestli se to nedalo vyřešit lépe a jestli to vždy stálo za to. V mnohem větší míře to pak platí pro rozdíl mezi světem Smalltalku a tím okolním.
Chuck Moore jednou řekl:
I guess I feel that I could say that if it isn't solving a significant real problem in the real world it isn't really Forth.
Občas se hodí si ho připomenout. Smalltalk jako operační systém dnes neřeší žádný podstatný reálný problém, ale pokud bychom ho měli, řešily by se nám možná snáz.
Tiskni
Sdílej:
Prinos alternativnich OS muze byt tedy i v tom, ze rozbijeji falesne predstavy, ze soucasny stav je nejlepsi, nebo jediny mozny.
Jenže aby něco reálně ukázaly, tak je potřeba, aby to bylo k něčemu prakticky použitelné. V podstatě jsem to psal už v diskusi vedle. Že je nějaká myšlenka skvělá nejlépe ukážeš tím, že půjde použít k něčemu, co lidé běžně řeší. Pokud se ale na jejich úroveň (resp. úroveň běžně řešených úkolů) odmítáš "snížit", tak se nemůžeš divit, že ta myšlenka zůstane nepochopena nebo ji lidi budou ignorovat, protože jim to nic nepřináší. Do toho tě samozřejmě nemůže nikdo nutit a můžeš zůstat zásadový a s ničím tak přízemním se nezahazovat, ale škodíš tím akorát sám sobě, protože se ta tvoje (byť skvělá) myšlenka/technologie nerozšíří, což značně snižuje její použitelnost i pro tebe. A ostatní si mezi tím budou spokojeně programovat v Céčku a Javě a psát knihovny pro tyhle jazyky.
něčemu, co lidé běžně řeší
Jestli tohle není součást problému…
porucha duševní (psychická), zast. třídění sem řadilo duš. choroby (nemoci) a úchylky či anomálie; přesnější je dělení na choroby (viz) a poruchy jako relativně trvalé, léčbou jen málo ovlivnitelné, při různém stupni vychovatelnosti a vzdělavatelnosti; viz též psychopatie, oligofrenie; dle WHO (viz) klinicky prokazatelná změna duš. činnosti, kt. vyřazuje člověka z práce, spol. života či zodpovědnosti při právních úkonech; šiřeji změna někt. psych. procesů projevující se v chování a prožívání člověka a znesnadňující jeho interakci se soc. okolímHeslo duševní choroba v tom slovníku přitom chybí a jak česká wiki (která má opět problém se zdrojem), tak anglická mluví v případě schizofrenie o duševní poruše. Takže zdroj (mimochodem z roku 1996 a těžko říct, jak byl starý ten jejich), podle kterého je psychická porucha synonymem pro poruchu duševní, ještě vyčleňuje duševní choroby, ale dál neupřesňuje, co to je, a mezitím je jeden z nejvážnějších problémů, který je v této souvislosti možné mít, považován za poruchu, nikoliv chorobu. Nicméně je pravda, že slova psychologie i psychiatrie jsou odvozená ze stejného řeckého slova, a pokud tedy psychické problémy znamenají souhrně vše, co řeší obě tyto disciplíny, tak to nijak nekonzistentní není. Pak je ten pojem ovšem natolik široký, že by bylo záhodno mít možnost to dále dělit, ale je otázka podle čeho, protože specializace někdy může být sporná. Osobně jsem psychické poruchy považoval za lehčí (tj. řešené spíše psychologem) a duševní za těžší (tj. řešené spíše psychiatrem), ale je možné, že jsem se mýlil.
Lehkého oprášení se kupodivu dočkal i Scamper, webový prohlížeč pro Squeak, kde pár lidí z německého HPI opravilo ty největší chyby. V okamžiku, kdy snahu o udržování vlastního vykreslovacího jádra vzdal i Microsoft, to vypadá značně poťouchle, ale pro zobrazování jednoduchých stránek bez JavaScriptu třeba s nápovědou se může hodit.
Což vyvolává otázku, jestli s tou technologií (Webem) není něco v nepořádku, když ji dokáží implementovat tak sotva dvě firmy/organizace1 na světě a všem ostatním nezbývá než používat jejich výtvory.
[1] Mozilla a Google
A nedalo by se něco podobného říct i o Javě?Lehkého oprášení se kupodivu dočkal i Scamper, webový prohlížeč pro Squeak, kde pár lidí z německého HPI opravilo ty největší chyby. V okamžiku, kdy snahu o udržování vlastního vykreslovacího jádra vzdal i Microsoft, to vypadá značně poťouchle, ale pro zobrazování jednoduchých stránek bez JavaScriptu třeba s nápovědou se může hodit.Což vyvolává otázku, jestli s tou technologií (Webem) není něco v nepořádku, když ji dokáží implementovat tak sotva dvě firmy/organizace1 na světě a všem ostatním nezbývá než používat jejich výtvory.
Těch javovských VM je poměrně dost... nicméně uznávám, že vlastní JVM si doma jen tak nenapíšeš (zatímco třeba interpret/kompilátor Scheme by sis napsal), ovšem stejně tak by sis nenapsal ani vlastní Python, Rust, D atd.
Neštěstí webu je ale hlavně v tom, že pomocí jednoho kladiva řeší dva odlišné úkoly: a) původní úkol: sdělování hypertextových informací b) být obecnou platformou pro běh aplikací. Problém dnešního webu je v tom, že i když chceš jen a), musíš stále obsáhnout celou komplexitu potřebnou pro b). Zatímco v případě Javy, Qt/C++ atd. tu plnou komplexitu potřebuješ jen ve chvíli, kdy píšeš obecné aplikace. Nikdo tě nenutí si instalovat Javu/Qt/C++ kvůli tomu, aby sis přečetl jeho článek, neposílá ti ho jako zdroják/objekty v těchto jazycích. Ale u webu je to jinak -- tam nikdo není schopný definovat, jakou podmnožinu té celkové komplexity potřebuješ, aby sis přečetl hypertextovou informaci -- takže i když si chceš třeba jen přečíst novinový článek (text + jeden vložený obrázek), potřebuješ k tomu dneska plnou komplexitu webu, za kterou jsou desítky milionů řádků zdrojového kódu. Někde mezi tím (ale blíž k tomu hypertextu) je odesílání jednoduchých formulářů. Proč bys měl potřebovat plnou komplexitu Firefoxu/Chromia k tomu, abys vyplnil a odeslal daňové přiznání nebo třeba platební příkaz do své banky? Tyhle věci by měly být z principu co nejjednodušší a nejbezpečnější.
nicméně uznávám, že vlastní JVM si doma jen tak nenapíšeš (zatímco třeba interpret/kompilátor Scheme by sis napsal)Zase tak nereálné to není.
V zásadě ano, ale nemyslím si, že by to byl trvalý stav. Až dosáhne určité kritické velikosti skupina lidí, které vadí současná nekonečná komplexita webu, tak vznikne něco jiného -- a ta dvě webová jádra budou možná navždy největší, ale web jako takový nebude už tak relevantní, celý ten trh půjde dolů a místo něj bude něco jiného.
To je možná ono... Na webu probíhá jak komunikace člověk-člověk, tak člověk-stroj.
Když se zaměříme na to první, tak proč by to mělo být inherentně složité? Vždyť lidé spolu běžně komunikují pomocí řeči, což je posloupnost slov. Úspěšně spolu komunikují i asynchronně -- jeden napíše knihu a druhý si ji později přečte. A kniha je jen posloupnost slov a v tom sem tam nějaký obrázek. Nic moc složitého.
Co se týče komunikace člověk-stroj1, tak ta bude tak složitá, jak složitou ji navrhneš. Např. příkazový řádek nebo REPL nějakého vyššího jazyka je pořád o několik řádů jednodušší než web a má neomezené možnosti. Když k tomu přidáš možnost kreslení grafiky a přijímání událostí z polohovacího zařízení, tak můžeš dělat i velice přívětivá rozhraní (i pro BFU) a pořád je to mnohem jednodušší než implementace webových prohlížečů.
[1] i když to jsou ty aplikace, zatímco to první je hypertext, což by oboje mělo být řešené spíš jinou technologií -- nebo by měla být nějak definovaná podmnožina dostačující pro hypertext
Ve starém Smalltalku jsou nástroje jako inspektor jednodušší, což člověk ocení hlavně v případě, že hledá reference na nějaké objekty. Pharo ve velkém používá Announcements, které Glamour ještě rád kombinuje s bloky, takže výsledek se neladí právě snadno. Traits chtě nechtě přidávají další vrstvu komplexit navíc. Na tvorbu uživatelských rozhraní je tu Morphic, se kterým nikdo nechce šahat, protože ho má nahradit Bloc. Spec, jehož interní implementace je vyloženě špatná. Zmíněný Glamour, který má díky zmíněné architektuře problémy s úniky paměti a původní autoři ho neudržují, protože píší úplně novou verzi. Do toho je tu ještě Spotter, který je z hlediska tvorby AI totální vetřelec. Pharo obashuje spoustu duplicitních systémů, protože při přidání nových se důsledně odstraní staré. Atd. Procházet si pak staré Smalltalky působí trochu jako balzám na duši.
Ovlivnit je samozřejmě mohu, všichni hlavní vývojáři si tyto problém uvědomují a snaží se s tím něco dělat. Současný stav nevznikl tak, že by někdo vývoj Phara tlačil ho špatným směrem, ale prostě tím, že vývojářů není tolik. V současnosti se pracuje se na opravách Specu, který plně nahradí Glamour, nová verze traits je modulární, jednodušší a úplně odstraněná z jádra atd. Nejvíce úsilí věnovalo potřebné infrastuktuře, která má umožnit snazší vývoj - bootstrapping a podpora Gitu. Už s tím spojené zlepšení modularity je velký posun vpřed.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.