Io (язык программирования) - Io (programming language)

Ио
Io-logo.svg
Парадигмаобъектно-ориентированный на основе прототипа
РазработаноСтив Декорте
РазработчикСтив Декорте, Джонатан Райт, Джереми Трегунна
Впервые появился2002; 18 лет назад (2002)
Стабильный выпуск
20170906/11 августа 2017 г.; 3 года назад (2017-08-11)[1]
Печатная дисциплинадинамичный, сильный
Интернет сайтiolanguage.org
Основной реализации
Ио Io.NET
Под влиянием
Болтовня, NewtonScript, Себя, Lua, Лисп, Python, Акт1
Под влиянием
Иоке, Зелье

Ио чистый объектно-ориентированного программирования язык вдохновлен Болтовня, Себя, Lua, Лисп, Акт1, и NewtonScript.[2] Ио имеет на основе прототипа объектная модель похожа на модели в Self и NewtonScript, что устраняет различие между пример и учебный класс. Как и в Smalltalk, все является объектом и использует динамическая типизация. Как и Лисп, программы - это просто деревья данных. Ио использует актеры для параллелизма.

Примечательные особенности Io - это его минимальный размер и открытость для использования внешних ресурсов кода.[нужна цитата ] Io выполняется с помощью небольшого портативного виртуальная машина.

История

Язык был создан Стивом Декортом в 2002 году после попытки помочь другу, Дрю Нельсон, с его языком, Целом. Он обнаружил, что на самом деле мало что знает о том, как работают языки, и решил написать крошечный язык, чтобы лучше понимать проблемы.[3]

Философия

Цель Ио - исследовать концептуальную унификацию и динамические языки, поэтому предпочтение отдается простоте и гибкости, а не производительности.

Функции

Синтаксис

В простейшей форме он состоит из одного идентификатора:

 doStuff

Предполагая, что приведенный выше doStuff является метод, он вызывается без аргументов, и поэтому явные скобки не требуются.

Если бы у doStuff были аргументы, это выглядело бы так:

 doStuff(42)

Ио - это передача сообщений язык, и поскольку все в Io является сообщением (за исключением Комментарии ) каждое сообщение отправляется получателю. Приведенный выше пример хорошо это демонстрирует, но не полностью. Чтобы лучше описать этот момент, давайте посмотрим на следующий пример:

 Система версия

В приведенном выше примере демонстрируется передача сообщений в Io; сообщение «версия» отправляется объекту «Система».

Операторы являются частным случаем, когда синтаксис не такой шаблонный, как в приведенных выше примерах. Ио парсер перехватывает набор операторов, определенных интерпретатором, и переводит их в вызовы методов. Например, следующее:

 1 + 5 * 8 + 1

переводится на:

 1 + (5 *(8)) +(1)

Как видите, есть еще немного приоритет оператора происходит здесь, и уровни приоритета такие же, как и у Уровни приоритета C.

Операторы также были превращены в вызовы методов. Фактически, все операторы в Io являются методами; тот факт, что они не требуют явных скобок, является удобством.

Методы и блоки

В Io есть два способа создания анонимные функции: методы и блоки. Между собой они практически идентичны, за исключением объем. Пока блоки имеют лексическая область, методы имеют динамический диапазон.

Обе метод и блокировать находятся функции высшего порядка.

Примеры

Вездесущий Привет, мир программа:

 "Привет, мир!" println

Новые объекты создаются клонирование объекты. В частности, в Io создается новый пустой объект, и только различия между ним и его родителем сохраняются в новом объекте; это поведение известно как дифференциальное наследование. Показан пример такого поведения:

 А := Объект клон         // создает новый пустой объект с именем "A"

Простая нерекурсивная факториальная функция в Io:

факториал := метод(п,    если(п == 0, возвращаться 1)    res := 1    Классифицировать 1 к(п) для каждого(я, res = res * я))

Поскольку присвоение res * я к res является последним выполненным действием, функция неявно возвращает результат, поэтому явное возвращаемое выражение не требуется. Выше показано использование диапазоны, и не использует за() цикл, который был бы быстрее.

Смотрите также

Рекомендации

  1. ^ "Io Releases". Получено 2020-02-06.
  2. ^ Руководство по программированию Io
  3. ^ Тейт, Брюс (2010). «Глава 3: Ио». Семь языков за семь недель: прагматическое руководство по изучению языков программирования (1-е изд.). Роли, Северная Каролина: Прагматическая книжная полка. п.60, 72. ISBN  978-1934356593.

внешняя ссылка