matmex.zip/m.K./pedo-1

Witness of singularity
26 min readMay 19, 2023

--

Теория алгоритмов

Теория алгоритмов — это единственный чисто теоретический курс, который я читал. В него входят определение машины Тьюринга и вычислимости, NP-полные задачи и «разное» вокруг этого. У курса нет абсолютно никаких практических приложений, и единственная польза от него на рабочем месте — это осознание того, что некоторые задачи не стоит даже пытаться решать. Не добавляет радости и то, как его обычно преподают: основная часть — это построение дерева сводимости различных задач друг к другу и доказательство этой самой сводимости, что почти всегда является нудной и муторной технической процедурой (именно к ней для все новых и новых бесполезных задач сводилась «научная» деятельность моего научрука). Ценность этой процедуры, опять же, нулевая: иногда доказательство позволяет понять суть изучаемого объекта — это особенно справедливо на алгебраических курсах, где объект задается набором аксиом и, соответственно, какая-либо интуиция о нем отсутствует — но в теории алгоритмов «объектами» являются хорошо известные графовые, логические или арифметические задачи, и раскрывать там особо нечего. Иными словами, теория алгоритмов — это классический мертвый университетский курс. Можно прочитать его уныло, сбивчиво и ужасно, как мой научрук, или же весело, задорно и с историческими анекдотами, как это делал МВВ, но суть поменять там было сложно.

Тем не менее мне, я считаю, это удалось.

Как можно сделать курс интересным? Вообще, что такое интерес? Ответ я нашел, уже значительно позже, в видеолекциях Брэндона Сандерсона о писательстве. Он утверждает, что интерес складывается из трех составляющих: Promise, Progress and Payoff.

Promise

Promise — это то, что читатель видит на обложке, в аннотации и первой главе: это основной вопрос произведения, на который ему обещают ответить. В университете этому соответствует содержание первой, вводной лекции. Что вы обещаете на ней студентам?

Чаще всего преподаватели обещают что-то вроде «мы освоим 100% учебного плана по государственному стандарту этой дисциплины»: дают перечень тем, которые студенты изучат. Это не sexy, это совершенно не хочется слушать, это имеет смысл только в рамках ВАУ-нормативной матрицы, где живут многие преподаватели, но не студенты — им насрать на процент продвижения по учебному плану, им нужно понять, как это соотносится с их будущей работой и/или «крутыми штуками».

С полезностью для будущей работы у теории алгоритмов очень слабо, поэтому я ориентировался на «крутые штуки». Тут, конечно, нужно было в первую очередь самому понять, почему этот курс интересен был лично мне — и, кстати, если курс не интересен, если вы его читаете, чтобы «закрыть нагрузку», то, вероятно, вам вообще не стоит все это читать, потому что не для вас написано. К счастью, про этот курс у меня был готов ответ: для меня теория алгоритмов была наполнена завораживающими загадками мироздания.

И именно на этом я построил свой Promise. Дескать, у вас до этого были позитивные курсы — как решить задачу, как построить алгоритм, как доказать теорему. У вас всегда все получалось. А теперь у вас будет не получаться! Вы узнаете, что есть задачи, которые вообще нельзя решить. И еще такие, которые нельзя решить быстро. Упс! Последнее — это неточно, эту теорему никто не доказал и не опроверг, причем может быть — потому, что ее нельзя ни доказать, ни опровергнуть. Да-да, такие теоремы тоже бывают. Таким образом, промиз был на экскурсию в эдакий «Ад Данте», в мир гносеологического кошмара — и тех способов, которыми люди пытались от него защититься (получалось не у всех, кстати — Гёдель в процессе своих изысканий в этой области сошел с ума).

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

В программистских курсах дать Promise очень просто. В тех же основах программирования я на вводной лекции обещал следующее: мы сделаем из вас junior software developers, вы сможете написать игру, искусственный интеллект, ну или хотя бы на работу устроитесь. В математических курсах над этой частью нужно серьезно думать. Не просто «мы научимся вертеть матрицы по-всякому», но, например, «мы поймем, как работать с объектами в трехмерной графике»; не «мы возьмем тысячу интегралов», а «мы изучим технологии, которые применяются для обработки звука». В любом классическом курсе можно найти что-то интересное, жизненное, увлекательное — и нужно не прятать это поглубже, а, наоборот, вытаскивать на самый верх.

Progress

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

В моем студенчестве на тех курсах, где все-таки был Promise, как правило было все очень плохо с Progress: я уже упоминал о преподавателе, обещавшим научить сжимать изображения, который весь семестр доказывал теоремы про интегралы в пространстве с метрикой L1, и так и не сжал ни одного изображения. Но с моим Promise было проще: я ничего подобного не обещал, я обещал экскурсию в кунсткамеру логических уродцев, поэтому мне требовалось просто их почаще доставать и препарировать.

Для этого я расширил список уродцев: помимо нерешаемой «проблемы останова» (которая очень техническая, и непонятно, зачем нужна) я добавил лекцию про диофантовы уравнения (точно такие же нерешаемые, но выглядят куда понятнее), а еще — числа, которые нельзя вычислить (типа константы Хайтина). Кроме того, я добавил нейромашины, вычисляющие даже то, что не вычисляют машины Тьюринга, и которые, в свою очередь, открывают еще более глубокие вопросы, подводя нас вплотную к физическому существованию действительных чисел в природе, а там и до квантования пространства-времени недалеко. Кроме того, я добавил в курс то, что обычно там не читалось: теоремы Гёделя о неполноте (которые до этого у компьютерщиков отсутствовали в программе в принципе, и это, я считаю, криминал) и квантовые компьютеры (звучит прикольно, а еще им все-таки удается быстро вычислить то, что обычным машинам не удается). Кроме того, я еще добавил осмысления некоторых тем — это было особенно полезно теоремам Гёделя и проблеме P=NP.

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

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

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

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

Payoff

Payoff, во-первых, означает, в конце Progress должен быть реализован Promise. Если это не выполняется, то Payoff отсутствует, и, соответственно, прошедший курс воспринимается как путешествие вникуда, возникает ощущение обманутости и нежелания что-то общее с этой областью знаний больше иметь.

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

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

В моем курсе было аж целых четыре таких интересных вопроса: теоремы Гёделя, (ир)реальность действительных чисел, P-NP и квантовые компьютеры. И про каждый я старался хотя бы пол-пары поговорить, как с ним жить. Например, теоремы Гёделя утверждают, по сути, что вполне возможна ситуация, когда в один прекрасный день некто получит корректное доказательство того, что 2x2=5. Невозможно доказать, что этого не произойдет. А если (или когда) такое наконец случится, это будет означать, что вообще все математические утверждения истины, дважды два равно чему угодно, и вся математика превратится в тыкву. С точки зрения здравого смысла, такого быть не может, потому что если взять два раза по два яблока, то будет именно четыре яблока, а не семь или пять. Но это означает, что эти здравомыслящие рассуждения были аксиоматизированы Пеано как-то по-дурацки, потому что из его аксиоматизации этот очевиднейший факт никак не следует. А по-другому это аксиоматизировать не получается! Здесь множество интерпретаций может быть, моя любимая состоит в том, что человечество нафантазировало себе понятий типа «бесконечности», которое толком не способно осознать, и после этого пытается ввести эти понятия в свои рассуждения, удивляясь, что «здравый смысл», основанный на наблюдениях за ситуациями, в которых никакой бесконечности нет, не удается перенести на эти фантазии. Но есть и другие подходы, о них я тоже говорил на лекциях.

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

Чечевичный зачет

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

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

Но к третьему курсу, когда читалась Теория алгоритмов, все эти процедуры уже заканчивались. Студенты входили в некоторое равновесное состояние, они знали, что им нравится, что не очень, где они хотят совершенствоваться — и такие барьерные экзамены были особо не нужны. И вот что тогда делать?

На спецкурсах, которые я проводил, все было просто — туда приходило по 15–20 человек, они были в предмете заинтересованы, задавали вопросы, отвечали на мои, у нас были какие-то активности, небольшие домашние задания, и зачет я обычно ставил по совокупности всего этого автоматом. Если же кто-то в этот автомат не вписывался, то достаточно было легкого устного опроса, чтобы человек понял, что халявы не завезли и больше не пытался. Собственно, именно это и было всегда бордерлайном: я не стремился делать сложные зачеты по спецкурсам или предъявлять какие-то особые требования, но всегда старался избежать превращения спецкурса в фабрику халявных зачетов, потому что это бы в итоге запустило гонку «у кого халявнее», и ничего хорошего бы из этого не вышло.

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

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

И такой вариант был еще безвредным — попросту потраченный впустую всеми (в особенности преподавателем) день времени. А ведь попадались и случаи клинической идиотии, когда преподаватель требовал, например, собственноручно написанный конспект лекций.

Зачем мы все это делали — я решительно не понимал. Сначала мы ставим в обязательную программу предметы, которые студентам не нужны, потом преподаем их черти-как, без мотивации и практики, далее на экзамене даже это как следует не проверяем (потому что это немедленно приведет к массе двоек, а значит — пересдач и разборок в деканате, потому что массово отчислять с третьего курса из-за какой-то там теории алгоритмов никто не будет, это нонсенс, если препод упрется — то просто соберут комиссию, самого препода в него не включат и быстро всем поставят, что нужно) — и заменяем псевдозачетом, который не проверяет ничего. Зачем вся эта иллюзия? Кому она нужна?

По идее, единственной функцией зачета было причинение студенту некоего количества боли, которую можно уменьшить, слушая преподавателя на лекциях. То есть если ты в семестре ходишь на пары, врубаешься в материал — то потом на зачете приходишь и за 5 минут сдаешь. А вот если не ходишь и не врубаешься, то сиди, потей над учебникам, и потом, сбивчиво рассказывая преподавателю только что прочитанный и лишь на четверть понятый материал, нервничай и переживай — а то вдруг у него будет плохое настроение или лично ты ему чем-нибудь не понравишься… И вот избегание этой боли является мотивацией для того, чтобы как-то учиться в семестре.

Я решил довести этот цирк до высшей точки и провел перформанс, за которым закрепилось название «чечевичного зачета». Студенты могли выбрать либо сделать адекватную экзаменационную работу, либо выполнить одну из двух видов бесполезной работы. Первой было построение таблицы истинности булевой функции от пяти переменных, а вот второй…

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

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

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

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

Но на самом деле эти аргументы не понадобились, жалоб не было — я думаю, наличие выбора здесь сильно сгладило углы.

Послесловие

Курс этот получился хорошим, но в итоге я успел прочитать его всего один раз. Иногда мне бывает жаль, что я его не записал. Такие мысли были, но к тому времени я уже основательно устал от записи. Кроме того, как я уже отмечал, это в целом не самый важный курс в программе, да и с точки зрения мой вариант прочтения сильно уступал вариантам, читаемым коллегами. У меня получилось в итоге нечто в промежутке между университетским курсом и качественным научпопом.

Я знаю, правда, что студенты записывали мои лекции и выложили их на ютуб. Они были в закрытом виде, но я нашел, кто записывал, и они их открыли, так что можете наслаждаться

Ну и осталась методичка. Я уже упоминал о ней — как это ни странно, несмотря на то, что я писал ее исключительно для галочки в чек-листе доцентства, у меня несколько раз просили этот файл для подготовки к ГОСам (это всегда меня очень удивляло, потому что обычно методички, написанные преподавателем, студенты если и открывали, то только через насилие а-ля «не купите методички — не сможете сдать зачет»). Так что вот она.

Научное мышление

Это, конечно, мой Opus Magnum — лучшее, что я сделал за свою карьеру преподавателя, а, возможно, что и за всю жизнь. И это на самом деле классное ощущение, знать, что ты что-то в своей жизни сделал, что-то прекрасное, длящееся, осмысленное. Я вот очень люблю в своих текстах поговорить о 95% бесполезных людей, которые за свою жизнь не производят ничего, кроме говна, но тут всегда возникает вопрос — а чем ты, собственно, от них отличаешься? Ну вот, я этим отличаюсь. Ulearn и основы тоже, конечно, хороши — но они, если еще не устарели, то устареют очень быстро, программистским курсам в целом преходящи. А вот это останется, и через 30 лет, уверен, его придется разве что дополнить парой глав про то, куда все это мышление, что научное, что антинаучное, двинулось… Если не запретят в дивном новом мире, конечно, но запрещение — знак высшего качества для автора.

Как вообще этот курс появился, и как получилось так, что я, инженер-программист, в лучшем случае — computer scientist или, с большой натяжкой, математик — записал курс по философии?

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

Уже после университета этот интерес стал более предметным, когда я открыл для себя курсеру. Там я прослушал три курса: Think Again (о классической и логике, Walter Sinnott-Armstrong and Ram Neta), World History (Philipp Zelikow) и Modern and postmodern (Michael Roth). Каждый говорил что-то о рациональности с разных сторон — да-да, даже история, потому что у Зеликова история была аналитической, не «что произошло», а «почему произошло», он любил говорить что-то вроде «представьте себя перед выбором такого-то правителя, какие у вас варианты?». И технологии были одной из корневых причин, Зеликов всегда это подчеркивал: в Средние века не менялось ничего, границы туда, границы сюда, тут мятеж, тут монарха отравили — интересно, но не очень; а вот в Новое время из-за технологий изменилось все сразу. «Модерн и постмодерн» приучил меня смотреть не только на логику, но и на искусство (собственно, искусствоведческая интерпретация постмодерна — до сих пор у меня основная, потому что весь постмодерн — он про экспрессии и чувства, а не про логику). Think Again закрыл пробелы в классической логике, которой на матмехе просто не было. Уже тогда у меня родилось желание как-то это собрать в одном месте и на русском языке — не пересказ, конечно, но нечто подобное по широте охвата и главному нарративу.

Это желание окончательно оформилось после осознания того, сколько же людей в мире — идиоты, включая преподавателей. Тут мне сильно помогла работа в лаборатории: я уже рассказывал о брожении лженауки в ней, о безумных дедах с восхитительными идеями о двигателе с >100% КПД, о руководстве, которое то фильм «Секрет» посмотреть рекомендует, то из «Комсомольской правды» вырезает статью про передачу электричества по одному проводу и всем ее сует… И научрук, который творит чудеса. Собственно, научрук меня побудил разобраться в институте фальшивых публикаций, списке Белла и том, как вообще институт публикаций должен функционировать. Та история вообще была очень для меня важной, она воспринималась прям как проживаемый детектив Агаты Кристи, с переходом от «но он же явно большой ученый, вон у него сколько статей в скопусе» до разгадки — надо же, в скопусе, оказывается, масса говна, и все об этом знают, кроме руководства университета!

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

Этот курс я начитал курс сначала магистрам: там было полсеместра, и я успел начитать только про науку и лженауку. Разгуляться не получилось, слишком мало было времени, поэтому в следующем году я взял себе «Философские проблемы математики». Этот курс был в то время каким-то никому не нужным: кто только ни вел его на кафедре и что только ни рассказывал, но только не философские проблемы математики — ВЮП, например, читал просто все, что приходит в голову, а МВВ — машины Тьюринга (что для компьютерщиков было повтором, а вот для математиков — первой возможностью вообще с ними познакомиться). Так что взять этот курс себе получилось легко.

И получилось прямо вот хорошо. Настолько хорошо, что я сразу решил его записать.

После этого я еще, кажется, один раз читал этот курс по-нормальному, затем АГГ почему-то вот прям сильно захотел взять его себе — это уже было после того, как он же попытался провалить на кафедре мое доцентство, вспоминая мне посты ВК, которые не читал. Возможно, это как-то связано. Я переоформил это как спецкурс, который можно было брать вместо ФПМ, лекции были уже на степике, а на семинарах мы писали эссе, проводили «научные исследования» в разных предназначенных для этого играх, и так далее. Не могу сказать, что это было особо успешно, тут формат я поймать не смог — но по крайней мере собрал обратную связь с лекций.

Почему я считаю курс большим вином? Во-первых, из-за уникальной темы и подачи. Вот по программированию на C# курсов много, и даже если мой очень хороший — то и на других научиться можно. А вот научное мышление так никто на русском не рассказывает. Я смотрел пару раз аналоги, ну или, скорее, то, что называлось также — и это было даже не близко: очень академично, очень сухо, с массой специальных терминов и, как мне кажется, без большого толку.

Тут, конечно, у меня был, особенно поначалу, эффект самозванца — ну куда я, со своим математическим дипломом, в калашный ряд к философам? Там, между прочим, целая доктор философии курс готовила, а я тут со своим «сухо, неакадемично»… А у меня, может, вообще термин употребляется с недостаточной точностью. Но сейчас я уже не парюсь. Во-первых, по-настоящему серьезных ошибок в курсе так никто и не нашел, несмотря на то, что вот сейчас этот курс ведется у ФИИТов с практиками-философами.

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

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

Кроме того, я очень горжусь выстроенной сюжетной симметрией: мы по сути три раза проходим по одному и тому же пути, от дикости средневековья через прогресс нового времени до современного разложения, но как мы на трех разных планах: логики, науки и общественного уклада. Это, считаю, отличная находка, и гораздо лучше, если бы мы вместо этого попытались двигаться по линейной шкале, перескакивая постоянно с логики на науку и потом на общественный уклад.

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

Сейчас будет моя любимая часть, где j’accuse. Я, конечно, совершенно неподходящий человек для моральных проповедей, но: мы, преподаватели — а вернее, теперь уже вы, преподаватели — должны чаще и обширнее вести со студентами серьезные разговоры о том, как устроен мир и общество. Не исключено, что не должны, а должны были, потому что сейчас уже поздно. Студенты такие разговоры слышать готовы, и во все времена в университетах Европы можно было научиться не только наукам, но и получить какие-то ориентиры в плане общественной жизни. У нас разумные люди — что с факультета, что из Контура — всегда избегали эти вопросы прямо и открыто обсуждать, не говоря уж о том, чтобы включать в материалы курсов. Конечно, зачем, разумные идеи же «всем очевидны», и так все понятно, зачем? Неприлично же, пусть студенты как-нибудь сами придут к правильному мнению, тем более, оно все равно очевидное и других путей нет. И будущее нельзя остановить, ага.

В итоге это но значило это только то, что эти разговоры вели другие, подобной рефлексией не занимающиеся: БМВ с IT-чучхе, старцы с научно-фундаменталистским советизмом, ВЮП со лженаукой и ССВ с ватно-анальным цирком.

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

Курс мы выложили не на Ulearn, а на Степике — для большего охвата. Тогда ещё непонятно на сто процентов было, нужна ли на самом деле Контуру действительно своя своя собственная MOOC-платформа. Все-таки ее разработка и поддержка затребовала изрядных времени и сил. А тут аналог, уже готовых, с интерфейсом приятным, с аналитикой, с налаженным маркетингом… может, лучше не пилить свой велосипед, а интегрироваться?

Это кстати не такой очевидный вопрос, сейчас в целом тенденция отдавать все на аутсорс: все переедет в облако, сторонние сервисы мы купим, да и команду разработки упраздним, наймем контракторов — выгоднее, быстрее и лучше, когда все делают профессионалы! Как любая высокоэкспертная идея, натыкается на пределы в виде человеческой глупости. Реальный кейс у меня на работе был, нужна была простенькая система marketing automation: чтобы выбирать по тем или иным критериям сегмент пользователей и им отправлять рассылку. Наш lead of data platform говорил, что за шесть месяцев ее напишет.

Но таких решений — много, собственно, моя первая контора в Берлине тоже такое пилила (хотя automation в основном осуществлялся с технологией meat-in-the-middle, то есть трансляцию текстового описания сегмента от заказчика в набор настроек осуществляла условная Клава). И вот мы выбрали одно из них, обещающее интеграцию за три месяца. Ну, три — это меньше шести, да и потом, там же эксперты и профессионалы, так что мы заключили договор. В итоге все это тянулось год — и так до сих пор и не заработало нормально, то одно падает, то другое, и постоянно слышишь, что «вот это мы сделать не можем, потому что X не позволяет». Где-то в процессе выясняется, что там никакие не профессионалы, а шарашкина контора с двумя заказчиками: решение писалось для первого заказчика, мы стали вторым, и для нас они его эти самые девять месяцев подпиливали.

Поэтому выбор между «велосипедом или качественным сторонним решением, сделанным экспертами» в последнее время, с учетом общего для всего мира клоунством, подозрительно часто превращается в нечто другое: «сделать свое добротное, либо заплатить, подождать и потом еще потерпеть».

Это касается вообще всего: и персональных приложений, типа умного дома или вот текстового редактора, в котором я все эти лонгриды пишу, и сайд-проектов в бизнесе… А с Ulearn добавлялось еще и то, что у ПВЕ была масса всевозможных идеи о том, какие онлайн-активности можно вставить в курс, анки, конспекты… Автопроверка задач на шарпе была тоже его идеей, и лютым вином: она позволяла человеку запрогать что-то прямо на сайте, ничего не скачивая и не устанавливая, в результате минимизируя learning gap в этом месте. Такие штуки гораздо проще писать самому, а не интегрироваться со сторонним API, про который почти всегда выясняется, что вот именно та функциональность, которая тебе нужна — в нем отсутствует или не работает.

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

Конечно, сюжет бы сильно улучшила какая-нибудь жуткая история про горести интеграции со степиком, но, к сожалению для сюжета и к счастью для нас, никаких проблем не было. У них действительно был хороший API, обработка видосов у нас была автоматизирована, поэтому мы все через API залили, и потом так же автоматически сгенерировали основное «мясо» курса, слайды с видеороликами. А потом я дополнил их тестами уже вручную, через GUI на сайте.

Косты у этого решения были небольшими, поэтому я не сильно огорчился из-за отсутствия бенефитов. То есть в плане популярности мы получили, что хотели: на курс много народу — довольно продолжительное время это был самый большой курс на Степике в разделе гуманитарных наук. На Ulearn мы бы никогда не собрали такую толпу. Если бы у меня были какие-то KPI, связанные с количеством слушателей, то выход на Степик был бы оглушительным, потрясающим amazing success.

Но поскольку KPI у меня не было, и в любом случае я этот курс делал не за KPI, а за идею, для меня был главным другой вопрос: ну хорошо, народу много — но вот что это за народ?

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

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

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

Это было не совсем бесполезно. Я, например, получил хороший материал для нескольких лонгридов, например, «Молчание — золото» и «А ты кто такой?». Кроме того, я хорошо понял свое отношение к MOOC: они создают не образование, а иллюзию, будто человек получил образование; да, они могут принести пользу некоторым особым, тщательно отобранным людям, но как только они становятся именно M, то есть массовыми — начинается цирк. И еще я понял, что совершенно не хочу в этом цирке участвовать, и что педагогика — которая как раз и сводится к поиску методик, каким образом более-менее произвольно взятому человеку донести знание — это попросту не мое. Мне не интересно народное просвещение.

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

Кроме того, туда прекрасно войдут некоторые части из лонгридов: Trust the Science, Время и Тьма, и так далее. Это будет, конечно, уже не учебник, а трактат — и интеллектуальный памятник, а, может быть, и камень в фундаменте какого-нибудь анклава будущего. И назвать его нужно будет не иначе как Mysterium Xarxes, да.

Может быть, я заплачу кому-нибудь — так делают, нанимают писателей для сведения разнородных материалов вместе: это не то что баснословно дорого, но из своего кармана я это платить не буду, так что, если соберусь идти этим путем, то только через спонсора или crowdfinding. А может, и сам напишу все это в старости — темы, к счастью, вечные, так что можно и подождать.

--

--

Witness of singularity

Data scientist, software developer, tech-philosopher, singularist, misanthrope. Resident of Berlin. https://t.me/witnessesofsingularity