Про безглуздість «програмування природною мовою»
Ще від перших днів автоматичних обчислень знаходилися люди, які вважали недоліком те, що програмування вимагає тієї уважності й точності, які характерні для використання будь-якої формальної символіки. Вони дорікали механічному рабу за його сувору слухняність, із якою він виконував отримані інструкції, навіть якщо варто було лише на мить замислитися, щоб побачити очевидну помилку в цих інструкціях. «Але мить — це довгий час, а думати — болісний процес» (А. Е. Гаусман). Вони палко сподівалися й чекали на появу більш розумної техніки, яка відмовлялася б братися за такі безглузді дії, як ті, що їх у той час міг спричинити звичайнісінький канцелярський недогляд.
Машинний код, через майже повну відсутність надлишковості, невдовзі було визнано невиправдано ризикованим інтерфейсом між людиною та машиною. Частково у відповідь на це усвідомлення було розроблено так звані «мови програмування високого рівня», і з плином часу ми певною мірою навчилися посилювати захист від дурних помилок. Суттєвим удосконаленням стало те, що тепер багато дурних помилок призводили до повідомлення про помилку, а не до неправильної відповіді. (І навіть це вдосконалення не всі оцінили: деяких людей повідомлення про помилки, які вони не могли проігнорувати, дратували більше, ніж неправильні результати; а коли оцінюють відносні переваги мов програмування, дехто й досі, здається, ототожнює «легкість програмування» з легкістю робити помилки, які залишаються непоміченими.) Однак (абстрактна) машина, що відповідає мові програмування, залишалася вірним рабом, тобто безглуздим автоматом, цілком здатним виконувати безглузді інструкції. Програмування залишалося використанням формальної символіки й, отже, вимагало тієї самої уважності та точності як і раніше.
Щоб зробити машини істотно простішими у використанні, було запропоновано спробувати створити машини, яким ми могли б давати інструкції нашими рідними мовами. Це, безперечно, зробило б машини значно складнішими, але, як стверджувалося, якщо дозволити машині взяти на себе більшу частину тягаря, наше життя стане простішим. Це звучить розумно, якщо ви вважаєте саме необхідність використовувати формальну символіку джерелом своїх труднощів. Але чи правильний цей аргумент? Я сумніваюся.
Тим часом ми зрозуміли, що вибір інтерфейсу — це не просто розподіл (фіксованого обсягу) праці, оскільки до нього треба додати роботу, необхідну для взаємодії та комунікації через цей інтерфейс. Ми також знаємо — і, мушу додати, знаємо із отверезлюючого досвіду, — що зміна інтерфейсу легко може збільшити обсяг роботи по обидва боки бар’єра (і навіть істотно збільшити). Саме тому дедалі більше переваги надають тому, що тепер називають «вузькими інтерфейсами». Отже, хоча перехід до спілкування між машиною та людиною її рідною мовою значно збільшив би тягар, покладений на машину, ми повинні поставити під сумнів припущення, що це спростило б життя людини.
Короткий погляд на історію математики показує, наскільки виправданим є цей виклик. Грецька математика зайшла в глухий кут, оскільки залишалася словесною, образною діяльністю; мусульманська «алгебра», після боязкої спроби запровадити символіку, занепала, коли повернулася до риторичного стилю; а сучасний цивілізований світ зміг виникнути — на краще це було чи на гірше — лише тоді, коли Західна Європа змогла звільнитися від пут середньовічної схоластики — марної спроби досягти словесної точності! — завдяки ретельно, або принаймні свідомо, розробленим формальним системам символів, якими ми завдячуємо таким людям, як Вієт, Декарт, Лейбніц і (пізніше) Буль.
Цінність формальних текстів полягає в тому, що їхні перетворення, аби бути правомірними, мають задовольняти лише кільком простим правилам; якщо замислитися, це напрочуд ефективний інструмент для відсікання всіляких безглуздостей, яких майже неможливо уникнути, коли ми користуємося рідними мовами.
Замість того щоб сприймати обов’язок користуватися формальними символами як тягар, ми повинні вважати зручність їх використання привілеєм: завдяки їм школярі можуть навчитися робити те, чого в давніші часи могли досягти лише генії. (Очевидно, цього не зрозумів автор, який у 1977 році написав у передмові до технічного звіту, що «навіть стандартних символів, які використовуються для логічних зв’язок, було уникнуто заради ясності». Сам факт появи такого речення свідчить, що нерозуміння автора не обмежується лише ним самим.) Зрештою, якщо зважити все сказане, «природність», із якою ми користуємося рідними мовами, зводиться до легкості, з якою ми можемо використовувати їх для формулювання тверджень, безглуздість яких не є очевидною.
Може бути повчально спробувати уявити, що сталося б, якби від самого початку наша рідна мова була єдиним засобом введення даних у наше обладнання для обробки інформації та отримання з нього результатів. Моя обґрунтована здогадка полягає в тому, що історія певною мірою повторилася б і що інформатика складалася б переважно з тієї справді чорної магії, яка дозволила б здійснити початковий запуск — bootstrapping — від такого стану до достатньо чітко визначеної формальної системи. Нам знадобився б увесь інтелект світу, щоб зробити інтерфейс достатньо вузьким і придатним до використання, а з огляду на історію людства, можливо, не буде надмірним песимізмом припустити, що для виконання цієї роботи належним чином нам знову знадобилося б кілька тисяч років.
Примітка. Унаслідок освітньої тенденції до відмови від інтелектуальної дисципліни останні десятиліття продемонстрували в західному світі різке падіння рівня володіння людьми власною мовою: багато людей, які за мірками попереднього покоління вже мали б знати краще, більше не здатні ефективно користуватися своєю рідною мовою навіть для цілей, для яких вона цілком придатна. (Вам достатньо поглянути на справді тривожну кількість словесного багатослів’я в наукових статтях, технічних звітах, урядових публікаціях тощо, яке при уважному прочитанні виявляється позбавленим сенсу.) Це явище — відоме як «Нова неграмотність» — має відбити охоту до програмування природною мовою в тих його прихильників, яким бракує технічного розуміння, необхідного для передбачення його провалу. (Кінець примітки.)
З одного інтуїтивного відчуття я черпаю чималу втіху: я підозрюю, що машини, які можна було б програмувати нашими рідними мовами — чи то нідерландською, англійською, американською, французькою, німецькою чи суахілі, — так само важко створити, як і користуватися ними.
Plataanstraat 5
5671 AL NUENEN
Нідерланди
проф. д-р Едсгер В. Дейкстра
науковий співробітник Burroughs Research
Розшифровано Tristram Brelstaff
Переглянуто: п’ятниця, 19 листопада 2010 року
Оригніал: https://www.cs.utexas.edu/~EWD/transcriptions/EWD06xx/EWD667.html