Выбрать главу

«Бажаним» станом регулятора Ватта є задана швидкість обертів. Очевидно, що це не свідоме його бажання. «Ціль» машини визначається як стан, до якого вона має тенденцію повертатися. В сучасних цілеспрямованих машинах використовується розвиток таких базових принципів, як негативний зворотній зв’язок, щоби досягти значно більш складної поведінки, «схожої на життя». Керовані ракети, наприклад, ведуть активний пошук цілі, а коли захоплять, здається, що переслідують її, враховуючи всі відхилення та повороти, а іноді навіть «випереджаючи» або «передбачаючи» їх. У деталі того, як це робиться, вдаватися не варто. До цього залучається негативний зворотній зв’язок різних типів, прямий зв’язок, а також інші принципи, добре відомі інженерам та, як тепер стало відомо, поширені в роботі живих організмів. Не треба добачати тут чогось схожого на свідомість, навіть якщо нефахівцеві, що спостерігає за вочевидь виваженою і зосередженою поведінкою ракети, й важко повірити, що вона не перебуває під прямим контролем людини-пілота.

Загальною помилкою є вважати, що машина, наприклад, керована ракета, хоч була з самого початку розроблена і створена свідомою людиною, має обов’язково перебувати під безпосереднім контролем такої людини. Інший варіант цієї помилки — стверджувати, що «комп’ютери насправді не грають у шахи, бо можуть робити лише те, що наказує їм оператор». Дуже важливо збагнути, чому такі твердження помилкові, бо вони впливають на наше розуміння сенсу того, що гени «контролюють» поведінку. Комп’ютерні шахи є достатньо хорошим прикладом, щоби вловити суть, тому я принагідно його розгляну.

Комп’ютери поки не грають у шахи з майстерністю гросмейстерів, але вже досягли непоганого любительського рівня. Щоправда, непоганого любительського рівня досягли програми, бо програмі для гри в шахи все одно, на якому саме комп’ютері демонструвати свої можливості. Тоді в чому полягає роль програміста? Перш за все, він аж ніяк не керує комп’ютером хід за ходом, немов смикаючи за мотузки ляльку. Адже це виглядало би шахрайством. Він пише програму, закладає її в комп’ютер, після чого комп’ютер вже діє сам: подальше людське втручання не потрібне, крім того, що суперник вводить свої ходи. Можливо, програміст передбачає всі можливі в шахах комбінації та забезпечує комп’ютер довгим переліком вдалих ходів, по одному на кожну можливу ситуацію? Мабуть, що ні, бо кількість можливих позицій у шахах аж така велика, що повний перелік не був би готовим і до кінця світу. З тієї самої причини комп’ютер неможливо запрограмувати на перебирання «в голові» усіх можливих ходів та їх наслідків, поки він не знайде переможну стратегію. Можливих варіантів шахових партій більше, ніж атомів у галактиці. Тому годі про тривіальні рішення проблеми програмування комп’ютера для гри в шахи. Безперечно, що це надзвичайно складна проблема, а тому досі навіть найкращі програми все ще не можуть досягти майстерності гросмейстерів.

Отож, програміст більше нагадує батька, що навчає свого сина грати в шахи. Він розповідає комп’ютеру про основні ходи цієї гри, і не окремо для кожної можливої стартової позиції, а з огляду на більш лаконічні правила. Він не каже лише щось на кшталт: «слони ходять по діагоналі», а використовує короткий математичний еквівалент, що в перекладі виглядає приблизно так: «Нові координати слона отримуються зі старих додаванням однакової константи, хоча й не обов’язково з тим самим знаком, як до старої координати x, так і до старої координати y». Потім він може запрограмувати якусь «пораду», написану тією самою математичною, або логічною, мовою, що зводиться до підказки, наприклад «не залишай короля без захисту», або корисних прийомів, таких як «виделки» конем. Усі ці деталі напрочуд цікаві, але вони можуть завести нас не туди, куди слід. Сама суть тут проста: безпосередньо під час гри комп’ютер діє самостійно і не може розраховувати на допомогу свого власника. Все, що може зробити програміст, так це заздалегідь налаштувати комп’ютер щонайкраще, з досконалим балансом між переліком спеціальних знань і підказками щодо стратегій та технік.