July 27th, 2004

1998

К вопросу о разнице между программистами и философами

Т.е. мой ответ на вопрос, почему же философы не берут пример с программистов.

На мой скромный взгляд, корень различия вот в чем. Для программистов объектом описания является конечная детерминированная система (конечный автомат) и потому можно использовать формальный язык описания.
А к обществу это никак не применимо (оно не является конечным автоматом и не моделируется им даже приблизительно), поэтому теории общества не могут быть написаны на сколь-нибудь формальном языке.

Кстати, по мере роста сложности систем, создаваемых программистами, контекст действия процедуры (а это не просто набор явно переданных параметров, но и некие условия на состояние системы) становится все более сложным и менее формализуемым, и для его описания уже используется не формальный, а содержательный язык.

Вот реальный пример:
1. ЦБ выпускает инструкцию (например, по изменению расчета нормативов). Инструкция написана русскими буквами на ЦБ-шном языке.
2. Бухгалтеры в банке переводят инструкцию ЦБ на бухгалтерский язык и формулируют требования к доработке системы (требования написаны русскими буквами на бухгалтерском языке).
3. Аналитик фирмы-производителя системы анализирует требования банка, переводит их на язык свойств и действий системы и пишет ТЗ на доработку (используется язык описания объектов, процессов и свойств системы).
4. Программист переводит ТЗ аналитика на язык вызовов процедур и функций и пишет программу (используется язык реализации системы).
5. Компилятор компилирует программу и переводит ее в набор инструкций компьютера.

Строго формальным тут является только перевод (4) -> (5). Все остальные переводы выполняются на содержательном уровне и часто содержат ошибки интерпретации или потерю смысла за счет "недопонимания контекста".