Перевод поста Стивена Вольфрама (Stephen Wolfram) "The Practical Business of Ontology: A Tale from the Front Lines".
Философия химических веществ
«Мы только должны решить: химикат — ближе к городу или к числу?» Я провел вчера свой день — как и большинство дней последних 30 лет — разрабатывая новые функции языка Wolfram. И вчера днем на одном из моих собраний была динамичная дискуссия о том, как расширить возможности языка в химии.
На каком-то уровне проблема, которую мы обсуждали, была по своей сути практической. Но как это часто случается, то, что мы делаем, в конечном итоге это связано с некоторыми глубокими интеллектуальными проблемами. И чтобы на самом деле получить правильный ответ — и успешно разработать функции языка, которые выдержат испытание временем — нам нужно было отбросить эти глубины и говорить о вещах, которые обычно не рассматриваются за пределами какого-либо семинара по философии.
Конечно, часть проблемы состоит в том, что мы имеем дело с вопросами, которые на самом деле никогда не возникали раньше. Традиционные компьютерные языки не пытаются напрямую говорить о таких вещах, как химикаты; они просто занимаются абстрактными данными. Но в языке Wolfram мы стараемся встроить знания обо всем, что возможно; а это значит, что нам приходится иметь дело с реальными вещами, такими как химические вещества.
Мы построили целую систему на языке Wolfram для обработки того, что мы называем объектами . Объект может быть городом (например, Нью-Йорк), или фильмом, или планетой, или зиллионом других вещей. У объекта есть какое-то имя («Нью-Йорк»). И он имеет определенные свойства (например, население, площадь, дата основания, ...).
У нас давно существует понятие о химических веществах, таких как вода, этанол или карбид вольфрама. Каждый из этих химических объектов обладает свойствами, такими как молекулярная масса или структурный график, или точка кипения.
И у нас есть много сотен тысяч химических веществ, о которых мы знаем множество свойств. Но все это в каком-то смысле конкретные химикаты: конкретные соединения, которые мы могли бы поместить в пробирку и проводить опыты.
Но что мы пытались выяснить вчера, это то, как обращаться с абстрактными химическими веществами — химикатами, которые мы строим абстрактно, скажем, путем абстрактного графика, представляющего их химические структуры. Должны ли они быть представлены объектами, такими как вода или Нью-Йорк? Или их следует считать более абстрактными, например, списками чисел или, если на то пошло, математическими графами?
Ну, конечно, среди абстрактных химических веществ, которые мы можем построить, есть химические вещества, которые мы уже представляем объектами, такими как сахароза или аспирин. Но здесь есть важное отличие. Мы говорим об отдельных молекулах сахарозы или аспирина? Или как о продукте в массе?
На каком-то уровне это путаное различие. Потому что мы можем думать, что зная молекулярную структуру, мы знаем все — это просто вопрос расчета. И некоторые свойства — такие как молярная масса — в основном тривиальны для расчета по молекулярной структуре. Но другие – например, температура плавления — очень далеки от тривиальных.
Хорошо, но является ли это временной проблемой, на которой нельзя основывать долгосрочный дизайн языка? Или это нечто более фундаментальное, что никогда не изменится? Удобно то, что я достаточно занимаюсь фундаментальной наукой чтобы знать ответ: да, это нечто фундаментальное. Это связано с тем, что я называю вычислительной неприводимостью. К примеру, точное значение температуры плавления для бесконечного количества некоторого материала может фактически быть фундаментально невычислимым. (Это связано с неразрешимостью задачи замощения; установка плитки похожа на то, как молекулы составляют твердое тело).
Поэтому, зная эту часть (весьма передовую) фундаментальной науки, мы знаем, что мы можем осмысленно проводить различие между массовыми версиями химических веществ и отдельных молекул. Ясно, что существует тесная связь между, скажем, молекулами воды и объемной водой. Но в них все еще есть что-то принципиально и неприводимо другое, также, как и в их свойствах.
По крайней мере, атомы должны быть в порядке
Хорошо, давайте поговорим об отдельных молекулах. Разумеется, они сделаны из атомов. И, по крайней мере, когда мы говорим об атомах, мы находимся на довольно прочной основе. Было бы логично сказать, что любая конкретная молекула всегда имеет в себе определенный комплект атомов — хотя, возможно, мы захотим рассмотреть «параметризованные молекулы», когда будем говорить о полимерах и т. п.
Но, по крайней мере, кажется безопасным рассматривать типы атомов как объекты. Как-никак, каждый тип атома соответствует химическому элементу, и на периодической таблице их имеется только ограниченное число. Конечно, в принципе можно придумать себе дополнительные «химические элементы»; и даже думать о нейтронной звезде как о гигантском атомном ядре. Но опять же, есть отличительная особенность: почти наверняка существует только ограниченное число фундаментально стабильных типов атомов, а большинство других имеют ужасно короткое время жизни.
Однако стоит сразу отметить. «Химический элемент — не на столько определен, как можно себе представить. Потому что это всегда смесь разных изотопов. И, скажем, от одной вольфрамовой шахты к другой, эта смесь может измениться, давая другую эффективную атомную массу.
И на самом деле это хорошая причина для отображения типов атомов объектами. Потому что тогда нужно просто иметь единственный объект представляющий вольфрам, который можно использовать при разговоре о молекулах. И только если кто-то хочет получить свойства этого типа атома, которые зависят от условий, например, от шахты, придется иметь дело с такими вещами.
В некоторых случаях (например, тяжелая вода) нужно будет прямо говорить об изотопах в том, что является по существу химическим контекстом. Но в большинстве случаев достаточно того, чтобы указать химический элемент.
Чтобы указать химический элемент, вам просто нужно указать его атомный номер Z. А затем учебники подскажут вам, что для указания конкретного изотопа вам просто нужно указать сколько нейтронов он содержит. Но это игнорирует неожиданный случай тантала. Потому что одна из естественных форм тантала (180mTa) на самом деле представляет собой возбужденное состояние ядра тантала, которое является очень стабильным. И чтобы правильно это определить, вы должны указать его уровень возбуждения, а также количество нейтронов.
В некотором смысле, квантовая механика нас здесь спасает. Поскольку в то время как существует бесконечное число возможных возбужденных состояний ядра, квантовая механика говорит, что все они могут быть охарактеризованы только двумя дискретными значениями: спином и четностью.
Каждый изотоп и каждое возбужденное состояние отличается и имеет свои особые свойства. Но мир возможных изотопов гораздо более упорядочен, чем, скажем, мир возможных животных. Потому что квантовая механика говорит, что все в мире изотопов можно охарактеризовать просто ограниченным набором дискретных квантовых чисел.
Мы перешли от молекул к атомам к ядрам, так почему бы не говорить и об элементарных частицах? Что ж, это усложняет ситуацию. Да, есть известные частицы, такие как электроны и протоны — о которых довольно легко говорить — и они легко представлены объектами на языке Wolfram. Но есть и множество других частиц. Некоторые из них — такие, как ядра — довольно легко охарактеризовать. Вы можете сказать такие вещи, как: «Это особое возбужденное состояние системы c-кварк-анти-c-кварк» или что-то в этом роде. Но в физике частиц речь идет о квантовой теории поля, а не только о квантовой механике. И нельзя просто «подсчитать элементарные частицы»; также нужно иметь дело с возможностью виртуальных частиц и т. д. И в конечном итоге вопрос о том, какие частицы могут существовать — очень сложный, полный вычислительной неприводимостью. (Например, какие стабильные состояния могут быть в глюонном поле, это гораздо более сложный вопрос, похожий на задачу замощения, о которой я упоминал в связи с точками плавления.)
Возможно, однажды мы получим полную теорию фундаментальной физики. И может быть, это будет просто. Но как бы это не было захватывающим, нам это здесь не поможет. Потому что вычислительная неприводимость означает то, что имеется не поддающаяся упрощению дистанция между тем, что скрыто внутри и тем, какие феномены возникают от этого.
И в создании языка для описания мира нам нужно говорить в терминах вещей, которые действительно можно наблюдать и вычислять. Мы должны обратить внимание на основы физики — и не в последнюю очередь, для избегания тех позиций, которые могут в итоге ввести нас в замешательство. Нам также нужно обратить внимание на фактическую историю науки и фактические вещи, которые были измерены. Да, есть, например, бесконечное количество возможных изотопов. Но для множества целей очень полезно просто настроить объекты для тех, которые известны.
Пространство возможных химических веществ
Но так же ли обстоят дела в химии? В ядерной физике мы думаем, что знаем все достаточно стабильные существующие изотопы, поэтому любые дополнительные и экзотические из них будут очень кратковременными и, следовательно, возможно и не важными в практических ядерных процессах. Но в химии совсем другая история. Есть десятки миллионов химических веществ, которые люди изучают (и, например, помещали в научные публикации или патенты). И действительно, нет ограничений на количество молекул, которые можно было бы рассмотреть — и это может быть довольно полезным.
Но, хорошо, так как мы можем ссылаться на все эти потенциальные молекулы? Возможно, с первой аппроксимации мы можем указать их химические структуры, указав графики, в которых каждый узел является атомом, и каждое ребро является связью.
Что на самом деле означает «связь»? Хотя это невероятно полезно в практической химии, это на каком-то уровне неопределенное понятие — своего рода квазиклассическая аппроксимация полной квантовой механики. Существуют некоторые стандартные дополнительные аспекты: двойные связи, ионизационное состояние и т. д. Но на практике химический анализ очень успешно выполняется просто за счет характеризации молекулярных структур соответствующими метками графиков атомов и связей.
Хорошо, но должны ли химикаты быть представлены объектами или абстрактными графами? Если это химикат, о котором уже слышали, к примеру об углекислом газе, объект кажется удобным. Но что, если это новое химическое вещество, о котором никогда не говорили раньше? Можно подумать о том, чтобы изобрести новый объект для его представления.
Однако, любой уважающий себя объект будет иметь свое собственное имя. Какое было бы это имя? На языке Wolfram это может быть только граф, который представляет структуру. Но, возможно, хотелось бы чего-то похожего на обычное текстовое имя — на строку. У нас всегда есть способ IUPAC для названий химических веществ с именами, например 1,1′-{[3-(dimethylamino)propyl]imino}bis-2-propanol. Также есть более удобная для компьютера версия SMILES: CC(CN(CCCN©C)CC©O)O. И какой бы ни был граф, он всегда может генерировать одну из этих строк для ее представления.
Однако возникает новая проблема: строка не уникальна. Собственно, как бы кто-либо выбрал написать граф, он не может быть всегда уникальным. Конкретная химическая структура соответствует определенному графику. Но может быть много способов рисовать граф и множество разных представлений его. И на самом деле, даже проблема («изоморфизм графа») с определением того, соответствуют ли два изображения одному и тому же графу — трудно решаема.
Что такое химикат в конце?
Итак, давайте представим себе, что мы представляем химическую структуру графом. Сначала это абстрактная вещь. В графике есть атомы как узлы, но мы не знаем, как они будут расположены в реальной молекуле (и, например, на сколько ангстремов они будут отделены). Конечно, ответ не полностью определен. Говорим ли мы о низкоэнергетической конфигурации молекулы? (Что, если есть несколько конфигураций одной и той же энергии?) Предполагается ли то, что молекула должна быть сама по себе или в воде или в чем-то еще? Как должна была образоваться молекула? (Может быть, это белок, который сложен особым образом, когда он сошел с рибосомы.)
Что же, если бы у нас был объект, представляющий, скажем, «естественный гемоглобин», возможно, нам было бы лучше. Потому что в определенном смысле этот объект мог бы инкапсулировать все эти детали.
Но если мы хотим поговорить о химических веществах, которые никогда не были синтезированы, это немного другая история. И мне кажется, что нам было бы лучше с абстрактным представлением любого возможного химического вещества.
Но давайте поговорим о некоторых других случаях и аналогиях. Может быть, мы должны просто рассматривать все как объект. Как и любое целое число может быть объектом. Да, их бесконечное число. Но по крайней мере ясно, какие имена им следует давать. С действительными числами вещи уже в беспорядке. Например, уже нет такой уникальности, как с целыми числами: 0.99999… на самом деле то же самое, что и 1.00000 ..., но написано по-разному.
Как насчет последовательности целых чисел или, если на то пошло, математических формул? Все возможные последовательности или все возможные формулы, возможно, могут быть различными объектами. Но это не было бы особенно полезно, потому что многое из того, что хотелось бы сделать с последовательностями или формулами, — это войти в них и трансформировать их структуру. Но, что удобно для работы с объектами, это то, что каждый из них — это «единая сущность», в которую не нужно «заходить внутрь».
Так в чем же история с «абстрактными химическими веществами»? Это будет смешанность. Но, конечно, вы захотите «войти внутрь» и трансформировать данную структуру. Что говорит в пользу представления химического вещества графом.
Но тогда есть потенциально неприятный разрыв. У нас есть объект углекислого газа, о котором мы уже знаем много свойств. И потом у нас есть этот граф, который абстрактно представляет молекулу углекислого газа.
Мы можем опасаться, что это будет путать как людей, так и программы. Но первое, что нужно понять, это то, что мы можем отличить что представляют эти две вещи. Объект представляет собой натуральную версию химического вещества, свойства которого потенциально могут быть измерены. Граф представляет собой абстрактный теоретический химикат, свойства которого должны быть вычислены.
Но, очевидно, там должна быть связь. Для конкретного химического объекта одним из свойств будет граф, представляющий структуру молекулы. И, имея граф, нужна какая-то функция ChemicalIdentify, которая, подобно GeoIdentify или, возможно, ImageIdentify, попытается идентифицировать по графу, какой химический объект (если таковой имеется) имеет молекулярную структуру, соответствующую этому графу.
Философия встречает химию встречает математику встречает физику...
Во время описания некоторых из проблем, я понимаю, насколько сложно все это может показаться. И, да, это сложно. Но вчера на нашей встрече все прошло очень быстро. Конечно, помогает то, что все сталкивались с подобными проблемами раньше: это именно то, что лежит в основе того, чем мы занимаемся. Но каждый случай отличается.
И, каким-то образом, этот случай стал немного более глубоким и философским, чем обычно. «Давайте поговорим о наименовании звезд», — сказал кто-то. Очевидно, что есть близкие звезды, для которых у нас есть явные имена. И некоторые другие звезды, возможно, были идентифицированы в крупномасштабных исследованиях неба и даны определенные идентификаторы. Но в дальних галактиках много звезд, которые никогда не будут названы. Итак, как мы должны их представлять?
Это привело к разговорам о городах. Да, есть определенные города хартии, которым официально присвоены имена, — и мы, вероятно, имеем практически все эти имена на языке Wolfram, регулярно обновляемые. Но как насчет какой-то деревни, созданной для одного сезона некоторыми кочевыми людьми? Как мы должны это представлять? У нее есть определенное место, по крайней мере на некоторое время. Но разве это определенная вещь, или, может быть, она позже поделится на две деревни или вообще не в деревню?
Можно почти бесконечно спорить об идентификации — и даже о существовании — многих из этих вещей. Но в конечном итоге это не философия этих вещей, которые нам интересны: мы пытаемся создать программное обеспечение, которое люди найдут полезным. И поэтому в итоге важно то, что будет полезно.
Это, конечно, в большинстве случаев, невозможно знать точно. Но это похоже на языковой дизайн в целом: подумайте обо всем, что люди захотят сделать, а затем посмотрите, как настроить примитивы, которые позволят людям делать это. Хотел бы кто-нибудь представить химические вещества как объекты? Да, это было-бы полезным. Хотел бы кто-нибудь представить произвольные химические структуры графами? Да, это было-бы полезным.
Но чтобы понять, что делать, нужно иметь глубокое понятие о том, что на самом деле представлено в каждом случае, и как все связано. И здесь философия должна идти на встречу химии, математике, физике и т. д.
Я рад сказать, что к концу нашего вчерашнего часового заседания (пополненного моим 40-летним опытом и 100-летним опытом всех присутствующих на собрании), мне кажется, мы выяснили основу действительно хорошего способа обращения с химическими веществами и химическими структурами. Должно пройти еще какое-то время, прежде чем он будет полностью разработан и реализован на языке Wolfram. Но идеи помогут понять, как мы вычисляем и рассуждаем о химии на многие годы вперед. И для меня, выяснение таких вещей — это чрезвычайно приятное времяпровождение. И я просто рад, что в моих длительных усилиях по развитию языка Wolfram я делаю многое.
Автор: Wolfram Research