Форт и методология науки
К сожалению, современный курс философии, читаемый студентам, часто является выхолощенным и сводится к запоминанию фактов без попыток их осмысленного анализа и применения к реальной инженерной практике. Несмотря на это, гносеология («философия познания») как таковая имеет прямой выход на практические методы работы. Особенно важно это для редких направлений работ, к которым относится и Форт, поскольку в этом случае кроме собственно программирования приходится заниматься и планированием работ, формулируя задачи самим себе.
В XIX веке Эрнст Геккель сформулировал интересное наблюдение. Выяснилось, что зародыш человека повторяет в своем развитии представителей других биологических видов. На ранней стадии у него есть зачатки жабр, затем он похож на земноводных, а затем на птиц. В биологии было высказано предположение, что онтогенез повторяет филогенез (т.е. развитие организма повторяет эволюцию видов как таковую). По аналогии с этим можно заметить, что отдельный исследователь в процессе эволюции своего мышления в чем-то повторяет эволюцию философской мысли. Почему бы не обратиться к истории, тем более что процессы, проходящие в философии на протяжении веков и даже тысячелетий, уже хорошо изучены.
1. Итак, одним из первых выраженных направлений был стихийный материализм. Если расшифровывать – это поиск первоэлемента (стихи), из которого все состоит. Древние греки рассматривали в качестве таковых и воду («все течет»), и огонь, и абстрактный апейрон (чтобы разрешить конфликты с противоположными стихиями). Развитием этого считают подход Пифагора, заявившим, что «все есть число». Направление было интересным, но практика показала, что философия науки ушла от такого упрощенного подхода довольно далеко вперед.
Как это проявляется в Форте. Простейший вариант - «все есть стек». По аналогии с Пифагором – «стек стеков». В качестве методологически аналогичной вещи – все есть файл, все есть слово и т.д. Надо сказать, что «все есть слово» довольно-таки важное утверждение, поскольку Форт во многом на таком подходе и основан. Однако попытки представить словом даже то, что им объективно не является, рано или поздно найдут свою границу применимости. Например, невозможно представить словами 2^32 чисел.
2. Следующим историческим этапом была христианская апологетика («апологет» - сторонник, защитник). В период борьбы за распространение христианства апологеты занимались разъяснением того, что «так тоже можно». Известно изречение «верую, ибо абсурдно» (впрочем, здесь есть много нюансов и определенный контекст, в котором оно было сказано). Конечным итогом явилось то, что существует религия, которая все объясняет, и надо просто полагаться на веру.
Как это проявляется в Форте. Что интересно, на этом этапе фортер уже прошел стадию стихийного стекового материализма, принял существование стека и словаря как данность, и наподобие апологетов христианства занимается доказательством того, что «Форт тоже можно использовать». Ключевое слово здесь «тоже» - в этом контексте Форт занимает вторичное, подчиненное положение. Стек и словарь рассматриваются как религиозные догматы, которым надо следовать, даже если они выглядят абсурдно. И особенно если они выглядят абсурдно, поскольку от применения стека ожидаются некоторые чудеса. Можно встретить и высказывания о том, что если задача не решается, ее надо просто переписать на Форте, и все заработает – ну чем не религия?
3. Ближе к развитому Средневековью христианство заняло прочные позиции в Европе и доказывать, что «так тоже можно» стало бессмысленным занятием. В то время в Европе уже только так и можно было. Философы переключились на интерпретацию религиозных текстов, их сравнение и сопоставление. Текстов было много, к Ветхому и Новому Завету добавились труды так называемых «отцов церкви», а на местах было и собственное начальство. Ориентироваться во всем этом стало крайне сложно, тем более что и в Евангелии можно было найти множество формально противоречащих друг другу утверждений (например, «подставь другую щеку» и «не мир принес вам, но меч»). Философам приходилось быть крайне осторожными в формулировках, в итоге высказывания стали крайне завуалированными и узконаправленными. Из этой эпохи происходят вопросы «может ли Бог создать камень, который не сможет поднять» или «сколько ангелов уместится на острие иглы». Более показательный пример – ожесточенные споры о том, сколько лапок у мухи, ориентируясь при этом на труды Аристотеля. Поймать муху и посчитать лапки – нет, это не к нам. Отсюда родилось понятие «схоластика» (т.е. школярство) – длительные споры об интерпретации текстов, признанных бесспорными, апелляция к «отцам церкви» и признанным авторитетам.
Как это проявляется в Форте. Любые отсылки к Муру, применяемые в качестве «последнего аргумента». Ссылки на стандарт в стиле «раз в стандарте так, это бесспорно». Ссылки на «отцов Форта». Отсылки к Кнуту, Танненбауму, Дейкстре. Попытки без углубления в вопрос принять результаты любой деятельности «отцов» - ColorForth, SeaForth, бектрекинг, апеллируя только к авторитетности источника.
4. После Средневековья наступило Новое время. Зарождение и расцвет практической науки. Ньютон, Паскаль, Лейбниц, а из философов – Бэкон и Декарт, заложившие основы современного научного познания. Наука стала основываться на эксперименте, а исследование – на сопоставлении и анализе результатов (Бэкон) и интуитивном озарении, подтверждаемом реальными следствиями (Декарт). Кстати, эти философы совершенно нехарактерно соглашались друг с другом, а сами подходы соответствуют широко известным «снизу вверх» и «сверху вниз». В то же Новое Время появились многие современные физические величины. К примеру, «лошадиная сила», по свидетельствам, была создана, когда Джеймс Ватт попробовал продать паровой двигатель на водокачку. Ему был задан вполне конкретный вопрос «сколько лошадей я перестану кормить, если куплю ваш двигатель?», в результате чего были проведены испытания двигателя и измерение его мощности «в лошадях».
Как это проявляется в Форте. Это позиция «а у меня работает». Надо сказать, что как методические основы, заложенные в Новое Время, сохраняют работоспособность, так и аргумент «а у меня работает» имеет определенные основания. На определенном уровне его достаточно, потому что оно же и в самом деле работает. Некоторые проблемы возникают с распространением, которое далеко не гарантировано. Появляются робкие аргументы вида «ну может быть если мы умножим нашу экономию в один такт на десять лет работы и тысячу работающих программ», однако реальные наблюдения показывают, что из-за такой экономии полученный Форт вовсе не начинает распространяться со скоростью лесного пожара.
5. Проблемы с «оно работает» начались в XIX веке. Развитие науки привело к тому, что одни и те же явления стали объясняться различными, часто взаимоисключающими способами. И главное, что все они «работали». Частично противоречия удавалось разрешать экспериментально (например, корпускулярная и волновая теории света давали противоположные предсказания, но эксперименты показали, что прав Френель). Однако интересы ученых были настолько разносторонни, а мысль проникала так далеко, что ставить эксперименты было иногда невозможно или слишком затратно. Возникло философское направление позитивизма – «а давайте теории верифицировать (т.е. проверять)». Отлично. А как проверять? Мгновенно обнаружилась «дурная бесконечность» - сначала надо верифицировать метод проверки… а может быть его верификация ошибочна, тогда надо сначала верифицировать верификатор.
Как это проявляется в Форте. Очевидным способом – давайте спроектируем «правильный Форт». Или же «давайте напишем для Форта оптимизатор», что само по себе методически опасно тем, что оптимизация подразумевает формулирование критериев. Очень быстро – не эквивалент оптимальности. Может быть оптимизация по скорости работы, по размеру программы, по скорости разработки (тут скорость работы самой программы может быть как раз небольшой), по трудоемкости, по стоимости сопровождения, по интегральным показателям и т.д. Ситуация аналогична позитивистам – несколько сторонников верификации могли придерживаться одинакового подхода, но все равно давать разные ответы на один и тот же вопрос.
6. Критика позитивизма заставила во второй половине XIX века заменить принцип верификации на принцип фальсификации. Теория признавалась рабочей до тех пор, пока не обнаруживался эксперимент, опровергающий ее. Надо сказать, что сейчас мы уже дошли до довольно сложных методологических понятий, и принцип фальсификации легко трансформируется в совершенно некорректную позицию «докажите, что я неправ». В то же время, для работоспособного применения необходимо выполнение целого ряда условий. Новая теория должна соответствовать всем известным экспериментам. Также она должна объяснять, почему существовала старая, а в идеале – сводиться к ней в каких-то условиях (принцип преемственности Бора). Кроме того, простое объяснение экспериментальных данных формирует только гипотезу, а в разряд теорий она переходит только после появления экспериментов, которые ранее не проводились, но были предсказаны. Также необходимо сформулировать ограничения по применимости и указать фальсифицирующий эксперимент. Наконец, существует принцип «доказываются только позитивные утверждения», поэтому никто не обязан на каждый брошенный за пять секунд тезис заниматься развернутым и аргументированным опровержением. Хороший пример – теория относительности. Она объясняет закон сложения скоростей классической механики и сводится к нему при малых скоростях. Различия объясняются тем, что в классической механике просто не ставили эксперименты с большими скоростями, поэтому и не замечали релятивистских поправок. Фальсифицирующий эксперимент – к примеру, эксперимент Майкельсона-Морли. Если бы он завершился успешно, был бы обнаружен эфир. Но эфир не обнаружен, поэтому пользуемся формулами релятивистской механики.
Как это проявляется в Форте. Уже довольно сложно указать на очевидную неправильность, поскольку сам по себе подход довольно здравый и рабочий. Однако посмотрим и чуть дальше.
7. Наряду с лентой Мебиуса и котом Шредингера в науке существует также чайник Рассела. Говорят, что есть еще кот Мебиуса, который гуляет сам по себе, но нам интереснее чайник. По Расселу, этот чайник будто бы вращается вокруг Солнца так, что с Земли его не видно. Гравитационных возмущений он тоже не создает, если запустить телескоп на спутнике, то между ним и чайником обязательно обнаружится астероид. Так что убедиться в существовании этого чайника никак не получается. Теперь вопрос. Будем ли мы изучать такой чайник? Можно долго размышлять, на блюдечке ли он, фарфоровый ли, и какой толщины стенки, какой узор и т.д. Что интересно, на это можно потратить большие средства, создать научные школы и организовать их работу в соответствии с правильной методологией – формулированием теорий, их фальсификацией и т.п. Но вот тут и выплывает огромный пункт – актуальность исследований. А если обращаться к классикам марксизма – общественно-историческая значимость. Иными словами, исследовать что-то просто ради исследования – может быть и можно. Только затраченные усилия и полученные результаты будут совершенно несоразмерны, а при этом реально востребованные проблемы решены не будут. В современной науке совершенно четко выдвигаются требования актуальности и новизны, причем актуальность исследования обычно ставится на первое место. Это помогает не тратить время впустую, исследуя правильно и корректно, однако исследуя ненужные вещи.
Как это проявляется в Форте. Здесь уже стоит говорить о непонимании описанной проблемы, потому что сама по себе она не предлагает готового (верифицированного – см. выше) решения. Любой проект, формально грамотный и выполняющийся с применением «правильных» подходов, однако не имеющий четко сформулированной цели, не соответствует критериям актуальности. Например, «когда-нибудь кому-нибудь понадобится». Отсюда же превратившиеся уже в миф «сотни программистов, которые напишут тысячи библиотек». Пока у нас нет конкретной сотни программистов, разговор не имеет практических перспектив.
Что ж, начинаем обсуждать