Лекция Александра Степанова “Наибольшая общая мера: последние 2500 лет”

aspectabilis, computerium, prophylaxis — sbos @ 10:57 pm

Сегодня в офисе Яндекса на Парке Культуры состоялась первая из двух лекций Александра Степанова. Называлась она “Наибольшая общая мера: последние 2500 лет”. Буду откровенен. Как и очень многие я шел на эту лекцию за пачкой чего-нибудь модного с тегами “C++, STL, мета-программирование, тамада, услуги”, чтобы меня научили в сто первый раз как !на самом деле! нужно писать программы, чтобы, во-первых, проблем в принципе не возникало, а, во-вторых, чтобы если и возникало, то исключительно на стадии компиляции, потому что там в нашей божественной обобщенной системе типов не проканало, и еще заодно показали бы, что аж древние вавилоняне знали про стратегии, а древние китайцы изобрели <boost/variant.hpp> за три тысячи лет до европейцев. Мне стыдно, но я шел именно за этим. Выдали же мне совсем другого и намного больше.

Я не стану пересказывать содержание лекции, потому что это все равно кто-нибудь сделает, да и сами слайды доступны тут на русском и на английском, хочу просто поделиться некоторыми, на мой взгляд важными, моментами. Один из центральных объектов лекции – очень простая вещь – алгоритм Евклида и его история на протяжении 2500 лет оказались далеко не такими простыми, какими кажутся на первый взгляд.

Почему первая “реализация” алгоритма была основана не на делении с остатком, а на вычитании? Почему у древних греков не было нуля? Почему два эти вопроса связаны? Почему они имеют значение? Зачем вообще вперся этот алгоритм Евклида? Действительно, не имея представлении об истории математики и причинно-следственных отношениях в череде важных открытий, трудно не только ответить и на эти, и на куда более сложные вопросы, но тяжело даже оценить значимость происходящего и вообще многое понять. И если эти вопросы кажутся вам простыми, то полистайте слайды, дальше будет не так просто. Интересная оптимизация алгоритма Евклида (уже того, который на делении), использующая четность/нечетность чисел, оказывается, работает не только для чисел. Для многочленов “четность” можно определить как наличие нуля в качестве корня, и все будет работать. Грязный хак оказался не таким уж хаком, а верно подмеченной деталью, поддающейся обобщению. Для комплексных чисел уже можно делить не на 2, а на (внезапно) 1 + i и неспроста! Потому что и 2, и 1 + i – это наименьшие простые числа! Дальше там еще предлагалось что-то для каких-то таинственных колец да пространств, я в этом не очень силен.

Степанов подчеркнул значение математической культуры в программировании, а также математическую природу программирования, кое-что поругал, кое-что похвалил. Интернет уже оброс, наверное, апокрифами по мотивам этой лекции, в которых авторы хихикают и в качестве мощных, привлекающих внимание эпиграфов приводят вырванные из контекста лекции цитаты вроде: “Алексадрэску – дрянь!!”. Да, Степанов говорил сегодня и такое. Но всё это имело, на мой взгляд, следующий смысл: Алексадрэску дрянь и вреден для тебя, если ты не понимаешь куда более глубинных, важных математических основ того самого обобщения, и не стоит читать Алексадрэску, если ты еще не прочел Эвклида. То есть, он так и сказал, даже еще мощнее – не стоит читать Кнута, если не читал Евклида. К концу лекции это утверждение уже не казалось мне таким уж безумным.

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

Помимо обобщений много было просто о науке в целом, её разобщении, цинизме в рядах молодежи по отношению ко многому. Да, цинизма в нас через край, но это иначе называется, просто постмодерн успел докатиться и до науки. Вот еще, что важно по-моему – про оторванность теории от практики. О том, что действительно реальные, физические, рабочие модели и высокие там теории должны материализоваться в чем-то едином. Началось это с разговора об указателях – надо ли давать знать о них программисту? Где проходит грань между здравой инкапсуляцией и ненужным сокрытием “машины”, приводящим к неэффективности, как, например, в паскале, где на указателях не определена операция сравнения? Это, на мой взгляд, сложный вопрос, хотя конкретно насчет указателей кто-то вспомнил про хеширование ссылок в java/clr.

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

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

Если вы дочитали до сюда, то вот вам отличная задача: дан многочлен f(x) с неотрицательными целыми коэффициентами, степень его неизвестна. Вы можете спрашивать, чему равно f(a), вам будут отвечать. За сколько вопросов вы точно узнаете все коэффициенты этого многочлена?

Сытные Пирожки

aspectabilis, computerium — sbos @ 11:30 pm

- Ыаэа… по всей видимости, вы – пони
(девочка с СП)

А тем временем меня взяли на СП. Ожидаемо, конечно, но всё равно очень полегчало. Теперь вот буду думать, чем там именно заниматься. Собственно, спецсеминар я уже почти наверняка выбрал Гринёва, но быть может меня переманят компиляторы, хотя вовсе и не компиляторы меня там интересуют, а пантовый баззворд заоблачные калькуляции, так в тему упомянутый на дне открытых дверей. Хотя заниматься ими вроде сейчас хотят ваще все, т.е. очень может быть, что не только на компиляторах, модно же. Sedna, прямо скажем, меня не очень интересует, семантический поиск интересует, но как-то это пока мутно у меня в голове, механические турки – это нахожу бесконечно гениальным, красивым и ваще. И вроде как именно для семантического поиска они их там юзают, то бишь анализируют википедию и собираются твиттер. А больше я ничего и не знаю, из того, что там творится. Сдать бы теперь сессию.

А вот кафедра Арбузных Семечек В Кулаке меня разочаровала еще в третьем семестре, когда я захаживал на ихние спецсемы. Был, правда, только на эволюционных алгоритмах, ЛВК, и компутерном зрении, но везде меня преследовало ощущение какой-то разлаженности, недопонимания (если доклад человека в лучшем случае на 40% википедия, а на остальные 60% непереведенный чужой доклад на английском) студентами своих же тем и т.п. Быть может, я не прав, смотрел мало или не туда, но ощущения сложились именно такие.

Пост этот (как и все остальные в этом публичном блоге) я пишу в основном для тех, кто попадает сюда из гугла (а таких немало, судя по g.analytics), так что имеет смысл, наверное, написать, как и что было в этом году. Кстати, самый крутой запрос, по которому сюда переходили – это “ВМК в чулках”. Итак, попадание на кафедры 3 потока. (more…)

PocketBook открыл исходники

computerium — sbos @ 9:45 pm

Значит, сабж. По ссылке можно ознакомиться с официальным сообщением на форуме linuxforum.ru. Уже появился проект на соурсфорже. Надо будет поковыряться

(Авто)погоны для last.fm

aspectabilis, computerium, musae — sbos @ 11:36 pm

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

Код для вставки выглядит так:

[url=http://ty-214.livejournal.com/226674.html]
[IMG]http://sbos.in/lastfmepaulet.php?user=ВАШЕ_ИМЯ_ЫАЫА[/IMG][/url]

Удачи мне завтра, послезавтра и послепослезавтра.

msu-cmc.org.ru

computerium — sbos @ 6:44 pm

Мы слили два наших форума и в новом семестре начнем варить там кашу. Потому что остальные вмкшные сайты или умерли или уже давно умерли, насколько я понял.

P.S. я ненавижу php. И ненавижу кривые исходники ipb. Пока разбирался как к ихнему поиску приделать свой поиск по тегам, чуть не убился и сваял свое недоразумение. Хачить чужие исходники === мяссооо

DPrint – тулза для человеческой многостраничной печати

aspectabilis, computerium — sbos @ 9:17 pm

Когда я открыл возможность печати нескольких страниц на листе, то был слегка разочарован. Если это делать стандартными средствами печати в винде, то нарезать полученное жутко неудобно. Кроме того, с недавнего времени дома появила двусторонний принтер. Разработчикам винды не пришло в голову то, что напротив мини-странички, допустим с нечетным номером, должна быть последующая с четным, если включен режим печати на обеих сторонах. Короче, меня это все жутко взбесило, поиск ничего нормального не дал, так что я написал свой костылеобразный велосипед “дэбылыческый print”, для буржуев – “DPrint”, для одногруппников – “шпоропечататель”.

Прога написана за неполный день, поэтому извините, если что не так. Я успешно ее протестил на садовничем. Кстати, опус “миниким” – полное гавно вплане качества компиляции, с помощью dprint’а можно сделать во-первых нормальный вариант с нужным вам размером, во-вторых двусторонний вариант.

Короче, если у кого-то такие же странные проблемы, какие встречаются на моем пути, то юзайте. Какое-то количество версий я еще выпущу, а потом забуду, ибо есть очень много дел важнее. Написано на C#, потому что не хватало еще разбираться как работать с native-печатаньем. Требует M$ .net Framework 2.0 или (Внимание!) прекрасно пашет под Mono. Траблы и т.д. можно кидать в камменты.

Скачать: DPrint 1.0.0.0 (исходники + бинарник).

Жестокий стеб над новичками в php

computerium — sbos @ 6:19 am

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

Однажды

computerium — sbos @ 11:24 pm

…я писал накрутчик к одному серф-сайту. Это было года два назад. Сейчас случайно набрел на сорсы, откомпилил и запустил.

Опция “reboot on critical error” появилась потому, что тогда у меня был ноут с внешней dlink’овской карточкой, и дрова катастрофически глючили, если винду не перезагружать более трех суток. Чтобы из-за этого не стопорилась работа клиента, пришлось добавить в прогу вызов unmanaged функции ExitWindows ;-) Больше никаких дополнительных настроек выносить в интерфейс мне не понадобилось..

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
(c) 2010 Фронтовые Двести | powered by WordPress with Barecity