ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.12.2020
Просмотров: 1074
Скачиваний: 1
197
зования
любого
ученого
.
Ученый
,
владеющий
только
одним
язы
-
ком
,
неизбежно
чувствовал
свою
неполноценность
...
Таким
же
не
-
полноценным
ощущает
себя
исследователь
в
области
искусствен
-
ного
интеллекта
,
если
он
не
обладает
основательным
знакомством
как
с
Лиспом
,
так
и
с
Прологом
—
этими
двумя
основополагающи
-
ми
языками
искусственного
интеллекта
,
без
знания
которых
невоз
-
можен
более
широкий
взгляд
на
предмет
исследовадния
».
Язык
Prolog (PROgramming for LOGic —
программирование
для
логики
)
был
создан
в
Европе
в
начале
70-
х
годов
.
Теория
была
раз
-
работана
в
Эдинбурге
(
Великобритания
)
Робертом
Ковальским
и
Маартеном
ван
Эмденом
,
первая
реализация
осуществлена
Аленом
Кольмари
(Colmerauer, Alain)
из
Марселя
(
Франция
).
В
отличие
от
всех
предыдущих
языков
,
включая
Лисп
,
Пролог
не
является
алгоритмическим
языком
,
то
есть
он
не
описывает
как
нужно
получить
результат
.
Он
является
декларативным
языком
,
то
есть
показывает
что
дано
и
что
нужно
получить
.
Программа
на
Прологе
состоит
из
фактов
некоторой
предмет
-
ной
области
и
правил
.
Интерпретирующая
система
сама
делает
ло
-
гический
вывод
,
то
есть
применяет
правила
к
фактам
,
для
этого
используется
аппарат
математической
логики
(
логика
предикатов
первого
порядка
).
В
качестве
примера
рассмотрим
простейшую
предметную
об
-
ласть
родственных
отношений
между
пятью
членами
семьи
—
тре
-
мя
мужчинами
и
двумя
женщинами
.
Эта
схема
описывается
девятью
фактами
:
муж
(
петя
),
муж
(
ваня
),
муж
(
коля
),
жен
(
таня
),
жен
(
маша
),
мать
(
ваня
,
таня
),
отец
(
ваня
,
петя
),
отец
(
маша
,
ваня
),
отец
(
коля
,
ваня
).
Зададим
следующие
очевидные
правила
род
-
ства
,
используя
синтаксис
Пролога
.
Знак
«:—»
символизирует
«
есть
по
определению
»,
запятая
Ж
М
М
Ж
М
Таня
Петя
Ваня
Маша
Коля
198
означает
одновременное
выполнение
нескольких
высказываний
,
а
два
исключающих
друг
друга
знака
<
и
>
заменяют
знак
нера
-
венства
.
родитель
(X, Y) :—
отец
(X, Y)
родитель
(X, Y) :—
мать
(X, Y)
дед
(X, Y) :—
родитель
(X, Z),
отец
(Z, Y)
брат
(X, Y) :—
муж
(Y),
родитель
(X, Z),
родитель
(Y, Z), X<>Y
Введя
текст
фактов
и
правил
в
Пролог
-
систему
,
можно
задавать
ей
вопросы
.
Диалог
пользователя
с
системой
выглядит
следующим
образом
. (
справа
от
вопроса
на
Прологе
приведена
его
расшифров
-
ка
на
естественно
языке
):
GOAL>
дед
(
коля
, X)
Кто
дед
Коли
?
X =
Петя
GOAL>
брат
(
маша
, X)
Кто
брат
Маши
?
X =
Коля
Пролог
—
очень
мощный
и
красивый
язык
,
с
ним
в
80-
е
годы
были
связаны
очень
большие
надежды
.
Речь
идет
о
весьма
амбици
-
озном
проекте
ЭВМ
пятого
поколения
,
заявленном
Японией
в
1981
году
и
распропагандированном
в
печати
под
названием
«
Японский
вызов
».
Предполагалось
,
что
в
90-
х
годах
будут
созданы
компьюте
-
ры
,
имеющие
принципиальные
отличия
от
всех
предыдущих
:
•
новая
технология
производства
микросхем
,
знаменующая
переход
от
кремния
к
арсениду
галлия
,
и
дающая
возможность
на
порядок
повысить
быстродействие
основных
логических
элементов
;
•
новая
архитектура
(
не
фон
неймановская
);
•
новые
способы
ввода
-
вывода
информации
—
распознавание
и
син
-
тез
речи
и
образов
;
•
отказ
от
традиционных
алгоритмических
языков
программирова
-
ния
(
Фортран
,
Алгол
и
т
.
п
.)
в
пользу
декларативных
;
•
ориентация
на
задачи
искусственного
интеллекта
с
автоматическим
поиском
решения
на
основе
логического
вывода
.
199
В
основу
программного
обеспечения
будущих
ЭВМ
предпола
-
галось
положить
язык
Пролог
,
а
всю
архитектуру
ориентировать
на
реализацию
алгоритмов
логического
вывода
.
К
сожалению
,
этому
проекту
не
суждено
было
сбыться
.
Основ
-
ная
причина
—
не
удалось
добиться
эффективной
аппаратной
ин
-
терпретации
Пролога
.
Отпущенное
время
истекло
,
а
нетрадицион
-
ные
элементная
база
и
архитектура
компьютера
до
сих
пор
не
выш
-
ла
из
стадии
экспериментов
.
Задача
создания
нового
,
революцион
-
ного
поколения
компьютеров
явно
откладывается
до
XXI
века
.
Logo —
язык
для
самых
маленьких
В
зключение
этого
параграфа
мы
рассмотрим
еще
один
алгоритмический
язык
,
предназначенный
не
для
«
настоящего
»
программирования
,
а
для
обу
-
чения
детей
.
Речь
идет
о
языке
Logo,
изобретен
-
ным
выдающимся
математиком
и
педагогом
Сей
-
муром
Пейпертом
(Papert, Seymour).
Пейперт
родился
и
вырос
в
Южной
Африке
,
учился
в
Кембридже
,
а
в
1958-1963
годах
работал
в
Женеве
у
знаменитого
психолога
Жана
Пиаже
(Piaget, Jean),
где
занимался
детьми
и
природой
их
мышления
.
Перейдя
на
работу
в
Массачуссетский
технологический
инсти
-
тут
,
он
поставил
задачу
создать
такую
среду
общения
человека
с
компьютером
,
которая
была
бы
доступна
даже
ребенку
.
Как
извест
-
но
,
дети
очень
любят
рисовать
.
Оттал
-
киваясь
от
этого
тезиса
и
взяв
за
осно
-
ву
язык
Lisp,
Пейперт
в
1967
году
со
-
здал
гениальную
в
своей
простоте
си
-
стему
программирования
Logo,
в
кото
-
рой
операторы
языка
управляют
дви
-
жениями
маленькой
черепашки
,
пол
-
зающей
по
экрану
компьютера
и
остав
-
ляющей
за
собой
видимый
след
.
Ре
-
бенок
,
начиная
с
возраста
5-6
лет
,
ри
-
суя
черепашкой
с
помощью
команд
«
вперед
на
столько
-
то
шагов
», «
впра
-
во
на
столько
-
то
градусов
»
и
им
по
-
Сеймур
Пейперт
200
добных
забавные
картинки
,
сам
не
осознавая
того
,
постигает
фун
-
даментальные
понятия
цикла
,
подпрограммы
,
рекурсии
и
т
.
д
.
Вот
пример
простейшей
рекурсивной
программы
на
русифи
-
цированном
Logo,
рисующей
спираль
из
отдельных
дуг
окружнос
-
ти
:
это
дуга
:
шаг
:
число
_
шагов
повтори
:
число
_
шагов
[
вперед
:
шаг
направо
10]
конец
это
спираль
:
шаг
если
:
шаг
< 1 [
стоп
]
дуга
:
шаг
18
спираль
:
шаг
/ 2
конец
У
Сеймура
Пейперта
нашлось
очень
много
последователей
на
всех
конти
-
нентах
Земли
.
Эксперименты
,
прове
-
денные
с
тысячами
детей
показали
удивительные
результаты
.
Рабо
-
та
с
компьютером
в
среде
Logo
стимулирует
творческие
способнос
-
ти
,
развивает
абстрактное
мышление
Сама
среда
Logo
постоянно
совершенствуется
.
Современная
реализация
системы
для
Wintel
и
Macintosh
под
названием
MicroWorlds —
ЛогоМиры
имеет
еще
бо
-
лее
широкие
возможности
программирования
:
можно
управлять
сра
-
зу
несколькими
черепашками
,
цветом
,
звуком
,
создавать
мульти
-
пликации
и
т
.
д
.
Она
представляет
собой
универсальную
учебно
-
развивающую
среду
,
то
есть
открыта
для
занятий
любым
школьным
предметом
.
Уроки
истории
Итак
,
какие
общие
выводы
можно
сделать
из
расска
-
занных
историй
о
развитии
конкретных
языков
програм
-
мирования
?
Первое
.
Программирование
в
целом
значительно
более
консерва
-
тивно
,
чем
аппаратная
часть
компьютера
.
Фундаментальные
идеи
рож
-
даются
очень
редко
—
раз
в
10-15
лет
.
За
прошедшие
полвека
было
предложено
пять
основных
концепций
программирования
:
Спираль
из
дуг
201
1)
процедурное
программирование
,
реализованное
в
языках
Фор
-
тран
,
Кобол
,
Алгол
,
Паскаль
и
т
.
п
.;
2)
объектно
-
ориентирование
программирование
(
ООП
),
в
крис
-
талльно
чистом
виде
реализованное
в
языке
Smalltalk,
и
в
смеси
с
про
-
цедурным
программированием
присутствующее
во
всех
современных
языках
— Object Pascal, Visual Basic, C++, Java;
3)
визуально
-
событийное
программирование
,
являющиеся
разви
-
тием
ООП
в
части
работы
с
особыми
классыми
визуальных
объектов
(
пиктограммами
,
кнопками
,
диалоговыми
окнами
),
реагирующими
на
различные
внешние
события
—
щелчок
или
перетаскивание
мышью
и
т
.
п
.
Оно
реализовано
в
визуальных
технологических
средах
Delphi,
Visual Basic, Visual C++, Visual Java, Visual FoxPro
и
др
.;
4)
функциональное
программирование
,
представленное
языком
Lisp;
5)
логическое
программирование
,
положенное
в
основу
языка
Prolog.
Поэтому
будущему
профессиональному
программисту
чрезвычай
-
но
важно
изучать
классику
.
Второе
.
Новые
идеи
в
программировании
часто
рождаются
не
в
результате
инженерного
прозрения
,
а
на
основе
фундаментальных
ма
-
тематических
теорий
;
такова
судьба
Лиспа
,
Пролога
,
Лого
.
Поэтому
системный
программист
обязан
быть
хорошим
математиком
.
Третье
.
Самый
хороший
и
элегантный
язык
ничего
не
стоит
без
реализации
,
которая
должна
быть
эффективной
.
Вспомним
,
напри
-
мер
,
как
Филипп
Кан
удачной
реализацией
дал
вторую
жизнь
Про
-
логу
.
Построение
же
эффективного
транслятора
(
компилятора
или
интерпретатора
)
невозможно
без
глубокого
знания
теории
формаль
-
ных
языков
и
методов
трансляции
.
3.3.
Операционные
системы
Операционная
система
(
ОС
) —
важнейшая
часть
системного
программного
обеспечения
.
ОС
—
это
совокупность
программ
,
орга
-