Как мы научили машины считать и думать за нас? Часть 19. Языки для работы с символами: LISP и LOGO

LISP назван в честь «обработки LISt», что указывает на то, что основной структурой данных в этом языке программирования является список. Создателем языка LISP был Джон Маккарти, профессор Массачусетского технологического института.

 Как мы научили машины считать и думать за нас? Часть 19. Языки работы с символами: LISP и  LOGO

проф. Джон Маккарти устанавливает шахматную доску рядом с компьютером IBM 7090, готовясь к международному компьютерному шахматному матчу. Стэнфорд (Калифорния), 23 ноября 1966 г.

В более ранних колонках этой серии (доступных в Интернете) я описал множество языков программирования, которые дали программистам возможность эффективно описывать различные программы и создавать даже очень сложные алгоритмы. Однако эти языки были разработаны таким образом, чтобы упростить описание операций, выполняемых над числами. В то время компьютеры использовались только для этого: они вводили данные в виде чисел и ожидаемые результаты также в виде чисел. Сначала это был расчет стрельбы из пушек, потом – экономика и управление, потом инженерия и наука. Но они всегда сводились к численным расчетам.

Преимущества символьных вычислений

Нужны численные расчеты, но их результаты всегда имеют очень конкретную и ограниченную область применения. Если мы рассмотрим пример числовых расчетов, например, 3 x 6 = 18, это позволит нам предсказать, сколько нам придется заплатить на кассе магазина, если у нас есть 3 пакета сока в тележке, 6 злотых за одну коробку. Но ничего больше! Никаких выводов из этого сделать нельзя. Однако если рассмотреть символическое обозначение: m x a = F, то возможных выводов множество. Приведенное выше символическое обозначение известно как закон движения Ньютона. Если мы предположим, что «m» означает массу, «a» — ускорение, а «F» — значение силы, то мы можем использовать это для различных рассуждений. Рассуждение также возможно автоматически с помощью компьютера! Например, мы можем узнать, какую силу «F» должен развивать ракетный двигатель, если он должен поднять в космос спутник массой «m» и придать ему ускорение «а», необходимое для вывода его на орбиту.

Или когда друг хвастается: «Моя машина разгоняется за 3 секунды до сотни!», просто узнайте, какая масса» m» имеет автомобиль и какую силу «F» способен создать его двигатель, — чтобы узнать, какое ускорение «a» реально может развить автомобиль.

Шутка, это символическое обозначение можно использовать для ответа на вопрос: «Насколько тяжелым должен быть меч палача, когда им обезглавили Марию Стюарт?» Мы знаем, на какое ускорение «а» способна человеческая рука, мы также знаем, какая сила «F» нужна, чтобы отрубить голову, — значит, мы можем узнать, какую массу «m» должен был иметь этот меч.

Мы сосредоточились на полезности символического обозначения m x a = F, предполагая интерпретацию используемых символов в соответствии с законом динамики Ньютона. Но символы не имеют постоянного значения, поэтому «м» — это ширина участка, «а» — длина участка, а «F» — площадь. Тогда, например, мы можем узнать, какой ширины земельный участок нам нужно купить (м), так как его длина (а) диктует впадающая река, а площадь F нам нужна для получения разрешения на строительство .

Символьные вычисления и компьютеры

Надеюсь, мне не нужно приводить еще примеры, чтобы убедить вас в том, что символьные вычисления позволяют гораздо больше, чем численные вычисления. Подобные рассуждения использовали и первые компьютерщики, стремившиеся создать основы искусственного интеллекта. Компьютер, способный выполнять операцию 3 х 6 = 18, — это обычные счеты (только очень быстрые). С другой стороны, компьютер, который может делать выводы из m x a = F, представляет собой инструмент, проявляющий черты интеллектуальной работы. Только для этого его нужно правильно запрограммировать, и первым языком, на котором были написаны такие программы, был LISP.

LISP назван в честь «обработки LISt», что указывает на то, что основной структурой данных в этом языке программирования является список. Использование списков (вместо массивов и записей, используемых в других языках программирования) было хорошей идеей, ведь именно в таком виде удобно писать формулы символьных вычислений. Создателем языка LISP был Джон Маккарти, профессор Массачусетского технологического института. Концепция основных элементов этого языка была определена Маккарти в 1958 году, и поэтому LISP (используемый до сих пор!) является одним из старейших языков программирования. Маккарти опубликовал свою концепцию в 1960 году в статье под названием «Рекурсивные функции символьных выражений и их машинное вычисление, часть I». Вы согласитесь, что от такого звания у нормального человека могут сжаться зубы? Думаю, Маккарти тоже так думал, потому что вторая часть этой статьи так и не была опубликована.

LISP был разработан как теоретическая концепция. Даже сам Маккарти не верил, что это воплотится в жизнь. Тем временем ученик Маккарти Стив Рассел реализовал LISP на компьютере IBM 704 и показал, что он действительно работает! Решение Рассела позволяло интерпретировать LISP с помощью функции eval, а это означало, что по сути это был просто фиктивный язык программирования, но оно работало и убеждало сомневающихся в том, что имеет смысл. В результате в 1962 году родился первый настоящий транслятор LISP. Его построили Тим Харт и Майк Левин. Интересным фактом было то, что транслятор LISP был написан на… LISP!

Экстремальные рейтинги

LISP резко «перепутал» ИТ-сообщество и вызвал крайние эмоции. Долгое время это был единственный ИТ-инструмент, позволяющий программировать операции над различными символами, надписями и текстами, поэтому он стал флагманским инструментом для всех исследователей, работающих над зарождающимся и развивающимся искусственным интеллектом. На основе LISP в 1970 году был построен инструмент для создания программ искусственного интеллекта под названием Micro-Planner, который в свою очередь был использован Терри Виноградом для создания системы SHRDLU в Массачусетском технологическом институте для интеллектуального разговора с людьми о роботах. деятельность в идеализированной среде, состоящей из свободно расположенных стереометрических тел. Ранние системы ИИ работали в сфере чистой абстракции, работая с различными символами, которые были ценны с научной точки зрения, но не могли быть «отображены». Поэтому ШРДЛУ, показавший действие в 1972 году, считался огромным успехом для искусственного интеллекта. Тогда LISP как основа ИТ получил много сторонников.

Было разработано множество версий языка LISP. В этот бурный период обозначились две ветви развития. Наибольшее распространение получил Common LISP (в различных вариациях), но также была популярна ветвь, связанная с весьма «аскетичной» версией LISP под названием Scheme. Эта версия была создана Гаем Л. Стилом и Джеральдом Сассманом из Массачусетского технологического института. У него было много сторонников именно потому, что он содержал только базовые механизмы и давал пользователю большую свободу в формировании собственного инструмента искусственного интеллекта.

Прошло много лет и позиция LISP уже не та, что была раньше, но стоит вспомнить, что в 70-х и nbsp;80 . IT-специалисты были в таком восторге от него, что заставили электронщиков строить особый тип компьютеров, так называемые LISP-машины, которые могли работать только с LISP-программами, но очень эффективно (на обычных компьютерах LISP-программы работали очень медленно).

Но машины LISP просто устарели, и поскольку скорость обычных компьютеров росла так быстро, эта ветвь компьютерного оборудования быстро вымерла. Но сам LISP жив, модернизирован, преобразован и до сих пор широко используется, хотя он настолько отличается от других языков программирования, что некоторые ученые-компьютерщики его абсолютно ненавидят. Известно мнение выдающегося пионера информатики Эдсгера Дейкстры, написавшего в 1972 году: «LISP — самый изощренный способ злоупотребления компьютерами».

В то же время оснащение инструментами для работы с символами C++ и Java снизило интерес к LISP. В настоящее время многие компьютерщики считают его прекрасным, но уже устаревшим элементом истории информатики. С другой стороны, у потомка LISP были «свои пять минут»: язык LOGO.

Несколько слов о характеристиках и истории LOGO

Скачок от LISP к LOGO кажется головокружительным. LISP был инструментом для самых продвинутых ученых-компьютерщиков в области искусственного интеллекта. Между тем язык LOGO предназначен для детей, тех, кто делает первые шаги в обучении письму и чтению, и в основном для тех, у кого трудности с математикой.

Нет больше контраста! Между тем, LOGO — это правильно адаптированный LISP. Его идея родилась из увлечения американского ученого-компьютерщика и учителя математики Сеймура Пейперта работами швейцарского психолога и педагога Жана Пиаже. Пиаже сослался на аналогию между преподаванием математики и преподаванием иностранного языка. Он написал, что если вы хотите научить молодого швейцарца английскому языку, вы можете вместо того, чтобы заставлять его учить словарный запас и правила грамматики, отправить его в Англию, где ему придется использовать английские фразы и понимать английские утверждения на каждом шагу. То же самое верно для студента с математическими трудностями. Его следует поместить в «математическую страну», где, если он хочет чего-то добиться, ему придется использовать математику.

Сеймур Пейперт решил создать эту математическую страну на компьютере. В течение четырех лет (начиная с 1967 года) вместе с Уоллесом Ферайгом и Синтией Соломон они работали над созданием системы, в которой дети, играя словами и предложениями, должны будут (неосознанно!) использовать математику и узнать об этом правила и положения. Первоначально они назвали свою систему Ghost, но затем взяли название LOGO от греческого слова «логос», означающего «слово» или «мысль». В 1988–1991 годах я был ревностным пропагандистом использования языка LOGO в польских школах для обучения основам алгоритмического мышления. Я написал довольно много статей и три книги об этом. Но LOGO появился в польских школах ненадолго — его быстро заменили более современные ИТ-инструменты (например, Scratch или Arduino).

На самом деле, производители логотипов в США также заметили, что игра со словами и предложениями не привлекает достаточного внимания со стороны дети. В 1969 году добавили так называемую графика черепахи, которая позже доминировала в этом символическом (на основе LISP) ядре языка настолько, что многие люди ассоциировали LOGO только с рисованием изображений. Но эта ветка LOGO уже не тема данной рубрики, потому о компьютерной графике я напишу отдельно.

Автор — профессор AGH в Кракове

Оцените статью
( Пока оценок нет )

В профессии с 2008 года. Профиль - международные отношения и политика. Почта: andreykozlov07@gmail.com

Последние новости 24 часа
Как мы научили машины считать и думать за нас? Часть 19. Языки для работы с символами: LISP и LOGO
Моравецкий: Забрать у России поместья олигархов и для этого перестроить Украину