среда, 20 февраля 2013 г.

Основные постулаты ООП - взгляд с другой стороны

Попалась тут намедни одна статья, в которой автор рьяно критикует основные постулаты ОО-парадигмы. Ну, по крайней мере, их воплощение и применение при программировании на Delphi. Я соглашусь с его первым тезисом о том, что формат комментариев слишком тесен для "развития темы", и отвечу полноценным постом. Так вот. До сего момента я полагал (возможно, наивно), что приобретя определенный опыт в программировании разработчик начинает понимать - зачем и для чего все эти концепции нужны. Ан, оказывается, нет. Поскольку мне по долгу службы со всеми этими концепциями приходится работать достаточно плотно, то возьму на себя смелость объяснить - что к чему. Начну, пожалуй, с конца.

понедельник, 12 марта 2012 г.

Вот и третий пошёл.

C++: Lambda formatting issues.:

In qt-creator/qt-creator.git:master


К сожалению, не удалось завершить ревью этого коммита к 29.02, по этому в релиз QtCreator 2.5 он, скорее всего, не попадёт.

    вторник, 21 февраля 2012 г.

    Второй - пошёл! Add support for C++11 range-based 'for' loops

    Второй коммит (поддержка range-based for loops) лёг в апстрим QtC.

    C++: Add support for C++11 range-based 'for' loops:

    In qt-creator/qt-creator.git:master


    А вот с лямбдами будет сложнее. Основной косяк в том, что автоформатирование для них не работает.

    понедельник, 20 февраля 2012 г.

    C++11 и light-weight парсеры

    Нда. Грамматика нового C++ стала настолько сложной, что lightweigh-парсерам с ней справиться становится всё сложнее и сложнее. Взять те же лямбды. Последовательно (без возвратов) анализируя поток токенов, получаемый от лексического анализатора, сложно (точнее, почти невозможно) надёжно отличить операцию индексирования от lambda introducer. Или тело lambda-функции от initializer list. Натолкнулся на это в процессе изучения исходников Qt Creator'а (той их части, которая отвечает за форматирование C++-текста). Форматтер опирается не на предварительно разобранную AST, а содержит в себе свою собственною стейт-машину, реализующую упрощённый вариант C++-грамматики, которая реагирует (в основном) на ключевые слова и знаки пунктуации/операций. Допилить её до состояния, чтобы нормально обрабатывались лямбды, списки инициализации (в аргументах методов) и т. п., но так, чтобы при этом не поломать уже имеющиеся кейсы - хорошая разминка для ума.

    среда, 1 февраля 2012 г.

    Qt Software / Параллельная компиляция Qt в Windows

    Полезная статья с харбра по поводу тонкостей параллельной сборки в Qt Creator.

    Qt Software / Параллельная компиляция Qt в Windows:
    Параллельная компиляция Qt-проектов под Windows с использованием QtCreator — зверь загадочный и очень привередливый. В этой небольшой статье я расскажу, как же все-таки его приручить. Параллельная компиляция может быть выполнена достаточно просто в теории, на практике дела обстоят не совсем гладко, чему в подтверждение бесконечное число тем на форумах, где предлагаются всевозможные решения. Ни одно из них, к сожалению, нам не помогло.


    Как я контрибьютил в Qt Creator

    Собственно, это наконец то свершилось. Мой фикс попал в апстрим Qt Creator'а:

    C++: Type deduction for auto-declared variables implemented:

    In qt-creator/qt-creator.git:master