abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 16:22 | Upozornění

    Společnosti Ticketmaster byla odcizena databáze s osobními údaji (jméno, adresa, telefonní číslo a část platebních údajů) 560 miliónů zákazníku. Za odcizením stojí skupina ShinyHunters a za nezveřejnění této databáze požaduje 500 tisíc dolarů [BBC].

    Ladislav Hagara | Komentářů: 1
    31.5. 23:55 | Nová verze

    Byla vydána nová stabilní verze 24.05 linuxové distribuce NixOS (Wikipedie). Její kódové označení je Uakari. Podrobný přehled novinek v poznámkách k vydání. O balíčky se v NixOS stará správce balíčků Nix.

    Ladislav Hagara | Komentářů: 0
    31.5. 17:33 | Nová verze

    Byla vydána nová verze 1.48.0 sady nástrojů pro správu síťových připojení NetworkManager. Novinkám se v příspěvku na blogu NetworkManageru věnuje Fernando F. Mancera. Mimo jiné se v nastavení místo mac-address-blacklist nově používá mac-address-denylist.

    Ladislav Hagara | Komentářů: 27
    31.5. 17:11 | Komunita

    Před 25 lety, 31. května 1999, započal vývoj grafického editoru Krita (Wikipedie). Tenkrát ještě pod názvem KImageShop a později pod názvem Krayon.

    Ladislav Hagara | Komentářů: 4
    31.5. 12:55 | Nová verze

    Farid Abdelnour se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 24.05.0 editoru videa Kdenlive (Wikipedie). Ke stažení brzy také na Flathubu.

    Ladislav Hagara | Komentářů: 0
    31.5. 11:22 | Zajímavý článek

    David Revoy, autor mj. komiksu Pepper&Carrot, se rozepsal o své aktuální grafické pracovní stanici: Debian 12 Bookworm, okenní systém X11, KDE Plasma 5.27, …

    Ladislav Hagara | Komentářů: 9
    30.5. 22:44 | Nová verze

    Wayland (Wikipedie) byl vydán ve verzi 1.23.0. Z novinek lze vypíchnout podporu OpenBSD.

    Ladislav Hagara | Komentářů: 0
    30.5. 21:22 | Zajímavý článek

    Craig Loewen na blogu Microsoftu představil novinky ve Windows Subsystému pro Linux (WSL). Vypíchnout lze GUI aplikaci pro nastavování WSL nebo správu WSL z Dev Home.

    Ladislav Hagara | Komentářů: 0
    30.5. 12:44 | Pozvánky

    V sobotu 1. června lze navštívit Maker Faire Ostrava, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    30.5. 12:22 | Nová verze

    Webový server Caddy (Wikipedie) s celou řadou zajímavých vlastností byl vydán ve verzi 2.8 (𝕏). Přehled novinek na GitHubu.

    Ladislav Hagara | Komentářů: 17
    Rozcestník

    Vývojové prostředí dávnověku – Smalltalk-80

    7. 5. 2009 | Pavel Křivánek | Programování | 6520×

    Dnešní nejpoužívanější integrovaná vývojová prostředí (IDE) jsou většinou neobyčejně komplexní aplikace, které programátory hýčkají automatickým doplňováním, zvýrazňováním syntaxe, vnořenou nápovědou, propracovaným debuggerem, průvodci, refactoringem, návrhovými nástroji a celou řadou dalších užitečných funkcí. Určitě ale neuškodí se od současných přepychových IDE na chvíli odpoutat a podívat se pár desetiletí zpět do historie, jak vypadala a co uměla vývojová prostředí tenkrát.

    Naše cesta bude o to pikantnější, že IDE, se kterým se seznámíme, bylo zároveň i ono legendární grafické prostředí Xeroxu, ze kterého čerpal inspiraci Apple pro svoje projekty Lisa a Macintosh, a je tak pradědečkem dnešních grafických uživatelských rozhraní bez ohledu na operační systém. Náš časoměr nastavíme na rok 1987, ale program, se kterým si budeme hrát, do značné míry odpovídá prvnímu oficiálnímu vydání z roku 1983 a nebude se ani zásadně lišit od toho, co Steva Jobse a jeho tým ohromilo v prosinci roku 1979 v laboratořích Xerox Palo Alto Research Center. Dnes oprášíme Smalltalk-80.

    Správce oken

    Pro naši demonstraci budeme používat Apple Smalltalk-80 upravený pro počítače Macintosh. Při jeho spuštění se krátce objeví dvě úvodní obrazovky, jedna s fotografií kolektivu, který za tímto portem stojí (tento zvyk se naštěstí neudržel), a druhá s obrázkem balónu unášejícího Macintosh.

    smalltalk-80
    netradiční úvodní obrazovka

    Potom na nás již vykoukne grafické uživatelské prostředí MVC (Model-View-Controller). Především v oblasti vývoje internetových aplikací je tato zkratka stále živá, stejnojmenný návrhový vzor vychází právě odsud. Toto prostředí je hodně strohé a některé jeho vlastnosti dnes působí poněkud nezvykle až úsměvně.

    smalltalk-80
    grafické prostředí MVC

    Možnosti správce oken jsou silně omezené, veškeré operace s okny, včetně přesunu a změny jeho velikosti, je třeba dělat přes kontextové menu vyvolané kliknutím na titulek nebo modrým tlačítkem myši (Smalltalk byl vytvořen pro ovládání třítlačítkovou myší s barevně odlišenými tlačítky - červeným, žlutým a modrým, na Applu jsou emulovány s pomocí klávesnice). Při změně velikosti okna nebo při otevření nového je nutné nejdříve myší určit oblast, kterou má okno vyplňovat. Titulky oken mají připomínat záložky a lze měnit jejich text. Při minimalizaci okna z něj zůstane na ploše viditelný pouze právě titulek.

    smalltalk-80
    operace s okny

    Při opuštění okna ukazatelem myši se sice zachovává fokus na původním okně, ale nedochází k jeho překreslování. Oproti dnešním standardům se u MVC výrazně liší posuvné lišty. Ty jsou viditelné, jen pokud je nad oknem přítomen kurzor, a jsou horizontálně rozděleny na čtyři části - posun obsahu o stránku dolů, posuvník, posun obsahu o stránku nahoru a vyvolání kontextového menu. Připomínám, že při posunech o stránku se mění pozice obsahu a šipky tak mají opačnou orientaci, než by dnes člověk očekával. Kontextova menu lze vyvolat i stisknutím žlutého tlačítka myši

    smalltalk-80
    posuvná lišta se čtyřmi funkčními zónami

    Při kliknutí na plochu se objeví hlavní kontextové menu. To slouží ke spouštění základních nástrojů (Workspace, Transcript, File list a Browser), práci s projekty, překreslení obrazovky, nalezení určitého okna v seznamu všech oken a k uložení a ukončení prostředí.

    Projekty

    Při vytvoření nového projektu se otevře další textové okno, do kterého lze zadat popis projektu. Když pak do projektu vstoupíte pomocí volby v kontextovém menu, otevře se vám nová prázdná plocha. Zde uživatel může dle libosti otevírat okna nová, včetně dalších vnořených projektů. Každý projekt si pamatuje své rozložení a obsah oken a má také vlastní sadu změn (viz dále).

    Celé prostředí je možné uložit, a to do posledního detailu. Pokud máte například otevřený debugger a prostředí uložíte a ukončíte, při znovuotevření můžete v ladění pokračovat dál, a to i pokud mezitím přesunete uložený obraz prostředí na jiný počítač.

    Browser

    V čase osmibitových mikropočítačů bylo běžné, že se k ovládání počítače používal interpret programovacího jazyka, nejčastěji Basicu. Podobně i Smalltalk-80 je směs operačního systému, programovacího jazyka a vývojového prostředí. Browser je základní nástroj pro editování a orientaci v kódu. Ve skutečnosti se jedná o sadu několika podobných nástrojů, které se od sebe liší rozložením a obsahem oken. V základní variantě je tvořen pěti okny.

    smalltalk-80
    Browser v základním rozložení

    V horní části Browseru jsou čtyři navigační okna hierarchicky zobrazující kategorie tříd, třídy, kategorie metod a metody. Ve spodní části okna browseru je editační pole se zdrojovým textem zvolené metody. Je možné mít otevřen libovolný počet oken tohoto nástroje s různými obsahy.

    Už ze základního popisu Browseru je zřejmé, že Smalltalk-80 je třídně orientovaný objektový jazyk. Po otevření Browseru v něm můžete prohlížet a měnit všechny dostupné třídy a metody systému. Pokud preferujete raději klasický systém editace zdrojových textových souborů, budete se muset vypořádat s jednou zásadní překážkou. Smalltalk-80 zdrojové textové soubory používá, ale jen jako transportní médium. Více si o tom povíme později. Smalltalk je čistě objektově orientovaný jazyk, což znamená, že vše v něm jsou objekty, včetně tříd a metod. Místo editoru souborů s definicemi tříd a metod zde máte k dispozici progresivnější nástroj - editor objektů tříd a metod. Hlavičkové soubory, preprocesor či sestavovací program nemají ve Smalltalku smysl. Každá metoda se překládá (do byte-kódu) samostatně, jejich délka většinou nepřesahuje pár jednotek řádků a ve skutečnosti je jejich velikost i fyzicky limitována (např. počtem literálů). To vede programátory k odlišnému pojetí práce s programem a u nováčků nezřídka vyvolává frustraci, protože jsou konfrontování s tunami tříd a metod, které jen málokdy vypadají, že dělají něco užitečného.

    Editor kódu metod mnoha možnostmi neoplývá. Zvýrazňování syntaxe se omezuje jen na tučné písmo pro název metody. Spokojit se musíme se základními operacemi se schránkou (copy/cut/paste) a historií (undo). Dále je k dispozici možnost nechat kód metody automaticky zformátovat či stlačit do kompaktní formy (format), vyhodnotit označený kod (doIt), vyhodnotit a vypsat výsledek označeného kódu (printIt) či si ho nechat vysvětlit (explain).

    Operace explain má poměrně zajímavou funkčnost, např. pokud ji aplikujeme na slovo factorial, dostane se nám následující odpovědi:

    "factorial is a message selector which is defined in these classes (Integer )."
    Smalltalk browseAllImplementorsOf: #factorial

    Vypsané vysvětlení je ve skutečnosti kus kódu ve Smalltalku, který když vyhodnotíme (doIt), otevře se nám Browser se seznamem všech implementací metody factorial napříč veškerými třídami - v tomto případě jediné definované ve třídě Integer. Můžeme si ji prohlédnout nebo dále upravit.

    Z dnešní perspektivy je hodně netradičně vyřešeno hledání a nahrazování textu pomocí jediné funkce again. Chcete-li např. nahradit jedno slovo v textu metody jiným, označíte ho myší, přepíšete a poté z kontextového menu vyvoláte operaci again a toto přepsání se provede i u dalšího výskytu slova v metodě. Podobně můžete provádět vyhledávání s tím rozdílem, že místo přepsání textu jej zkopírujete do schránky.

    Psaní kódu usnadňuje i řada klávesových zkratek, s jejichž pomocí lze rychleji psát nejčastěji používaná jména zpráv nebo si nechávat rozepsané názvy zpráv automaticky doplňovat z nabídnutých variant. Nechybí ani ohraničování označeného textu různými typy závorek a uvozovek. Pomocí klávesových zkratek je řešeno i formátování písma, které se využívá spíše u dokumentů. Pokud se při psaní kódu přepíšete v názvu proměnné, překladač nabídne možné varianty podobných názvů nebo umožní proměnnou automaticky doplnit.

    Kromě hledání všech implementací určité metody (implementors) umí Smalltalk nalézt i všechna její volání (senders) a vyhledat implementace všech zpráv, které byly uvnitř této metody použity (messages). Problém pro něj nepředstavuje ani si prohlédnout starší verze metody a případně se k některé z nich vrátit. I u tříd je možné si nechat najít všechna její použití (class refs). Smalltalk vám vyhledá i výskyty instančních a třídních proměnných (společných objektům stejné třídy). Je vhodné zmínit, že tyto operace nedělá na základě jednoduchého textového vyhledávání, ale skutečně bere v úvahu sémantiku jazyka. V okně Browseru si ještě můžete všimnout dvou tlačítek "instance" a "class", které přepínají dvě sady metod. První odpovídá metodám, kterým rozumí instance dané třídy, druhá jsou metody, kterým rozumí třída samotná.

    Smalltalk-80 používá jednoduchou dědičnost s třídou Object jako vrcholem hierarchie a nemá jmenné prostory. Všechny metody jsou veřejné (public) a instanční proměnné nejsou z vnějšku třídy viditelné. Třídy jsou také objekty a jako takové mají své instanční proměnné a třídy.

    Ladění

    Integrované vývojové prostředí by nikdy nebylo kompletní bez kvalitního ladícího nástroje (debugger). Pokud je v programu vyvolána neošetřená výjimka, zobrazí se okno s jejím popisem a zkráceným výpisem zásobníku volání. Uživatel se může rozhodnout, jestli výjimku bude ignorovat, nebo otevře debugger a příčinu opraví.

    smalltalk-80
    vyskytla se výjimka

    Ladící okno zobrazuje zásobník volání, kód příslušné metody a dva tzv. Inspectory - seznam instančních proměnných volaného objektu (self) a aktuální kontext zásobníku volání s lokálními proměnnými (thisContext). Obsah instančních i lokálních proměnných je možné během ladění měnit. Měnit lze dokonce i zdrojový kód právě laděných metod, a to za běhu bez vypínání debuggeru a nového překladu programu.

    smalltalk-80
    debugger

    Přítomna je možnost provádět krokování, ale chybí funkce vytváření zarážek (breakpoint). To se nejčastěji řeší přidáním příkazu do textu metody, který vyvolá nedestruktivní výjimku Halt. Ve Smalltalku neexistuje rozlišení mezi režimem úpravy programu, ladění a běhu programu, všechny fáze splývají.

    smalltalk-80
    ladění

    Profilování

    Kupodivu nechybí ani základní možnosti profilování programu. Můžete použít nástroj MessageTally, který zjistí časovou náročnost jednotlivých větví zvoleného kódu a pomůže vám určit úzká hrdla vaší aplikace.

    smalltalk-80
    profiler

    Inspector, Workspace, Transcript, Form Editor

    S Inspectorem jsme se již setkali v ladícím okně. Zobrazuje a dovoluje měnit seznam instančních proměnných nebo prvků pole určitého objektu a dovoluje objektům zasílat zprávy. Pro členské proměnné lze vyvolat další Inspector a tak procházet postupně celou hierarchii objektů. A protože není problém získat seznam všech objektů, které na daný objekt odkazují, nebo třeba seznam všech instancí nějaké třídy, je možné se v celé objektové paměti pohybovat jako žralok ve vodě. Pro Inspector si můžete vytvářet speciální varianty odpovídající potřebám vlastních tříd.

    smalltalk-80
    Inspector

    Workspace a Transcript jsou jednoduchá textová okna. Workspace slouží k psaní textů a spouštění smalltalkovských výrazů. Transcript je určen k výpisům logovacích výstupů programů a některých systémových hlášení. Přítomen je i primitivní editor černobílých obrázků. Dnes by svými funkcemi oslovil snad jen zarputilé fanoušky pixel artu.

    smalltalk-80
    editor obrázků

    Image

    Ve Smalltalku je vše objekt. Všechny objekty jsou umístěny v objektové paměti automaticky spravované garbage collectorem. Virtuální stroj Smalltalku-80 umožňuje vytvářet platformně nezávislý obraz této objektové paměti ve formě jediného souboru, kterému se říká image. To má několik zajímavých důsledků. Smalltalk se nevypíná, pouze uspává podobně jako virtualizované počítače. Protože k uložení image může dojít kdykoliv, nemají programy ve Smalltalku vlastně pevně daný startovací bod - obdobu funkce main(). Objekty se při spuštění Smalltalku znovu nevytvářejí a při ukončení neruší, takže některé z nich jsou pořádně vousaté. Uvádí se, že několik dodnes používaných objektů vzniklo již v roce 1976.

    Na virtuální stroj mnoho práce nezbývá, protože přímo ve Smalltalku je napsáno a interpretuje se téměř vše - grafické uživatelské rozhraní, vývojové nástroje, překladač, dokonce i plánovač procesů. A protože objekty mají ve Smalltalku silně reflektivní vlastnosti, mají programátoři zcela volné ruce. Mohou tak upravovat i standardní sadu tříd či přizpůsobovat vývojové nástroje svým potřebám a při této volnosti není samozřejmě těžké celé prostředí prakticky znefunkčnit. Například příkaz "true become: false" vede k docela zajímavému chování. Programátor by tak mohl snadno přijít o celodenní práci, proto Smalltalk průběžně ukládá všechny změny do samostatného souboru, který je poté možné použít k obnovení ztraceného kódu.

    smalltalk-80
    obnovení ztraceného kódu po pádu prostředí

    Ne vždy je možné či praktické přenášet programy ve formě image. V tom případě mohou programátoři svůj kód ručně vyexportovat (fileOut) nebo vyexportují sadu všech změn (changeset), které byly provedeny v rámci aktuálního projektu. Při nahrávání vyexportovaného kódu do jiné image lze ručně vybírat, které metody budou vynechány, či například vyhledávat konflikty.

    Jazyk Smalltalk

    Smalltalk-80 jako jazyk je velmi kompaktní. Jeho syntaxe je trochu nezvyklá a ne každý jí přijde na chuť. Na druhou stranu má i armádu obdivovatelů, kteří v ní našli ideální kompromis mezi minimalističností a praktičností. Cílem tohoto článku není výuka Smalltalku, proto jej zde nebudeme podrobně rozebírat a uvedeme jen několik postřehů.

    Smalltalk je dynamicky typovaný jazyk. Základní operací je zasílání zpráv. Zasláním zprávy se řeší dokonce i vytvoření nové třídy či řídící struktury (podmínky, cykly). Protože řídící struktury nemají v syntaxi žádný výjimečný statut, programátor si může vytvářet vlastní typy cyklů či průchodů kolekcemi. To je umožněno tím, že i bloky kódu jsou objekty, které mohou přijímat zprávy. Smalltalk dovoluje přetěžovat či vytvářet nové binární operátory, ale nehledí na jejich matematickou prioritu a vyhodnocuje je vždy zleva doprava. Používá rozsahově neomezenou aritmetiku a zlomky.

    Nezvykle vypadá přiřazení, pro které se používá znak šipky doleva. V době vzniku Smalltalku nemohli jeho autoři tušit, že tento znak se na klávesnicích budoucnosti neujme a nahrazuje se tak podtržítkem. Komentáře se píší jako text ohraničený uvozovkami.

    Závěr

    Smalltalk-80 bylo první grafické IDE a jako takové samozřejmě nemohlo být dokonalé a hardwarové nároky nebyly na tehdejší dobu právě skromné - testovaný obraz objektové paměti měl 668 kB a virtuální stroj 55 kB, což přibližně udává i celkovou paměťovou náročnost (základní model Macintoshe Plus měl 1 MB RAM). Ale jak jsme si v našem krátkém poohlédnutí do počítačové historie ukázali, Smalltalk-80 zvládal již některé dovednosti, které ani po dvou desetiletích nejsou úplnou samozřejmostí. Vývoj nejpoužívanějších vývojových prostředí se však vydal jiným směrem, což bylo dáno především jejich zaměřením na staticky typované kompilované jazyky.

           

    Hodnocení: 97 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    7.5.2009 00:36 Robert Krátký | skóre: 94 | blog: Robertův bloček
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80
    Dík za pěkný článek.
    7.5.2009 00:48 Vlastimil Ott | skóre: 66 | blog: Plastique | Opava
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80
    Moc zajímavé, díky.
    Práce: Liberix, o.p.s. | Blog: OpensourceBlog.cz | Online kurz Zlatý WordPress
    7.5.2009 09:20 Lukas | skóre: 12 | blog: Mind 8
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80

    pekne pekne pekne, vic takovych vyletu do historie ....

    7.5.2009 10:17 Tomáš Mann
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80

     +1

    dayvee avatar 7.5.2009 10:24 dayvee | skóre: 4 | Praha
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80
    parada! diky za dobry clanek :-) pral bych si zde vic takovych.
    debian was first announced on my 3rd birthday :)
    7.5.2009 10:36 TM
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80
    Výborný článek.
    S prostředím Smalltalku jsem se kdysi dávno setkal. Jeden bývalý kolega byl pro tento jazyk nadšenec a neustále o tom básnil. Inu, také jsem to zkusil. Po nějakém čase urputného boje, kdy jsem chtěl v praxi ze zoufalství dokonce i zde dokázat tvrzení, že "opravdový programátor dokáže psát fortranské programy v kterémkoliv jazyce" jsme si se Smalltalkem podali ruce a rozešli se sice v dobrém, ale s tím, že naše cesty se diametrálně míjejí. A já se tenkrát opět s chutí ponořil do svých tun assemblerových řádek... :-)
    Že by mně nějak vadily objekty to ne, např. s Javou jsem kamarád, dokážu dělat i v C++ atd... Ale Smalltalk, tedy pánové prominou, to je tedy extrém a můj mozek na něj zřejmě není stavěný :-). Obdivuji lidi, kteří v tom dokáží napsat něco smysluplného.
    7.5.2009 11:02 CEST
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80
    Jojo, smalltalk je skutecny OOP, zadny siditka jako Java, Python, Perl nebo C++. Ale nerekl bych, ze to je nejak slozity. Jenom si proste clovek musi zvyknout, ze vsechno jsou objekty (zadny "cislo" nebo "retezec") a ze vsechno jsou metody (vcetne operatoru pouzivanych v jinych jazycich). Kdyz si zvyknes, tak je to v pohode, proste mit for (...) pouzijes metodu for na objekt typu cislo. Vyhoda je, ze muzes mit for i pro string, takze je ti pak jedno, jestli provadis for na stringu nebo na cislu, proste to bude delat "for" cyklus:)
    Algi avatar 7.5.2009 11:09 Algi | skóre: 1 | blog: Sinner
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80

    Výhodu s vlastním for cyklem moc nechápu. Jaký je tedy rozdíl oproti klasickému:

    for (id o in myColleciton) {
      [o className];
    }


    Dají se při té iteraci dělat i jiné věci než "obyčejný" průchod nějakou kolekcí?

    I'm a firestarter, twisted firestarter...
    7.5.2009 13:54 kuki
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80

    To není o výhodách nebo nevýhodách. Smalltalk prostě nemá for cyklus. A proto je jeho syntaxe strašně jednoduchá, protože lze pouze posílat zprávu jinému objektu a jako odpověď získat zase objekt. Je to spíše o tom, že někdo, kdo tehdy přemýšlel, jak udělat pomocí takto jednoduchého mechanismu for cyklus, ho implementoval jako poslání zprávy to:do: se dvěma parametry horní mez a blok kódu třídě Number (nebo Integer). Tady už jenom stačí němě zírat a obdivovat genialitu původního autora.

    Takže tvůj kód vypadá takto:

    myCollection do: [ :o | o delejNeco ].

    A "for cyklus" vypadá takto:

    1 to: 10 do: [ :index | Transcript show: i printString ].

    Je to poslání zprávy to:do: instanci 1 s prvním parametrem 10 a druhým parametrem [ :index | Transcript show: i printString ].

    alblaho avatar 7.5.2009 14:38 alblaho | skóre: 17 | blog: alblog
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80
    Já se Smalltalkem jako jazykem problém nemám, ale vadilo mi, že je to spíš operační systém - vlastní gui, vlákna, všechno.

    Taky jsem nepřišel na chuť té filozofii tvorby programu. V běžných jazycích začínáte z nuly a postupně nabalujete knihovny, které potřebujete.

    V ST máte "všechno", tj ten nabootovaný image a ten si upravíte, aby dělal to, co potřebujete. Není možné to nějak jednoduše ořezat.
    7.5.2009 16:27 kuki
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80

    Můžete použít GNU/Smalltalk a nebo pokud chcete psát aplikace, ve kterých opravdu o něco jde, tak použijte Gemstone/S, což je profesionální objektový server, kde programujete ve Smalltalku. Můžete tam programovat webové aplikace v Seaside, protože Gemstone/S m8 Seaside již v základu. V tomto případě je to už opravdu jiný svět, než tradiční Java nebo C#.

    7.5.2009 17:38 Jaga
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80

     No ono to asi původně jako OS bylo myšlený...

    Fluttershy, yay! avatar 7.5.2009 19:44 Fluttershy, yay! | skóre: 92 | blog:
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80
    Něco jako Emacs...
    🇵🇸Touch grass🇺🇦 ✊ no gods, no masters
    mkoubik avatar 7.5.2009 21:36 mkoubik | skóre: 5 | blog: lorem_ipsum | Praha 8 - Bohnice
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80
    Právěže zdaleka ne, lisp nemá tak geniální reflexi. I když, teď jsem si představil emacs napsaný ve smalltalku a poslintal jsem si klávesnici.
    15.5.2009 17:09 b*d
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80

    Já se Smalltalkem jako jazykem problém nemám, ale vadilo mi, že je to spíš operační systém - vlastní gui, vlákna, všechno.

    Syndrom Javy, teda promiňte možná Syndrom Smalltalku v Javě.

    Vlastní - dalo by se říct vlastní implementace. V tom je to strašně úchvatný... Vemte si, že ta doba je víceméně doba šílené rozstříštěnosti. Grafická reprezentace přímo závislá na HW, co produkt to vlastní HW, OS, vlastní jazyk. Takže cíl byl hodit abstraktní toolkit a každá platforma bude mít vlastní implementaci.

    MVC - Model jak jsou data reprezentovaná, Controller co se s nima dělá, View jak se zobrazí. No asi nejlepší příklad za všechny:

    Gnome (gtk) versus KDE(qt) ty mají dneska taky svoje "vlastní gui, vlákna, všechno".

    Takovej Fatrat - na jedné straně toho umí moc, je to program který je výborný, ale musím mít nainstalované qt. Což není jeho vina. Já třeba narážím na file dialog, kde mám jiné záložky a chování v Gtk a jiné v Qt. A tak nevím jestli mi stačí 1 click nebo dvojklik. Proč tohle má řešit autor Fatratu? Jeho maximálně zajímá "Nech zvolit uživatele adresář/soubor a vrať mi cestu".

    Grafická reprezentace není zrovna to proč fatrat používáme, autor nemá možnost psát v abstraktním Widget Toolkitu, tak aby jeden uživatel používal implementaci GTK a druhý QT a třetí třeba úplně něco jiného.

    No jo, ale otázka je jak ten abstract Widget Toolkit vyrobit? V prním kroku to je minimálně zduplikovat a přepsat stávající api a co dál:

    a) průnik features

     - tak to bude hodně omezené

    b) vlastní sada features a doprogramovat chybějící feature u každé, kde chybí

    - no tak si vemte nějakou dobu zpět a vášnivé diskuze nad GTK file dialogem

    c) ...?

    Takže zůstane u jedné implentace, protože to vytvořit, udržovat a vyvíjet může jenom marťan (a nebo IBM - SWT).

    Zase na druhou stranu takové webové aplikace - poprvé celé HTML (např. seznam titulků článků) a odkaz Next vrací (ajax dotaz json, normalně celké html)

    logika a model zůstavá: dotaž se do db, udělej list titulků a zobraz(odešli).

    Uspěch je dán body a) v základu omezné features, ale možnost b) rychle a ad-hoc doprogramovat chybějící, třeba v Javasciptu.

    Pak ten FOR - další úchvatná věc. Prostě neexistují metody tak jak se jsou v c, jave atd. parametry taky neexistují, prostě je to zpráva, je to objekt.

    Tak v javě: o.metoda( new Zprava() implements MethodParam<o>() { }) ... no to moc elegantni neni.

    ...

    PS: no a v době SmallTalku přišlo IBM s MS a místo toho aby získali trh abstaktním sjednocením, převálcovali ho jednou konkrétní implementací.

     

    7.5.2009 16:58 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80
    Tady už jenom stačí němě zírat a obdivovat genialitu původního autora.
    Toto konkrétně není ani tak známka geniality, jako spíše důvěrná znalost funkcionálního přístupu. Samozřejmě, objektový přístup je oproti funkcionálnímu výrazný posun, ale v případě cyklů a iterací tam vidím docela nápadnou podobnost.
    mkoubik avatar 7.5.2009 21:32 mkoubik | skóre: 5 | blog: lorem_ipsum | Praha 8 - Bohnice
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80
    Dělá to to samé, ale syntaxe je mnohem čistší (žádná zbytečná klíčová slova. Takové 6.times{ .. } z ruby je naprosto okouzlující.
    12.5.2009 18:02 SB
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80

    Celej fígl je v tom, že vám odmala ve škole (nebo sami doma) znásilňují myšlení, abyste mysleli jak počítač. Když se to nakonec povede a jste znásilněni, zjistíte, že zpátky k lidskému myšlení (podobnost s objekty) to jde hodně těžko nebo mnohým vůbec. Taky sem s tím měl dost problémy, než sem pochopil, že základ je zapomenout, že existuje imperativní programování.

    7.5.2009 17:08 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80
    Po nějakém čase urputného boje,
    Pro mě největším problémem byl fakt, že ve Squeaku člověk nemůže použít nic z prostředí, na které byl zvyklý a je odkázaný pouze na samotné prostředí, které je ovšem hodně svérázné. To je pak učící křivka hodně strmá.
    When your hammer is C++, everything begins to look like a thumb.
    7.5.2009 17:35 Jaga
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80

    Super, dělal sem v tom jazyce a teda.... nešlo mi to...

    Konkrétně tedy ne squeaku... http://www.squeak.org/ doporučuju zkusit...

    8.5.2009 02:34 Miloslav Ponkrác | blog: miloslavponkrac
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80

    V tomto jsem dělal. Celé prostředí byla jedna jediná disketa 1,44 MB a bootovalo se to na PC jako vlastní operační systém.

    Bylo to úžasné na tu dobu, co to dokázalo.

    Bohužel na Smalltalku je vidět, že je to spíš operační systém, než programovací jazyk. Má problémy se nějak přizpůsobit existujícímu prostředí, operačnímu systému.

    Stejně tak absolutně chybějící jakákoli ochrana kódu je dost pofiderní. Není problém zaměnit významy false a true například, a změníte ho v celém programu.

    Další důvod, proč se moc nerozšířil je nechutná pomalost toho všeho, zejména v tehdejší době na slabých hw. Režie skutečného OOP je v případě Smalltalku velmi vysoká a platí se za ní výrazným zpomalením běhu kódu.

    A asi nejvíc, proč byl Smalltalk zabit je licence a drahota.

    Byl to hezký jazyk, bezvadně se v tom dělá, vývoj je rychlý a baví vás to. Řada lidí dodnes vzpomíná na Smalltalk jako na nejlepší programátorské období svého života. Ale na druhé straně přináší řadu problémů – velmi těžko ve Smalltalku řešitelných. Jako viz nulová ochrana kódu, nedokážu si na tom představit týmovou spolupráci řady lidí.

    9.5.2009 20:55 R
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80
    Ta pomalost je aj dnes brutalna. Pamatam si, ako mi pred par rokmi Squeak na P166 pocital sinus 6 sekund...
    12.5.2009 17:55 SB
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80

    Možná šlo tehdá o nevhodnou implementaci (bez VM) nebo jiný zádrhel. Dnes obsahuje daná metoda volání primitiva, milion sinů to udělá za sekundu na procáku 1,5 GHz. Takže zas tak divoký to nebude.

    10.5.2009 12:39 littleli
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80

    Komerční prostředí Smalltalku - Gemstone, VisualWorks, VistaSmalltalk a třebas Smalltalk X pokud vím zas tak velké problémy s integrací do systémů na kterých běží nemají, ba naopak.

    10.5.2009 12:42 littleli
    Rozbalit Rozbalit vše Re: Vývojové prostředí dávnověku – Smalltalk-80

    Pochvala za pěkné čtení. Docela bych uvítal kdyby se někde objevilo srovnání různých variant Smalltalku a jak se dají použít v běžném nasazení, prostě mimo akademický svět.

    11.5.2009 20:47 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Objektově orientované programování - produktivita programátora

    Když už se tady mluví o objektově orientovaném programování, dovolím si přidat odkaz na článek, kde se autor na OOP dívá trochu jinak:

    Object Oriented Programmer’s Productivity

    15.5.2009 15:49 b*d
    Rozbalit Rozbalit vše Re: Objektově orientované programování - produktivita programátora

    No a to je právě problém, že autor linkovaného článku myslí jako počítač a né jako člověk. Když si jdete koupit rohlík, taky chcete recept?

    Ten článek rozumuje nad něčím co je úplně vedle.

    In OOP, objects can hold pointers to data that someone else can change out from under you

    Pointer a OOP - ne ten člověk to nepochopil.

    15.5.2009 20:27 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Objektově orientované programování - produktivita programátora
    Ten článek rozumuje nad něčím co je úplně vedle.

    Autor se zabývá pozdní vazbou, a to je podstata OOP, ne?

    Pointer a OOP - ne ten člověk to nepochopil.

    Abych odpověděl, dovolím si citovat z české Wikipedie (článek o OOP):

    Udržování odkazů na jiné objekty a využívání jejich služeb se říká skládání objektů.

    V článku se vyskytlo slovo odkaz, což to je dle mého názoru synonymum pro slova: ukazatel, reference

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.