Многие страницы этой книги могут служитьхорошей иллюстрацией того различия, котороесуществует между этими двумя стилямипрограммистского мышления. Например, в первойглаве это различие иллюстрируется на задачах,относящихся к семейным отношениям. Прологовскийпрограммист дает простое и естественноеописание понятия "дедушка": дедушка -этоотец родителя. На Прологе это выглядит так:

        дедушка( X, Z) :- отец(X, Y), родитель( Y, Z).

Как только пролог-система узнала, что такоедедушка, ей можно задать вопрос, например: ктоявляется дедушкой Патрика? В обозначенияхПролога этот вопрос и типичный ответ имеют вид:

        ?-  дедушка( X,патрик).

        X  =  джеймс;

        X  =  карл.

Каким образом решать эту задачу, как"прочесывать" базу данных, в которойзаписаны все известные отношения "отец" и"родитель", - это уже забота самойпролог-системы. Программист только сообщаетсистеме то, что ему известно, и задает вопросы.Его в большей степени интересуют знания и вменьшей - алгоритмы, при помощи которых из этихзнаний извлекается нужная информация.

Поняв, что очень важно научиться Прологу,естественно задать себе следующий вопрос - какэто сделать. Я убежден, что изучение языкапрограммирования во многом сходно с изучениеместественного языка. Так, например, в первомслучае может пригодиться инструкция попрограммированию точно так же, как во втором -словарь. Но никто не изучает язык при помощисловаря, так как слова - это только часть знаний,необходимых для овладения языком. Изучающий языкдолжен кроме того узнать те соглашения, следуякоторым, можно получать осмысленные сочетанияслов, а затем научиться у мастеров словаискусству литературного стиля.

Точно так же, никто не изучает языкпрограммирования, пользуясь только инструкциейпо программированию, так как в инструкциях оченьмало или вообще ничего не говорится о том, какхорошие программисты используют элементарныеконструкции языка. Поэтому необходим учебник,причем лучшие учебники обычно предлагаютчитателю богатый набор примеров. Ведь в хорошихпримерах сконцентрирован опыт лучшихпрограммистов, а именно на опыте мы, в основном, иучимся.



11 из 538