<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>fxposter&#039;s wave &#187; C++</title>
	<atom:link href="http://blog.fxposter.org/tag/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.fxposter.org</link>
	<description>Stories about Ruby, JavaScript, Objective-C and other cool tools</description>
	<lastBuildDate>Sun, 30 Oct 2011 20:00:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Iterator must go</title>
		<link>http://blog.fxposter.org/2009/09/13/iterator-must-go/</link>
		<comments>http://blog.fxposter.org/2009/09/13/iterator-must-go/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 17:45:15 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/?p=738</guid>
		<description><![CDATA[Iterators must go by Andrei Alexandrescu. Всем C++-никам посвящается! PS. Всех коллег поздравляю с Днем программиста.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.boostcon.com/site-media/var/sphene/sphwiki/attachment/2009/05/08/iterators-must-go.pdf">Iterators must go</a> by <a href="http://www.erdani.org/">Andrei Alexandrescu</a>. Всем C++-никам посвящается!</p>
<p><em><strong>PS</strong>. Всех коллег поздравляю с Днем программиста.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2009/09/13/iterator-must-go/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>C++ Developer Needed</title>
		<link>http://blog.fxposter.org/2009/06/10/cpp-developer-needed/</link>
		<comments>http://blog.fxposter.org/2009/06/10/cpp-developer-needed/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 21:05:49 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Работа]]></category>
		<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/?p=714</guid>
		<description><![CDATA[Нужен хороший C++-программист для интересного проекта (создание поискового движка для веб-сайта). Требования: Обязательны хорошие знания в следующих областях: C++ Linux Pthreads Sockets Алгоритмы (в частности графы) Желательно знать: Boost (Thread, Asio, Graph, etc) Ruby/Rails MySQL/PostgreSQL/BerkeleyDB Паттерны проектирования Работать нужно в офисе (как оказалось, для некоторых это критично). Офис находится в Днепропетровске, в центре города. Ответы [...]]]></description>
			<content:encoded><![CDATA[<p>Нужен хороший C++-программист для интересного проекта (создание поискового движка для веб-сайта).</p>
<p>Требования:</p>
<ul>
<li>Обязательны хорошие знания в следующих областях:
<ul>
<li>C++</li>
<li>Linux</li>
<li>Pthreads</li>
<li>Sockets</li>
<li>Алгоритмы (в частности графы)</li>
</ul>
</li>
<li>Желательно знать:
<ul>
<li>Boost (Thread, Asio, Graph, etc)</li>
<li>Ruby/Rails</li>
<li>MySQL/PostgreSQL/BerkeleyDB</li>
<li>Паттерны проектирования</li>
</ul>
</li>
</ul>
<p>Работать нужно в офисе (как оказалось, для некоторых это критично). Офис находится в Днепропетровске, в центре города.</p>
<p>Ответы пишите сюда, в Skype (fxposter), Jabber (fxposter@gmail.com) или ICQ (625585).</p>
<p><em><strong>PS</strong>. Для того, чтобы не появлялись вопросы типа &#8220;а причем тут рельсы?&#8221; - сам проект пишется на Ruby/Rails, часть поискового движка - на C++.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2009/06/10/cpp-developer-needed/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Regexp&#8217;ы в C++</title>
		<link>http://blog.fxposter.org/2008/03/22/regexps-cpp/</link>
		<comments>http://blog.fxposter.org/2008/03/22/regexps-cpp/#comments</comments>
		<pubDate>Sat, 22 Mar 2008 09:49:48 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2008/03/22/regexps-cpp/</guid>
		<description><![CDATA[Кто-нибудь может посоветовать хорошую библиотеку регулярных выражений для C++. Требования (желательно, но, в принципе, не обязательно): скорость отсутствие (или хотя бы минимум) зависимостей от другой библиотеки работа с GCC или Visual Studio 2008 (вот это очень бы хотелось, но, думаю, фиг найду) Погуглил - нашел кучу самых разных библиотечек. Выбирать наугад не хочется, так что [...]]]></description>
			<content:encoded><![CDATA[<p>Кто-нибудь может посоветовать хорошую библиотеку регулярных выражений для C++. Требования (желательно, но, в принципе, не обязательно):</p>
<ul>
<li>скорость</li>
<li>отсутствие (или хотя бы минимум) зависимостей от другой библиотеки</li>
<li>работа с GCC или Visual Studio 2008 (вот это очень бы хотелось, но, думаю, фиг найду)</li>
</ul>
<p>Погуглил - нашел кучу самых разных библиотечек. Выбирать наугад не хочется, так что прошу совета у C++&#8217;ников.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2008/03/22/regexps-cpp/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Любителям C++ посвящается</title>
		<link>http://blog.fxposter.org/2008/03/07/c-minus-minus/</link>
		<comments>http://blog.fxposter.org/2008/03/07/c-minus-minus/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 02:58:31 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2008/03/07/c-minus-minus/</guid>
		<description><![CDATA[&#8230; статья под названием &#8220;За что я не люблю С++&#8220;. Лично мне как человеку знающему язык C++ достаточно хорошо статья очень понравилась и я практически во всем согласен с её автором. C++ действительно очень сложный язык, который к тому же является очень негибким на этапе выполнения (да, да, скорость работы, я понимаю&#8230;), и имеющий просто [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230; статья под названием &#8220;<a href="http://steps3d.narod.ru/tutorials/c-minus-minus.html">За что я не люблю С++</a>&#8220;. Лично мне как человеку знающему язык C++ достаточно хорошо статья очень понравилась и я практически во всем согласен с её автором. C++ действительно очень сложный язык, который к тому же является очень негибким на этапе выполнения (<em>да, да, скорость работы, я понимаю&#8230;</em>), и имеющий просто потрясающе огромное количество мелких ловушек, при встрече с которыми можно стать в ступор на долгое время.</p>
<p><em><strong>PS</strong>. Линк на статью нашел <a href="http://bolknote.ru/2008/03/06/~1613">у Bolk&#8217;а</a>.</em></p>
<p><em><strong>PPS</strong>. А есть ли аналоги C++, кроме D? Я имею ввиду, которые бы компилировались в нативный код и были такими же эффективными (или хотя бы похожими по эффективности).</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2008/03/07/c-minus-minus/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Доучился мля&#8230;</title>
		<link>http://blog.fxposter.org/2007/12/22/fucking-studying/</link>
		<comments>http://blog.fxposter.org/2007/12/22/fucking-studying/#comments</comments>
		<pubDate>Fri, 21 Dec 2007 23:21:00 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2007/12/22/fucking-studying/</guid>
		<description><![CDATA[Вообще крышу срывает эта учеба&#8230; Делал лабу по C++. Имеем классы: enum AttributeType {BOOL, INT, DOUBLE, STRING}; class Attribute; class BoolAttribute; class IntAttribute; class DoubleAttribute; class StringAttribute; Зачем - не спрашивайте. Кривовато (из-за AttributeType), но на С++ по другому не получалось. Неделю назад час ебался мучался вопросом, какого хера почему это у меня каст из [...]]]></description>
			<content:encoded><![CDATA[<p>Вообще крышу срывает эта учеба&#8230;</p>
<p>Делал лабу по C++. Имеем классы:</p>
<pre><code class="cpp">enum AttributeType {BOOL, INT, DOUBLE, STRING};
class Attribute;
class BoolAttribute;
class IntAttribute;
class DoubleAttribute;
class StringAttribute;</code></pre>
<p>Зачем - не спрашивайте. Кривовато (из-за AttributeType), но на С++ по другому не получалось.</p>
<p>Неделю назад час <strike>ебался</strike> мучался вопросом, <strike>какого хера</strike> почему это у меня каст из BoolAttribute* в Attribute* делал <strike>хер знает</strike> непонятно что, но только не то, что нужно&#8230; В итоге забил&#8230; Сейчас сел доделывать лабу&#8230; На 2-й минуте меня осенило - забыл прописать наследование&#8230; Пипееец. Нужно было так:</p>
<pre><code class="cpp">enum AttributeType {BOOL, INT, DOUBLE, STRING};
class Attribute;
class BoolAttribute : public Attribute;
class IntAttribute : public Attribute;
class DoubleAttribute : public Attribute;
class StringAttribute : public Attribute;</code></pre>
<p>Я с себя потихоньку шизею&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2007/12/22/fucking-studying/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ООП: Сетевая БД</title>
		<link>http://blog.fxposter.org/2007/11/01/oop-network-database/</link>
		<comments>http://blog.fxposter.org/2007/11/01/oop-network-database/#comments</comments>
		<pubDate>Thu, 01 Nov 2007 04:25:54 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Универ]]></category>
		<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2007/11/01/oop-network-database/</guid>
		<description><![CDATA[Что-то я затянул немного выполнение лабораторных работ некоторых по универу, нужно исправляться. Сегодня решил вернуться ко второй лабе по ООП. Задание таково: &#8220;Разработать объектно-ориентированную библиотеку для работы со структурами данных по одной из нижеперечисленных тем в соответствии с нижеуказанными требованиями. Свойства и методы для классов разработать в соответствии с известными определениями соответствующих структур данных. Составить [...]]]></description>
			<content:encoded><![CDATA[<p>Что-то я затянул немного выполнение лабораторных работ некоторых по универу, нужно исправляться. Сегодня решил вернуться ко второй лабе по ООП. Задание таково:</p>
<blockquote><p>&#8220;Разработать объектно-ориентированную библиотеку для работы со структурами данных по одной из нижеперечисленных тем в соответствии с нижеуказанными требованиями. Свойства и методы для классов разработать в  соответствии с известными определениями соответствующих структур данных. Составить тесты для проверки работоспособности библиотеки. Составить программу, демонстрирующую возможности разработанной библиотеки.&#8221;</p></blockquote>
<p>Требования - хрен с ними, а вот тема мне попалась интересная: &#8220;Сетевые базы данных (ввод/вывод, навигация)&#8221;. Когда я это задание читал в первый раз - я впал в ступор. Потом оклемался, но когда видишь такое задание как-то не по себе становится&#8230;</p>
<p>Сетевая бд - это бд, в которой для связи записей используются графы (граф, по курсу структур данных, - это сеть). Т.е. здесь, в отличии от иерархических бд, связи получаются &#8220;много к многим&#8221; (а там - &#8220;один ко многим&#8221;).</p>
<p>Поговорил немного с преподами о задании, итог получился такой - &#8220;нам не нужна универсальная бд, сделай несколько таблиц статических и связывай их&#8221;. Говорил действительно немного - минуты полторы, так что кроме фразы выше я ничего особо не услышал. Сегодня решил хоть чего-нибудь напроектировать, чтобы в пятницу показать преподам и убедится, правильно ли я делаю, или нет. Мысля сейчас такая: есть отдельные таблицы (неважно, как представленные) и есть какой-нибудь класс Relation, который их связывает. Собственно, это очень напоминает обычную иерархическую бд (таблица - связующая таблица - таблица), но как это оформлять по другому я пока что не представляю.</p>
<p>Сел за комп, закодил&#8230; Получилось такая фигня:</p>
<pre><code class="cpp">class Masseur : public Record {
public:
    Masseur();
    virtual ~Masseur();
private:
    char* _name;
    char* _surname;
    char* _fathername;
    char* _qualification;
    Date _birthday;
};

class Service : public Record {
public:
    Service();
    virtual ~Service();
private:
    char* _name;
    char* _part;
    int _duration;
    double _price;
};

class MasseurServiceRelation : public Relation {
public:
    MasseurServiceRelation();
    virtual ~MasseurServiceRelation();
private:
    void add(Masseur*, Service*);
    void remove(Masseur*, Service*);
    void remove(Service* service);
    void remove(Masseur* masseur);
};</code></pre>
<p>Сейчас сижу и думаю, правильным ли путем я иду&#8230;</p>
<p><em><strong>PS</strong>. А первые две таблицы очень напоминают паттерн <a href="http://en.wikipedia.org/wiki/Active_record_pattern">ActiveRecord</a>, на правда ли? :) </em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2007/11/01/oop-network-database/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Собираем Code::Blocks + QtWorkBench под Ubuntu/Debian</title>
		<link>http://blog.fxposter.org/2007/10/26/codeblocks-qtworkbench-linux/</link>
		<comments>http://blog.fxposter.org/2007/10/26/codeblocks-qtworkbench-linux/#comments</comments>
		<pubDate>Fri, 26 Oct 2007 12:00:07 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Code::Blocks]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2007/10/26/codeblocks-qtworkbench-linux/</guid>
		<description><![CDATA[В свое время выбирал IDE для работы с C++, посоветовали попробовать Code::Blocks. Попробовал, понравилось. Симпатичная IDE, хороший автокомплит, неплохая настраиваемость, поддержка gcc - а мне другого и не нужно было. После того, как я заинтересовался Qt, я стал искать плагины для поддержки этой библиотеки к Code::Blocks. Нашел QtWorkbench. Вот только плагин к линукс-версии можно подключить, [...]]]></description>
			<content:encoded><![CDATA[<p>В свое время выбирал IDE для работы с C++, посоветовали попробовать <a href="http://www.codeblocks.org/">Code::Blocks</a>. Попробовал, понравилось. Симпатичная IDE, хороший автокомплит, неплохая настраиваемость, поддержка gcc - а мне другого и не нужно было. После того, как я заинтересовался Qt, я стал искать плагины для поддержки этой библиотеки к Code::Blocks. <a href="http://code.google.com/p/qtworkbench/">Нашел QtWorkbench</a>. Вот только плагин к линукс-версии можно подключить, только заново скомпилировав саму программу. Чем я раньше и занимался - ведь <a href="http://code.google.com/p/qtworkbench/wiki/PluginInstallation">вот</a> есть хорошая инструкция. Вчера заметил странную директорию debian, которая находится в Code::Blocks&#8217;овом trunk&#8217;е. Там есть файлик rules, после его просмотра стало ясно, что здесь все уже сделано для построения пакетов для Debian-based дистрибутивов линукса. И вот решил я ночью пакет сделать, со встроенным QtWorkbench&#8217;ем.</p>
<p>Для конфигурирования и сборки пакетов:</p>
<pre><code>sudo apt-get install libtool autoconf automake dh-make</code></pre>
<p>Если у вас не Ubuntu/Gutsy - следуем <a href="http://wiki.wxpython.org/InstallingOnUbuntuOrDebian">этим</a> инструкциям и добавляем в apt нужный репозиторий.  Устанавливаем wxwidgets и g++:</p>
<pre><code>sudo apt-get install g++ wx-common libwxgtk2.8-dev</code></pre>
<p>Также мне в Kubuntu пришлось установить libgtk:</p>
<pre><code>sudo apt-get install libgtk2.0-dev</code></pre>
<p>Далее - следуем начальным инструкциям <a href="http://code.google.com/p/qtworkbench/wiki/PluginInstallation">отсюда</a>:</p>
<pre><code>svn checkout svn://svn.berlios.de/codeblocks/trunk codeblocks
cd codeblocks/
wget http://qtworkbench.googlecode.com/files/QtWorkbench-src-0.5.1.tar.gz
tar zxf QtWorkbench-src-0.5.1.tar.gz
patch --unified --strip=0 --forward --input=qtworkbench.patch
./bootstrap</code></pre>
<p>Конфигурируем для установки всех плагинов и указываем, что ставить нужно в /usr:</p>
<pre><code>./configure --prefix=/usr --with-contrib-plugins=all</code></pre>
<p>Теперь нужно указать, что мы хотим включить в пакеты и QtWorkbench (если этого не сделать - dh-make выдаст после линкования и компиляции всех файлов, что у вас есть лишние файлы и откажется создавать пакет):</p>
<pre><code>sudo nano debian/codeblocks-contrib.install</code></pre>
<p>И добавляем в конец файла эти строчки:</p>
<pre><code>usr/share/codeblocks/QtWorkbench.zip*
usr/share/codeblocks/plugins/libQtWorkbench.*</code></pre>
<p>Сохраняем файл и начинаем делать пакеты (у меня компилировалось и линковалось долго, больше получаса, так что будьте терпеливы):</p>
<pre><code>sudo ./debian/rules binary-arch</code></pre>
<p>На выходе получаем 7 пакетов и ставим Code::Blocks:</p>
<pre><code>cd ..
sudo dpkg -i libcodeblocks0_1.0svn4561_i386.deb libwxsmithlib0_1.0svn4561_i386.deb codeblocks_1.0svn4561_i386.deb codeblocks-contrib_1.0svn4561_i386.deb</code></pre>
<p>Я использовал svn4561-ревизию, так что у вас номер в deb-файлах скорее всего будет другой. Учитывайте это.</p>
<p>Собранные мной пакеты лежат <a href="http://fxposter.org/linux/codeblocks/ubuntu/">здесь</a> (ubuntu 7.10) и <a href="http://fxposter.org/linux/codeblocks/debian unstable/">здесь</a> (debian unstable).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2007/10/26/codeblocks-qtworkbench-linux/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Немного об ошибках в C++</title>
		<link>http://blog.fxposter.org/2007/10/23/cpp-small-mistakes/</link>
		<comments>http://blog.fxposter.org/2007/10/23/cpp-small-mistakes/#comments</comments>
		<pubDate>Tue, 23 Oct 2007 00:09:28 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Универ]]></category>
		<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2007/10/23/cpp-small-mistakes/</guid>
		<description><![CDATA[Начнем издалека&#8230; Есть в C++ встроенный тип size_t, который является &#8220;целым типом без знака, используемым реализацией для индексирования массивов&#8221; © Страуструп. То есть, если вы работаете с индексами в массивах и их длинами, то в общем-то &#8220;правильнее&#8221; использовать не int, что в большинстве случаев и делается, а именно size_t (для длин можно еще использовать ptrdiff_t [...]]]></description>
			<content:encoded><![CDATA[<p>Начнем издалека&#8230; Есть в C++ встроенный тип size_t, который является &#8220;целым типом без знака, используемым реализацией для индексирования массивов&#8221; © Страуструп. То есть, если вы работаете с индексами в массивах и их длинами, то в общем-то &#8220;правильнее&#8221; использовать не int, что в большинстве случаев и делается, а именно size_t (для длин можно еще использовать ptrdiff_t - тип, который возвращает операция вычитания двух указателей). Вчера эта &#8220;правильность&#8221; для меня вышла боком&#8230;</p>
<pre><code class="cpp">size_t length;
...
for(size_t i = 0; i &lt; length; ++i) {
    double x = 2 * (i - length / 2) / length;
    ...
}</code></pre>
<p>Вот такой был изначальный код. Через несколько минут после написания я вспомнил, что неплохо бы сделать так:</p>
<pre><code class="cpp">size_t length;
...
for(size_t i = 0; i &lt; length; ++i) {
    double x = 2 * static_cast&lt;double&gt;(i - length / 2) / length;
    ...
}</code></pre>
<p>потому что при делении двух целых чисел у нас тоже целое будет, а мне нужно было как раз вещественное.</p>
<p>Но это еще ладно. После этого я отдал свой кусок лабораторной (мы ее пишем парами) своей девушке (а я как раз с ней пишу). Когда она добралась до этого кода и стала тестить его - у нее стали получаться какие-то странные, неправильные числа. Долгое время я копался в коде и не мог понять, в чем проблема, а потом до меня наконец-то дошло - <strong>разность двух беззнаковых чисел также будет беззнаковая</strong> (т.е. число -1 будет на самом деле 0xFFFFFFFF), после чего код превратился в такой:</p>
<pre><code class="cpp">size_t length;
...
for(size_t i = 0; i &lt; length; ++i) {
    double x = 2 * static_cast&lt;double&gt;(static_cast&lt;int&gt;(i) - static_cast&lt;int&gt;(length) / 2) / length;
    ...
}</code></pre>
<p>После чего я на всякий случай еще полчаса проверял небольшую программу на вот такие ошибки - на всякий случай. К счастью, таких больше не нашлось, но неприятный осадок остался.</p>
<p>Выводы: или пишите не особо заморачиваясь на правильности употребления типов (везде используйте int и double, например), или пишите семантически правильно, но не делайте таких ошибок, как я&#8230; Может, конечно, это только я такой, но мне лично сложно было именно по коду определить, что результат будет получаться не такой как я хочу.</p>
<p><em><strong>PS</strong></em><em>. Я теперь немного понимаю, почему в Java нет unsigned типов. :) </em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2007/10/23/cpp-small-mistakes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TPL из Parallel FX для .NET</title>
		<link>http://blog.fxposter.org/2007/10/06/parallel-fx-tpl-net/</link>
		<comments>http://blog.fxposter.org/2007/10/06/parallel-fx-tpl-net/#comments</comments>
		<pubDate>Fri, 05 Oct 2007 23:32:56 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2007/10/06/parallel-fx-tpl-net/</guid>
		<description><![CDATA[Не могу не отметить статью из октябрьского номера MSDN Magazine про &#8220;Оптимизацию управляемого кода для многоядерных компьютеров&#8221;. В статье рассказывается о библиотеке TPL, которая позволяет использовать все преимущества многоядерности практически без изменений исходных кодов (по сравнению с переписыванием кода с использованием Thread&#8217;ов - здесь изменения в коде потребуются лишь чисто косметические). На мой взгляд, готовится [...]]]></description>
			<content:encoded><![CDATA[<p>Не могу не отметить <a href="http://msdn.microsoft.com/msdnmag/issues/07/10/Futures/default.aspx?loc=ru">статью</a> из октябрьского номера MSDN Magazine про &#8220;Оптимизацию управляемого кода для многоядерных компьютеров&#8221;. В статье рассказывается о библиотеке TPL, которая позволяет использовать все преимущества многоядерности практически без изменений исходных кодов (по сравнению с переписыванием кода с использованием Thread&#8217;ов - здесь изменения в коде потребуются лишь чисто косметические).</p>
<p>На мой взгляд, готовится <strong>бомба</strong>, так как использование фич многоядерных процессоров становится до неприличия простым. Статья очень интересна как в теоретическом, так и в практическом плане. Так что советую ее почитать всем программистам, даже тем, кто с C# не знаком - ведь возможно, в ближайшем будущем именно такой подход и будет использоваться.</p>
<p><em><strong>PS</strong>. В &#8220;более далеком&#8221; будущем, как мне кажется, эта библиотека перекочует в компилятор, который сам будет решать - нужно ли распараллеливать текущий код или нет.</em></p>
<p><em><strong>PPS</strong>. Интересно, уйдут ли Thread&#8217;ы в небытие? :)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2007/10/06/parallel-fx-tpl-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Будущее C# и .NET</title>
		<link>http://blog.fxposter.org/2007/10/03/future-c-sharp-dotnet/</link>
		<comments>http://blog.fxposter.org/2007/10/03/future-c-sharp-dotnet/#comments</comments>
		<pubDate>Wed, 03 Oct 2007 20:02:02 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[LInQ]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2007/10/03/future-c-sharp-dotnet/</guid>
		<description><![CDATA[Достаточно интересный факт - MS открывает исходники многих библиотек .NET фреймворка, в частности .NET Base Class Libraries (System, System.IO, System.Collections, System.Configuration, System.Threading, System.Net, System.Security, System.Runtime, System.Text, etc), ASP.NET (System.Web), Windows Forms (System.Windows.Forms), ADO.NET (System.Data), XML (System.Xml), and WPF (System.Windows). В дальнейшем планируется открытие и остальных библиотек. В чем основные плюсы этого решения для .NET-программистов: Изучение [...]]]></description>
			<content:encoded><![CDATA[<p>Достаточно интересный факт - <a href="http://www.microsoft.com/">MS</a> <a href="http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx">открывает</a> исходники многих библиотек .NET фреймворка, в частности .NET Base Class Libraries (System, System.IO, System.Collections, System.Configuration, System.Threading, System.Net, System.Security, System.Runtime, System.Text, etc), ASP.NET (System.Web), Windows Forms (System.Windows.Forms), ADO.NET (System.Data), XML (System.Xml), and WPF (System.Windows). В дальнейшем планируется открытие и остальных библиотек.</p>
<p>В чем основные плюсы этого решения для .NET-программистов:</p>
<ul>
<li>Изучение исходников фреймворка, учиться ведь всегда полезно :)</li>
<li>Возможность использования исходников при отладке своего приложения в VS 2008: <img src="http://www.scottgu.com/blogposts/source/step1.jpg" ilo-full-src="http://www.scottgu.com/blogposts/source/step1.jpg" /></li>
</ul>
<p>Теперь о подводных камнях - код открыт по лицензии <a href="http://www.microsoft.com/resources/sharedsource/licensingbasics/referencelicense.mspx" target="_blank">Microsoft Reference License</a> (MS-RL), которая подразумевает возможность только просмотра кода, перекомпиляция или изменение этих кодов по лицензии строго-настрого запрещены. То есть на развитие того же <a href="http://www.mono-project.com/">Mono Project</a> это решение фирмы MS никак не повлияет, а жаль - очень бы хотелось, чтобы Mono был реальным аналогом того .NET&#8217;а, которым нас балует MS.</p>
<p>И вдогонку - на днях <a href="http://blogs.gotdotnet.ru/personal/Snaky/PermaLink.aspx?guid=646342DB-6AFF-40FD-886B-9CC427DC58E4">наткнулся</a> на очень хорошую статью по нововведениям в C# 3.0, которая меня очень порадовала - в отличии от Java, C# не стоит на месте, а развивается. В Java в основном меняется библиотека стандартная, в случае же C# + .NET Framework меняются обе составляющие: язык становится более удобным (как по мне - <strong>гораздо</strong> более удобным, мне <a href="http://ru.wikipedia.org/wiki/Language_Integrated_Query">Linq</a> ну просто <strong>очень</strong> понравился), а .NET Framework обрастает новыми функциями.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2007/10/03/future-c-sharp-dotnet/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced

Served from: blog.fxposter.org @ 2012-02-05 01:37:44 -->
