Category: философия

|, me, hikki, ok

Паттерны проектирования, гриды и прочая безответственность

В наш великий ВУЗ последние несколько лет с завидной частотой приглашают всяких дяденек прочитать лекцию на не то, чтобы на очень сильно ограниченные темы.
Скажем, в прошлом учебном году на лекции к третьему курсу заманивали учёных мужей Петербурга, не ограничивая их в выборе темы беседы, а в начале ноября — конце декабря этого учебного года соседняя кафедра проводила семинар по высокопроизводительным вычислениям, в связи с выигранным мега-грантом на приглашение зарубежного учёного.

Непонятно, почему, и те, и другие лекции проводятся в «почти закрытом» режиме. Вообще, у меня есть подозрение, что, если сильно копнуть, то выяснится, что такие курсы лекций разных мутных и не очень приглашённых товарищей в разных частях университета проводятся значительно чаще, чем раз в год, а от кого и зачем это всё прячут — неясно. Но сейчас не об этом.

Одним из фактов об этой стране, усвоенным на военных сборах, являлось то, что уйма граждан не может или не хочет даже выполнять своих элементарных служебных обязанностей. В принципе, это можно наблюдать в любом местном отделении какого-нибудь государственного органа, где никто не хочет ни за что отвечать, только целыми днями гоняют чай, а мою посылку из Китая, долетевшую в эту страну оттуда за сутки, «сортируют» на почте уже двадцать четвёртый день. Однако, если тут почти месяц лёжбыща мелкого пакета на складе вызывает народное недовольство, то в армии подобное поведение возведено в норму.
После последнего семинара во мне окончательно укрепилось мнение, что между многими учёными и виданными мной военными не такая уж и большая разница. Сейчас объясню почему.

Забудем на минуту общечеловеческие значения слов «простой» и «сложный». В этой необщечеловеческой классификации история и философия являются более сложными дисциплинами, чем физика и математика, поскольку в первые две дисциплины особенно не воюют за логическую связность и уменьшение количества параметров, в то время как последние две только этим и занимаются (наверное, от части такая формулировка была навеяна этой критикой философии науки).

В таком же смысле лямбда-исчисление и теория типов значительно проще, чем объектно-ориентированное программирование и паттерны проектирования. При этом, мне кажется, между первым—третьим и вторым—четвёртым куда больше сходства, чем может показаться на первый взгляд. В каком-то интервью (которое я не смог загуглить) вроде Simon Peyton-Jones говорил, что там, где ООП-кодеры начинают совать UML, хаскелисты расчехляют дополнительные стрелки в типовых аннотациях (вот ещё тред почти про это же на sof). Также и большинство паттернов занимается эмуляцией поведения шашечек из функционального мира (выборочно иду по часто упоминаемым из списка паттернов в Википедии): Adapter — замыкания, Interpreter — GADTs + eval, Listener (тут обман, его в списке в Вики нет) — замыкания, Mediator — ещё раз замыкания, Nullable — пахнет Maybe monad transformer, Proxy — тайпклассы и снова замыкания, Visitor — и тут снова тайпклассы. Ля-ля-ля, все всё давно поняли, а я — Капитан О.

Так вот, вернувшись на два параграфа назад, но глядя в список паттернов в Википедии (нет, там есть что-то осмысленное, но, в целом, один этот размер списка уже о чём-то говорит), нетрудно заметить, что эти паттерны проектирования — это философия какая-то, а совсем не математика. Конечно, философствовать куда приятнее, чем делом заниматься — сиди сочиняй себе паттерны. Частных случаев, выражающихся в случайной перестановке фич GADTs, замыканий, кванторов существования и прочей фигни высших порядков хватит на всю жизнь, можно не одну квази-интеллектуальную книжку по проектированию ПО написать. Тут же можно догадаться почему я там умолчал про всякие MV(C|.*).

В общем, наблюдается ярко выраженная любовь человечества к дисциплинам с огромным количеством мелких деталей, где можно строить из себя умного, вообще по сути ничего не понимая. В этом свете, любовь к преподаванию ООП на всяких «языках, используемых в индустрии», типа там C++, или Java, становится мотивационно оправданной: когда больше нечего сказать, можно пофилософствовать почему условие
(a < b) || (a == b) || (a > b)

для a и b целочисленного типа, может никогда не выполниться.

Надеюсь, я достаточно прямо выразил свою простую мысль: ООП, UML, паттерны и прочая «инженерия ПО» — это (за мелкими исключениями) философия, философия — не математика, программирование — математика. Любовь к такой философии легко объяснить отсутствием достаточного уровня абстрактного мышления, ибо ковыряться в деталях всегда проще, чем построить общую теорию. А работать-то не хочется.

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

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

В заключение хочу отметить, что со времени последних постов, полных уважения к философии, я пришел к выводу, что всякие философы, любители UMLя, паттернов и прочей мути — вовсе не вредны для общества. Смотрите сами, если бы по мгновению волшебной палочки вдруг все фишеры и спамеры исчезли из сети, то люди так расслабились бы, что появление очередного вида мошенничества могло бы вызвать катастрофу глобального масштаба. Философия, РАЕН и ООП с паттернами просто необходимы обществу, чтобы у адекватных его членов не скисли мозги.
|, me, hikki, ok

Отлично с отличием

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

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

Вроде это первый в моей жизни предмет, на подготовку к экзамену к которому я потратил целых три недели, из которых где-то две с половиной недели я учился достаточно пассивно, а оставшийся кусок — весьма активно.

Вообще, немного отойдя от темы, я давно хотел запечатлить для будущих поколений, что именно где-то в этом году я в достаточной степени понял особенности внутреннего устройства своей головы, чтобы начать этими особенностями пользоваться себе во благо, а не постоянно с ними воевать. Итак.
* Я точно знаю, что я не думаю на каком-то конкретном человеческом языке, до тех пор, пока не хочу (или не представляю, что хочу) сформулировать мысль в словесной форме.
* Товарищ Раскин в своей книжке утверждает, что у человека «полтора» фокуса внимания. Я точно знаю, что для некоторых комбинаций задач у меня их два.
* У меня большой оверхед на подготовительные процессы, необходимые для решения задачи в новой или почти забытой предметной области. Я очень часто сначала торможу, а потом всё внезапно становится очевидным.
* У меня очень избирательная кратковременная память, но объёмная средне- и долговременная. Открыв текст своей бакалаврской я могу восстановить последовательность её создания и редактирования (и эта последовательность подтверждается системой контроля версий), но я запросто могу забыть предыдущую фразу преподавателя на лекции.
* Контекст-свичи у меня почти ничего не стоят. Например, в моём оконном менеджере 22 рабочих стола и я всегда помню что где лежит, и что я там делал без каких-либо тулбаров, а в браузере открыто несколько десятков вкладок с текстами, которые я читаю более-менее параллельно.
* У меня полностью отсутствует мелкая моторная память (вообще необходимость записывать что-то меня только отвлекает от сути), но развита зрительная (фотографическая?) память.
* Наличествует какой-то абсолютный кретинизм в отношении имён (если имя каждый день не слышу, то хрен я его запомню) и дат рождения (даже свой день рождения часто смотрю в профиле в жж).

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

В отношении изучения философии, пользуясь этими свойствами, я избрал следующую стратегию: две с половиной недели просто «смотреть» на философские тексты особенно не пытаясь в них разобраться. А за несколько дней перед экзаменом попытаться понять логику всех этих мыслителей и выстроить какую-нибудь общую картину мира. Опыт получился до того забавный, что на этих выходных я не спал две ночи. Не от страха, что я чего-то не успею, а потому что после десяти часов жестокого компостирования мозга философскими текстами, активно параллельно подбираемыми из памяти и из бумаги, я просто не мог заснуть без ответов на разные вопросы типа «А почему товарищ A говорил, что X, когда B ссылался на A и говорил, что Y». То есть, я пытался уложить себя спать, но очень быстро очередной вопрос поднимал меня обратно к бумажкам. И так две ночи подряд.
В понедельник я более менее добил последние вопросы, связанные с логическими связями и, наконец, нормально уснул (и проспал половину следующего дня). День перед экзаменом я посвятил вызубриванию тех нескольких вопросов, которые не поддавались пониманию с логической точки зрения, и зазубриванию отображения между именами философов и их идеями (именной кретинизм же).

Теперь о чувственном опыте. В двух с половиной недельный промежуток моё отношение к философии оставалось на уровне «какая-то бредятина тут написана». Я достаточно внимательно смотрел на тексты из методички и некоторые оригиналы (правда в переводах) и находил уймы элементарных логических ошибок: посылка и заключение перепутаны, «равносильно» неявно используется вместо «следует», используется самопротиворечивая логическая аксиоматика, рассуждения натыкаются на парадокс лжеца, рассуждения натыкаются на парадокс Рассела, и так далее. Я не знаю, были ли эти ошибки в оригиналах на оригинальных языках, внесли ли их переводчики, или авторы методички, но в течении двух недель я тщательно обводил в текстах всю эту чушь и вечерами зачитывал отцу, который до этого мне долго доказывал, что философия есть полезный предмет и для технарей-прикладников.
Прямо перед выходными я обнаружил, что сам Рассел является автором книги по западной философии. После того, как я научился отделять в ней иронию от сути, эта книга стала чуть ли не основным аргументом в пользу того, что «какая-то бредятина тут написана», ибо Рассел старательно выделяет куда более фундаментальные логические ошибки, на которые я, по своей ограниченности их поиском в формулировках, просто не обращал внимания.
Одно только «Если реальность вневременна, то нет оснований полагать, что поздние Стадии процесса должны воплощать более высокие категории, чем ранние стадии, если только не принимать богохульного предположения, что вселенная постоянно изучала философию Гегеля» чего стоит.
С другой стороны, Рассел достаточно чётко и понятно разъясняет основные аксиомы и логические выводы (там где они есть) и из этого источника я очень много почерпнул.

В субботу моё отношение к философии перешло в состояние «быть может я просто чего-то не понимаю, а что-то в этом есть», поскольку среди куч групп фактов я абсолютно потерял логические связи между группами, даже в рамках какого-то одного учения.

Тут снова следует отвлечься. Однажды перед лекцией по философии я сидел в холле перед аудиторией и рассуждал о глубинах высших материй, как ко мне подсела бывшая почти-одноклассница (один год выпуска, я хз как это принято называть), которая сейчас учится вообще на другом факультете, но лекции по философии у нас общие. В тот момент моё мнение о философии выражалось односложно, и я решил узнать насколько её мнение отличалось от моего. Удивительно, я услышал примерно такой ответ:
— Ну, вообще интересно послушать, и потом, я последнее время часто по музеям хожу, в театры, как-то на культуру потянуло.
— А ты работаешь где-нибудь?
— Нет.
Сравнив эти факты со своей биографией, которая говорит, что примерно год назад я тоже очень любил ходить по музеям и в театры и при этом особенно нигде не работал, я пришёл к следующему выводу: культура начинает привлекать, когда нечего делать. Я, конечно, утрирую, но что-то в этой мысли есть.

Так вот, вернувшись к субботнему «быть может я просто чего-то не понимаю, а что-то в этом есть», я понял, что, это состояние, и вообще предыдущее двухнедельное с лишним чтение философии, вполне можно объяснить из следующих соображений: мне лень делать что-то полезное (я хотел познать глубины философии, но мне действительно было лень параллельно заниматься полезными вещами), поэтому я оправдывал своё существование в эти две недели тем, что я якобы делал что-то полезное, в то время как я просто читал какой-то текст (хотя, конечно, его достаточно забавно было читать, а особенно зачитывать отрывки по вечерам), который, в действительности, не имеет действительно практического смысла.
Я в курсе, что можно найти десяток философских концепций, которыми можно осудить такой метод рассуждений, и вообще я достаточно вызывающе пишу. Но оцените суть. Тут я утверждаю, что люди считают философию полезной по двум причинам:
— им нечего делать;
— философия это что-то такое не очень понятное, наукообразное, и вообще логика, все дела, да ещё кругом все говорят, что это очень умная штука.
А философам, в свою очередь, нечего делать, и они читают завораживающие лекции.

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

Но вернёмся к изучению мной философии. После такого рода рассуждений, в воскресение меня осенила гениальная мысль о том, что, на самом деле, никакой общей картины мира даже в рамках учения одного философа нет. Это осознание я стал агрессивно применять в разрешение возникающих логических неустоек следующим образом: каждое учение я стал мысленно разбивать на «острова», выделяя в них аксиомы и верные логические цепочки и выводы (заметим, что каждый такой остров впоследствии легко восстановить исходя только из заученных предпосылок), после этого, «мосты» между островами (цепочки рассуждений с нарушенной логикой) я также стал принимать в качестве аксиом и заучивать.
Конечно, стройность всей конструкции при этом хромает (однако в этом виноват не я, а хромоногость самого предмета изучения), но зато становится абсолютно ясна поведенческая модель, которую нужно осуществлять на экзамене: нужно рассказать сначала устройство каждого острова, а потом, приперчивая фразами типа «Из чего Гегель заключает, что ...» произнести формулировки всех мостов между ними.
Более того, оказалось, что сами формулировки экзаменационных вопросов очень хорошо ложатся в эту модель. Например, один из моих вопросов на экзамене звучал так: «Всемирная история как процесс в осознании свободы». Данный вопрос захватывает следующие логические острова: «абсолют и диалектика», «свобода как субстанция», «составляющие и прогресс всемирной истории». Логической связи между первыми двумя я вообще никакой не обнаружил, но Гегель, видимо, понимал в этом больше чем я.
Аналогичным образом я поступил и со вторым вопросом билета.
В результате, использование описанного метода столь сильно поразило комиссию, что экзаменаторы слушали меня с широко открытыми глазами, а моё достижение по формализации было специально отмечено во время объявления оценок.

Естественно, что общее впечатление от самого предмета обсуждения, не смотря на мою текущую обогащённость в количественном и качественном, вернулось в состояние «какая-то бредятина тут написана» (и всё также описываемо односложно). Своего мнения о необходимости урезать количественное представление данной дисциплины в учебном плане я не отвергаю, зато теперь считаю себя в праве до следующего экзамена в аспирантуре (если оно вообще будет) броадкастить сие мнение по любому удобному случаю.