Io
Io (первая буква — заглавная «i») — скриптовый, чисто объектно-ориентированный язык программирования с динамической типизацией. Язык был разработан Стивом Декортом (англ. Steve Dekorte) в 2002 году[1]. Реализация является кроссплатформенной, открытой (лицензия BSD) и рассчитана на лёгкость встраивания в качестве скриптового языка.
Io | |
---|---|
Класс языка | объектно-ориентированный, прототипный |
Появился в | 2002 |
Автор | Стив Декорте |
Разработчик | Стив Декорте, Джонатан Райт, Джереми Трегунна |
Расширение файлов |
.io |
Система типов | динамическая |
Основные реализации | Io, Io.Net |
Испытал влияние | Smalltalk, NewtonScript, Self, Lua, Lisp, Act1 |
Повлиял на | Ioke, Restricted Io |
Лицензия | модифицированная лицензия BSD[d] |
Сайт | iolanguage.org |
Особенности
- минималистический синтаксис;
- абсолютно каждая сущность является объектом;
- всё основано на передаче сообщений (даже арифметические операции и присваивание — это передача сообщения объекту);
- параллелизм, основанный на модели акторов.
В отличие от Perl, PHP, Python и Ruby, в 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
Ссылки
- iolanguage.com (англ.) — официальный сайт языка
- dekorte.com Архивная копия от 29 ноября 2012 на Wayback Machine (англ.) — блог автора
- Язык программирования Io (недоступная ссылка). synrc research center. Дата обращения: 9 июля 2012. Архивировано 5 августа 2012 года.