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


Из Википедии, бесплатной энциклопедии
  (Перенаправлено с языка программирования Io )
Перейти к навигации Перейти к поиску

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

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

История

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

Философия

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

Функции

  • Чисто объектно-ориентированный на основе прототипов
  • Код как данные / гомоиконный
  • Ленивое вычисление параметров функции
  • Функции высшего порядка
  • Самоанализ, рефлексия и метапрограммирование
  • Параллелизм на основе акторов
  • Сопрограммы
  • Обработка исключений
  • Добавочный сбор мусора, поддерживающий слабые звенья
  • Очень портативный
  • Динамическая загрузка DLL / разделяемой библиотеки на большинстве платформ
  • Маленькая виртуальная машина

Синтаксис

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

 doStuff

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

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

 doStuff ( 42 )

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

  Версия системы

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

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

 1  +  5  *  8  +  1

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

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

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

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

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

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

Примеры

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

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

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

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

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

factorial  : =  method ( n ,  if ( n  ==  0 ,  return  1 )  res  : =  1  Диапазон от  1  до ( n )  foreach ( i ,  res  =  res  *  i ) )

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

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

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

использованная литература

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

внешние ссылки

  • Io домашняя страница
  • Ио в Исследовательском центре Synrc
  • Ио в Керли
  • Jasmine.Io Платформа тестирования BDD для Io
Получено с https://en.wikipedia.org/w/index.php?title=Io_(programming_language)&oldid=1044319103 "