<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments for timburrell.net</title>
	<atom:link href="http://timburrell.net/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://timburrell.net</link>
	<description>All that is Tim Burrell</description>
	<lastBuildDate>Sun, 23 Aug 2009 15:05:43 -0400</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on Fun with Variadic Templates: Part II by mockle</title>
		<link>http://timburrell.net/blog/2009-02-22/fun-with-variadic-templates-part-ii/comment-page-1/#comment-227</link>
		<dc:creator>mockle</dc:creator>
		<pubDate>Sun, 23 Aug 2009 15:05:43 +0000</pubDate>
		<guid isPermaLink="false">http://timburrell.net/?p=479#comment-227</guid>
		<description>This is a very useful introductin - thankyou! </description>
		<content:encoded><![CDATA[<p>This is a very useful introductin &#8211; thankyou!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on QAwesomeness: Reflection in C++ with Qt by Tim Burrell</title>
		<link>http://timburrell.net/blog/2009-01-21/qawesomeness-reflection-in-c-with-qt/comment-page-1/#comment-226</link>
		<dc:creator>Tim Burrell</dc:creator>
		<pubDate>Mon, 27 Jul 2009 11:31:35 +0000</pubDate>
		<guid isPermaLink="false">http://timburrell.net/?p=398#comment-226</guid>
		<description>You can&#039;t add functions to classes at runtime; remember this is still C++ so you must abide by the rules of static binding.  That being said, if you had no idea what class your current object was, you could still query it for its name and then read in some function names from a text file and call those functions (as strings): 
 
// get the current class&#039; meta object 
QMetaObject* meta = this-&gt;metaObject(); // emphasized &#039;this&#039; access to show this working on the current class 
QString ClassName = meta-&gt;className(); 
 
// open the file 
QFile file(ClassName + &quot;.txt&quot;); 
file.open(QIODevice::ReadOnly); 
QDataStream in(&amp;file);  // allow reading serialized data from the file 
 
QString method1, method2; 
in &gt;&gt; method1; 
in &gt;&gt; method2; 
 
// invoke the methods 
meta-&gt;invokeMethod(this, method1, Qt::DirectConnection); 
meta-&gt;invokeMethod(this, method2, Qt::DirectConnection); </description>
		<content:encoded><![CDATA[<p>You can&#039;t add functions to classes at runtime; remember this is still C++ so you must abide by the rules of static binding.  That being said, if you had no idea what class your current object was, you could still query it for its name and then read in some function names from a text file and call those functions (as strings): </p>
<p>// get the current class&#039; meta object<br />
QMetaObject* meta = this-&gt;metaObject(); // emphasized &#039;this&#039; access to show this working on the current class<br />
QString ClassName = meta-&gt;className(); </p>
<p>// open the file<br />
QFile file(ClassName + &quot;.txt&#038;quot<img src='http://timburrell.net/smilies/yahoo_wink.gif' alt='&#59;&#41;' class='wp-smiley' width='18' height='18' title='&#59;&#41;' />;<br />
file.open(QIODevice::ReadOnly);<br />
QDataStream in(&amp;file);  // allow reading serialized data from the file </p>
<p>QString method1, method2;<br />
in &gt;&gt; method1;<br />
in &gt;&gt; method2; </p>
<p>// invoke the methods<br />
meta-&gt;invokeMethod(this, method1, Qt:<img src='http://timburrell.net/smilies/yahoo_bigsmile.gif' alt='&#58;&#68;' class='wp-smiley' width='18' height='18' title='&#58;&#68;' />irectConnection);<br />
meta-&gt;invokeMethod(this, method2, Qt:<img src='http://timburrell.net/smilies/yahoo_bigsmile.gif' alt='&#58;&#68;' class='wp-smiley' width='18' height='18' title='&#58;&#68;' />irectConnection);</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on QAwesomeness: Reflection in C++ with Qt by Dat Chu</title>
		<link>http://timburrell.net/blog/2009-01-21/qawesomeness-reflection-in-c-with-qt/comment-page-1/#comment-225</link>
		<dc:creator>Dat Chu</dc:creator>
		<pubDate>Mon, 27 Jul 2009 02:45:21 +0000</pubDate>
		<guid isPermaLink="false">http://timburrell.net/?p=398#comment-225</guid>
		<description>Thanks for the article, Tim. Would you mind posting an example or two on using Qt Reflection capability to do something useful? Something as simple as: read a txt file that has the same name as the current class name, then create a method with the names given in each line of this text file. 
 
e.g. MyClass.txt contains 2 lines: &quot;getName&quot;, &quot;getTime&quot; . I want a class called MyClass with two methods getName() and getTime() now. </description>
		<content:encoded><![CDATA[<p>Thanks for the article, Tim. Would you mind posting an example or two on using Qt Reflection capability to do something useful? Something as simple as: read a txt file that has the same name as the current class name, then create a method with the names given in each line of this text file. </p>
<p>e.g. MyClass.txt contains 2 lines: &quot;getName&quot;, &quot;getTime&quot; . I want a class called MyClass with two methods getName() and getTime() now.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on QAwesomeness: Reflection in C++ with Qt by Zack</title>
		<link>http://timburrell.net/blog/2009-01-21/qawesomeness-reflection-in-c-with-qt/comment-page-1/#comment-219</link>
		<dc:creator>Zack</dc:creator>
		<pubDate>Tue, 19 May 2009 13:32:10 +0000</pubDate>
		<guid isPermaLink="false">http://timburrell.net/?p=398#comment-219</guid>
		<description>Thanks for the article Tim! 
Have been excited to start learning and working with QT and now I&#039;m even more excited :) </description>
		<content:encoded><![CDATA[<p>Thanks for the article Tim!<br />
Have been excited to start learning and working with QT and now I&#039;m even more excited <img src='http://timburrell.net/smilies/yahoo_smiley.gif' alt='&#58;&#41;' class='wp-smiley' width='18' height='18' title='&#58;&#41;' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Blog by Jessicah Dutton Photography&#8217;s Photo Blog</title>
		<link>http://timburrell.net/blog/comment-page-1/#comment-200</link>
		<dc:creator>Jessicah Dutton Photography&#8217;s Photo Blog</dc:creator>
		<pubDate>Mon, 09 Feb 2009 19:54:29 +0000</pubDate>
		<guid isPermaLink="false">http://new.timburrell.net/blog/#comment-200</guid>
		<description>[...] I have to send out a big THANK YOU to my ever-helpful/loving/supportive/knowlegeable husband, Tim.  Without whom I would not be where I am today.  (And I certainly would not be as computer savy!) [...]</description>
		<content:encoded><![CDATA[<p>[...] I have to send out a big THANK YOU to my ever-helpful/loving/supportive/knowlegeable husband, Tim.  Without whom I would not be where I am today.  (And I certainly would not be as computer savy!) [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on D Postmortem by Tim.</title>
		<link>http://timburrell.net/blog/2008-06-22/d-postmortem/comment-page-1/#comment-172</link>
		<dc:creator>Tim.</dc:creator>
		<pubDate>Tue, 24 Jun 2008 11:13:22 +0000</pubDate>
		<guid isPermaLink="false">http://timburrell.net/?p=358#comment-172</guid>
		<description>Hey Marko,

I actually spent most of my time with gdc as I&#039;m a Linux guy and a Tango fan.  Unfortunately gdc + windows + tango is still a bit of an issue as well, so when compiling on windows I had to use dmd.

If you have no need to use dmd your mileage will probably be quite a bit better, as almost all the major problems I encountered were with dmd... that being said it&#039;s still quite easy to ICE gdc, especially if you start playing with mixins or doing any template metaprogramming.  Other small issues with gdc:  default function parameters being assigned via static struct / class opCalls can segfault the compiler.  Little things like that, fortunately which are mostly easily worked around.

My intent with the post wasn&#039;t to dissuade people from playing with D (which I still think is a great language), I just wanted to make sure people are aware of the real deal when it comes to developing with D.  

Learning D has had a major impact on my programming style, and what I&#039;ve now come to demand from a language, so regardless of the fact that I won&#039;t be using D until some time in the future when the issues are sorted, I&#039;m still grateful I took the time to learn it.</description>
		<content:encoded><![CDATA[<p>Hey Marko,</p>
<p>I actually spent most of my time with gdc as I&#8217;m a Linux guy and a Tango fan.  Unfortunately gdc + windows + tango is still a bit of an issue as well, so when compiling on windows I had to use dmd.</p>
<p>If you have no need to use dmd your mileage will probably be quite a bit better, as almost all the major problems I encountered were with dmd&#8230; that being said it&#8217;s still quite easy to ICE gdc, especially if you start playing with mixins or doing any template metaprogramming.  Other small issues with gdc:  default function parameters being assigned via static struct / class opCalls can segfault the compiler.  Little things like that, fortunately which are mostly easily worked around.</p>
<p>My intent with the post wasn&#8217;t to dissuade people from playing with D (which I still think is a great language), I just wanted to make sure people are aware of the real deal when it comes to developing with D.  </p>
<p>Learning D has had a major impact on my programming style, and what I&#8217;ve now come to demand from a language, so regardless of the fact that I won&#8217;t be using D until some time in the future when the issues are sorted, I&#8217;m still grateful I took the time to learn it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on D Postmortem by Tim.</title>
		<link>http://timburrell.net/blog/2008-06-22/d-postmortem/comment-page-1/#comment-170</link>
		<dc:creator>Tim.</dc:creator>
		<pubDate>Mon, 23 Jun 2008 22:50:20 +0000</pubDate>
		<guid isPermaLink="false">http://timburrell.net/?p=358#comment-170</guid>
		<description>Mike: Hmm... good points!  I have to concede that syntax is definitely a factor, especially after you mention list comprehensions.  Python also has some other nice syntactual bits thrown in like the array slicing, collection iteration syntax, ranges, etc, that definitely speed up development time.

And totally agreed on the simplicity.

The cool thing about D is it has a lot of the syntactual niceties of Python -- array slices, built in strings and associative arrays, easy collection iteration, and is definitely way simpler than C++.  

One of the things that really (and I mean REALLY) shines about D though, is the Tango standard lib.  It&#039;s by far and above the best language runtime I&#039;ve ever come across both in terms of design and quality, and for striking a perfect balance between including a nice full feature set, without offering too much (ie no Java&#039;s even-the-kitchen-sink-isn&#039;t-as-bloated-as-this-API issue).

Don&#039;t get me wrong, I&#039;d never say that D is more efficient to develop in than Python or Ruby as a general statement -- obviously there&#039;s cases where Python is the right choice, and there&#039;s cases where D might be, or C++, or Objective-C, and so on.  I do, however, still hold to the statement that if D lived up to its potential, it really could fit the bill as a low-level system level language that can be as fast, or even faster, than some of the scripting languages (including Python) to develop in (for certain tasks).

And you&#039;re right the reason is part syntax, part standard library, and part simplicity.

If it weren&#039;t for the issues I discussed in the post D really would be a joy to develop in.

p.s. Thanks for the note on the Firefox 3 issue!  I&#039;ll look into that.</description>
		<content:encoded><![CDATA[<p>Mike: Hmm&#8230; good points!  I have to concede that syntax is definitely a factor, especially after you mention list comprehensions.  Python also has some other nice syntactual bits thrown in like the array slicing, collection iteration syntax, ranges, etc, that definitely speed up development time.</p>
<p>And totally agreed on the simplicity.</p>
<p>The cool thing about D is it has a lot of the syntactual niceties of Python &#8212; array slices, built in strings and associative arrays, easy collection iteration, and is definitely way simpler than C++.  </p>
<p>One of the things that really (and I mean REALLY) shines about D though, is the Tango standard lib.  It&#8217;s by far and above the best language runtime I&#8217;ve ever come across both in terms of design and quality, and for striking a perfect balance between including a nice full feature set, without offering too much (ie no Java&#8217;s even-the-kitchen-sink-isn&#8217;t-as-bloated-as-this-API issue).</p>
<p>Don&#8217;t get me wrong, I&#8217;d never say that D is more efficient to develop in than Python or Ruby as a general statement &#8212; obviously there&#8217;s cases where Python is the right choice, and there&#8217;s cases where D might be, or C++, or Objective-C, and so on.  I do, however, still hold to the statement that if D lived up to its potential, it really could fit the bill as a low-level system level language that can be as fast, or even faster, than some of the scripting languages (including Python) to develop in (for certain tasks).</p>
<p>And you&#8217;re right the reason is part syntax, part standard library, and part simplicity.</p>
<p>If it weren&#8217;t for the issues I discussed in the post D really would be a joy to develop in.</p>
<p>p.s. Thanks for the note on the Firefox 3 issue!  I&#8217;ll look into that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on D Postmortem by Tim.</title>
		<link>http://timburrell.net/blog/2008-06-22/d-postmortem/comment-page-1/#comment-167</link>
		<dc:creator>Tim.</dc:creator>
		<pubDate>Mon, 23 Jun 2008 10:41:01 +0000</pubDate>
		<guid isPermaLink="false">http://timburrell.net/?p=358#comment-167</guid>
		<description>Markus: I know it&#039;s hard to believe a compiled language might be as fast to develop in as an ultra-handy scripted language like Python, but think about it this way: what actually makes Python and friends so fast to develop in?  

It&#039;s not the syntax, that much is clear.  In fact if anything the Python syntax is slower than C/C++/D.  No increment / decrement operators, no ternary operator, and just more verbose all around.

So what is it then?  It&#039;s language features and standard library.  Python is so handy because of its built in strings, associative arrays, and quick and easy to use runtime.  Python is actually a different case because it&#039;s a dynamic language so that helps in some cases and detracts in others, but D also makes some rounds in that area with its extensive traits system.

The thing that I argue puts D on par with languages like Python and Ruby is precisely those language features.  D has associative arrays, garbage collection, etc, and a super handy standard lib / runtime.  I&#039;m just as much a Python user as a D developer, and I really do believe D can be faster to develop in -- they just serve different purposes, so you have to pick your task accordingly of course.

But... if you don&#039;t believe start playing with D and give it a go yourself!  Despite my post-mortem I&#039;m still glad I picked up D.  It opened my eyes to the fact that there is a hole in the system-level language area, and although I don&#039;t think D covers it yet, maybe some day it will, or maybe something else will?  Maybe C++ will step up.  Who knows.</description>
		<content:encoded><![CDATA[<p>Markus: I know it&#8217;s hard to believe a compiled language might be as fast to develop in as an ultra-handy scripted language like Python, but think about it this way: what actually makes Python and friends so fast to develop in?  </p>
<p>It&#8217;s not the syntax, that much is clear.  In fact if anything the Python syntax is slower than C/C++/D.  No increment / decrement operators, no ternary operator, and just more verbose all around.</p>
<p>So what is it then?  It&#8217;s language features and standard library.  Python is so handy because of its built in strings, associative arrays, and quick and easy to use runtime.  Python is actually a different case because it&#8217;s a dynamic language so that helps in some cases and detracts in others, but D also makes some rounds in that area with its extensive traits system.</p>
<p>The thing that I argue puts D on par with languages like Python and Ruby is precisely those language features.  D has associative arrays, garbage collection, etc, and a super handy standard lib / runtime.  I&#8217;m just as much a Python user as a D developer, and I really do believe D can be faster to develop in &#8212; they just serve different purposes, so you have to pick your task accordingly of course.</p>
<p>But&#8230; if you don&#8217;t believe start playing with D and give it a go yourself!  Despite my post-mortem I&#8217;m still glad I picked up D.  It opened my eyes to the fact that there is a hole in the system-level language area, and although I don&#8217;t think D covers it yet, maybe some day it will, or maybe something else will?  Maybe C++ will step up.  Who knows.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on D Postmortem by Tim.</title>
		<link>http://timburrell.net/blog/2008-06-22/d-postmortem/comment-page-1/#comment-166</link>
		<dc:creator>Tim.</dc:creator>
		<pubDate>Mon, 23 Jun 2008 10:34:53 +0000</pubDate>
		<guid isPermaLink="false">http://timburrell.net/?p=358#comment-166</guid>
		<description>Rob: Good point, I haven&#039;t been working with any 64 bit platforms... I&#039;ve heard gdc and Tango are working okay on them now, but I know what was an issue for a while, and still is if you need to use DMD.</description>
		<content:encoded><![CDATA[<p>Rob: Good point, I haven&#8217;t been working with any 64 bit platforms&#8230; I&#8217;ve heard gdc and Tango are working okay on them now, but I know what was an issue for a while, and still is if you need to use DMD.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on D Postmortem by Tim.</title>
		<link>http://timburrell.net/blog/2008-06-22/d-postmortem/comment-page-1/#comment-165</link>
		<dc:creator>Tim.</dc:creator>
		<pubDate>Mon, 23 Jun 2008 10:34:11 +0000</pubDate>
		<guid isPermaLink="false">http://timburrell.net/?p=358#comment-165</guid>
		<description>John: Totally agree... there&#039;s definitely a void in the system-level language coverage.  C++ isn&#039;t the be-all-end-all, but approaching its usefulness is really tough for a new language.  I think D could get there one day, it just needs to keep forging ahead and work out these little problems.</description>
		<content:encoded><![CDATA[<p>John: Totally agree&#8230; there&#8217;s definitely a void in the system-level language coverage.  C++ isn&#8217;t the be-all-end-all, but approaching its usefulness is really tough for a new language.  I think D could get there one day, it just needs to keep forging ahead and work out these little problems.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
