Pull to refresh
0
0
Van_Der_Lokken @Lokken

User

Send message
Дамы и господа! Предлагаю поиграть в угадайку. Ниже представлен код, который я попробовал выполнить на предоставленной автором виртуальной машине. Лишь один из вызовов операторов «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}()

Ответ
Вывод программы:

<function:477>
<function:477>  2
0
4
0
Интересный вопрос. Вообще, можно попытаться придумать грамматику, где не окажется разделителей операторов вовсе. Но дело это неблагодарное. Скажем, из грамматики языка 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 лучше нижеприведённого кода?

/* SomeInterface.h */

class SomeInterface {
public:
    static std::shared_ptr<SomeInterface> create();
    virtual ~SomeInterface() { }
    virtual someMethod() = 0;
};

/* SomeImplementation.h /*

class SomeImplementation : public SomeInterface {
public:
    SomeImplementation();
    virtual someMethod();
};

/* SomeImplementation.cpp /*

std::shared_ptr<SomeInterface> SomeInterface::create() {
    return std::make_shared<SomeImplementation>( );
}

Имо, Pimpl имеет существенный недостаток — при добавлении или изменении метода приходится менять код аж в 4-х местах: в двух заголовочных файлах и в двух файлах реализации. Очевидно, это здорово ухудшает сопровождаемость кода.

К тому же классы с идиомой Pimpl изначально обладают семантикой указателей из-за того, что конструктор копирования по-умолчанию вместо копирования осуществляет присваивание указателей. Такое поведение несвойственно классам в C++, поэтому в классах с Pimpl приходится писать пользовательский конструктор копирования.

В статье также ни слова не сказано о том, что Pimpl может позволить избавиться от виртуальных функций. Странно, так как обычно это расценивают как преимущество.
Если речь идёт о форматировании кода и об именовании переменных и методов, то я использую очень многие правила из WebKit Coding Style Guidelines. В исходниках WebKit'а хорошо видно, как эти правила улучшают удобочитаемость кода. А что касается правил использования языковых фишек, то тут я руководствуюсь только собственным опытом и здравым смыслом.
Я ещё не слишком знаком со стандартом C++0x, но мне кажется, что вы просто написали урезанную версию std::future. Разве что там вычисление асинхронное.
Ага :( Шестерёнка-сюрикен смотрится как-то совсем уж безрадостно. Лучше бы они сделали поддержку тем для собственного интерфейса вместо этой неудачной перерисовки.
Я буду крайне признателен, если вы сможете поделиться ещё одним инвайтом
disciple.xar@gmail.com
Глубочайший респект автору статьи :)
Так забавно вышло, что именно сегодня, когда был опубликован этот топик, мне в учебном заведении рассказывали о потоках. И после прочтения этой статьи, я понял, что рассказывали ине там через пень колоду :)
Вне конкуренции, вестимо :)
Какой отвратительный грязно-серо-зелёный постпроцессинг... А эти поленоподобные модели, диавольски похожие на Oblivion... Всё это очень прискорбно. И если, в принципе, можно простить ужасно выглядящий взрыв гранаты вкупе с остальными графическими огрехами, то прощать переделанную до основания стилистику и геймплей нет никакого желания.
Судя по скриншотам и видеороликам, дизайнерам из Blizzard удалось нечто невероятное: игра, несмотря на всю её 3D-сущность, выглядит как нарисованная вручную! Не режут глаза ни торчащие полигоны, ни мутные текстуры. И, что самое классное, игра осталась такой же мрачной, как и предыдущие части... Когда же, когда же она наконец выйдет?! :)
Меня удивляют люди, у которых топик о цветной полоске на странице Гугла вызывает такой поток отрицательных эмоций.
Некоторое время анализировав переводчик Google, я написал жуткую фразу, смысл которой теряется при переводе напрочь.
Вот она:
За сим, чуть помешкав, я произнёс: "Бред сивой кобылы. Так скучно, что сдохнуть можно."

Результат перевода:
During the symposium, a little swings, I made: "Bred mares hilarious. Bored So that can be squashed."

А вот обратный перевод:
В ходе симпозиума, немного качели, я сделал: "Бред кобыл веселый. Bored Итак, что может быть подавления".

Мне кажется, комментарии тут излишни.

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity