Вчера в кинотеатре посёлка Пало Альто ("Большое Палко") была встреча
избирателей энтузиастов с Бьярне Строуструпом, профессором из Техаса. Бьярне известен тем, что придумал язык си++, за что ему, конечно, мир благодарен.
Я там озирался затравленно, ни одной знакомой рожи. Ну ладно, Джон Калб. Ну в смысле и сильно потолстевший Степанов, конечно; но я имею в виду взаимно знакомых.
Своё выступление Бьярне начал с картинок про то, какие джавщики глупые, от них постоянно мусор, и кому-то приходится собирать. Кроме мусора в виде захваченной памяти, Бьярне помянул и другие ресурсы - коннекции, файлы, которые джавщики, а также начинающие сишники, не умеют правильно отдавать. Ну хм, у них же нет виртуальных деструкторов.
Вообще-то речь шла о С++11, и он показывал новые фичи, лямбды и что-то вроде имплиситов, можно прям написать 11hours+20minutes+40seconds и оно поймёт. Почти как на скале. Только у си своя магия (и меньше мусора). Довольно славно фьючерсы можно использовать - но можно прямо из лямбды менять полуглобальную переменную - если вам "так удобнее" (в смысле, если вы ничему не учились, или учились, но ничему не научились).
У меня разрядился лаптоп, и я сидел развесив уши. Радовался за прогресс си, и недоумевал, хм, лямбды есть, тайпклассы есть (почти), а где монады? Или потому что тайпклассов нет, так и функторы с монадами рано вводить?
В конце лекции я и спросил его, а что, вот у вас уже и лямбды и концепты, уже, может быть, пора вводить монады и cps, тем более, что лямбды-то уже есть. И тут Бьярне, не особо зацепившись за концепты (которые, говорят, не включены в стандарт), сообщил, что фп все лузеры, и "мы не знаем, почему фп провалилось"; тут же добавил, что на самом деле сишный народ не поймёт. Знакомые речи, Джош Блок тоже говорил, что джавщик не способен понять лямбды, поэтому лямбды не нать. Не треба. Музыка должна быть напевной (это товарищ Жданов говорил гражданину Шостаковичу и господину Прокофьеву).
Следующим вопросом было что-то про концепты, потом про лямбды... короче, собравшимся была пофиг эта вся ваша ручная оптимизация, закат солнца вручную, а хотелось чего-то уже из 21-го века.
Чёс языками как-то быстро закончился, и все стали расходиться. Я хотел было пойти к Степанову, он же всё-таки как бы алгебраист, и спросить, он-то что думает о ментальном застое в головах и о внедрении монад, но потом подумал, ну что я буду троллить прямо при живом Бьярне рядом; бог с ними.
Ну и тем более Джон Бруер и Стив Ганц тут же вертелись, и мы стали чесать языками про аппликативные функторы, потом пошли со Стивеном в Титайм пить Russian Caravan и вкушать cheese platter (пока мой компьютер заряжается).
Но главное я вынес. Вся эта дурь с delete[], buffer overflow, memory leaks, она вызвана тем, что монадические действия выполняются как будто у нас тут чистые функции. Вместо >>= употребляют ;
И, кстати, с джавой, наверное, та же проблема. Потому что и в джаве память пролить запросто, начинай всю хрень складывать в кеш, на который есть ссылка из статика, и всё пролито.

Он использовал ресурсы вне монадного контекста.