Io (programovací jazyk) - Io (programming language)
![]() | Tento článek má několik problémů. Prosím pomozte vylepši to nebo diskutovat o těchto otázkách na internetu diskusní stránka. (Zjistěte, jak a kdy tyto zprávy ze šablony odebrat) (Zjistěte, jak a kdy odstranit tuto zprávu šablony)
|
![]() | |
Paradigma | objektově orientovaný na základě prototypu |
---|---|
Navrhl | Steve Dekorte |
Vývojář | Steve Dekorte, Jonathan Wright, Jeremy Tregunna |
Poprvé se objevil | 2002 |
Stabilní uvolnění | 20170906 / 11. srpna 2017[1] |
Psací disciplína | dynamický, silný |
webová stránka | jazyk |
Hlavní, důležitý implementace | |
Io Io.NET | |
Ovlivněno | |
Pokec, NewtonScript, Já, Lua, Lisp, Krajta, Zákon 1 | |
Ovlivněno | |
Vtip Lektvar |
Io je čistý objektově orientované programování Jazyk inspirovaný Pokec, Já, Lua, Lisp, Zákon 1, a NewtonScript.[2] Io má na základě prototypu objektový model podobný těm v Self a NewtonScript, což eliminuje rozdíl mezi instance a třída. Stejně jako Smalltalk je vše objekt a používá ho dynamické psaní. Stejně jako Lisp jsou programy pouze datové stromy. Io používá herci pro souběžnost.
Pozoruhodnými vlastnostmi Io jsou jeho minimální velikost a otevřenost k používání externích zdrojů kódu.[Citace je zapotřebí ] Io je provedeno malým přenosným zařízením virtuální stroj.
Dějiny
Jazyk vytvořil Steve Dekorte v roce 2002 poté, co se pokusil pomoci příteli Dru Nelsonovi s jeho jazykem Cel. Zjistil, že opravdu moc neví o tom, jak jazyky fungují, a vydal se psát malý jazyk, aby lépe porozuměl problémům.[3]
Filozofie
Cílem Io je prozkoumat koncepční sjednocení a dynamické jazyky, takže kompromisy mají tendenci upřednostňovat jednoduchost a flexibilitu před výkonem.
Funkce
- Čistý objektově orientovaný na základě prototypy
- Kód jako data / homoikonický
- Líné hodnocení funkčních parametrů
- Funkce vyššího řádu
- Introspekce, odraz a metaprogramování
- Podle herce konkurence
- Běžné
- Zpracování výjimek
- Přírůstkové sběr odpadu vedlejší slabé odkazy
- Vysoce přenosný
- DLL /sdílená knihovna dynamické načítání na většině platforem
- Malý virtuální stroj
Syntax
Ve své nejjednodušší formě se skládá z jediného identifikátoru:
dělat věci
Za předpokladu, že výše uvedený doStuff je metoda, je volána s nulovými argumenty a v důsledku toho nejsou výslovné závorky povinné.
Pokud by doStuff měl argumenty, vypadalo by to takto:
dělat věci(42)
Io je předávání zpráv jazyk, a protože vše v Io je zpráva (kromě komentáře ), každá zpráva je odeslána příjemci. Výše uvedený příklad to dobře ukazuje, ale ne úplně. Abychom tento bod lépe popsali, podívejme se na další příklad:
Systém verze
Výše uvedený příklad ukazuje předávání zpráv v Io; zpráva „verze“ je odeslána do objektu „Systém“.
Operátoři jsou speciální případ, kdy syntaxe není tak vystřižená jako výše uvedené příklady. Io analyzátor zachytí sadu operátorů definovaných interpretem a přeloží je na volání metod. Například následující:
1 + 5 * 8 + 1
překládá do:
1 + (5 *(8)) +(1)
Jak vidíte, je toho také trochu přednost operátora se zde děje a úrovně priority jsou stejné jako u Úrovně priority C..
Operátoři se také změnili na volání metod. Ve skutečnosti jsou všichni operátoři v Io metody; skutečnost, že nevyžadují výslovné závorky, je výhodou.
Metody a bloky
V Io existují dva způsoby vytváření anonymní funkce: metody a bloky. Mezi nimi jsou téměř identické, s výjimkou rozsah. Zatímco bloky mají lexikální rozsah, metody mají dynamický rozsah.
Oba metoda a blok jsou funkce vyššího řádu.
Příklady
Všudypřítomný Program Hello world:
"Ahoj světe!" tisk
Nové objekty vytváří klonování předměty. Konkrétně v Io je vytvořen nový prázdný objekt a v novém objektu jsou uloženy pouze rozdíly mezi ním a jeho rodičem; toto chování je známé jako diferenciální dědičnost. Je ukázán příklad tohoto chování:
A := Objekt klon // vytvoří nový, prázdný objekt s názvem „A“
Jednoduchá nerekurzivní faktoriální funkce v Io:
faktoriál := metoda(n, -li(n == 0, vrátit se 1) res := 1 Rozsah 1 na(n) pro každého(i, res = res * i))
Protože přiřazení res * i
na res
je poslední provedená akce, funkce implicitně vrací výsledek, a proto není potřeba explicitní návratový výraz. Výše uvedené ukazuje použití rozsahy, a nepoužívá a pro()
smyčka, která by byla rychlejší.
Viz také
Reference
- ^ „Io zprávy“. Citováno 2020-02-06.
- ^ Průvodce programováním Io
- ^ Tate, Bruce (2010). „Kapitola 3: Já“. Sedm jazyků za sedm týdnů: Pragmatický průvodce výukou programovacích jazyků (1. vyd.). Raleigh, Severní Karolína: Pragmatická knihovna. p.60, 72. ISBN 978-1934356593.
externí odkazy
- Io domovská stránka
- Io ve společnosti Synrc Research Center
- Io na Curlie
- Jasmine.Io BDD Testing Framework pro Io