Jump to content

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

Идти!
Парадигма Мультипарадигмальность : параллельная , логическая , функциональная , императивная ( объектно-ориентированная ).
Разработано Фрэнсис МакКейб , Кит Кларк
Впервые появился 2003 год ; 21 год назад ( 2003 )
Предварительный выпуск
30.09.07 / 30 сентября 2007 г .; 16 лет назад ( 30 сентября 2007 )
Дисциплина набора текста сильный
ТЫ Unix-подобный
Лицензия лицензия GPLv2
Под влиянием
Пролог [1]

Идти! — это агентно-ориентированный язык программирования, основанный на традициях программирования, основанных на логике, языков таких как Пролог . [1] Он был представлен в статье Фрэнсиса Маккейба и Кейта Кларка в 2003 году . [2]

Авторы Go! описывают его как « многопарадигмальный язык программирования , ориентированный на потребности безопасного программирования, качества производства и приложений на основе агентов. Это многопоточный , строго типизированный язык более высокого порядка (в смысле функционального программирования). Он имеет отношение определения процедур и функций. Потоки выполняют процедуры действий, вызывая функции и запрашивая отношения по мере необходимости. Потоки в разных агентах взаимодействуют и координируют свои действия с помощью асинхронных сообщений. Потоки внутри одного агента также могут использовать общие динамические отношения, действующие как Linda в стиле хранилища кортежей . " [2]

Авторы также предполагают, что язык подходит для представления онтологий благодаря интеграции логического , функционального и императивного стилей программирования. [3]

Следующий пример иллюстрирует «онтологически-ориентированный» тип и стиль объявлений Go!: [3]

Sex ::= male | female.

person <~ {dayOfBirth:[] => day.
           age:[] => integer.
           sex:[] => Sex.
           name:[] => string.
           home:[] => string.
           lives:[string]{}}.

person:[string, day, Sex, string] $= person.

person(Nm, Born, Sx, Hm)..{
  dayOfBirth() => Born.
  age() => yearsBetween(now(), Born).
  sex() => Sx.
  name() => Nm.
  home() => Hm.
  lives(Pl) :- Pl = home().
  yearsBetween:[integer, day] => integer.
  yearsBetween(...) => ..
}.

newPerson:[string, day, Sex, string] => person.

newPerson(Nm, Born, Sx, Hm) => $person(Nm, Born, Sx, Hm).
  • The ::= Правило определяет новый алгебраический тип данных , тип данных, содержащий только конструкторы данных.
  • The <~ правило определяет тип интерфейса — оно указывает, какие свойства характерны для person а также дает ограничения типа для этих свойств. Это документально подтверждает, что age функциональное свойство с целочисленным значением, которое lives является унарным отношением над строками, и это dayOfBirth это функциональное свойство со значением, которое является объектом типа day.
  • The $= правило типа указывает, что существует также метка теории с функтором person, для теории, определяющей характерные свойства person тип - реализует person интерфейс - по четырем заданным параметрам типов string, day , Sex, и string.

Конфликт с Google

[ редактировать ]

В ноябре 2009 года Google выпустила язык программирования Go с таким же названием (без восклицательного знака ). Маккейб попросил Google изменить название их языка, поскольку он был обеспокоен тем, что они «накатывают на нас пар». [1] [4] Эта проблема привлекла внимание веб-сайтов, посвященных технологиям, некоторые из которых характеризуют Go! как «неясный». [5] Открытая ветка по этой теме была закрыта разработчиком Google 12 октября 2010 г. с пользовательским статусом «Неудачная» и со следующим комментарием: «Существует множество компьютерных продуктов и сервисов под названием Go. За 11 месяцев с момента нашего выпуска появилось множество была минимальная путаница двух языков». [6]

  1. ^ Перейти обратно: а б с Клэберн, Томас (11 ноября 2009 г.). «Название Google «Go» вызывает обвинения в «зле» » . Информационная неделя . Архивировано из оригинала 22 июля 2010 г. Проверено 14 ноября 2009 г.
  2. ^ Перейти обратно: а б Кларк, КЛ; Маккейб, ФГ (2003). «Вперёд! Для многопоточных совещательных агентов». Материалы второй международной совместной конференции по автономным агентам и мультиагентным системам . стр. 964–965. CiteSeerX   10.1.1.117.184 . дои : 10.1145/860575.860747 . ISBN  978-1581136838 . S2CID   2047545 .
  3. ^ Перейти обратно: а б Кларк, КЛ; Маккейб, ФГ (2006). «Онтологическое программирование на ходу!». Прикладной интеллект . 24 (3): 189–204. CiteSeerX   10.1.1.117.184 . дои : 10.1145/860575.860747 . S2CID   2047545 .
  4. ^ «Проблема 9 — вперед — я уже использовал название *МОЕГО* языка программирования» . 10 ноября 2009 г. Проверено 14 ноября 2009 г.
  5. ^ Браунли, Джон (13 ноября 2009 г.). «Google не вводил в Google «Go» перед тем, как назвать свой язык программирования» . Geek.com. Архивировано из оригинала 6 мая 2012 г. Проверено 18 января 2010 г.
  6. ^ «Я уже использовал название *МОЕГО* языка программирования · Проблема №9 · golang/go» . Гитхаб . Проверено 4 июля 2019 г.

Дальнейшее чтение

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