ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.12.2020

Просмотров: 1033

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

197

зования

 

любого

 

ученого

Ученый

владеющий

 

только

 

одним

 

язы

-

ком

неизбежно

 

чувствовал

 

свою

 

неполноценность

... 

Таким

 

же

 

не

-

полноценным

 

ощущает

 

себя

 

исследователь

 

в

 

области

 

искусствен

-

ного

 

интеллекта

если

 

он

 

не

 

обладает

  

основательным

 

знакомством

как

 

с

 

Лиспом

так

 

и

 

с

 

Прологом

 — 

этими

 

двумя

 

основополагающи

-

ми

 

языками

 

искусственного

 

интеллекта

без

 

знания

 

которых

 

невоз

-

можен

 

более

 

широкий

 

взгляд

 

на

 

предмет

 

исследовадния

».

Язык

 Prolog (PROgramming for LOGic — 

программирование

 

для

логики

был

 

создан

 

в

 

Европе

 

в

 

начале

 70-

х

 

годов

Теория

 

была

 

раз

-

работана

 

в

 

Эдинбурге

  (

Великобритания

Робертом

 

Ковальским

 

и

Маартеном

 

ван

 

Эмденом

первая

 

реализация

 

осуществлена

 

Аленом

Кольмари

 (Colmerauer, Alain) 

из

 

Марселя

 (

Франция

).

В

 

отличие

 

от

 

всех

 

предыдущих

 

языков

включая

 

Лисп

Пролог

не

 

является

 

алгоритмическим

 

языком

то

 

есть

 

он

 

не

 

описывает

 

как

нужно

 

получить

 

результат

Он

 

является

 

декларативным

 

языком

то

есть

 

показывает

 

что

 

дано

 

и

 

что

 

нужно

 

получить

.

Программа

 

на

 

Прологе

 

состоит

 

из

 

фактов

 

некоторой

  

предмет

-

ной

 

области

 

и

 

правил

Интерпретирующая

 

система

 

сама

 

делает

 

ло

-

гический

 

вывод

то

 

есть

 

применяет

 

правила

 

к

 

фактам

для

 

этого

используется

 

аппарат

 

математической

 

логики

 (

логика

 

предикатов

первого

 

порядка

).

В

 

качестве

 

примера

 

рассмотрим

 

простейшую

 

предметную

 

об

-

ласть

 

родственных

 

отношений

 

между

 

пятью

 

членами

 

семьи

 — 

тре

-

мя

 

мужчинами

 

и

 

двумя

 

женщинами

Эта

 

схема

описывается

 

девятью

 

фактами

:

муж

 (

петя

),

муж

 (

ваня

),

муж

 (

коля

),

жен

 (

таня

),

жен

 (

маша

),

мать

 (

ваня

таня

),

отец

 (

ваня

петя

),

отец

 (

маша

ваня

),

отец

 (

коля

ваня

).

Зададим

 

следующие

 

очевидные

 

правила

 

род

-

ства

используя

 

синтаксис

 

Пролога

Знак

 «:—»

символизирует

 «

есть

 

по

 

определению

», 

запятая

Ж

М

М

Ж

М

Таня

Петя

Ваня

Маша

Коля


background image

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-

х

 

годах

 

будут

 

созданы

 

компьюте

-

ры

имеющие

 

принципиальные

 

отличия

 

от

 

всех

 

предыдущих

:

новая

 

технология

 

производства

 

микросхем

знаменующая

 

переход

от

 

кремния

 

к

 

арсениду

 

галлия

и

 

дающая

 

возможность

 

на

 

порядок

повысить

 

быстродействие

 

основных

 

логических

 

элементов

;

новая

 

архитектура

 (

не

 

фон

 

неймановская

);

новые

 

способы

 

ввода

-

вывода

 

информации

 — 

распознавание

 

и

 

син

-

тез

 

речи

 

и

 

образов

;

отказ

 

от

 

традиционных

 

алгоритмических

 

языков

 

программирова

-

ния

 (

Фортран

Алгол

 

и

 

т

п

.) 

в

 

пользу

 

декларативных

;

ориентация

 

на

 

задачи

 

искусственного

 

интеллекта

 

с

автоматическим

 

поиском

 

решения

 

на

 

основе

 

логического

 

вывода

.


background image

199

В

 

основу

 

программного

 

обеспечения

 

будущих

 

ЭВМ

 

предпола

-

галось

 

положить

 

язык

 

Пролог

а

 

всю

 

архитектуру

 

ориентировать

 

на

реализацию

 

алгоритмов

 

логического

 

вывода

.

К

 

сожалению

этому

 

проекту

 

не

 

суждено

 

было

 

сбыться

Основ

-

ная

 

причина

 — 

не

 

удалось

 

добиться

 

эффективной

 

аппаратной

 

ин

-

терпретации

 

Пролога

Отпущенное

 

время

 

истекло

а

 

нетрадицион

-

ные

 

элементная

 

база

 

и

  

архитектура

 

компьютера

 

до

 

сих

 

пор

 

не

 

выш

-

ла

 

из

 

стадии

 

экспериментов

Задача

 

создания

 

нового

революцион

-

ного

 

поколения

 

компьютеров

 

явно

 

откладывается

 

до

 XXI 

века

.

Logo —

язык

 

для

самых
маленьких

В

 

зключение

 

этого

 

параграфа

 

мы

 

рассмотрим

 

еще

один

 

алгоритмический

 

язык

предназначенный

 

не

для

 «

настоящего

» 

программирования

а

 

для

 

обу

-

чения

 

детей

Речь

 

идет

 

о

 

языке

 Logo, 

изобретен

-

ным

 

выдающимся

 

математиком

 

и

 

педагогом

 

Сей

-

муром

 

Пейпертом

 (Papert, Seymour). 

Пейперт

 

родился

 

и

 

вырос

 

в

Южной

 

Африке

учился

 

в

 

Кембридже

а

 

в

 1958-1963 

годах

 

работал

в

 

Женеве

 

у

 

знаменитого

 

психолога

 

Жана

 

Пиаже

 (Piaget, Jean), 

где

занимался

 

детьми

 

и

 

природой

 

их

 

мышления

.

Перейдя

 

на

 

работу

 

в

 

Массачуссетский

 

технологический

 

инсти

-

тут

он

 

поставил

 

задачу

 

создать

 

такую

 

среду

 

общения

 

человека

 

с

компьютером

которая

 

была

 

бы

 

доступна

 

даже

 

ребенку

Как

 

извест

-

но

дети

 

очень

 

любят

 

рисовать

Оттал

-

киваясь

 

от

 

этого

 

тезиса

 

и

 

взяв

 

за

 

осно

-

ву

 

язык

 Lisp, 

Пейперт

 

в

 1967 

году

 

со

-

здал

 

гениальную

 

в

 

своей

 

простоте

 

си

-

стему

 

программирования

 Logo, 

в

 

кото

-

рой

 

операторы

 

языка

 

управляют

 

дви

-

жениями

 

маленькой

 

черепашки

пол

-

зающей

 

по

 

экрану

 

компьютера

 

и

 

остав

-

ляющей

 

за

 

собой

 

видимый

 

след

.  

Ре

-

бенок

начиная

 

с

 

возраста

 5-6 

лет

ри

-

суя

 

черепашкой

 

с

 

помощью

 

команд

«

вперед

 

на

 

столько

-

то

 

шагов

», «

впра

-

во

 

на

 

столько

-

то

 

градусов

» 

и

 

им

 

по

-

Сеймур

 

Пейперт


background image

200

добных

 

забавные

 

картинки

сам

 

не

 

осознавая

 

того

постигает

 

фун

-

даментальные

 

понятия

 

цикла

подпрограммы

рекурсии

 

и

 

т

д

.

Вот

 

пример

 

простейшей

 

рекурсивной

 

программы

 

на

  

русифи

-

цированном

 Logo, 

рисующей

 

спираль

 

из

 

отдельных

 

дуг

 

окружнос

-

ти

:

это

 

дуга

 :

шаг

 :

число

_

шагов

   

повтори

 :

число

_

шагов

     [

вперед

 :

шаг

 

направо

 10]

конец

это

 

спираль

 :

шаг

   

если

 :

шаг

 < 1 [

стоп

]

   

дуга

 :

шаг

 18

   

спираль

 :

шаг

 / 2

конец

У

 

Сеймура

 

Пейперта

 

нашлось

 

очень

много

 

последователей

 

на

 

всех

 

конти

-

нентах

 

Земли

Эксперименты

прове

-

денные

 

с

 

тысячами

 

детей

 

показали

 

удивительные

 

результаты

Рабо

-

та

 

с

 

компьютером

 

в

 

среде

 Logo 

стимулирует

 

творческие

 

способнос

-

ти

развивает

 

абстрактное

 

мышление

 

Сама

 

среда

 Logo 

постоянно

совершенствуется

Современная

 

реализация

 

системы

 

для

 Wintel 

и

Macintosh 

под

 

названием

 MicroWorlds — 

ЛогоМиры

 

имеет

 

еще

 

бо

-

лее

 

широкие

 

возможности

 

программирования

можно

 

управлять

 

сра

-

зу

 

несколькими

 

черепашками

цветом

звуком

создавать

 

мульти

-

пликации

  

и

 

т

д

Она

 

представляет

 

собой

 

универсальную

 

учебно

-

развивающую

 

среду

то

 

есть

 

открыта

 

для

 

занятий

 

любым

 

школьным

предметом

.

Уроки
истории

Итак

,  

какие

 

общие

 

выводы

 

можно

 

сделать

 

из

 

расска

-

занных

 

историй

 

о

 

развитии

 

конкретных

 

языков

 

програм

-

мирования

?

Первое

Программирование

 

в

 

целом

 

значительно

 

более

 

консерва

-

тивно

чем

 

аппаратная

 

часть

 

компьютера

Фундаментальные

 

идеи

 

рож

-

даются

 

очень

 

редко

 — 

раз

 

в

 10-15 

лет

За

 

прошедшие

 

полвека

 

было

предложено

 

пять

 

основных

 

концепций

 

программирования

:

Спираль

 

из

 

дуг


background image

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. 

Операционные

 

системы

Операционная

 

система

 (

ОС

) — 

важнейшая

 

часть

 

системного

программного

 

обеспечения

ОС

 — 

это

 

совокупность

 

программ

орга

-