Джон Скоулз | |
---|---|
Джон Скоулз в 2011 году | |
Родился | ( 1948-04-24) 24 апреля 1948 года |
Умер | 18 февраля 2019 года (2019-02-18) (в возрасте 70 лет) |
Гражданство | Соединенное Королевство |
Образование | B.Sc. ; Манчестерский университет ; 1969 |
Известен за | APL. Прямые функции |
Награды | Премия Айверсона |
Научная карьера | |
Области | Информатика |
Учреждения | ICL. W.S. Atkins Ltd.. Европейское космическое агентство. Dyalog Ltd. |
Влияния | Кеннет Э. Айверсон. Джим Браун. Филип Уодлер |
Веб-сайт | dfns.dyalog.com |
Джон Морли Скоулз (1948–2019) был британским ученым-компьютерщиком. Его профессиональная карьера была посвящена разработке языка программирования APL. Он был разработчиком и исполнителем прямых функций.
Джон Скоулз родился 24 апреля 1948 года в семье Джерри и Эми Скоулз. Он вырос в Лимингтон-Спа, Уорикшир, Англия, и посещал Лимингтонский колледж для мальчиков в период с 1960 по 1966 год. В период с 1966 по 1969 год он учился в Манчестерском университете и получил степень бакалавра (с отличием) по математике.
Скоулз обладал поэтическими и романтическими качествами в своей работе. жизнь. Помимо APL, он также нашел красоту в природе, опере, музыке Тома Уэйтса, литературе Джеймса Джойса, поэзии У.Б. Йейтс. Он был членом общества Джойс в Дублине. В 2013 году он и его жена Флора Доулинг отправились в Слайго к W.B. Летняя школа Йейтса и познакомился с поэтом Симусом Хини летом перед смертью Хини.
Сторона APL и романтическая сторона часто встречались: видео «Поиск в глубину» (ниже) был записан на рассвете летнего солнцестояния 2014 года, когда в воздухе витало пение птиц, когда он и его жена находились на 21-дневном ретрите по дзэн во Франции под руководством Тич Нхет Хон. Скоулз был доволен как техническим содержанием, так и обстоятельствами этой работы.
Первой работой Скоулза была стажировка компьютерного программиста в International Computers Limited (ICL) (1969-70), а оттуда он перешел в отдел исследований операций WS Atkins в Эпсом, Суррей (1971-75), а затем в Отдел поддержки продаж в Уоррингтоне, Ланкашире (1976-77). С 1977 по 1978 год он работал с Европейским космическим агентством в Мадриде, Испания, в качестве программиста в проекте International Ultraviolet Explorer. Затем он вернулся в ICL Dataskil, работая над APL для VME/B операционной системы (1978-82). В 1982 году он начал проект Dyalog APL для Unix машин, а в 1988 году стал партнером и директором компании Dyalog. В 2004 году Скоулз продал свою долю в компании, но продолжал работать консультантом и, по его словам, продолжал проявлять страстный интерес к программированию APL по различным математическим темам в целом и функциональному программированию и dfns в частности. Или «ботаник », как он это еще называл.
Кеннет Э. Айверсон, изобретатель APL, был недоволен тем, как пользователь функции были определены. В 1974 году он разработал «формальное определение функции» или «прямое определение» для использования в экспозиции. Прямое определение состоит из двух или четырех частей, разделенных двоеточиями:
имя: выражение имя: выражение0: предложение: выражение1
В прямом определении ⍺
обозначает левый аргумент, а ⍵
правильный аргумент. В первом случае результат выражения
является результатом функции; во втором случае результатом функции является результат выражение0
, если предложение
оценивается как 0, или выражение1
, если оно оценивается как 1. Присваивания внутри прямого определение являются динамически локальными. Примеры использования прямого определения можно найти в лекции Премии Тьюринга 1979 года, а также в книгах и прикладных документах.
Прямое определение было слишком ограничено для использования в более крупных системах. Идеи были развиты несколькими авторами в нескольких работах, но результаты были громоздкими. Из них «альтернативное определение функции APL» Бунда в 1987 году ближе всего к существующим возможностям, но имеет изъяны из-за конфликтов с существующими символами и обработки ошибок, которые вызвали бы практические трудности, и никогда не было реализовано. Основные дистилляты из различных предложений заключались в том, что (а) определяемая функция является анонимной, с последующим наименованием (если требуется), осуществляемым путем присвоения; (б) функция обозначается символом и, таким образом, обеспечивает анонимную рекурсию.
В 1996 году Шоулз изобрел прямые функции или dfns (произносится как «ди-фанс»), что стало большим отличительным достижением APL начала 21 века по сравнению с предыдущими версиями.. Dfns - это уникальная комбинация программирования массива, функций высшего порядка и функционального программирования. Идеи возникли в 1989 году, когда он прочитал специальный выпуск The Computer Journal о функциональном программировании. Затем он приступил к изучению функционального программирования и стал сильно мотивирован («болен желанием», как Йейтс), чтобы донести эти идеи до APL. Первоначально он работал в скрытности, потому что беспокоился, что изменения могут быть сочтены слишком радикальными и ненужным усложнением языка; другие наблюдатели говорят, что он действовал скрытно, потому что коллеги по Дьялогу не были так очарованы и думали, что он зря тратит свое время и причиняет людям неприятности. Dfns были впервые представлены на форуме поставщиков Dyalog на конференции APL '96 и выпущены в Dyalog APL в начале 1997 года. Принятие и признание шло медленно. Еще в 2008 году, в 25-летнем издании Dyalog, посвященном 25-летию компании Dyalog Ltd, dfns почти не упоминались (дважды упоминались как «динамические функции» и без пояснений). С 2019 года dfns реализованы в Dyalog APL, NARS2000 и ngn / apl. Они также играют ключевую роль в усилиях по использованию вычислительных возможностей GPU (графического процессора).
Dfns проиллюстрированы здесь примером. Гораздо более подробные объяснения и примеры можно найти в статье прямые функции и в справочных материалах.
Quicksort в массиве ⍵
работает, выбирая «точку поворота» наугад среди его основных ячеек, а затем цепочка отсортированных основных ячеек, которые строго предшествуют стержню, основных ячеек, равных стержню, и отсортированных основных ячеек, которые строго следуют за стержнем, как определено функцией сравнения ⍺⍺
. Определяется как доп (прямой оператор ) Q
:
Q ← {1≥≢⍵: ⍵ ⋄ (∇ ⍵⌿⍨0>s) ⍪ (⍵⌿⍨0 = s) ⍪∇ ⍵⌿⍨0
Q3
- это вариант, который объединяет три части, заключенные в функцию⊂
, вместо частей как таковых. Три части, генерируемые на каждом рекурсивном шаге, проявляются в структуре конечного результата. Применение функции, производной отQ3
к одному и тому же аргументу несколько раз дает разные результаты, поскольку точки поворота выбираются случайным образом. Обход результатов по порядку дает один и тот же отсортированный массив.Q3 ← {1 ≥≢⍵: ⍵ ⋄ (⊂∇ ⍵⌿⍨0>s) ⍪ (⊂⍵⌿⍨0 = s) ⍪⊂∇ ⍵⌿⍨0Приведенная выше формулировка не нова; см., Например, рисунок 3.7 классический дизайн и анализ компьютерных алгоритмов. Однако, в отличие от программы pidgin ALGOL на рисунке 3.7,
Q
иQ3
являются исполняемыми, а частичный порядок, используемый в сортировка является операндом,(× -)
в примерах выше.Статьи и презентации
Скоулз известен среди коллег своим остроумием, чувством юмора и юмором. Его «послеобеденные» презентации на конференциях Dyalog были долгожданным событием. Их выбор из списка выше:
Другие примеры можно найти в Схолизмах.