Дамы и господа! Предлагаю поиграть в угадайку. Ниже представлен код, который я попробовал выполнить на предоставленной автором виртуальной машине. Лишь один из вызовов операторов «print» выводит число 4. Угадайте какой ;)
var double = function( value ) { return value * 2 }
print double 2
print double {2}
print( double 2 )
print double {2}[0]
print double {1 + 1}()
Интересный вопрос. Вообще, можно попытаться придумать грамматику, где не окажется разделителей операторов вовсе. Но дело это неблагодарное. Скажем, из грамматики языка C так просто убрать ';' не выйдет:
a = b; *c;
a = b *c // Получилось умножение
Нетрудно придумать и другие примеры. Так что это неудачный вариант. Есть другой — оставить в грамматике разделители операторов, но не требовать их в коде, как это сделано в Javascript (automatic semicolon insertion). Но в этом случае появляются неприятные побочные эффекты. Потому в том же Javascript почти всегда явно ставят ';' Ну и есть Python, где роль разделителей выполняют символы перевода строки. У меня есть некоторый опыт написания кода и на Javascript, и на Python и могу сказать, что старые-добрые точки запятой из C мне нравятся куда больше, чем альтернативные решения.
Кстати, в Windows 8 Javascript станет одним из официально-поддерживаемых языков разработки приложений в новом стиле Metro. Очевидно, что Microsoft видит будущее за JS и уж точно не будет способствовать продвижению альтернативных языков, вроде Dart.
Я создал в VirtualBox виртуальный диск и поставил на него Windows 8. А затем попробовал добавить этот VHD в менеджер загрузки реальной машины и загрузить систему таким образом. Не получилось. В самом начале загрузки возникает какой-то странный экран, где некая утилита «Восстановление запуска» пишет о том, что не находит загрузчик ОС.
Имо, Pimpl имеет существенный недостаток — при добавлении или изменении метода приходится менять код аж в 4-х местах: в двух заголовочных файлах и в двух файлах реализации. Очевидно, это здорово ухудшает сопровождаемость кода.
К тому же классы с идиомой Pimpl изначально обладают семантикой указателей из-за того, что конструктор копирования по-умолчанию вместо копирования осуществляет присваивание указателей. Такое поведение несвойственно классам в C++, поэтому в классах с Pimpl приходится писать пользовательский конструктор копирования.
В статье также ни слова не сказано о том, что Pimpl может позволить избавиться от виртуальных функций. Странно, так как обычно это расценивают как преимущество.
Если речь идёт о форматировании кода и об именовании переменных и методов, то я использую очень многие правила из WebKit Coding Style Guidelines. В исходниках WebKit'а хорошо видно, как эти правила улучшают удобочитаемость кода. А что касается правил использования языковых фишек, то тут я руководствуюсь только собственным опытом и здравым смыслом.
Я ещё не слишком знаком со стандартом C++0x, но мне кажется, что вы просто написали урезанную версию std::future. Разве что там вычисление асинхронное.
Ага :( Шестерёнка-сюрикен смотрится как-то совсем уж безрадостно. Лучше бы они сделали поддержку тем для собственного интерфейса вместо этой неудачной перерисовки.
Глубочайший респект автору статьи :)
Так забавно вышло, что именно сегодня, когда был опубликован этот топик, мне в учебном заведении рассказывали о потоках. И после прочтения этой статьи, я понял, что рассказывали ине там через пень колоду :)
Какой отвратительный грязно-серо-зелёный постпроцессинг... А эти поленоподобные модели, диавольски похожие на Oblivion... Всё это очень прискорбно. И если, в принципе, можно простить ужасно выглядящий взрыв гранаты вкупе с остальными графическими огрехами, то прощать переделанную до основания стилистику и геймплей нет никакого желания.
Судя по скриншотам и видеороликам, дизайнерам из Blizzard удалось нечто невероятное: игра, несмотря на всю её 3D-сущность, выглядит как нарисованная вручную! Не режут глаза ни торчащие полигоны, ни мутные текстуры. И, что самое классное, игра осталась такой же мрачной, как и предыдущие части... Когда же, когда же она наконец выйдет?! :)
Некоторое время анализировав переводчик Google, я написал жуткую фразу, смысл которой теряется при переводе напрочь.
Вот она:
За сим, чуть помешкав, я произнёс: "Бред сивой кобылы. Так скучно, что сдохнуть можно."
Результат перевода:
During the symposium, a little swings, I made: "Bred mares hilarious. Bored So that can be squashed."
А вот обратный перевод:
В ходе симпозиума, немного качели, я сделал: "Бред кобыл веселый. Bored Итак, что может быть подавления".
a = b; *c;
a = b *c // Получилось умножение
Нетрудно придумать и другие примеры. Так что это неудачный вариант. Есть другой — оставить в грамматике разделители операторов, но не требовать их в коде, как это сделано в Javascript (automatic semicolon insertion). Но в этом случае появляются неприятные побочные эффекты. Потому в том же Javascript почти всегда явно ставят ';' Ну и есть Python, где роль разделителей выполняют символы перевода строки. У меня есть некоторый опыт написания кода и на Javascript, и на Python и могу сказать, что старые-добрые точки запятой из C мне нравятся куда больше, чем альтернативные решения.
Я создал в VirtualBox виртуальный диск и поставил на него Windows 8. А затем попробовал добавить этот VHD в менеджер загрузки реальной машины и загрузить систему таким образом. Не получилось. В самом начале загрузки возникает какой-то странный экран, где некая утилита «Восстановление запуска» пишет о том, что не находит загрузчик ОС.
Имо, Pimpl имеет существенный недостаток — при добавлении или изменении метода приходится менять код аж в 4-х местах: в двух заголовочных файлах и в двух файлах реализации. Очевидно, это здорово ухудшает сопровождаемость кода.
К тому же классы с идиомой Pimpl изначально обладают семантикой указателей из-за того, что конструктор копирования по-умолчанию вместо копирования осуществляет присваивание указателей. Такое поведение несвойственно классам в C++, поэтому в классах с Pimpl приходится писать пользовательский конструктор копирования.
В статье также ни слова не сказано о том, что Pimpl может позволить избавиться от виртуальных функций. Странно, так как обычно это расценивают как преимущество.
disciple.xar@gmail.com
Так забавно вышло, что именно сегодня, когда был опубликован этот топик, мне в учебном заведении рассказывали о потоках. И после прочтения этой статьи, я понял, что рассказывали ине там через пень колоду :)
Вот она:
За сим, чуть помешкав, я произнёс: "Бред сивой кобылы. Так скучно, что сдохнуть можно."
Результат перевода:
During the symposium, a little swings, I made: "Bred mares hilarious. Bored So that can be squashed."
А вот обратный перевод:
В ходе симпозиума, немного качели, я сделал: "Бред кобыл веселый. Bored Итак, что может быть подавления".
Мне кажется, комментарии тут излишни.