Мы с Vass записали и выложили первую серию второго сезона подкаста «Заметки о Qt».
Сам подкаст на rpod.ru — qt-notes.rpod.ru/284337.html
Теперь с конкурсом!
Читать полностью »
Рубрика «c++» - 248
Подкаст «Заметки о Qt» s02e01
2012-09-19 в 9:32, admin, рубрики: c++, Digia, qt, qt creator, Qt Developer Conference, Qt Software, qt5, Raspberry Pi, Visual Studio, конкурс, подкасты, Программирование, метки: c++, Digia, Qt, qt creator, Qt Developer Conference, qt5, Raspberry Pi, Visual Studio, конкурс«Концепты» на C++
2012-09-14 в 17:24, admin, рубрики: c++, c++11, ненормальное программирование, метки: c++, c++11Всем доброго времени суток.
Придумано и написоно под влиянием некоторых публикаций Страуструпа на тему концептов в C++.
Захотелось мне однажды необычного — сделать так, чтобы нешаблонные функции/методы на C++ могли принимать в качестве аргумента любой объект, имеющий определенный набор методов, примерно так:
void fn(VectorWrapper<int> x)
{
for (size_t i = 0; i < x.size(); ++i)
{
doSomething(x[i]);
}
}
::std::vector<int> sv;
QList<int> qv;
OtherSuperVector<int> ov;
fn(sv);
fn(qv);
fn(ov);
Причем сделать это не используя наследование от базового класса.
Как это можно сделать, читайте под катом.
Читать полностью »
Что не так с ссылками в С++
2012-09-14 в 11:44, admin, рубрики: c++, null, С++, ссылки, указатели, метки: Null, С++, ссылки, указателиDisclaimer: На данный момент я не располагаю достаточным опытом работы с С++11, поэтому все рассуждения следует рассматривать исключительно в контексте С++03, однако буду рад обсудить в комментариях взаимодействие нововведений С++ с рассмотренными в статье проблемами.
Ссылки в C++ появились чтобы удовлетворить синтаксические потребности механизма перегрузки операторов. В чистом С нет ссылочных типов, вместо этого есть понятие lvalue, которое описывается размытой формулировкой «то, что может стоять слева от оператора присваивания».
// Чистый C
int a;
int foo(int);
a = 7; // тип a - int
5 = 7; // и тип 5 - int
foo(42) = 7; // и тип foo(42) - тоже int
В этом маленьком примере три выражения: переменная a, литерал «5» и вызов функции foo(42) — имеют одинаковый тип — int, но только переменная является lvalue и может стоять слева от оператора присваивания.
С точки зрения С программиста, выражение «foo(42) = 7;» лишено здравого смысла и не должно компилироваться, однако с появлением перегрузки операторов, возникла потребность именно в таких выражениях.
Как определить все мониторы и их разрешения
2012-09-11 в 13:52, admin, рубрики: c++, game development, мониторы, Программирование, метки: мониторы
Недавно возился с нормальной инициализацией окна + OpenGL, и стояла задача задетектить все мониторы и их разрешения. Оставлю тут решение для потомков.
Читать полностью »
Как правильно скопировать массив и при чем тут SFINAE
2012-09-06 в 7:33, admin, рубрики: c++, sfinae, stl, Компиляторы, системное программирование, метки: c++, sfinae, stlКопировать элементы из одного контейнера в другой? Нет ничего проще, универсальный алгоритм помещается в 5 строк:
template<class InputIterator, class OutputIterator>
OutputIterator copy(InputIterator first, InputIterator last, OutputIterator result) {
while(first != last) *result++ = *first++;
return result;
}
Возможно вы узнали реализацию std::copy с cplusplus.com. Почему же реализация std::copy из GNU STL занимает 139 строк? Давайте разберемся.Читать полностью »
Во всём виноват компилятор
2012-09-06 в 6:38, admin, рубрики: c++, Компиляторы, ошибки в коде, ошибки программистов, Си, метки: c++, компиляторы, ошибки в коде, ошибки программистов, Си Многие программисты очень любят обвинять компилятор в различных ошибках. Поговорим немного об этом.
Читать полностью »
Бесплатные группы по C++ и веб-программированию в Москве для старшеклассников!
2012-09-05 в 13:14, admin, рубрики: c++, php, Учебный процесс в IT, школьное образование, метки: c++, PHP, школьное образованиеДворец творчества на Воробьевых горах приглашает учащихся 7-10 классов на курсы ИТ по следующим направлениям:
- Программирование сайтов: HTML, CSS, PHP, MySQL;
- Программирование в C/C++.
Обучение бесплатное.
На первом году обучения изучается теория «с нуля». На втором году дети реализуют собственные проекты (программы, сайты) под руководством педагога. Успешные (работоспособные (-: ) проекты отправляются весной на конференции, конкурсы и выставки: городские, российские и международные. Примеры проектов есть на сайте.
Учебный класс оборудован современными компьютерами и проектором. Занятие ведут, как правило, студенты технических ВУЗов.
Lisp-интерпретатор на чистом C
2012-09-04 в 11:48, admin, рубрики: c++, интерпретатор, ненормальное программирование, метки: интерпретатор, ЛиспЯ люблю язык C за его простоту и эффективность. Тем не менее, его нельзя назвать гибким и расширяемым. Есть другой простой язык, обладающий беспрецедентной гибкостью и расширяемостью, но проигрывающий C в эффективности использования ресурсов. Я имею в виду LISP. Оба языка использовались для системного программирования и имеют давнюю и славную историю.
Уже достаточно долго я размышляю над идеей, объединяющей подходы обоих этих языков. Её суть заключается в реализации языка программирования на основе LISP, решающего те же задачи, что и C: обеспечение высокой степени контроля над оборудованием (включая низкоуровневый доступ к памяти). На практике это будет система LISP-макросов, генерирующая бинарный код. Возможности LISP для препроцессирования исходного кода, как мне кажется, обеспечат небывалую гибкость, в сравнении с препроцессором C или шаблонами C++, при сохранении исходной простоты языка. Это даст возможность на базе такого DSL надстраивать новые расширения, повышающие скорость и удобство разработки. В частности, на этом языке может реализовываться и сама LISP-система.
Написание компилятора требуют наличие кодогенератора, а в конечном итоге — ассемблера. Поэтому практические изыскания стоит начинать с реализации ассемблера (для подмножества инструкций целевого процессора). Мне было интересно минимизировать какие-либо зависимости от конкретных технологий, языков программирования и операционной системы. Поэтому я решил с нуля реализовать на C простейший интерпретатор импровизированного LISP-диалекта, а также написать к нему систему макрорасширений, позволяющих удобно кодировать на подмножестве ассемблера x86. Венцом моих усилий должен стать результирующий загрузочный образ, выводящий «Hello world!» в реальном режиме процессора.
На текущий момент мною реализован работающий интерпретатор (файл int.c, около 900 строк C-кода), а также набор базовых функций и макросов (файл lib.l, около 100 строк LISP-кода). Кому интересны принципы выполнения LISP-кода, а также подробности реализации интерпретатора, прошу под кат.
Читать полностью »
Приходилось часто работать с классом QDataStream. В результате накопил некоторый опыт, как правильно его использовать.