Io: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Addbot (обсуждение | вклад) м Интервики (всего 13) перенесены на Викиданные, d:q756175 |
|||
(не показаны 22 промежуточные версии 16 участников) | |||
Строка 2: | Строка 2: | ||
{{Карточка языка программирования |
{{Карточка языка программирования |
||
|name = Io |
| name = Io |
||
|logo = |
| logo = Io-logo.svg |
||
|semantics = |
| semantics = |
||
|paradigm = [[Объектно-ориентированное программирование|объектно-ориентированный]], [[Прототипное программирование|прототипный]] |
| paradigm = [[Объектно-ориентированное программирование|объектно-ориентированный]], [[Прототипное программирование|прототипный]] |
||
|class = |
| class = |
||
|year = 2002 |
| year = 2002 |
||
|designer = Стив Декорте |
| designer = Стив Декорте |
||
|developer = Стив Декорте, Джонатан Райт, Джереми Трегунна |
| developer = Стив Декорте, Джонатан Райт, Джереми Трегунна |
||
| дата выпуска последней тестовой версии = {{start date and age|2018|09|22}} |
|||
|typing = [[динамическая типизация|динамическая]] |
| typing = [[динамическая типизация|динамическая]] |
||
|latest_release_version = |
| latest_release_version = 2017.09.06 |
||
|latest_release_date = |
| latest_release_date = {{start date and age|2017|08|11}} |
||
|implementations = [http://www.iolanguage.com/ Io], [http://synrc.com/research/io/ Io.NET] |
|||
| последняя тестовая версия = 2019.05.22-alpha |
|||
⚫ | |||
| implementations = Io, Io.Net |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
}} |
}} |
||
'''Io''' (''первая буква — заглавная «i»'') — [[Скриптовый язык|скриптовый]], |
'''Io''' (''первая буква — заглавная «i»'') — [[Скриптовый язык|скриптовый]], [[объектно-ориентированное программирование|объектно-ориентированный]] [[язык программирования]] с [[Динамическая типизация|динамической типизацией]]. Язык был разработан [[Декорт, Стив|Стивом Декортом]] ({{lang-en|Steve Dekorte}}) в 2002 году<ref>[http://www.ibm.com/developerworks/ru/library/l-io_01/ Io — компактный объектно-ориентированный язык программирования] {{Wayback|url=http://www.ibm.com/developerworks/ru/library/l-io_01/ |date=20150924050737 }} ''(www.ibm.com)''</ref>. Реализация является [[Кроссплатформенное программное обеспечение|кроссплатформенной]], [[Свободное программное обеспечение|открытой]] ([[лицензия BSD]]) и рассчитана на лёгкость встраивания в качестве скриптового языка. |
||
== Особенности == |
== Особенности == |
||
* |
* минималистический [[Синтаксис (программирование)|синтаксис]]; |
||
* абсолютно каждая сущность является [[Объект (программирование)|объектом]]; |
* абсолютно каждая сущность является [[Объект (программирование)|объектом]]; |
||
* всё основано на передаче [[Обмен сообщениями|сообщений]] (даже арифметические операции и присваивание — это передача сообщения объекту); |
* всё основано на передаче [[Обмен сообщениями|сообщений]] (даже арифметические операции и присваивание — это передача сообщения объекту); |
||
* [[Параллельные вычислительные системы|параллелизм]], основанный на [[Модель акторов|модели акторов]]. |
* [[Параллельные вычислительные системы|параллелизм]], основанный на [[Модель акторов|модели акторов]]. |
||
В отличие от [[Perl]] |
В отличие от [[Perl]] и [[PHP]], в Io [[Класс (программирование)|класс]] не имеет принципиального отличия от объекта, является первоклассным объектом языка. Наследование реализовано [[Прототипное программирование|прототипами]], как в [[Self]], [[Lua]] и [[JavaScript]]. Поддерживается множественное наследование. |
||
Таким образом, для экземпляров объектов, классов и [[пространство имён|пространств имён]] в Io используются прототипы. Для операторов, вызовов [[метод (языки программирования)|методов]], присваивания и доступа к переменным используются сообщения. |
Таким образом, для экземпляров объектов, классов и [[пространство имён|пространств имён]] в Io используются прототипы. Для операторов, вызовов [[метод (языки программирования)|методов]], присваивания и доступа к переменным используются сообщения. |
||
Строка 44: | Строка 46: | ||
Singleton clone = Singleton //Значение слота clone заменяется ("=") ссылкой на сам объект |
Singleton clone = Singleton //Значение слота clone заменяется ("=") ссылкой на сам объект |
||
</source> |
</source> |
||
== Примечания == |
|||
{{примечания}} |
|||
== Литература == |
|||
* {{книга|автор=Bruce Tate|часть=Io|заглавие=Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages|ссылка=http://books.google.com/books?id=zCP9RAAACAAJ|издательство=Pragmatic Bookshelf|год=mar 2010|pages=60-96|allpages=336|isbn=9781934356593}} |
|||
* [http://jackmyers.info/docs/ObjectOrientedImplementationApproaches.pdf Object-Oriented Implementation Approaches of Pure Object-Oriented Languages: A Comparison among Smalltalk, Eiffel, Ruby and Io], Christopher Bowen, Kevin Desmond, Jesse Kurtz, Jack Myers |
|||
== Ссылки == |
== Ссылки == |
||
* [http://www.iolanguage.com/ iolanguage.com] {{ref-en}} — |
* [http://www.iolanguage.com/ iolanguage.com] {{ref-en}} — официальный сайт языка |
||
* [http://www.dekorte.com/ dekorte.com]{{ref-en}} — |
* [http://www.dekorte.com/ dekorte.com] {{Wayback|url=http://www.dekorte.com/ |date=20121129225834 }}{{ref-en}} — блог автора |
||
⚫ | * {{cite web|url=http://synrc.com/research/io/doc/overview.htm|title=Язык программирования Io|publisher=synrc research center|accessdate=2012-07-09|archiveurl=https://www.webcitation.org/69gnAykqa?url=http://synrc.com/research/io/doc/overview.htm|archivedate=2012-08-05|deadurl=yes}} |
||
* {{cite web|url=http://web.archive.org/web/20040811081315/http://www.myjavaserver.com/~livesystems/stor/IoProgrammingGuide.ru.html|title=Руководство по программированию на языке Io|date=2004}} {{cite web|url=http://www.peeep.us/b24b129b|title=Зеркало}} |
|||
⚫ | |||
* {{cite web|url=http://habrahabr.ru/blogs/crazydev/28041/|title=Io programming language|work=Блог «Ненормальное программирование»|date=27 июня 2008|accessdate=19 апреля 2009|archiveurl=http://www.webcitation.org/67lNBN5SC|archivedate=2012-05-19}} |
|||
** [http://habrahabr.ru/blogs/crazydev/28167/ Часть 2. Синтаксис IO] |
|||
** [http://habrahabr.ru/blogs/crazydev/28254/ Часть 3. Объектная система] |
|||
** [http://habrahabr.ru/blogs/crazydev/29375/ Часть 4. Система сообщений] |
|||
* [http://archive.sdfgh153.ru/search/label/Io Io в блоге С. Новикова]{{ref-ru}} |
|||
{{compu-lang-stub}} |
{{compu-lang-stub}} |
||
{{rq|refless}} |
{{rq|refless}} |
||
{{Языки программирования}} |
{{Языки программирования}} |
||
{{Объектно-ориентированные языки}} |
|||
[[Категория:Объектно-ориентированные языки программирования]] |
[[Категория:Объектно-ориентированные языки программирования]] |
Текущая версия от 14:49, 7 октября 2024
Io | |
---|---|
Класс языка | объектно-ориентированный, прототипный |
Появился в | 2002 |
Автор | Стив Декорте |
Разработчик | Стив Декорте, Джонатан Райт, Джереми Трегунна |
Расширение файлов |
.io |
Выпуск | 2017.09.06 (11 августа 2017 ) |
Тестовая версия | 2019.05.22-alpha (22 сентября 2018 | )
Система типов | динамическая |
Основные реализации | Io, Io.Net |
Испытал влияние | Smalltalk, NewtonScript[англ.], Self, Lua, Lisp, Act1 |
Повлиял на | Ioke, Restricted Io |
Лицензия | модифицированная лицензия BSD[вд] |
Сайт | iolanguage.org |
Io (первая буква — заглавная «i») — скриптовый, объектно-ориентированный язык программирования с динамической типизацией. Язык был разработан Стивом Декортом (англ. Steve Dekorte) в 2002 году[1]. Реализация является кроссплатформенной, открытой (лицензия BSD) и рассчитана на лёгкость встраивания в качестве скриптового языка.
Особенности
[править | править код]- минималистический синтаксис;
- абсолютно каждая сущность является объектом;
- всё основано на передаче сообщений (даже арифметические операции и присваивание — это передача сообщения объекту);
- параллелизм, основанный на модели акторов.
В отличие от Perl и PHP, в Io класс не имеет принципиального отличия от объекта, является первоклассным объектом языка. Наследование реализовано прототипами, как в Self, Lua и JavaScript. Поддерживается множественное наследование.
Таким образом, для экземпляров объектов, классов и пространств имён в Io используются прототипы. Для операторов, вызовов методов, присваивания и доступа к переменным используются сообщения.
Примеры
[править | править код]Следующий код печатает в консоли «Hello world!» посредством передачи строке сообщения println:
"Hello world!" println
Реализация шаблона проектирования «одиночка»:
Singleton := Object clone //Объекты создаются (":=") клонированием существующих объектов
Singleton clone = Singleton //Значение слота clone заменяется ("=") ссылкой на сам объект
Примечания
[править | править код]- ↑ Io — компактный объектно-ориентированный язык программирования Архивная копия от 24 сентября 2015 на Wayback Machine (www.ibm.com)
Литература
[править | править код]- Bruce Tate. Io // Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages. — Pragmatic Bookshelf, mar 2010. — P. 60-96. — 336 p. — ISBN 9781934356593.
- Object-Oriented Implementation Approaches of Pure Object-Oriented Languages: A Comparison among Smalltalk, Eiffel, Ruby and Io, Christopher Bowen, Kevin Desmond, Jesse Kurtz, Jack Myers
Ссылки
[править | править код]- iolanguage.com (англ.) — официальный сайт языка
- dekorte.com Архивная копия от 29 ноября 2012 на Wayback Machine (англ.) — блог автора
- Язык программирования Io . synrc research center. Дата обращения: 9 июля 2012. Архивировано из оригинала 5 августа 2012 года.
Это заготовка статьи о компьютерных языках. Помогите Википедии, дополнив её. |
Для улучшения этой статьи желательно:
|