Как стать автором
Обновить
15
0

Пользователь

Отправить сообщение
Псевдо-исключения, коды возврата и try/catch — это какая-то каша. И вообще, скриптовый язык с кодами возврата — это жуть. Вы-же LLVM используете. Не смогли выяснить как там генерировать код выбрасывающий и ловящий исключения? К тому же для x86-64 существует ABI стандарт, строго определяющий бинарный интерфейс для исключений. Убедите меня, что ваш язык лучше Python-а. В питоне есть исключения (и лямбды, и ещё чего всякого), а у вас нет.
Вот что значит отсутсвие исключений. Практически каждая строчка кода теперь должна оборачиваться в try.
> Имена переменных в Обероне — не «бесплатны»

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

> Во вторых, следует учитывать железо, на котором Вирт начинал программировать, его ограничение по памяти

Кто нибудь, отберите уже у Вирта его старый ZX Spectrum и подарите ему нормальную машину, чтобы он перестал паниковать, когда его программа выходит за предел 48K.
Больше 1000 контрибьюторов! (по ссылке)
> нашел на 100к строк 1 реальную проблему и 2 мелочевки

Что-то маловато будет. За те немаленькие деньги, что они просят за анализатор эффективность должна быть повыше, чем одна проблема на 100K кода.
Галопом по европам, IMHO. За 9 лекций нельзя изучить C++, и особенно в таком объёме с паттернами, Boost-ом и template metaprogramming. Поэтому практическая полезность этих лекций вызывает у меня сомнение.
Как видно, топовые процессор и видео карта совсем не нужны для DOOM 3 BFG. Вот здесь DOOM 3 BFG летает на Pentium 4 и примитивной карточке GT 210, выдавая 30-60 FPS (в среднем 40 FPS).
Вот это мне кажется шагом назад по сравнению с C++:

The amount of as_slice and to_string calls in my codebase is absurd.
В Rust отсутствуют исключения, и вместо них есть тип Result. Не значит ли это, что в любой мало-мальски сложной программе везде прийдётся писать try!(...) при вызове каждой функции, которая может завершиться с ошибкой?
Буквально пару дней назад отловил баг с этим паттерном:

    worker const & w = worker()
        .set_data(data_t{})
        .process()
        .send_result()
        .print_log();


Догадайтесь, где баг. Можно сказать, что автор (не я) сам себе злобный буратино. Однако, осадочек, как говорится, остался.
> В статье хотелось бы увидеть пример кода, который генерируется в результате разворачивания этого макроса.

Увы, пример кода, который генерируется в результате разворачивания этого макроса, в статью не поместится :).

А так пожалуйста, функция с тремя параметрами: pastebin.com/3ntTUfFr

Чтобы делать наследника от Frame, сам Frame должен быть реализован соответственно тому же самому паттерну:

public class FrameImpl<Derived> : Rectangle<Derived>
{
    Color _color;

    public Derived SetColor(Color color)
    {
        _color = color;
        return (Derived) this;
    }
}


Ну и потом:
class Frame : FrameImpl<Frame>
{ /* здесь пусто, кроме может быть конструкторов */ };


Как завещали наши прадеды в ATL 20 лет тому назад.
Бьярне рекомендует свою конкретную книгу: Programming: Principles and Practice Using C++. Она расчитана на студентов, которые начинают практически с нуля. Она сам по ней учит. Книгу очень легко читать. Многие другие учебники действительно кривые. Шилдт, между прочим, хороший пример кривого учебника.
Почему не нужен? swap неудобен, потому что обобщённая версия находится в namespace std. Из-за этого приходится писать:

using std::swap; swap(a, b); // a & b - два шаблонных типа

С оператором :=: можно будет просто:

a :=: b;
А в C++ мы делаем так:

auto rand_generator(unsigned seed)
{
    return [=]() mutable
    {
        seed = seed * 1103515245 + 12345;
        return ((seed / 0x10000) * seed) >> 16;
    };
}

int main()
{
    vector<unsigned> numbers;
    generate_n(back_inserter(numbers), 10, rand_generator(1337));
}
Очевидно, что парень перегнул палку. Он в Azure не многим более пол-года. Что за это время можно вообще понять, особенно, если тебе еще 22 года, и это первое место твоей работы?

На Reddit эту тему уже обсудили. Вот, например, что пишет один человек, который тоже работает в Azure: www.reddit.com/r/programming/comments/1g6p2x/working_at_microsoft/cahh3xy. Я с ним лично пересекался: толковый товарищ.
Software developer in test или просто SDET — это тоже developer, но разница в том, что он девелопит. SDET пишут код не для продукта, а для тестирования продукта. Этот код не является частью продукта, и поэтому можно легко представить себе такую ситуацию, как описал этот парень: какая разница, кто там что написал, и как криво это работает. Главное чтобы написанный тест соответствовал тест-плану. А остальное всем пофигу.

Но не будем забывать, что парень молод ещё. Опыта нет, многого не знает и не понимает. На Reddit и на Hacker News ему уже популярно объяснили, что он погорячился.
Каждый раз, когда я вижу на хабре статью с полезной информацией, сразу проматываю в конец. Потому что с вероятностью 90% это просто перевод. А в оригинале читать удобнее и быстрее. Было бы еще лучше, если бы ссылка на оригинал давалась сразу в начале.
Что за новая опция в настройках: «Экран, кнопки и жесть!»

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность