Шрифт:
Интервал:
Закладка:
Сегодня все иначе. Однострочный фрагмент кода уже творит что-то любопытное и полезное. Это позволяет широкому кругу людей, которые не в состоянии заставить компьютеры делать что-то для них, таки заставить компьютеры делать что-то для них. Мне хотелось бы увидеть, как дети по всему миру изучают новые возможности программирования, основанного на знаниях, а затем создают код, настолько же сложный, насколько это возможно для профессионалов. Это осуществимо. Мы достигли той точки развития, когда каждый может научиться программированию, основанному на знаниях, и, что более важно, научиться мыслить вычислительно. Фактическая механика программирования предельно упростилась. Трудно воображать и мыслить вычислительно.
Как обучать вычислительному мышлению? Что касается программирования, это интересный вопрос. Возьмем нанотехнологии. Как мы пришли к нанотехнологиям? Ответ: мы изучили крупномасштабные технологии и резко их уменьшили. Как сделать чип процессора максимально миниатюрным? По сути, мы используем ту же архитектуру, что и в стандартных чипах. Это не единственный подход, который можно использовать. Анализируя способности простых программ, можно предположить, что допустимо брать элементарные их части и с помощью правильного компилятора побудить их к решению интересных задач. Мы еще не занимаемся молекулярными вычислениями, потому что текущие технологии таковы, что понадобится десятилетие на разработку методики. Но у нас уже есть элементы для изготовления универсального компьютера. Пусть мы сами не понимаем, как программировать эти элементы, поиск в пространстве возможных программ позволяет накопить нужные «кирпичики», а затем вступает в дело компилятор. Удивительно, что элементы способны на многое, а этап компиляции не так страшен, как многим кажется.
Простой поиск в вычислительной вселенной и попытка отыскать полезные программные «кирпичики» – это перспективный подход. Более традиционный инженерный подход – умозрительное выяснение способов создания универсального компьютера – намного сложнее. Не хочу сказать, что он вовсе не годится; но я не перестаю восхищаться тем, что мы можем добиваться удивительных результатов через поиск компонентов-«кирпичиков» и последующую их компиляцию. А дальше придется вернуться к вопросу о совместимости человеческих целей с данными в системе.
Меня чрезвычайно интересует, как будет выглядеть мир, когда большинство людей научатся писать код. Вспомним ситуацию лет пятьсот назад, когда только писцы и незначительная часть населения умели читать и писать. Сегодня лишь небольшая часть населения способна писать код. Немалая доля кода, ими написанного, предназначена исключительно для компьютеров. Вы ничего не понимаете, когда смотрите на этот код. Но наступит время, когда в результате усилий ученых (в том числе моих), код достигнет таких вершин развития, что окажется минимальным описанием предполагаемых действий. Этот фрагмент кода смогут понять и машины, и люди.
Кодирование есть форма выражения, как и письмо на естественном языке. Лично для меня отдельные простые фрагменты кода поэтичны – они выражают идеи очень четко и ясно. В них есть эстетическая составляющая, как и в письме на естественном языке. Особенность кода состоит в том, что он подлежит исполнению; с письмом обстоит иначе. Когда вы что-то пишете, кто-то должен это прочитать, и сознание читателя должно усвоить мысли, изложенные автором письма.
Как вообще передавались знания в мировой истории? На нулевом уровне развития единственной формой передачи знаний выступает генетика: потомство организма перенимает у него характеристики. Далее знания могут передаваться через такие способы, как физиологическое узнавание. Новорожденные обладают некой нейронной сетью со случайными связями, и, появляясь на свет, младенец, например, начинает распознавать типы объектов и усваивать знания.
Затем мы переходим на уровень, который является особенностью нашего вида: это естественный язык. Способность представлять знания достаточно абстрактно для того, чтобы мы могли, так сказать, коммуницировать мозг к мозгу, есть, возможно, важнейшее изобретение нашего вида. Именно оно во многом обусловило возникновение нашей цивилизации.
Дальше идет следующий уровень, который, вероятно, однажды получит более завлекательное название. Благодаря программированию, основанному на знаниях, у нас появляется точный и символический способ создать актуальные репрезентации реальных объектов мироздания. Эти репрезентации понятны нам и другим людям, а также компьютерам, в которых код незамедлительно исполняется.
Естественный язык подарил нам цивилизацию, а основанное на знаниях программирование подарит – что? Нежелательный ответ сводится к тому, что оно подарит нам цивилизацию ИИ. Этого хотелось бы избежать, ведь ИИ примутся «болтать» друг с другом, а мы останемся не у дел, в отсутствие некоего промежуточного языка, некоего интерфейса между машиной и нашим сознанием. К чему приведет этот четвертый уровень обмена знаниями? Будь вы пещерным человеком Оггом[235] и зародись на ваших глазах естественный язык, сумели бы вы предугадать грядущее торжество цивилизации? А потому – что мы в силах вообразить прямо сейчас?
В каком-то смысле это развитие вопроса о том, на что станет похож мир, когда большинство людей научатся писать код. Очевидно, что многие тривиальные обстоятельства изменятся: контракты будут составляться в коде, меню в ресторанах будут кодироваться, и т. д. Да, простые условия изменятся. Но изменения затронут гораздо более сложные явления. Рост грамотности, например, привел к становлению бюрократии, которая существовала и раньше, но ряды которой резко пополнились благодаря грамотности – и это обеспечило бо́льшую глубину правительственных систем, к лучшему или к худшему. Как мир кодирования соотносится с миром культуры?
Возьмем школьное образование. При вычислительном мышлении как будет происходить изучение истории? Как оно повлияет на усвоение иностранных языков, общественных наук и прочего? Ответ таков: очень сильно. Представьте, что вы пишете сочинение. Сегодня материал для сочинения типичного старшеклассника уже имеется в наличии, он существует, и его просто надо использовать, ведь ученики обычно не торопятся генерировать новые знания. Но в вычислительном мире все будет иначе. Если ученик имеет представление о кодировании, у него будет доступ ко всем оцифрованным историческим данным – и он обязательно отыщет что-то новое. После чего напишет сочинение о том, что узнал. Важность программирования, основанного на знаниях, заключается в том, что оно больше не стерильно, оно обладает знанием о мире, связанное воедино языком, на котором составлен код.
* * *
Вычисления распространены по всей Вселенной: в турбулентной жидкости, производящей некую сложную модель потока, в небесной механике планетарных взаимодействий, в человеческом мозге. Но имеют ли вычисления цель? Этот вопрос можно задать применительно к любой системе. Есть ли цель у погоды? А у климата?
При взгляде на Землю из космоса можно ли сказать, что на планете имеется нечто, обладающее целью? Некая цивилизация? Через Большое Соленое озеро в штате