пятница, 15 октября 2010 г.

Перевод стандарта: последние новости

Вот самая свежая информация.

Первое. Перевод полностью готов: написан (включая все запланированные приложения), отформатирован для печати, и все такое прочее. Больше 700 страниц текста формата А4. Более того, уже была договоренность с типографией о выпуске пробного тиража в 1000 экземпляров. И еще более того: была запланирована презентация книги на выставке CHIPEXPO в конце этого месяца...

Второе. Вся эта активность была в самый последний момент (вчера вечером) остановлена. Тиража не будет, не будет и презентации. Не спрашивайте, кто остановил и почему; скажем так: лица, уполномоченные принимать такие решения...

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

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

среда, 13 октября 2010 г.

Конференция "Разработка ПО 2010"

В пятницу 15 октября выступаю на конференции "Разработка ПО 2010". Вот сайт конференции. Мое выступление (если организаторы в очередной раз не изменят расписание :-)) в 11.15 в комнате С, в самой маленькой из имеющихся аудиторий. Я не в претензии: мой доклад "Семантические интерфейсы языков программирования" вряд ли вызовет большой приток публики. :-)

Вроде бы, туда можно прийти даже без регистрации, просто послушать. Надо только иметь с собой паспорт. Адрес (где-то в районе Курского вокзала) и полное расписание есть на указанном сайте. Кстати, в ту же пятницу, в 16.30 там выступает Страуструп: "Введение в С++0x".

(Это я рекламирую конференцию по просьбе организаторов. :-))

Новости (важные!) о выходе перевода Стандарта С++ последуют завтра.

воскресенье, 28 марта 2010 г.

Code Contracts в .NET и монополия C#

В последней (четвертой) версии .NET и, соответственно, в VS2010, появились средства спецификации параметров, пред- и постусловий, инвариантов классов и всего того, что с подачи Бертрана Майера называется Code Contracts или Design by Contract.

Вот пара ссылок:
- Объява из Микрософта;
- Список статей по теме.

Неутомимый и вездесущий Дино Эспозито уже, конечно, отозвался на это новшество несколькими постами:

- Assert/Assume
- Invariants
- Preconditions
- Postconditions

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

Многие интересующиеся об этом уже знают, но вот что интересно заметить. Возникает ощущение (и чем дальше, тем больше это ощущение крепнет), что Микрософт стремится втиснуть в .NET поддержку всего, что вообще есть в программировании. Начав с введения в виртуальную машину и MSIL нормальной системы типов и стековой модели выполнения, адекватной императивным языкам (и, естественно, отразив все это в базовом языке C#), они постепенно начали добавлять - и в систему, и в язык - все новые и новые возможности, иногда даже приниципиально отличающиеся от императивной парадигмы. Типовая параметризация, технология LINQ, динамическая типизация, теперь вот - контрактное программирование.

Каждое отдельное нововведение объясняется вполне понятными причинами: и обобщенное программирование нужно и полезно (кто спорит?), и работа с БД непосредственно из программ, и поддержка функциональной парадигмы ("функциональная мафия" из Кембриджского отделения Microsoft Research активность не снижает :-)), и динамическая типизация нужна, чтобы поддерживать скриптовые языки...

Принципиально важно в контексте моих рассуждений то, что все эти новшества получают свою поддержку в базовом языке. И вот в один прекрасный день обнаружится, что программировать под .NET имеет смысл только в этом базовом языке - в C# есть все, и это "все" адекватно поддерживается платформой .NET!

Наверное, я несколько сгущаю краски, и всегда останутся энтузиасты, предпочитающие и в .NET программировать на F#, Nemerle, Хаскелле, Питоне. Просто ниша для использования этих языков в рамках .NET сузится до совершенно микроскопических размеров.

Но вот как быть с такими промышленными языками, как Eiffel и Scala? С введением поддержки контрактного программирования C# практически полностью "покроет" почти все преимущества Эйфеля, а то немногое особенное, что еще есть в этом языке, вряд ли окажется причиной выбора этого языка для реальных проектов. И сейчас не очень понятно, какова популярность Эйфеля как такового (в индексе TIOBE он сильно ниже первых пятидесяти языков), а его присутствие в мире .NET кажется совершенно эфемерным...

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

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

"Пусть расцветает тысяча цветов" (или как это китайцы говорили)...

четверг, 7 января 2010 г.

Перевод Стандарта С++: финиш близок

В конце ноября появились сразу две очередные версии черновика стандарта (драфта): документы с номерами n2960 и n3000. Пришлось заново проходить весь перевод, вносить правки и переводить новые фрагменты.

С одной стороны, модификации в документах сделаны по-человечески: красным выделяются удаляемые фрагменты, зеленым - добавляемые. Удобно.

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

В чем существо модификаций:

- Разделы 14.10 и 14.11 о концептах удалены полностью. Также удалены все ссылки на него и на его подразделы, а эти ссылки были разбросаны по всему тексту.

- Раздел 5.1 (он превратился в подраздел 5.1.2) о лямбда-выражениях полностью переписан. Слава Богу, в нем появились примеры, так что самому не нужно теперь их придумывать (а уж собрался было). Однако, переводить пришлось все заново.

- Очень много мелких правок по всему тексту. Где опечатка исправлена, где уточнение сделано... Вносить их нетрудно, но все равно, занятие это на редкость занудное.

В общем, итог к настоящему моменту такой: перевод полностью готов, осталось сформировать приложения (ну, и предисловие написать :-)).

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

Зато будет несколько собственных приложений, и вот их-то я сейчас и готовлю. Очень коротко, что там будет:

- Сводка основных понятий/свойств языка: название (в оригинале и в переводе), его определение, ссылка на место в стандарте и, возможно, комментарий. В общем, "Краткий курс" С++ :-)

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

- Грамматика С++ в форме входного языка YACC/Bison. Разумеется, корректная (иначе и приложение из нее делать не стоило :-)), то есть, по ней Bison и некоторые известные его аналоги в состоянии сгенерировать правильный распознаватель. В грамматике, правда, сделаны кое-какие допущения (в чистом виде грамматика С++ в "бизонной" нотации непредставима), но что удивительно и замечательно, удалось свести эти допущения к совершенному минимуму. Технические подробности будут там же в комментариях.

Похожая грамматика С++ была в свое время опубликована в виде приложения к русскому переводу книги Ахо/Ульмана ("Dragon Book") - но здесь я целиком ее переписал, учтя все новые синтаксические конструкции.

- Пакет маленьких примеров программ на С++, иллюстрирующих наиболее характерные свойства языка. Пакет сделан на основе тестового набора, который используется в Интерстроне для тестирования нашего компилятора.

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

Вот как-то так... :-)

понедельник, 4 января 2010 г.

Заспамили...

Что-то за последнее время в блогспоте спам повалился просто невиданными темпами. Каждый день по нескольку идиотских "комментариев" появляется, зачастую к очень старым статьям. И ладно бы народ что-то рекламировал, свои фирмы или сервисы: "Разработка сайтов", например. Такое тоже есть, но удивительно, что такие сообщения не составляют большинства! Противно, конечно, когда твой блог используют для продвижения каких-то левых предложений - но я чувствую себя последним идиотом, обнаруживая в блоге такие, например, "комментарии":

"Хорошо пишете. Надеюсь, когда-нибудь увижу нечто подобное и на своем блоге…"

"Без особого преувеличения можно точно сказать, что пост тему раскрыл на все 100 процентов"

"Да уж… Тут как говорится: Амбар крепок, да углы худы"

"Так-так… надо будет присмотреться к этой области"

Вот скажите мне, какие цели преследуют авторы подобных текстов??? Какая им выгода от подобных сообщений? Никаких ссылок, линков и прочего в них нет, автор - "Анонимный". Зачем они пишут (или пускают "пишущих" роботов)?? Не понимаю...

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

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

А пока - всех с Новым годом!!!
(В России, вроде, еще каникулы, а у нас в Европах праздники кончились, настали рабочие будни...)