Активные данные. Философское программирование - страница 3

Шрифт
Интервал



«GCA AGA GAT TGT» – фрагмент ДНК, записанный при помощи кодонов алфавита из четырёх оснований (A,C,G,T). Объяснить его до конца на сегодняшний день не сможет никто. Наши знания заканчиваются пониманием соответствий и микро действий, которые выполнит рибосома, интерпретируя молекулярные буквы. У нас есть некоторые статистические данные, мы знаем алфавит, знаем как происходит интерпретация, но не понимаем самого главного – смысла и логики программы, написанной неизвестным автором.



«CCHHHHHOH» – хорошо известное описание молекулы этанола, принадлежащей к огромному множеству молекул, которые построены из алфавита, состоящего из 118 атомов. Химические формулы молекул похожи на лингвистические конструкции – слова. Но в отличие от символов в алфавитах естественных или формальных языков, атомы активны, и связи (конкатенации) между ними многомерны!


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


В этой книге речь пойдет о программировании активных данных. «Чего только не программируют в наше время» – заметит тут ворчливый программист и будет абсолютно прав. Запрограммировать можно практически всё, и перефразируя известное высказывание Архимеда, настоящий программист может сказать: «Дайте мне объект, и я его имплементирую.» Правда, в отличие от Архимеда, которому не нужно было объяснять, что такое «точка опоры», программист должен быть готов определить грамматику, семантику и прагматику этой фразы, специфицировать протокол «дайте», перечислить свойства «мне» и «объект», уточнить чем является «