Облачная псевдодемократия

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

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

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

Вообще, технологической реализации уделено преступно мало внимания. Даже не раскрывается смысл слова «облачная» — а может быть, авторы просто ввернули очередной buzzword. Во всяком случае, точно так же подошли бы слова типа «электронная» или «сетевая» (последнее, наверное, наиболее качественно описывает предлагаемую систему — «сеть» можно понимать и как Интернет, и как «социальную сеть» с делегированием избирательных прав). На паре страничек описывается, что такое электронная подпись, упоминаются цифр Цезаря и RSA — и на этом все технологические моменты заканчиваются. Хотя нет, вру. Кроме этого в одном из абзацев утверждается, что все компоненты для организации такой избирательной системы уже существуют и достаточно увязать их вместе.

В общем, книжка посвящена в основном некоей «социальной утопии». О технических познаниях авторов можно догадаться хотя бы по утверждению о том, что одним из последствий этой утопии будет отказ от анонимности избирателей. Мне достаточно дотянуться до книжной полки, достать книжку Б. Шнайера «Прикладная криптография», открыть ее на странице 151 и ознакомиться с «классическими» требованиями к протоколу тайного голосования. Требований всего 6:

1. Участвовать в выборах могут только граждане, имеющие право голоса.
2. Каждый избиратель может голосовать только один раз.
3. Никто не может установить, за кого проголосовал каждый избиратель.
4. Никто не может сделать дубликат бюллетеня с волеизъявлением каждого избирателя.
5. Никто не может изменить результат голосования любого избирателя.
6. Каждый избиратель может проверить, что его бюллетень учтен при подведении итогов голосования.

«Никто» в данном случае включает и избирательную комиссию. Да, тут используется существенно более сложная криптография, чем описываемая Волковым электронная подпись — но она обеспечивает достаточную анонимность выборов. У того же Шнайера приводится довольно подробная библиография (по состоянию на середину 90-х) работ, в которых описываются схемы такого тайного голосования. Впрочем, о воинствующем дилетантизме Волкова в области криптографии уже написали все, кому не лень.

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

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

О ненужных вещах

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

http://belnetmon.livejournal.com/2097200.html
http://nicka-startcev.livejournal.com/1942274.html

На это хочется ответить притчей. У троих человек спросили, что они делают. Первый ответил — «Кладу кирпичи», второй — «Работаю, чтобы кормить семью», а третий — «Строю храм». Любую человеческую деятельность можно понимать по-разному. Можно ограничиться только какими-то механическими навыками, «практикой». Можно подняться на более высокий уровень — «почему надо делать именно так». В общем, как в том анекдоте про телемастера, который брал 20 копеек за то, что ткнул паяльником в нужном месте, и 20 рублей — за то, что знал, куда ткнуть.

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

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

Чуров позавидует

На днях завершились «выборы в Координационный совет оппозиции». Само по себе событие малоинтересное, но очень показательное в плане того, что собой представляет эта так называемая «оппозиция». Начну с краткой предистории вопроса. Зимой 2011-2012 года оформилось некое «протестное движение» — видимо, действительно совершенно спонтанное. Московские хипстеры с самыми лучшими намерениями нацепили белые ленточки, начали регулярно ходить на всевозможные митинги, научились рисовать гауссиану и не верить Чурову. В принципе, тут надо радоваться — хоть у какой-то «социальной группы» в России материальные потребности удовлетворены настолько, что ее представители ходят на митинги не с целью потребовать выплатить в сентябре зарплату за январь, а ради совершенно абстрактных «честных выборов» или даже — для тусовки с себе подобными «позитивными людьми».

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

В истории есть немало прецедентов того, как даже во времена самого дикого и мрачного средневековья люди доверяли принципу Vox populi — vox dei. В принципе, «всенародное» голосование (в кавычках, потому что «всенародность» в разные времена понималась по-разному — и в силу чисто технических причин, и в силу тогдашних «понятий») — это прекрасный способ «легализовать» любую, так сказать, «власть». Представим себе какой-нибудь Люксембург со статысячным населением. Жители Люксембурга только что свергли страшного диктатора и теперь решают, как им жить дальше. Всякие «Временные правительства», «Переходные национальные советы» и прочие «Оргкомитеты» потому и называются «временными» и «переходными», что итогом их деятельности должен стать созыв Учредительного собрания, выборы Боярской думы, всенародное голосование, или какой-нибудь еще жуткий бардак, в результате которого и будет выбрано «постоянное» руководство. В нашем Люксембурге решили провести «всенародные» выборы — да еще и в электронном виде, по самой последней моде.

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

Для начала, перед проведением выборов формируется какой-то орган, который будет отвечать за их организацию. Желательна его независимость от «избираемых» — иначе все имеет шанс превратиться в «важно не как проголосуют, а как подсчитают». Российская ЦИК, например, организована в соответствии с этим принципом — по 5 членов комиссии назначают президент, Дума и Совет Федерации, при этом решения ЦИК принимаются голосованием ее членов. Члены Комиссии не подотчетны выдвинувшим их органам, а ее полномочия в сфере ее компетенции независимы от других органов власти. В общем, все очень красиво, в духе идеалистических представлений о «демократии» образца 1993 года.

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

Да, организаторы вначале ответили на вопрос «Что будет, если на выборы в координационный совет выдвинется Василий Якеменко? Света Курицына? Максим «Тесак» Марцинкевич? Владимир Путин?» так — «Ничего не будет: выдвинется и примет участие в выборах,» — а затем отказали тому же Марцинкевичу в регистрации, ссылаясь на то, что он якобы «не разделяет ценности протестного движения» (то бишь не очень фанатеет от Навального). Случай этот не единичный, более того, в ход регистрации несколько раз вмешивался «Оргкомитет» (например, в решении ЦВК №50 это упоминается в явном виде). В общем, получается примерно как в байке про матроса Железняка и Учредительное собрание — «Караул устал!» Вместо того, чтобы позволить избирателям решить, кто из кандидатов разделяет ценности «протестного движения», а кто — нет, ЦВК на пару с Оргкомитетом сделали удобный для себя список кандидатов. От такого поведения избирательной комиссии недалеко и до исправления результатов голосования.

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

Возникает довольно много вопросов по технической части. Во-первых, что же за DDoS вызвал сбой системы? По-моему, сейчас этими волшебными четырьмя буквами обозначают любые проблемы с «оппозиционными» сайтами. Да даже если он и был — вся система изначально должна строиться с учетом этой возможности. Заказать маленький DDoS, «кладущий» почти любой ресурс, стоит сегодня настолько мало, что доступно любому сетевому хулигану. Не надо искать тут «руку Кремля» — есть же и активисты движения «Наши», и «сочувствующие», и просто хулиганы — причем чем дальше по списку, тем вероятнее, что кто-то решит испортить эти «выборы». Во-вторых, голосовалка в принципе не защищена от злоупотреблений со стороны организаторов. Кое-кто, обнаружив расхождения опубликованных ЦВК материалов со своими представлениями о статистике, даже утверждает, что таковые гарантированно были.

Кстати, очень интересна ситуация с пресловутыми МММщиками. Говорят, что из итогового протокола вычистили лишь тех из них, кто голосовал «неправильно» с точки зрения организаторов, таковых набралось около 9 тысяч. Голоса еще 9 тысяч в итогоговый протокол вошли — видимо, по критерию «правильности» голосования.

Согласитесь, что довольно забавно выглядит движение, начавшее с требования честных выборов и закончившее вот таким «честным» голосованием. А еще забавнее — итоги первого дня деятельности свежеизбранного Координационного совета. «Оргкомитет», в полном составе вошедший в Координационный совет, в «экстренном порядке» принял заявление по поводу Развозжаева. Как пишет Навальный, «Считаем это заявлением КС, принятым в обход регламента, в связи с временным отсутствием такового.» Блеск! Нет, даже «проклятые едросы» не опускались до такого и ни разу не делали заявлений от имени Госдумы — даже несмотря на то, что их партия составляет большинство. Запомните список этих фамилий:

Ашурков, Пархоменко, Албуров, Немцов, Пионтковский, Каспаров, Кашин, Соболь, Навальный, Наганов, Чирикова, Дзядко, Крылов, Гаскаров, Лазарева, Собчак, Тор, Романова, Шац, Полчаев, Илларионов, Давидис, Винокуров, Пивоваров, Мирзоев, Константинов, Быков, Яшин, Николаев, Аитова, Гельфанд, Бондарик, Адагамов

Эти люди уже во второй раз говорят «от лица всей оппозиции«, не имея на то никакого права. Интересно будет посмотреть на этот «совет» дней этак через 100. Если он не усохнет до размеров вот этого «Оргкомитета» — то я очень сильно удивлюсь.

Про теологию

Почитал тут гневные отзывы на то, что в МИФИ открыли кафедру теологии. Удивляет беспомощность аргументации в духе «теология — не наука».

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

Для оживления научного диспута :) ставлю баттл лошадки (бутылку White Horse) тому, кто приведет первый аргумент за математику или против теологии, который нельзя было бы «развернуть в обратную сторону».

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

Про историю матклассов

Вот, собственно, ссылочка про то, как из чисто «средне-специального» образования по специальности «оператор ЭВМ» сделали матклассы:

http://www.polit.ru/article/2010/09/29/matheducation/

Цитирую:

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

Что такое «образовательные стандарты»

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

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

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

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

Теперь — непосредственно «специальные дисциплины». Для рассматриваемой 220400 это будут: структуры и алгоритмы обработки данных, функциональное и логическое программирование, объектно-ориентированное программирование, теория языков программирования и методы трансляции, теория вычислительных процессов, архитектура вычислительных систем, технология разработки программного обеспечения и человеко-машинное взаимодействие.

Все это можно разбить где-то на 40 «семестровых», по 150-200 часов, «курсов» (собственно, трехсеместровые тут только физра и матан, да и тот, по-хорошему, нужно сократить до «левого предмета уровня МИСиСа» в один-два семестра). Набор курсов достаточно адекватный и в принципе, покрывает всякие «что должен знать программист 6 разряда» — но заметно шире этих списков, прежде всего, благодаря «гуманитарным» и «общеинженерным» дисциплинам. Тут я согласен с [info]ailev, который объявил «computer science» лишь одной четвертой частью «верхнего образования инженеров-программистов«.

Впрочем, реальность куда хуже — отечественные «инженеры-программисты» с дипломом по специальности обычно ничего выдающегося из себя не представляют, а их «багаж знаний» ограничивается PHP+Delphi. Но я берусь изобразить некое подобие рабочего плана по специальности 220400, которое, надеюсь, покажется читателю вполне адекватным, а кто-то — чем черт не шутит — решит опробовать его в действительности :).

Итак, первый семестр. Включим в него следующие предметы:

— матан (стандартный вузовский курс, тут ничего нового за последние 100 лет не придумано)
— алгебра и геометрия (всякие уравнения прямой и плоскости, линейные и аффинные преобразования — в общем, математический минимум для геймдева)
— иностранный язык (английский, пусть даже в духе «говорить вам не с кем, а читать со словарем научим»)
— физра (куда ж без нее?)
— программирование на языке высокого уровня (рискну предложить «порезанную на части» SICP — первую-третью главы с кусочком пятой, о регистровых машинах)

В этом семестре ничего удивительного, матан должен будет «выстрелить» в следующем, при оценке сложности алгоритмов, а линейная алгебра позволит нормально поговорить об одном из наиболее интересных циклов задач из второй главы SICP. «Вводный курс» на основе MIT-овского учебника, кроме того, поставит в равное положении как «нулевого школьника», так и «самоучку» с «ПТУшником», учившихся по программе ребе [info]theiced :)

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

В каждом из «компьютерных» предметов вводим новые языки программирования. От Scheme и нескольких DSL на ее основе в первом семестре — к, скажем, Паскалю в курсе алгоритмов и VHDL — в практических работах по «организации ЭВМ».

Те же тенденции продолжим и в третьем семестре, добавив, скажем Matlab и C:
— матан-3 (на этом закончим)
— вычислительная математика (с «практикумом» — то есть действительно «вычислительная»)
— английский (да и его пора «убрать»)
— безопасность жизнедеятельности (надо же с ней когда-то разделаться?)
— физра
— операционные системы (разработка и реализация — короче, книжка Таненбаума, See MIPS run Linux и что-то подобное)

«Разрабатывать и реализовывать» ОС предлагаю на тех же процессорах, которые лепили в прошлом семестре — и неоднократно помянутый MIPS для обеих задач вполне подходит.

В четвертом семестре предлагаю все же вспомнить, что математика — это отнюдь не «наше все». Например, сделаем так:
— философия (с упором на «прикладную философию» — то есть онтологию и теорию познания)
— математическая логика и теория алгоритмов (всякие машины Тьюринга, лямбда-исчисление и т. п.)
— физра (на этом все)
— технология разработки ПО (прежде всего методологии — разнообразные RUP, SCRUM, Getting Real и прочие buzzwords, ГОСТы 19 и 34)
— функциональное и логическое программирование (остатки SICP, PAIP Питера Норвига и прочие классические учебники по AI)
— правоведение (как источник «знаний» для логического программирования, и для галочки :) )

Наконец появляются «инженерные» дисциплины. Технология разработки ПО — прежде всего методологии и best practices, без описания конкретных инструментов. Предполагается, что с системами контроля версий «вживую» студенты уже познакомились.

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

«Программирования» тут, как такового, нет — хотя никто не мешает, скажем, изучать TCP/IP на примере работающего стека из какой-нибудь ОС.

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

Здесь вспоминаем «прикладную философию» из четвертого семестра. «Программирование» вытаскиваем в курс машинной графики.

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

«Программирование» здесь превращается в «производство средств производства» — но Dragon book прочитать когда-то все же надо.

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

В общем, с некоторой степенью убедительности показано, что программу по «программистской» специальности можно разложить на восемь семестров (норма для так называемого «бакалавриата»), причем с некоторой степенью взаимоувязанности между предметами. Естественно, что это не гарантирует какого-то «качества» выпускников — можно же все свести к PHP+Delphi, как и делается в отечественных ВУЗах. Правда, некое представление об «идеальном» содержании курсов я попытался дать в скобочках — в виде указаний на книжки, например.

Теперь — о том, как этот «курс» соотносится, скажем с «все, что должен знать программист» за авторством [info]sharpc, или с программой [info]ailev, или же с программой [info]theiced.

Из первого списка он, в идеале, должен в достаточной степени полно покрывать пункты 2, 3, 4, 5, 6, 7, 8, 9, частично 10, 11, 12, 13, 14 — хотя бы на уровне понимания «что к чему», 15, 16, 19, 23, 25, 26, 28, 31, 33. Пункты типа 18, 20, 21 должны осваиваться за счет «жестких» требований к коду во время обучения. Грубо говоря, если код нечитаем, то практическое задание не принимается. Кроме того, в «нашем» курсе есть гуманитарные и «общеинженерные» дисциплины — от философии (которую я рассматриваю как почти прикладную науку) до основ управления производством. Инженер-программист (в отличие от ПТУшника, то есть техника-программиста) должен не только уметь «кодить», но и более глубоко понимать процесс разработки ПО в его «гуманитарных» аспектах (так как может выполнять и «организационные» работы).

Программа [info]ailev, наоборот, явно шире в «гуманитарной» части — от «грунтовки мозга», включающей лингвистику и формальную семантику «в объеме, чтобы свободно читать теоретические статьи по computer science» до «инженерных компетенций» с «инженерным менеджментом» — последние в «нашем» курсе сведены до семестровых курсов экономики, технологий разработки ПО, организации и планирования производства и человеко-машинного взаимодействия. И наоборот, computer science у нас довольно много, вплоть до каких-то безнадежно узких (но традиционных для CS) областей, типа ОС или компиляторов.

У [info]theiced наблюдаем тот же недостаток, что и у [info]sharpc — отсутствие «общеинженерных» дисциплин, плюс — повышенное внимание к таким вещам, как разнообразные конкретные инструменты. Еще из недостатков, с моей точки зрения — явная изначальная ориентированность на императивное программирование. Да, на практике оно используется куда чаще, но черт его знает, что там случится через 5 лет — так что ставить функциональщину в положение редкой экзотики определенно не надо. Другое достоинство айседовской программы — огромное количество «производственной практики» — но и готовить он предлагает не инженеров, а «адовых метаклассов» — то есть скорее техников-программистов 6 разряда :)

Пара замечаний «общего» характера — курс «функционального и логического программирования» нельзя подменять изучением Prolog, а курсы типа «архитектура вычислительных систем» должны давать навыки построения этих архитектур, а не перечислять умные слова из описания специальности. К сожалению, описание специальности настолько расплывчато, что на него в наших родных ВУЗах натягивают «изучение Delphi и курсовые на Excel» — но одновременно эта «расплывчатость» превращается в возможность запихнуть туда реально качественный курс, пусть даже и компромиссный по отношению к предложениям [info]sharpc и [info]ailev.

Кстати, так называемые «матшколы» в свое время легализовались именно благодаря такой «расплывчатости формулировок». Во времена Никиты Сергеевича Хрущева считалось, что выпускник общеобразовательной школы должен получить какую-то полезную в народном хозяйстве специальность. Специальность же «оператор ЭВМ» позволяла вставить в учебный процесс мощнейшую математическую подготовку (говоря словами [info]ailev, это «совершенствование«, доводимое почти до абсурда). В «навек родной писсят седьмой» от этой древней инициативы остался атавизм в виде «проекта» по информатике, сдаваемого в конце десятого класса. Это обычно довольно большая программа — типа IDE для Лого-подобного языка программирования или программы для игры в шашки с интерфейсом на OpenGL.

В общем, отвечая на вынесенный в заголовок вопрос, можно констатировать, что сами по себе существующие «образовательные стандарты» в области подготовки программистов вполне адекватны, и такое развлечение многих ЖЖ-юзеров, как составление «учебных планов» для мега-программистов, в целом лишено смысла — разве что позволяет понять, нужно ли автору высшее образование или же он пять лет протирал штаны в институте и мечтал о ПТУ :) Проблема же существования выпускников ВУЗов, владеющих исключительно PHP и Delphi, возникает не из-за учебных планов самих по себе, а из-за их реализации конкретными учебными заведениями.

Программист = ПТУшник

Наткнулся на обсуждение очередной программы «высшего программистского образования», предложенной белорусским раввинатом.

http://belnetmon.livejournal.com/2097200.html
http://theiced.livejournal.com/199711.html

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

Вниманию криптографов-любителей

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

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

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

Мы хотим на предстоящей неделе сделать следующее:
1. Опубликовать детальное описание архитектуры системы. Как расставлено оборудование, что с чем и как по каким протоколам взаимодействует, что где как шифруется и хэшируется, у кого на что какие права розданы.
2. Опубликовать исходный код системы.
3. В пятницу, 19 октября, после окончания регистрации, но до начала голосования, опубликовать списки избирателей — то есть, собственно, пресловутые хэши. В том числе, с указанием времени регистрации, статуса верификации (да/нет), способа верификации. Соответственно, по этому списку можно будет восстановить и сверить с ранее публиковавшимися данными всю динамику процесса регистрации. Заранее опубликованный список избирателей гарантирует, в частности, от подозрений/обвинений во включении в список «мертвых душ» в день голосования — для этого и нужна была, собственно, предварительная регистрация. Каждый избиратель сможет найти себя в списке избирателей, и еще раз проверить свой статус.
4. Опубликовать полные протоколы прошедших голосований (по дебатам, по конкурсам эссе) — естественно, в формате <хэш, результаты голосования>, это позволит, среди прочего, восстановить всю картину происходившего: какие избиратели голосовали по дебатам, как повлияли дебаты на их выбор, какая аудитория была охвачена дебатами. Каждый избиратель сможет проверить, что его голос во всех этих голосования был правильно учтен.
5. В дни голосования публиковать поступающие результаты в режиме онлайн, то есть выкладывать каждый кортеж вида <хэш, результаты голосования> непосредственно в момент голосования. При этом, чтобы не раскрывать результаты голосования до завершения голосования, ко всем строкам с результатами голосования будем просто применять одну и ту же перестановку, ключ этой перестановки будет заранее (скажем, в запечатанных конвертах) выдан представителям всех политических движений, участвующих в выборах. Таким образом, будет полностью исключена возможность внесения каких-либо изменений в результаты голосования задним числом.
6. По итогам голосования, естественно, опубликовать полную таблицу результатов, с возможностью для каждого избирателя проверить, правильно ли был учтен его голос.

http://leonwolf.livejournal.com/442561.html

Криптографы-любители (и не только) уже готовятся опубликовать по итогам голосования полную таблицу результатов: кто (ФИО) за кого (ФИО) голосовал, где проживает, и какова девичья фамилия матери.

Про управление проектами

Довольно интересная статья о том, что на самом деле советская школа управления проектами самая сильная в мире:

http://projectprofy.ru/articles.phtml?aid=443

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

Например, когда я краем глаза взглянул на «методики» прогнозирования в так называемом «маркетинге», которые на полном серьезе применяются сейчас, в начале XXI века, то, как принято говорить, испытал некий когнитивный диссонанс. Одна часть сознания вспоминала о курсе «Оптимального управления», принципе максимума Понтрягина, линейном программировании, Нобелевской премии Канторовича и других высоконаучных вещах. Другая отказывалась воспринимать громадную экселевскую простыню с цифрами, в которой путем манипуляции буквально двумя-тремя коэффициентами можно было изобразить сколь угодно красивые графики захвата доли рынка, многомиллиардных прибылей и даже картину маслом с разорившимися конкурентами, просящими подаяния в электричках Казанского направления. Коэффициенты соответствовали попросту желаемой доле рынка в недалеком будущем. Никто не мешал влепить себе 20, 30, 50% — безо всякого обоснования, просто «шоб было красиво». Таблица очень напоминала описание из замечательного юмористического рассказа «Про кактусы и розы«:

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

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

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

Сектантство

Например, у нас «счетчики» «Городских проектов» посчитали сколько на Тверской машин, а сколько людей. Это произвело неизгладимое впечатление даже на самих «счетчиков», не говоря уже о С.С.Собянине. В результате на Тверской решили убрать парковку машин.

http://mymaster.livejournal.com/316616.html

После — значит, вследствие. Типичный ход мысли сектанта.

Для себя же я сделал эмпирический вывод — если на какой-то страничке в ЖЖ упоминаются фамилии Ликсутова, Каца, Блинкина или Вучика — то читать это не стоит.

К предыдущему

А что же говорил Альберт Гор (никакой он не Алан, кстати — но fact-checker’ов, не говоря уж о редакторах, в хипстерских СМИ не держат) на «технологической конференции в Остине»? Простой гуглеж по слова «al gore conference austin» выдает вот такую статейку:

http://www2.tbo.com/news/politics/2012/mar/13/gore-says-democracy-has-been-hacked-at-austin-conf-ar-368598/

Несмотря на слова об «our democracy», ключевые слова в разговоре Гора и Паркера — это «Arab Spring», недвусмысленно намекающие на то, для кого вся эта демократия предназначена. Не надо искать «деньги Госдепа» у отечественных ливаруцанеров. Они будут работать за идею, а направление работ достаточно только озвучить.

Шикарно

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

http://bg.ru/society/dal_vzjatku_zachekinsja-15063/

Шикарно здесь абсолютно все.

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

Именно так и выглядят «действия в интересах США». «Мне показалось, что это прекрасный повод» — и все. Никаких тебе агентов ЦРУ, никаких шпионов по подворотням — просто маленький намек на «технологической конференции в Остине» — и даже если один-единственный присутствующий из развивающихся стран сделает все правильно, то Ал Гор на конференцию приехал не зря.

Авторы здорово понимают, что такое анонимность:

Это вопрос анонимности — нельзя, например, сообщать о взятках по СМС, потому что тогда будет известен твой номер. Сообщить о взятке через сайт тоже нельзя, потому что страницу могут сломать, и тогда пойдет поток псевдовзяток. Естественно, мы сделаем приложение для Android и Nokia, но первым сделали для AppStore.

Или даже так:

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

Вспоминая недавнее разоблачение голосовалки в «Координационный совет оппозиции» — ой как я в этом сомневаюсь.

Не уверены в достоверности сведений:

Естественно, мы все модерируем. Взятки публикуются через 24 часа. С одного телефона нельзя отправить больше определенного количества взяток в день. Как только появится первоначальное распределение размера взяток, мы будем удалять все взятки, которые по размеру значительно отличаются от среднего. Но все равно мы никогда не сможем сказать, что все сообщения — это стопроцентная правда.

Кстати, как «персональные данные сразу удаляются» можно сочетать с «с одного телефона нельзя отправить больше определенного количества взяток в день»? Но вы не рефлексируйте, вы распространяйте:

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

И цели у аффтаров заслуживают внимания:

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

А вы еще что-то говорите про «индекс восприятия коррупции» с положительной обратной связью :)

Ищут дизайнера

Для работы в дизайн-студию slava’saakyan требуется инициативный конструктор, имеющий желание создавать новые, современные конструкции. Нужен опыт разработки и постройки интерьеров вагонов. Реализованные проекты при собеседовании обязательны.
Задача — разработка конструкции интерьера плацкартного, купейного и общего вагона. Разработка фурнитуры. Создание рабочих 3D-моделей и выпуск чертежной документации.

http://bezdublya.livejournal.com/39598.html

А потом мы удивляемся, почему пассажирские перевозки убыточны, а стоимость билета надо поднять в полтора раза.

Москва и грузовики

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

Для очистки мозга предлагаю ответить на простой вопрос в духе книжки «Секреты собеседований в Силиконовой Долине», или типа того: сколько грузовиков ежедневно въезжает в Москву? Простые прикидки показывают, что для фур счет идет на десятки тысяч. Пятитонные грузовики? Умножаем на четыре. «Газели» — еще на четыре. Что лучше? 16 «Газелей» или одна фура?

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

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