Jump to content

Ио (язык программирования)

Этот
Парадигма объектно-ориентированный на основе прототипов
Разработано Стив Декорте
Разработчик Стив Декорте, Джонатан Райт, Джереми Трегунна
Впервые появился 2002 год ; 22 года назад ( 2002 )
Стабильная версия
20170906 / 11 августа 2017 г .; 6 лет назад ( 11.08.2017 ) [1]
Дисциплина набора текста динамичный , сильный
Веб-сайт иоязык .org
Основные реализации
Io Io.NET
Под влиянием
Smalltalk , NewtonScript , Self , Lua , Lisp , Python , Act1
Под влиянием
Иго , Зелье

Io — чистый объектно-ориентированный язык программирования, вдохновленный Smalltalk , Self , Lua , Lisp , Act1 и NewtonScript . [2] Io имеет объектную модель на основе прототипов, аналогичную моделям Self и NewtonScript, устраняющую различие между экземпляром и классом . Как и в Smalltalk, все является объектом и использует динамическую типизацию . Как и Lisp, программы — это просто деревья данных. Io использует актеров для параллелизма.

Замечательными особенностями Io являются его минимальный размер и открытость для использования внешних ресурсов кода. [3] Io выполняется небольшой портативной виртуальной машиной .

История [ править ]

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

Философия [ править ]

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

Особенности [ править ]

Синтаксис [ править ]

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

 doStuff

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

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

 doStuff(42)

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

 System version

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

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

 1 + 5 * 8 + 1

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

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

Все операторы в Io являются методами; тот факт, что они не требуют явных круглых скобок, является удобством. Как вы можете видеть, здесь также происходит небольшой приоритет операторов , и уровни приоритета такие же, как и для C. уровней приоритета

Методы и блоки [ править ]

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

И метод , и блок являются функциями высшего порядка .

Примеры [ править ]

Вездесущая программа Hello world :

 "Hello, world!" println

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

 A := Object clone         // creates a new, empty object named "A"

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

factorial := method(n,
    if(n == 0, return 1)
    res := 1
    Range 1 to(n) foreach(i, res = res * i)
)

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

Ссылки [ править ]

  1. ^ «Ио Релизы» . Гитхаб . Проверено 6 февраля 2020 г.
  2. ^ Руководство по программированию Io
  3. ^ «Дополнения к программированию и написанию Io — Wikibooks, открытые книги для открытого мира» . ru.wikibooks.org . Проверено 22 июня 2023 г.
  4. ^ Тейт, Брюс (2010). «Глава 3: Ио» . Семь языков за семь недель: прагматическое руководство по изучению языков программирования (1-е изд.). Роли, Северная Каролина: Прагматичная книжная полка . п. 60, 72 . ISBN  978-1934356593 .
  5. ^ «Ио-руководство» . iolanguage.org . Проверено 22 июня 2023 г.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 60b54223420cd7d3a993e29f2e61b9e0__1687917660
URL1:https://arc.ask3.ru/arc/aa/60/e0/60b54223420cd7d3a993e29f2e61b9e0.html
Заголовок, (Title) документа по адресу, URL1:
Io (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)