Io: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Addbot (обсуждение | вклад)
м Интервики (всего 13) перенесены на Викиданные, d:q756175
 
(не показаны 22 промежуточные версии 16 участников)
Строка 2: Строка 2:


{{Карточка языка программирования
{{Карточка языка программирования
|name = Io
| name = Io
|logo = [[Файл:Io-logo.svg|64px]]
| 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
|dialects =
| implementations = Io, Io.Net
|influenced_by = [[Smalltalk]], [[:en:NewtonScript|NewtonScript]], [[Self (язык программирования)|Self]], [[Lua]], [[Лисп|Lisp]], [[:en:Actor model middle history#Actor programming languages|Act1]]
| dialects =
|influenced = [[Ioke (язык программирования)|Ioke]], [[Restricted Io (язык программирования)|Restricted Io]]
| influenced_by = [[Smalltalk]], {{iw|NewtonScript}}, [[Self (язык программирования)|Self]], [[Lua]], [[Лисп|Lisp]], [[Act1]]
|website = [http://www.iolanguage.com/ www.iolanguage.com]
| influenced = [[Ioke (язык программирования)|Ioke]], [[Restricted Io (язык программирования)|Restricted Io]]
|extension = .io
| website = http://iolanguage.org/
| extension = .io
}}
}}


'''Io''' (''первая буква — заглавная «i»'') — [[Скриптовый язык|скриптовый]], чисто [[объектно-ориентированное программирование|объектно-ориентированный]] [[язык программирования]] с [[Динамическая типизация|динамической типизацией]]. Язык был разработан [[Декорт, Стив|Стивом Декортом]] (Steve Dekorte) в [[2002 год]. Реализация является [[Кроссплатформенное программное обеспечение|кросплатформенной]], [[Свободное программное обеспечение|открытой]] ([[лицензия BSD]]) и рассчитана на лёгкость встраивания в качестве скриптового языка.
'''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]], [[PHP]], [[Python]] и [[Ruby|Руби]], в Io не существует такого понятия, как [[Класс (программирование)|класс]] объекта. Вместо этого применены [[Прототипное программирование|прототипы]], как в [[Lua]] и [[JavaScript]].
В отличие от [[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://synrc.com/research/io/doc/overview.htm|title=Язык программирования Io|publisher=synrc research center|accessdate=9 июля 2012|archiveurl=http://www.webcitation.org/69gnAykqa|archivedate=2012-08-05}}
* {{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; 7 лет назад (2017-08-11))
Тестовая версия 2019.05.22-alpha (22 сентября 2018; 6 лет назад (2018-09-22))
Система типов динамическая
Основные реализации 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 заменяется ("=") ссылкой на сам объект

Примечания

[править | править код]

Литература

[править | править код]
  • 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