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í
×
    dnes 04:44 | Nová verze

    Po roce vývoje od vydání verze 1.24.0 byla vydána nová stabilní verze 1.26.0 webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.26.

    Ladislav Hagara | Komentářů: 0
    dnes 04:33 | Nová verze

    Byla vydána nová verze 6.2 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 13.0.14.

    Ladislav Hagara | Komentářů: 0
    dnes 04:22 | Nová verze

    Byla vydána nová verze 30.0.0 frameworku pro vývoj multiplatformních desktopových aplikací pomocí JavaScriptu, HTML a CSS Electron (Wikipedie, GitHub). Chromium bylo aktualizováno na verzi 124.0.6367.49, V8 na verzi 12.4 a Node.js na verzi 20.11.1. Electron byl původně vyvíjen pro editor Atom pod názvem Atom Shell. Dnes je na Electronu postavena celá řada dalších aplikací.

    Ladislav Hagara | Komentářů: 0
    dnes 04:11 | Nová verze

    Byla vydána nová verze 9.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 220 vývojářů. Provedeno bylo více než 2 700 commitů. Přehled úprav a nových vlastností v seznamu změn.

    Ladislav Hagara | Komentářů: 0
    včera 23:22 | IT novinky

    Evropský parlament dnes přijal směrnici týkající se tzv. práva spotřebitele na opravu. Poslanci ji podpořili 584 hlasy (3 bylo proti a 14 se zdrželo hlasování). Směrnice ujasňuje povinnosti výrobců opravovat zboží a motivovat spotřebitele k tomu, aby si výrobky nechávali opravit a prodloužili tak jejich životnost.

    Ladislav Hagara | Komentářů: 1
    včera 16:11 | Nová verze

    Bylo oznámeno (cs) vydání Fedora Linuxu 40. Přehled novinek ve Fedora Workstation 40 a Fedora KDE 40 na stránkách Fedora Magazinu. Současně byl oznámen notebook Slimbook Fedora 2.

    Ladislav Hagara | Komentářů: 4
    včera 13:44 | Upozornění

    ČTK (Česká tisková kancelář) upozorňuje (X), že na jejím zpravodajském webu České noviny byly dnes dopoledne neznámým útočníkem umístěny dva smyšlené texty, které nepocházejí z její produkce. Jde o text s titulkem „BIS zabránila pokusu o atentát na nově zvoleného slovenského prezidenta Petra Pelligriniho“ a o údajné mimořádné prohlášení ministra Lipavského k témuž. Tyto dezinformace byly útočníky zveřejněny i s příslušnými notifikacemi v mobilní aplikaci Českých novin. ČTK ve svém zpravodajském servisu žádnou informaci v tomto znění nevydala.

    Ladislav Hagara | Komentářů: 16
    včera 13:33 | Komunita

    Byla založena nadace Open Home Foundation zastřešující více než 240 projektů, standardů, ovladačů a knihoven (Home Assistant, ESPHome, Zigpy, Piper, Improv Wi-Fi, Wyoming, …) pro otevřenou chytrou domácnost s důrazem na soukromí, možnost výběru a udržitelnost.

    Ladislav Hagara | Komentářů: 0
    včera 13:00 | Nová verze

    Společnost Meta otevírá svůj operační systém Meta Horizon OS pro headsety pro virtuální a rozšířenou realitu. Vedle Meta Quest se bude používat i v připravovaných headsetech od Asusu a Lenova.

    Ladislav Hagara | Komentářů: 0
    včera 04:33 | IT novinky

    Společnost Espressif (ESP8266, ESP32, …) získala většinový podíl ve společnosti M5Stack, čímž posiluje ekosystém AIoT.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (72%)
     (10%)
     (2%)
     (17%)
    Celkem 700 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník
    Alternativně viz také můj osobní blog (RSS pro anglické články, RSS pro české články), kde toho hlavně v angličtině vychází mnohem víc.

    Víte že můžete odebírat mé blogy pomocí RSS? (Co je to RSS?)


    A kdo neumí použít RSS, tak je tu twitter: @Bystroushaak.

    Od určité doby jsou všechny texty které zde publikuji verzované na Githubu.

    Jestliže najdete chybu, nepište mi do diskuze a rovnou jí opravte. Github má online editor, není to skoro žádná práce a podstatně mi tím usnadníte život. Taky vás čeká věčná sláva v commit logu :)

    Aktuální zápisy

    Prostředí a programovací jazyk Selfu (díl třetí)

    15.2.2019 19:54 | Přečteno: 1888× | Obecné IT | Výběrový blog | poslední úprava: 27.2.2019 23:06

    Dneska se bude jednat o mezi-díl, kam jsem nacpal věci, jenž se mi moc nevešly nikam jinam. Podíváme se detailněji na debugger a transporter a taky si rozebereme nevýhody Selfu jako jazyka, prostředí, ale i obecně principu používání prototypového programování.

    Obsah seriálu

    1. Prostředí
    2. Jazyk
    3. Debugger, transporter a problémy
    4. Komunita, historie, budoucnost a metafyzika

    Z hlediska uživatelského použití transporteru

    Nebudu se věnovat tomu, jak přesně transporter funguje, to je možné vyčíst například z paperu Sifting Out the Gold: Delivering Compact Applications From an Exploratory Object-Oriented Environment. Zaměřím se spíš na uživatelskou stránku, tak jak je ukázána ve videu na stránce https://bluishcoder.co.nz/2015/11/19/exporting-self-objects-to-source-files-via-transporter.html.

    Obrázkově je tahle podkapitola hrozně dlouhá, proto chci předem říct, že ve skutečnosti se neděje nic moc komplikovaného. Vytvořím anonymní objekt. Přidám ho v transporteru do nového modulu. Pak vytvořím slot v globální hierarchii, uložím do něj tento objekt a taky ho přidám do již vytvořeného modulu. Potom řeknu anotací transporteru, aby slot nenastavoval na defaultní hodnotu, ale „sledoval“ objekt co je v něm uložený. Pak všechno uložím na disk skrz dialog transporteru.

    Začnu vytvořením naprosto jednoduchého objektu, obsahujícího jeden slot „a“ o hodnotě „1“.

    Na outliner potom kliknu prostředním tlačítkem (kolečkem) a vyberu z menu „Set module...“:

    Nyní se bude objevovat série dialogů, kde se mě transporter poptá na různé informace. Jako první se ptá na sloty:

    Chci všechny.

    Dál se ptá na jméno modulu, do kterého objekt uložit.

    Chci „other“, což vyvolá dialog s názvem. Já chci svůj modul pojmenovat „test“:

    Dialog se mě nyní ptá zda chci modul vytvořit, nebo jsem se splet. Chci ho skutečně vytvořit:

    Nechci ho udělat submodulem ostatních modulů, proto nechávám následující pole prázdné:

    Ještě to znova potvrzuji:

    Vybírám složku do které by se měl soubor uložit. Nechávám defaultní „applications“:

    Můj objekt je nyní oficiálně součástí modulu, akorát se prostě jen tak vznáší ve vzduchu, což znamená, že by po načtení nešel moc dobře referencovat. Já ho chci uložit na cestu globals test. Otevřu si tedy outliner pro globals kliknutím na plochu kolečkem:

    a otevřu si podsekci „applications“:

    Vidím, že už v ní jsou čtyři aplikace. Kliknutím na nápis „applications“ prostředním se objeví kontextové menu, kde vyberu „Add Slot“:

    Z dialogu pro přidání slotu smažu defaultní text s nápovědou:

    a nastavím slot na nil.

    Uložím kliknutím na zelený obdélník, či stisknutím CTRL+enter.

    Nyní místo nilu graficky přenesu referenci na můj anonymní objekt na ploše. Stejně tak bych ale mohl přijít do mého anonymního objektu, otevřít si v něm shell a zadat cosi jako globals test: self.

    Slot globals test nyní ukazuje na můj objekt, neboli můj objekt nyní existuje na této cestě.

    Nyní zbývá ještě nastavit modul pro tento slot kliknutím prostředním tlačítkem a vybráním „Set module“:

    Zobrazí se podstatně větší menu, kde doscrolluju až dolu a vyberu other:

    Tam znova zadám „test“:

    Abych teď nemusel jak blázen scrollovat zase nahoru, dvakrát kliknu na prázdnou plochu a vyberu že chci jít „home“:

    Což mě vrátí tam kde jsem byl. Nyní ještě potřebuji upravit anotaci slotu globals test, kliknu na něj tedy opět kolečkem a vyberu „Show Annotation“:

    V nastavení modulu vyberu že chci „Follow“, nikoliv nastavovat slot na nil.

    Nyní kliknu do prázdného místa na ploše prostředním a vyberu z menu „Changed Modules“:

    Zobrazí se mi dialog ukazující změněné moduly:

    Ty můžu zapsat klikáním na tlačítka. Kliknu na tlačítko s nápisem „W“ vedle:

    Tak a to je vše. Zdá se to jako hodně kroků, ale ve skutečnosti je to celé docela logické. Nyní se můžu podívat, že o úroveň výš (neptejte se mě proč) vznikl ve složce „objects/applications/“ soubor „test.self“:

    ''
     '
    Copyright 1992-2016 AUTHORS.
    See the legal/LICENSE file for license information and legal/AUTHORS for authors.
    '
    [ 
    "prefileIn" self] value
    
    
     '-- Module body'
    
     bootstrap addSlotsTo: bootstrap stub -> 'globals' -> 'modules' -> () From: ( | {
             'ModuleInfo: Module: test InitialContents: FollowSlot'
            
             test = bootstrap define: bootstrap stub -> 'globals' -> 'modules' -> 'test' -> () ToBe: bootstrap addSlotsTo: (
                 bootstrap remove: 'directory' From:
                 bootstrap remove: 'fileInTimeString' From:
                 bootstrap remove: 'myComment' From:
                 bootstrap remove: 'postFileIn' From:
                 bootstrap remove: 'revision' From:
                 bootstrap remove: 'subpartNames' From:
                 globals modules init copy ) From: bootstrap setObjectAnnotationOf: bootstrap stub -> 'globals' -> 'modules' -> 'test' -> () From: ( |
                 {} = 'ModuleInfo: Creator: globals modules test.
    
    CopyDowns:
    globals modules init. copy 
    SlotsToOmit: directory fileInTimeString myComment postFileIn revision subpartNames.
    
    \x7fIsComplete: '.
                | ) .
            } | ) 
    
     bootstrap addSlotsTo: bootstrap stub -> 'globals' -> 'modules' -> 'test' -> () From: ( | {
             'ModuleInfo: Module: test InitialContents: FollowSlot\x7fVisibility: public'
            
             directory <- 'applications'.
            } | ) 
    
     bootstrap addSlotsTo: bootstrap stub -> 'globals' -> 'modules' -> 'test' -> () From: ( | {
             'ModuleInfo: Module: test InitialContents: InitializeToExpression: (_CurrentTimeString)\x7fVisibility: public'
            
             fileInTimeString <- _CurrentTimeString.
            } | ) 
    
     bootstrap addSlotsTo: bootstrap stub -> 'globals' -> 'modules' -> 'test' -> () From: ( | {
             'ModuleInfo: Module: test InitialContents: FollowSlot'
            
             myComment <- ''.
            } | ) 
    
     bootstrap addSlotsTo: bootstrap stub -> 'globals' -> 'modules' -> 'test' -> () From: ( | {
             'ModuleInfo: Module: test InitialContents: FollowSlot'
            
             postFileIn = ( |
                | resend.postFileIn).
            } | ) 
    
     bootstrap addSlotsTo: bootstrap stub -> 'globals' -> 'modules' -> 'test' -> () From: ( | {
             'ModuleInfo: Module: test InitialContents: InitializeToExpression: (\'30.21.0\')\x7fVisibility: public'
            
             revision <- '30.21.0'.
            } | ) 
    
     bootstrap addSlotsTo: bootstrap stub -> 'globals' -> 'modules' -> 'test' -> () From: ( | {
             'ModuleInfo: Module: test InitialContents: FollowSlot\x7fVisibility: private'
            
             subpartNames <- ''.
            } | ) 
    
     bootstrap addSlotsTo: bootstrap stub -> 'globals' -> () From: ( | {
             'Category: applications\x7fModuleInfo: Module: test InitialContents: FollowSlot'
            
             test <- bootstrap setObjectAnnotationOf: bootstrap stub -> 'globals' -> 'test' -> () From: ( |
                 {} = 'ModuleInfo: Creator: globals test.
    '.
                | ) .
            } | ) 
    
     bootstrap addSlotsTo: bootstrap stub -> 'globals' -> 'test' -> () From: ( | {
             'ModuleInfo: Module: test InitialContents: FollowSlot'
            
             a = 1.
            } | ) 
    
    
    
     '-- Side effects'
    
     globals modules test postFileIn
    

    V něm jsou nastaveny všechna možná metadata. Tento soubor můžu verzovat gitem a také načíst do nové image:

    Což mi dá do ruky metadata o modulu a vedle v outlineru pro globals si můžete všimnout že se objevil nový slot „test“:

    Ve kterém je skutečně můj objekt:

    Z hlediska debuggeru

    Self nabízí debugger smalltalkovského typu, ze kterého je možné interaktivně měnit kód. Krátká ukázka myslím řekne víc než tisíc slov.

    V Shellu vytvořím jednoduchý objekt, který má slot „a“, kde je uložen kód, který by měl na standardní výstup vypsat hodnotu čísla „1“. Záměrně se ale upíši a místo zprávy „printLine“ pošlu pouze zprávu „printLin“, tedy bez „e“ na konci:

    To mi „do ruky“ vloží objekt, který jsem popsal.

    Můžu si zkontrolovat, že je to skutečně on tím že ho položím na plochu a rozbalím sloty:

    V objektu otevřu podshell kliknutím na E vpravo v rohu a pošlu mu zprávu „a“:

    Nyní kliknu na Get it, což by mělo kód provést (tedy vypsat do konzole jedničku) a zároveň mi do kurzoru umístit výsledek volání (také jednička). V kódu mám ale popsanou chybu, takže místo toho dostanu do ruky debugger:

    Debugger vypadá trochu podobně jako outliner. Krabička, která se dá rozklikávat. Zde je celá rozkliknutá:

    Můžeme vidět celý stack trace, ale nejenom to, dá se s ním krásně interagovat. Například vlevo nahoře vidíme jedničku, což je receiver zprávy (selektoru). Na jedničku lze kliknout a dostaneme přímo objekt:

    V případě jedničky to sice úplně nedává smysl, ale u jiných objektů může být velmi užitečné si je živě prozkoumat.

    Z editoru lze také chybu hned opravit:

    Po kliknutí na zelený čtvereček se upraví přímo kód, všimněte si outlineru vedle:

    Nyní kliknu na continue a celý interpret bude pokračovat tam, kde by pokračoval normálně, kdyby k žádné chybě nedošlo, tedy do konzole se vypíše jednička a ta se mi taky octne v ruce:

    Debugger nyní vypíše, že je mrtvý a minimalizuje se. Když nyní znova kliknu na Get it tlačítko, vše již napodruhé proběhne správně;

    Z hlediska problémů

    Z praktického hlediska je Self docela smutná kupka. Nejprve bych rád řekl, že je do velké míry použitelný, ale zdaleka ne tolik, aby to bylo přístupné pro začínající uživatele. Pokud něco budete řešit, zapomeňte na to, že vygooglíte řešení. S vysokou pravděpodobností jste nejspíš první, kdo má daný problém. A pokud ne, tak je stejně slušná šance, že problém je nevyřešen.

    32 bit

    Self je 32 bitový program. Portace na 64 bitů je sice možná, ale netriviální a nikdo se do toho nehrne. Očekávám, že v příštích deseti letech se na tom asi nic nezmění.

    Na jednu stranu je to docela nemilé, protože vás to omezuje na maximálně čtyřgigabajtové image, ale tenhle problém se dá vyřešit například použitím víc instancí a hlavně narazíte na problémy se vším možným daleko dřív. Například samotné ukládání image je docela pomalé už u velikostí kolem desítek megabajtů a gigabajtové velikosti by trvaly pravděpodobně celé minuty.

    Problémy prototypů

    Prototypy jsou jednoduché na pochopení a spolu s delegací (koukám se na tebe, javascripte!) nabízejí silný a efektivní mechanismus organizace kódu.

    Mají ovšem jednu nevýhodu; jednou zapomenete na clone a přepíšete půlku systému.

    Například s prototypovým dictionary se pracuje prostě tak, že si ho naklonujete a zapisujete do něj hodnoty. Pokud ovšem zapomenete provést klonování a rovnou píšete do dictionary, píšete zároveň do všech nových dictionary co budou vytvořeny kopírováním. To většinou vede k velmi rychlému pádu systému.

    Self bohužel nenabízí žádnou možnost, jak se tomuhle bránit. Osobně bych se tomu ve svém jazyce rád vyvaroval zamykáním systémových objektů tak, aby bylo vynuceno klonování předtím, než je možné do nich zapsat. Nebo možná nějakým automatickým klonováním.

    Bezejmennost prototypových objektů

    Selfovské je na tom se svými literály (zkrácený nativní zápis definice objektu) podobně, jako jazyky podporující pouze lambda funkce. Anonymní objekty jsou super, ale přeci jen člověk se snáze orientuje pokud může věci pojmenovat.

    V Selfu je toto řešeno anotacemi, kde je možné nastavit jméno objektu, které se pak zobrazuje v outlinerech, nebo prostě umístěním objektu do patřičné hierarchie. Pokud umístíme objekt do cesty globals dictionary, tak je asi jasné, že se jedná o slovník.

    Stojí za zamyšlení si to srovnat s na třídách založenými jazyky, které zpravidla trpí přesně opačným problémem, kde se snaží pojmenovat úplně všechno. Třída má svoje jasně dané jméno a instance má jméno proměnné kde existuje.

    Co je pro lidi lepší a přirozenější? Aby měl objekt jasně dané jméno, nebo aby bylo jméno dané proměnou (či cestou) ve které je uložený?

    No undo

    Edit morphy nepodporují undo. Pešek. A všechny ostatní klávesové zkratky jsou nějaký subset části emacsu.

    Ctrl+c / Ctrl+v

    Bohužel nefunguje, protože používá nějaké prehistorické X bindingy. Řešení je nainstalovat si program autocutsel a pustit ho na pozadí.

    Chybějící dokumentace

    Dokumentace prostě kromě toho co jsem už odkazoval není. Většinou se dá zeptat v konferenci, ale to není zrovna ideální.

    Sloty jsou unordered

    To je trochu smutné z hlediska používání objektů samotných k uchovávání informací, neboť vás to nutí používat ordered kolekce.

    Self nemá podporu kaskádování

    Pokud nevíte co to je, tak vám to asi vadit nebude, přicházíte-li ale ze Smalltalku, tak to bude bolest.

    Unicode vstup / výstup se nekoná

    Self používá jako kódování ISO 8859-1, takže nebere žádné znaky mimo toto (doslova se nedají napsat) a nic mimo toho ani neumí zobrazit.

    Pokud by se s tím někomu chtělo zabývat, tak zde:

    Outlinery sajou

    Outlinery jsou zajímavý koncept, který ale začne být otravný docela rychle. Proč je možné vidět například zde:

    či ve své plné kráse zde:

    Taky když zkoumáte nějakou komplexnější věc, tak končíte s desítkami outlinerů.

    Osobně bych to doplnil browserem modulů ve stylu Smalltalku:

    Self a obrázky

    Self neumí zobrazovat obrázky v žádném z normálních formátů. Jediné co umí je nějaký Sunovský rastrový formát:

    Pokračování

    V posledním díle se podíváme na komunitu kolem Selfu, historii, budoucnost a dojde i na nějaké to filosofování.

           

    Hodnocení: 88 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    16.2.2019 14:01 hefo
    Rozbalit Rozbalit vše Re: Prostředí a programovací jazyk Selfu (díl třetí)
    Chlape, ja ťa obdivujem, chcel by som mať toľko času a motivácie venovať sa niečomu tak málo použiteľnému v praxi len z čistej filozofickej (v pôvodnom zmysle slova: "milovať múdrosť") vášne... A to nemyslím nijako ironicky.
    16.2.2019 14:11 poky74
    Rozbalit Rozbalit vše Re: Prostředí a programovací jazyk Selfu (díl třetí)
    nadhera. malokdy se vidi v krystalicky cisty podobe tak neskutecne vyplytvany cas.
    16.2.2019 16:01 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
    Rozbalit Rozbalit vše Re: Prostředí a programovací jazyk Selfu (díl třetí)
    Osobně mi jako neskonale větší plýtvání časem připadá reagovat na tento komentář, ale neodpustím si to. Ti, co co nejsou zatkoví zabedněnci jako vy, a přes články, jako je ten Bystroushaakův, budiž mu neskonalý dík za to, že je píše, se neváhají seznámit s kulturním a technologickým dědictvím, do nějž se Self může právem řadit, třeba nebudou odsouzeni k tomu, aby plýtvali nekutečným množstvím času na věcech, které za to skutečně nestojí.
    I'm sure it crashed in the most type-safe way possible.
    Bedňa avatar 16.2.2019 17:51 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Prostředí a programovací jazyk Selfu (díl třetí)
    Ako obyčajne, proste píšeš dobre a rád čítam tvoje blogy.

    Zaujal si ma teóriami o štrukturovanom OS, Selfe atď. viac menej som sa s podobnými myšlienkami pohrával. Teda fakt zobrať objekt ako fyzickú vec ktorú si môžem ošahať a preskúmať mi prišiel ako super nápad.

    Ako som tento projekt myšlienkovo posúval ďalej a ďalej, narazil som na úskalia, kde zrejme skončili aj predchodcovia.

    Za:
    Môžem si naozaj siahnuť priamo na dáta a mám tam nejaké nástroje, ktoré mi napríklad zobrazia obraz z kamery ... Prakticky nemusím formát dát skúmať, proste si kliknem a rozbalí sa mi zoznam metód ktoré mi tie dáta nejak sprístupnia.

    Proti:
    Asi na tomto všetky podobné pokusy stroskotali a to je bezpečnosť. Dnešné systémy stavajú na tom, že napríklad spomínaná kamerá má nejaké API ktoré si musím naštudovať, aby som odtiaľ vytiahol nejaký RAW snímok, alebo video prúd. StructuredOS by mi poslal celý objekt aj z metódami. Napr. camera.getPNG() hoci pošle PNG obrázok, ale popri tom spustí nejaký hack.
    KERNEL ULTRAS video channel >>>
    Bystroushaak avatar 16.2.2019 18:18 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Prostředí a programovací jazyk Selfu (díl třetí)
    Asi na tomto všetky podobné pokusy stroskotali a to je bezpečnosť. Dnešné systémy stavajú na tom, že napríklad spomínaná kamerá má nejaké API ktoré si musím naštudovať, aby som odtiaľ vytiahol nejaký RAW snímok, alebo video prúd. StructuredOS by mi poslal celý objekt aj z metódami. Napr. camera.getPNG() hoci pošle PNG obrázok, ale popri tom spustí nejaký hack.
    Tohle je imho řešitelné v Selfu například tak, že sice umožníš posílání přímo objektů, ale neumožníš, aby měly sloty s metodami. Veškerou funkcionalitu pak musí odkazovat přes parent sloty. Zajímavě by to řešil třeba Korz, který by tenhle objekt prostě otevřel v dimenzi, kde nejsou žádné prostředky, jak se z ní dostat ven, tzn chybí tam mirrory, funkce pro práci se socketem, diskem a C API.
    Bedňa avatar 16.2.2019 19:41 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Prostředí a programovací jazyk Selfu (díl třetí)
    Ja tam ale cítim ten problém, že mám nápad vymyslieť Lamborghini a potom odšróbujem kolesá, pretože je s nimi problém.

    Proste mi z objektu ostane viacrozmerné pole. Čo tiež nie je zlé, keď si ho tiež vlastne môžem rozklikať a pozerať. Je to popisnejšie ako plaintext. Možno to čo hladaš je vlastne len to viacromerné pole a nejaké GUI nad tým. Metody aj tak budú musieť byť lokálne, pokiaľ tam chceš nejakú bezpečnosť.
    KERNEL ULTRAS video channel >>>
    Bystroushaak avatar 16.2.2019 19:46 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Prostředí a programovací jazyk Selfu (díl třetí)
    Nemusí, viz to co jsem psal o tom Korzu. Příští díl bude obsahovat pár odkazů. V podstatě jde o to, že objekt spustíš v takovém jakémsi sandboxu, ze kterého nemá cestu ven. A ten sandbox je přímo podporovaný VM.
    Bedňa avatar 16.2.2019 21:04 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Prostředí a programovací jazyk Selfu (díl třetí)
    Příští díl bude obsahovat pár odkazů. V podstatě jde o to, že objekt spustíš v takovém jakémsi sandboxu, ze kterého nemá cestu ven.
    To je teraz dosť hype. Tak som zvedavý na použiteľnosť.
    KERNEL ULTRAS video channel >>>
    Bystroushaak avatar 16.2.2019 21:27 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Prostředí a programovací jazyk Selfu (díl třetí)
    Mno, trochu problém je, že autor o tom skoro nemluví a implementace není k dostání. Naposledy jsem se ptal minulý týden a bylo to bez odpovědi: https://groups.yahoo.com/neo/groups/self-interest/conversations/topics/3631
    Bedňa avatar 16.2.2019 22:57 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Prostředí a programovací jazyk Selfu (díl třetí)
    Heh, tak si pokecáme v ďalšom diele, či z neho niečo vysekáč.

    Mám nejaké pripomienky, čo by som ti rád napísal, ale počkám si na ďalší diel.
    KERNEL ULTRAS video channel >>>
    xkucf03 avatar 25.2.2019 14:16 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Anonymní třídy a objekty
    Stojí za zamyšlení si to srovnat s na třídách založenými jazyky, které zpravidla trpí přesně opačným problémem, kde se snaží pojmenovat úplně všechno.

    I v těchto jazycích (např. v Javě) lze vytvářet anonymní třídy (pak mají nějaký automaticky generovaný název) a dokonce je i generovat dynamicky za běhu programu.

    instance má jméno proměnné kde existuje.

    Skutečně mají jméno? Objekt přece většinou existuje na haldě a neví, jak se jmenuje, ani komu patří.

    Jestli na ten objekt ukazuje nějaká reference, to je věc jiná. A těch referencí může být více a nebo taky žádná. A třeba v C++ ti je ani v dlouhodobém horizontu nepožere GC, takže si můžeš vyrobit na haldě spoustu anonymních objeků, a pak se trefovat pomocí ukazatelů na různá místa v paměti a nacházet tam ty objekty (třeba v poli).

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes

    Založit nové vláknoNahoru

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