(no subject)
6/10/06 14:33Хороший человек
vbayda показал, как он использует boost::bind:( под катом Вовин текст на C++ )
Как на меня, мягко выражаясь, выглядит не слишком читабельно.
Понял слова Алана Перлиса "избыток синтаксического сахара приводит к раку фигурных скобок" (переврал цитату, и ну его).
Не слишком-то C++ пригоден для функциональщины. Правда, синтаксис получился не намного хуже, чем у Lisp-а.
Попытался переписать это на Haskell. Не могу скомпилировать, хоть ты тресни. Хотя выглядит немного лучше.
( текст на Haskell )
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Как на меня, мягко выражаясь, выглядит не слишком читабельно.
Понял слова Алана Перлиса "избыток синтаксического сахара приводит к раку фигурных скобок" (переврал цитату, и ну его).
Не слишком-то C++ пригоден для функциональщины. Правда, синтаксис получился не намного хуже, чем у Lisp-а.
Попытался переписать это на Haskell. Не могу скомпилировать, хоть ты тресни. Хотя выглядит немного лучше.
( текст на Haskell )
Tags:
Обсуждаю статью
voidbent-а (он же Вова Фролов) "General policy pattern".
Она относится к class metaprogramming, на основе C++.
Идея в том, чтобы в некоей библиотеке сложить все классы compile-time policy в один и какие выгоды это даёт.
Спор в комментах.
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Она относится к class metaprogramming, на основе C++.
Идея в том, чтобы в некоей библиотеке сложить все классы compile-time policy в один и какие выгоды это даёт.
Спор в комментах.
Tags:
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.
А Страуструп в интервью говорит, что нужен механизм ещё более совершенный, чем separation model.
Tags:
Написал я test_lambda.cpp:
^Z
test_lambda.cppprocessed весит 1,096,759 байт.
Мама. Этим можно пользоваться без прекомпилированных хэдеров? А с оными?
Кто использовал?
#include boost/lambda/lambda.hpp
^Z
cpp $(CPPFLAGS) test_lambda.cpp > test_lambda.cppprocessed
test_lambda.cppprocessed весит 1,096,759 байт.
Мама. Этим можно пользоваться без прекомпилированных хэдеров? А с оными?
Кто использовал?
Tags:
Страуструп надеется закончить к 2009 году :)
C++ 0x тут.
А на домашней страничке Страуструпа теперь висит его фотография.
А после третьего и специального изданий "C++ programming language" появились ещё два приложения к книге: Locales и Standard-Library Exception Safety.
C++ 0x тут.
А на домашней страничке Страуструпа теперь висит его фотография.
А после третьего и специального изданий "C++ programming language" появились ещё два приложения к книге: Locales и Standard-Library Exception Safety.
Tags:
C++, сломай мозг
2/2/06 15:44Подарки от Вовы Мутеля - этот и следующий пост. Отсюда.
Задача - дана программа:
( программа )Никто не спрашивает, что распечатается в результате. Если вы можете это сказать, то вы не Страуструп - вы Господь Бог.
Вопрос: почему первый const char* распечатывается как указатель, а не так, как надо?
Я пока не смог.
Вове ответил некий истинный гуру из Apple.
Задача - дана программа:
( программа )Никто не спрашивает, что распечатается в результате. Если вы можете это сказать, то вы не Страуструп - вы Господь Бог.
Вопрос: почему первый const char* распечатывается как указатель, а не так, как надо?
Я пока не смог.
Вове ответил некий истинный гуру из Apple.
Tags:
К вопросу о вопросах по C++
31/1/06 13:16Продолжаем набивать журнал контентом.
Что будет, если указателю на функцию-член присвоить указатель на виртуальный метод предка, а потом вызвать её на экземпляре потомка?
А для невиртуальной функции?
( текст проверочной программы )
Что будет, если указателю на функцию-член присвоить указатель на виртуальный метод предка, а потом вызвать её на экземпляре потомка?
А для невиртуальной функции?
( текст проверочной программы )
Tags:
Кусочек обсуждения const_cast в Клубе анонимных программистов.
( const и компания )
В конце концов, надо же это как-то публиковать более читабельно. И набивать контент в свой блог, а то уже замусорился повседневщиной до полной бессодержательности.
( const и компания )
В конце концов, надо же это как-то публиковать более читабельно. И набивать контент в свой блог, а то уже замусорился повседневщиной до полной бессодержательности.
Tags:
(устаревшая до рождения микро-статья памяти языка C++, черновые наброски)
Выучили его всего, попрактиковались. Знаете, какова структура объекта в памяти при виртуальном множественном наследовании, как бросается out_of_memory, зачем и когда нужен виртуальный деструктор, как итерировать iostream и инстанцировать binder_2nd, и используете auto_ptr всегда, кроме случаев, когда знаете, что это повредит программе и почему.
Что дальше?
В смысле C++.
Помимо платформенно-зависисмых библиотек (это с большой вероятностью будут MSVC/WinAPI, библиотека POSIX, or whatever), остались вещи, которые нужно знать, осталось нечто, что следует знать всем программистам на цэ-с-двумя-плюсами.
Jeff Alger,C++ for Real Programmers.
Искал хорошие ссылки на помянутые книги, нарыл ссылку, смотреть в конец топика.
Критика ожидается и приветствуется.
Выучили его всего, попрактиковались. Знаете, какова структура объекта в памяти при виртуальном множественном наследовании, как бросается 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.
Jeff Alger,C++ for Real Programmers.
Искал хорошие ссылки на помянутые книги, нарыл ссылку, смотреть в конец топика.
Критика ожидается и приветствуется.
Tags:
Были опробованы: 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-у. Он нам поймал:
Скачаны, но не опробованы по причине отсутствия доступа: Insure 7.0, AQTime 4.4, HeapAnalyzer 3.1, splint-3.1.1.
Приз зрительских симпатий достался BoundsChecker-у. Он нам поймал:
- доступ к нелегальным указателям;
- превращение указателей в нелегальные;
- доступ к неинициализированной памяти;
- вызовы функций по нелегальному адресу;
- нелегальные указатели, переданные параметрами функциям WinAPI и COM;
- отлично показывал call stack для момента возникновения ошибки И для места, где эта память была выделена.
Tags:
За что я не люблю MFC
28/6/05 09:16А также WTL.
Это не библиотеки для простроения GUI. Это библиотеки для программирования под WinAPI. Они никаким боком не скрывают сложность последнего, а ведь именно это должна делать библиотека-обёртка.
Вот за что я очень уважаю борландовскую VCL. Она не грузит кодировщика терминами подлежащего API, а работает исключительно в очень простых терминах GUI: окно, контрол, событие. Именно поэтому так низок средний уровень "дельфистов": VCL сделала порог вхождения в дело очень низким. Это не проблема Delphi, это её достоинство: она сделала решение некоторого класса задач очень простым. Visual же C++ считается "инструментом профессионалов" потому, что запомнит и поймёт всю эту лабуду насчёт ресурсов, хэндлов, пре-транслейтов и дэдэиксов только достаточно мозговитый программист.
Ещё немного о "VCL vs MFC", хотя этот вопрос и устарел по объективным причинам. VCL считается "толстой" библиотекой, в отличие от MFC. Однако, сравнивая объёмы их исходников в примерно единовременных версиях, можно увидеть, что VCL компактнее, что не может не навести на размышления о качестве их кода.
Это не библиотеки для простроения GUI. Это библиотеки для программирования под WinAPI. Они никаким боком не скрывают сложность последнего, а ведь именно это должна делать библиотека-обёртка.
Вот за что я очень уважаю борландовскую VCL. Она не грузит кодировщика терминами подлежащего API, а работает исключительно в очень простых терминах GUI: окно, контрол, событие. Именно поэтому так низок средний уровень "дельфистов": VCL сделала порог вхождения в дело очень низким. Это не проблема Delphi, это её достоинство: она сделала решение некоторого класса задач очень простым. Visual же C++ считается "инструментом профессионалов" потому, что запомнит и поймёт всю эту лабуду насчёт ресурсов, хэндлов, пре-транслейтов и дэдэиксов только достаточно мозговитый программист.
Ещё немного о "VCL vs MFC", хотя этот вопрос и устарел по объективным причинам. VCL считается "толстой" библиотекой, в отличие от MFC. Однако, сравнивая объёмы их исходников в примерно единовременных версиях, можно увидеть, что VCL компактнее, что не может не навести на размышления о качестве их кода.
Tags:
Товарищ жалуется на глюки Delphi 7.
Говорит, что в ней и в Билдере их, глюков, полно, и что компилируют медленно.
И хвалит Visual C++. Правда, товарищ вызывает методы несконструированных объектов...
За что бы?.. В жизни не видеть бы этого продукта.
Сколько раз уже в Вижуале, только что добавивши/ихменивши в хедере член класса, приходилось вручную грохать все промежуточные файлы, в т.ч. pch, чтобы оно так-таки увидело изменение. Что неизменно влечёт перекомпиляцию проекта. Тьфу.
Пишите меньше кода и includes в хедерах. Хедеры - плохая фича С, но что делать...
Говорит, что в ней и в Билдере их, глюков, полно, и что компилируют медленно.
И хвалит Visual C++. Правда, товарищ вызывает методы несконструированных объектов...
За что бы?.. В жизни не видеть бы этого продукта.
Сколько раз уже в Вижуале, только что добавивши/ихменивши в хедере член класса, приходилось вручную грохать все промежуточные файлы, в т.ч. pch, чтобы оно так-таки увидело изменение. Что неизменно влечёт перекомпиляцию проекта. Тьфу.
Пишите меньше кода и includes в хедерах. Хедеры - плохая фича С, но что делать...
Tags: