В каждой естественной науке заключено столько истины, сколько в ней математики.
(И. Кант)
Всё, что нельзя выразить в цифрах — это не наука, это — мнение.
(Роберт Хайнлайн)
Этот пост о разделении гуманитарных и технических наук. О том, что не все есть в науке — это математика. О том, как связаны гуманитарии и технари. О том, что для программирования нужны далеко не только технические навыки.
Необходимое условие точных наук
Оно же — необходимое условие для технических наук, для математики и для работы технического мышления.
Все технические науки (а некоторые говорят, что это якобы вся наука) опираются на теорию первого порядка. То есть, все, что работает с точными символами, формулами и значками, может быть описано логикой первого порядка. Здесь о теории первого порядка можно не задумываться, а основной смысл в том, что все технические науки имеют одно логическое (математическое) основание. Отличаются теории только набором аксиом. Ну и набором инструментов, чтобы часто встречаемые логические конструкции записывать покороче.
Ключевое здесь то, что любая техническая теория работает только тогда, когда имеется набор железобетонных утверждений. То есть, аксиом, которые выполняются всегда. Например, только если свет распространяется по прямой, то только тогда мы получим геометрию Евклида. Только если числа 1,2,3,4,… упорядочены друг за другом — получим арифметику. Аксиомой может быть постулат или закон (непреодолимость скорости света, закон Ома, …), т.е. что-то, обладающее свойством железобетонности.
Если таких аксиом нет, то нет никакой технической науки. Нет ни математики, ни матмоделей, ни формул, ни цифр, … Но, тем не менее, есть науки, которые не содержат в себе аксиом. Например лингвистика (смысл слова в которой у каждого человека может отличаться от другого и меняться с течением времени; все, что касается правил — работает с исключениями, поправками, натяжками и «авторским стилем»). Кроме того, есть науки, в которых часть изучаемой области аксиоматике не поддается. Например в биологии молекула ДНК это не постоянный носитель информации, а такой носитель, который может в любой момент изменится, быть исправленным другим носителем, стать активным устройством и др..
Постоянный процесс формализации в технических науках
Изначально если брать какую либо предметную область, на сейчас покрытую технической наукой, то в ней не было аксиом. Была предметная область, в которой было все непонятно. Звезды непонятно двигались по небу, тела непонятно как взаимодействовали в природе, свет и тепло непонятно как распространялись и пр.. С течением времени начали замечать, что есть что-то, что повторяется. Есть какие-то свойства, которые закономерны. То есть, в непонятной области выполнялась процедура классификации: выбирались некоторые классы явлений, для которых описывались закономерные свойства. Свет распространялся по прямой, тепло передавалось от горячего к холодному, тела чаще падали на землю, нежели оставались в воздухе и т.д..
Таким образом, в предметной области выделялись аксиомы, на основании которых можно было делать выводы о будущем. С течением времени количество аксиом росло, плюс для каждой из них появлялись граничные условия (когда они выполнялись). Непонятная область становилась все более понятной, и этот процесс (формализации) идет до сих пор. Задачей же технических наук является поиск наиболее эффективных в применении аксиом и установки их границ применения.
Таким образом, во-первых, в технических науках постоянно идет процесс формализации. Когда непонятное становится более понятным, количество моделей множится, а наши возможности их использовать увеличиваются. Сам период развития предметной области можно разделить на доаксиоматический и аксиоматический. Во-вторых, техническая наука работает только тогда, когда есть аксиомы. Поэтому техническое мышление начинает сильнее работать только по мере появления новых железобетонных знаний о мире. В-третьих, аксиомы могут быть сгруппированы и сформулированы различным образом. То есть, один и тот же процесс закономерностей можно описать различным набором аксиом (например выбрать 4 направления север-юг-запад-восток, или 4 аналогичных СВ-СЗ-ЮЗ-ЮВ).
Отсутствие аксиом
Что же делать, если аксиом нет? Неужели тут наук нет?
Этим делом как раз таки занимаются гуманитарные науки (в данном контексте).
Такое может произойти в случае, если предметная область малоизучена. Или например она настолько быстро меняется, что нельзя успеть установить аксиомы.
Например языки (любые, как средства общения) постоянно эволюционируют. В силу этого меняется написание слов, их значение, их применение и пр.. Введение неких стандартов (правила языка) частично решает проблему. Но так как в язык постоянно вводятся новые понятия, слова нагружаются новыми смыслами, некоторые слова выходят из употребления, то в силу динамичности сами же стандарты языков вынуждены изменятся.
Даже если выбрать какой-то более оптимальный вариант (возможно привлекая некие технические инструменты), то далеко не всякая система поддастся изменению. Например когда-то пытались все привести к десятичной системе (например время), но это сделать не удалось (так и пользуемся 24 часа, 60 минут и секунд). Мер счисления несмотря на СИ до сих пор много в мире. Таким образом, если уже что-то возникло, и люди к этому привыкли, то изменить это очень сложно. Фактически получается, что больше предыдущий опыт управляет нами, нежели мы оптимизируем его, используя стандарты.
Гуманитарные задачи
Гуманитарными задачами являются: быстрое определение закономерностей; классификация неизвестной предметной области; сопровождение созданных больших систем; создание таких методик и систем, которые способны изменятся под новые факты. Здесь нет аксиом. Здесь все в любое время может изменится. Может появится что-то новое, а что-то уйти в небытие. Система обязана быть полной (описать нужно все, если что потребуется; а если не получается, то ввести новое понятие), но не обязана быть непротиворечивой (одна и та же фраза может быть понята по-разному, но если надо, то можно уточнить; в математике не может быть противоречивых утверждений, иначе она перестает работать на них).
Если мы организуем работу нашего рабочего места — то это гуманитарная проблема. Тут нет по большому счету аксиом. Стул может сломаться. В любое время может появится новая вещь, которую нужно куда-то положить. Вещи нужно быстро находить при необходимости. Постоянно формировать новые привычки и забывать те, которые вышли из употребления.
Инженерная деятельность
Существует мнение, что для инженерной деятельности (и программирования в том числе) важны технические навыки и мышление. Есть другое мнение, которое говорит о том, что гуманитарная подготовка более важна. Как всегда — истина где-то рядом.
Если разработчик чувствует, что если сделать так, то будет плохо — это работа интуиции (гуманитарное мышление). Если делает выводы на основе железобетонных утверждений — то это логика (техническое мышление).
Придумывание идентификаторов — гуманитарная задача (введение новых понятий для работы в будущем). Создание множества структур и объектов для решения задачи — гуманитарная задача (формализация предметной области). Общение с заказчиком с целью выяснить особенности предметной области — гуманитарная задача.
Но. Как только мы определяем утвержденные истины (данные там-то не пропадут; питание не пропадет в течение 10 минут после сигнала тревоги; если записано x=1, то после операции x будет равен 1; на диске есть свободное место в несколько килобайт всегда, …), и начинаем делать выводы от них, то мы решаем задачу технически (математически). У нас есть аксиомы, на основании которых можно делать выводы и писать надежные программы. Или создавать на их основе аппаратные или механические комплексы.
Создание языка (в т.ч. для программирования) — также по большей части гуманитарная задача. Нам нужно вводить новые термины, прибивать старые ненужные структуры, поддерживать нововведения, общаться с пользователями и пр..