singalen: (Default)
Если std::ifstream(char* ) рушится сам по себе - это убеждает в правоте автора C++ FQA.
singalen: (portrait)
Хороший человек [livejournal.com profile] vbayda показал, как он использует boost::bind:под катом Вовин текст на C++ )
Как на меня, мягко выражаясь, выглядит не слишком читабельно.
Понял слова Алана Перлиса "избыток синтаксического сахара приводит к раку фигурных скобок" (переврал цитату, и ну его).
Не слишком-то C++ пригоден для функциональщины. Правда, синтаксис получился не намного хуже, чем у Lisp-а.

Попытался переписать это на Haskell. Не могу скомпилировать, хоть ты тресни. Хотя выглядит немного лучше.
текст на Haskell )
singalen: (portrait)
Обсуждаю статью [livejournal.com profile] voidbent-а (он же Вова Фролов) "General policy pattern".
Она относится к class metaprogramming, на основе C++.
Идея в том, чтобы в некоей библиотеке сложить все классы compile-time policy в один и какие выгоды это даёт.
Спор в комментах.
singalen: (Default)
At the time of writing, the only compiler that I know of which supports the separation model is the Comeau C++ compiler - написано в статье на CodeGuru.
А Страуструп в интервью говорит, что нужен механизм ещё более совершенный, чем separation model.
singalen: (Default)
Написал я test_lambda.cpp:
#include boost/lambda/lambda.hpp
^Z

cpp $(CPPFLAGS) test_lambda.cpp > test_lambda.cppprocessed

test_lambda.cppprocessed весит 1,096,759 байт.
Мама. Этим можно пользоваться без прекомпилированных хэдеров? А с оными?
Кто использовал?
Tags:
singalen: (Default)
Жаль, что это (RSS тут) никем не транслируется в ЖЖ.
Может, кто-то из платных юзеров сподобится создать трансляцию?
singalen: (hope_never)
Страуструп надеется закончить к 2009 году :)
C++ 0x тут.
А на домашней страничке Страуструпа теперь висит его фотография.
А после третьего и специального изданий "C++ programming language" появились ещё два приложения к книге: Locales и Standard-Library Exception Safety.
singalen: (2002)
Подарки от Вовы Мутеля - этот и следующий пост. Отсюда.
Задача - дана программа:
программа )Никто не спрашивает, что распечатается в результате. Если вы можете это сказать, то вы не Страуструп - вы Господь Бог.
Вопрос: почему первый const char* распечатывается как указатель, а не так, как надо?
Я пока не смог.
Вове ответил некий истинный гуру из Apple.
singalen: (2002)
Продолжаем набивать журнал контентом.
Что будет, если указателю на функцию-член присвоить указатель на виртуальный метод предка, а потом вызвать её на экземпляре потомка?
А для невиртуальной функции?
текст проверочной программы )
singalen: (Default)
Кусочек обсуждения const_cast в Клубе анонимных программистов.
const и компания )
В конце концов, надо же это как-то публиковать более читабельно. И набивать контент в свой блог, а то уже замусорился повседневщиной до полной бессодержательности.
singalen: (eternity)
Сайт Виктора Псиолы закрылся 8(
Де ж теперь искать хорошие тесты по C++?
singalen: (Default)
(устаревшая до рождения микро-статья памяти языка C++, черновые наброски)
Выучили его всего, попрактиковались. Знаете, какова структура объекта в памяти при виртуальном множественном наследовании, как бросается out_of_memory, зачем и когда нужен виртуальный деструктор, как итерировать iostream и инстанцировать binder_2nd, и используете auto_ptr всегда, кроме случаев, когда знаете, что это повредит программе и почему.
Что дальше?
В смысле C++.
Помимо платформенно-зависисмых библиотек (это с большой вероятностью будут MSVC/WinAPI, библиотека POSIX, or whatever), остались вещи, которые нужно знать, осталось нечто, что следует знать всем программистам на цэ-с-двумя-плюсами.
  • Boost - уникальная попытка сделать из стандартной библиотеки языка нечто целостное, и вообще сделать C++ лучше. An absolute must know. Содержит мощную кроссплатформенную библиотеку всего, что должно бы быть в стандартной, и много чего ещё, чего, может, там быть и не должно. Сам намерен его внимательно изучать и дополнять этот пост по мере изучения.
  • Профайлинг использования CPU, coverage profiling, профайлинг использования (и утекания) прочих ресурсов. Популярные инструменты для этого - BoundsChecker и ко под Windows, ещё?
  • Автоматическое управление памятью по методу Hans-а Boehm-а.
  • Юнит тестирование, в частности, наиболее популярные инструменты - CppUnit и Boost-овский boost_test.
Для нового взгляда на мир сквозь призму C++ рекомендуются книги: Андрей Александреску, "Modern C++ Design".
Jeff Alger,C++ for Real Programmers.
Искал хорошие ссылки на помянутые книги, нарыл ссылку, смотреть в конец топика.
Критика ожидается и приветствуется.
singalen: (Default)
Были опробованы: Rational Purify, старая Insure 5.1 (не встраивается в MSVC 7.1, но проверяет его бинарники), BoundsChecker 7.2.
Скачаны, но не опробованы по причине отсутствия доступа: Insure 7.0, AQTime 4.4, HeapAnalyzer 3.1, splint-3.1.1.
Приз зрительских симпатий достался BoundsChecker-у. Он нам поймал:
  • доступ к нелегальным указателям;
  • превращение указателей в нелегальные;
  • доступ к неинициализированной памяти;
  • вызовы функций по нелегальному адресу;
  • нелегальные указатели, переданные параметрами функциям WinAPI и COM;
  • отлично показывал call stack для момента возникновения ошибки И для места, где эта память была выделена.
Сравнения фич не дождётесь :) Не до того, но могу ответить на пару вопросов.
singalen: (Default)
А также WTL.
Это не библиотеки для простроения GUI. Это библиотеки для программирования под WinAPI. Они никаким боком не скрывают сложность последнего, а ведь именно это должна делать библиотека-обёртка.
Вот за что я очень уважаю борландовскую VCL. Она не грузит кодировщика терминами подлежащего API, а работает исключительно в очень простых терминах GUI: окно, контрол, событие. Именно поэтому так низок средний уровень "дельфистов": VCL сделала порог вхождения в дело очень низким. Это не проблема Delphi, это её достоинство: она сделала решение некоторого класса задач очень простым. Visual же C++ считается "инструментом профессионалов" потому, что запомнит и поймёт всю эту лабуду насчёт ресурсов, хэндлов, пре-транслейтов и дэдэиксов только достаточно мозговитый программист.
Ещё немного о "VCL vs MFC", хотя этот вопрос и устарел по объективным причинам. VCL считается "толстой" библиотекой, в отличие от MFC. Однако, сравнивая объёмы их исходников в примерно единовременных версиях, можно увидеть, что VCL компактнее, что не может не навести на размышления о качестве их кода.

C++

16/6/05 17:17
singalen: (Default)
Товарищ жалуется на глюки Delphi 7.
Говорит, что в ней и в Билдере их, глюков, полно, и что компилируют медленно.
И хвалит Visual C++. Правда, товарищ вызывает методы несконструированных объектов...
За что бы?.. В жизни не видеть бы этого продукта.
Сколько раз уже в Вижуале, только что добавивши/ихменивши в хедере член класса, приходилось вручную грохать все промежуточные файлы, в т.ч. pch, чтобы оно так-таки увидело изменение. Что неизменно влечёт перекомпиляцию проекта. Тьфу.
Пишите меньше кода и includes в хедерах. Хедеры - плохая фича С, но что делать...

March 2023

S M T W T F S
   1234
567891011
12131415161718
19202122232425
262728293031 

Syndicate

RSS Atom
Page generated 16/6/25 02:10

Expand Cut Tags

No cut tags