<?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 on: Cocoa Radio Interview</title>
	<atom:link href="http://blog.macromates.com/2006/cocoa-radio-interview/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.macromates.com/2006/cocoa-radio-interview/</link>
	<description>TextMate and OS X</description>
	<lastBuildDate>Wed, 03 Feb 2010 16:53:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Charles Parnot</title>
		<link>http://blog.macromates.com/2006/cocoa-radio-interview/#comment-1081</link>
		<dc:creator>Charles Parnot</dc:creator>
		<pubDate>Tue, 09 May 2006 19:46:09 +0000</pubDate>
		<guid isPermaLink="false">http://macromates.com/blog/archives/2006/05/01/cocoa-radio-interview/#comment-1081</guid>
		<description>&lt;p&gt;Thanks for the insightful answer, Allan!&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Thanks for the insightful answer, Allan!</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Allan Odgaard</title>
		<link>http://blog.macromates.com/2006/cocoa-radio-interview/#comment-1058</link>
		<dc:creator>Allan Odgaard</dc:creator>
		<pubDate>Mon, 08 May 2006 00:48:39 +0000</pubDate>
		<guid isPermaLink="false">http://macromates.com/blog/archives/2006/05/01/cocoa-radio-interview/#comment-1058</guid>
		<description>&lt;p&gt;Martin: I posted my reply in the form of a new blog entry.&lt;/p&gt;

&lt;p&gt;Charles: Yes to using generic programming in TextMate.&lt;/p&gt;

&lt;p&gt;The core of the application is an STL conforming container which expose only a handful of member functions, and the storage is accessed through iterators. This means that I can use all the standard library functions on my text storage, which I do a lot. It also means that everything I build on-top of it, is ignorant about the actual storage, which means they function on whatever unit they are given as input (via iterators), be it current word, line, selection, column selection, or entire document.&lt;/p&gt;

&lt;p&gt;This might just sound like abstraction, but the beauty is that this abstraction has zero overhead when it comes to both performance and more importantly (IMHO) syntax.&lt;/p&gt;

&lt;p&gt;For example advancing the caret to the next space is just a matter of:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;caret = std::find(caret, document.end(), &#039; &#039;);
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;What’s important to notice here is that &lt;code&gt;std::find&lt;/code&gt; is not a function I wrote. It is a standard re-usable algorithm from the standard library, unlike e.g. Foundation Kit, where each container has its own &lt;code&gt;indexOfObject:&lt;/code&gt; and related methods.&lt;/p&gt;

&lt;p&gt;Being able to use standard functions like that not only cuts down on the amount of code I have to write, but it is a clear testament to the interchangeability of things with STL, which is a tremendous win when trying to keep the complexity and inter-dependency of components to a minimum.&lt;/p&gt;

&lt;p&gt;As for bringing these concepts to Objective-C, I don’t really see it working. There would of course be a performance penalty, but the syntactical overhead would also be big. The fact that Objective-C is very dynamic is partly responsible for this, because the C++ compiler does a lot of work compile-time to make the proper choices, e.g. select the proper function/operator to call based on argument types or which namespace arguments are from, perform implicit type conversions when necessary, handle proper construction and destruction of all stack-allocated resources, including potential member data for such (and even does proper deconstruction when exceptions are thrown during partial construction), etc.&lt;/p&gt;

&lt;p&gt;STL makes use of close to every single C++ feature, and C++98 had a lot of stuff added solely to better support STL concepts. So without the C++ compiler, one would first have to re-implement what it does, and I don’t think that is feasible with Objective-C.&lt;/p&gt;

&lt;p&gt;As I see it, Objective-C and C++ solve problems in two different domains, and so does it rather differently.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Martin: I posted my reply in the form of a new blog entry.</p>

<p>Charles: Yes to using generic programming in TextMate.</p>

<p>The core of the application is an STL conforming container which expose only a handful of member functions, and the storage is accessed through iterators. This means that I can use all the standard library functions on my text storage, which I do a lot. It also means that everything I build on-top of it, is ignorant about the actual storage, which means they function on whatever unit they are given as input (via iterators), be it current word, line, selection, column selection, or entire document.</p>

<p>This might just sound like abstraction, but the beauty is that this abstraction has zero overhead when it comes to both performance and more importantly (IMHO) syntax.</p>

<p>For example advancing the caret to the next space is just a matter of:</p>

<p><code>caret = std::find(caret, document.end(), ' ');
</code></p>

<p>What’s important to notice here is that <code>std::find</code> is not a function I wrote. It is a standard re-usable algorithm from the standard library, unlike e.g. Foundation Kit, where each container has its own <code>indexOfObject:</code> and related methods.</p>

<p>Being able to use standard functions like that not only cuts down on the amount of code I have to write, but it is a clear testament to the interchangeability of things with STL, which is a tremendous win when trying to keep the complexity and inter-dependency of components to a minimum.</p>

<p>As for bringing these concepts to Objective-C, I don’t really see it working. There would of course be a performance penalty, but the syntactical overhead would also be big. The fact that Objective-C is very dynamic is partly responsible for this, because the C++ compiler does a lot of work compile-time to make the proper choices, e.g. select the proper function/operator to call based on argument types or which namespace arguments are from, perform implicit type conversions when necessary, handle proper construction and destruction of all stack-allocated resources, including potential member data for such (and even does proper deconstruction when exceptions are thrown during partial construction), etc.</p>

<p>STL makes use of close to every single C++ feature, and C++98 had a lot of stuff added solely to better support STL concepts. So without the C++ compiler, one would first have to re-implement what it does, and I don’t think that is feasible with Objective-C.</p>

<p>As I see it, Objective-C and C++ solve problems in two different domains, and so does it rather differently.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Dan Kelley</title>
		<link>http://blog.macromates.com/2006/cocoa-radio-interview/#comment-1041</link>
		<dc:creator>Dan Kelley</dc:creator>
		<pubDate>Fri, 05 May 2006 23:25:39 +0000</pubDate>
		<guid isPermaLink="false">http://macromates.com/blog/archives/2006/05/01/cocoa-radio-interview/#comment-1041</guid>
		<description>&lt;p&gt;Allan, I really enjoyed the radio interview.  I also enjoyed -- and recommend to others on this thread -- the interview with Alexander Stepanov.  I laughed out loud at the new (to me) acronym MOP ... money oriented programming .&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Allan, I really enjoyed the radio interview.  I also enjoyed &#8212; and recommend to others on this thread &#8212; the interview with Alexander Stepanov.  I laughed out loud at the new (to me) acronym MOP &#8230; money oriented programming .</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Charles Parnot</title>
		<link>http://blog.macromates.com/2006/cocoa-radio-interview/#comment-1039</link>
		<dc:creator>Charles Parnot</dc:creator>
		<pubDate>Fri, 05 May 2006 06:08:43 +0000</pubDate>
		<guid isPermaLink="false">http://macromates.com/blog/archives/2006/05/01/cocoa-radio-interview/#comment-1039</guid>
		<description>&lt;p&gt;You got me intrigued by what Generic Programming is and I read the interview you link to (btw, maybe this link from the interview can be some kind of intro to those concepts: http://www.sgi.com/tech/stl/table_of_contents.html).&lt;/p&gt;

&lt;p&gt;Anyway, I was wondering if you were using any of these concepts in TextMate&#039;s implementation, and/or if you see any possible implementation of these concepts into ObjC (its dynamic nature might be a plus, but it is likely that it would also make an implementation slower).&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>You got me intrigued by what Generic Programming is and I read the interview you link to (btw, maybe this link from the interview can be some kind of intro to those concepts: <a href="http://www.sgi.com/tech/stl/table_of_contents.html)" rel="nofollow">http://www.sgi.com/tech/stl/table_of_contents.html)</a>.</p>

<p>Anyway, I was wondering if you were using any of these concepts in TextMate&#039;s implementation, and/or if you see any possible implementation of these concepts into ObjC (its dynamic nature might be a plus, but it is likely that it would also make an implementation slower).</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Martin Winter</title>
		<link>http://blog.macromates.com/2006/cocoa-radio-interview/#comment-1036</link>
		<dc:creator>Martin Winter</dc:creator>
		<pubDate>Thu, 04 May 2006 09:49:43 +0000</pubDate>
		<guid isPermaLink="false">http://macromates.com/blog/archives/2006/05/01/cocoa-radio-interview/#comment-1036</guid>
		<description>&lt;p&gt;In the interview, which I enjoyed very much, you mentioned that somebody should write a decent mail application. I&#039;d like to know what exactly you mean -- what is it that you don&#039;t like about current apps and what would you like to see in a potential future one?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>In the interview, which I enjoyed very much, you mentioned that somebody should write a decent mail application. I&#039;d like to know what exactly you mean &#8212; what is it that you don&#039;t like about current apps and what would you like to see in a potential future one?</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Andy Matuschak</title>
		<link>http://blog.macromates.com/2006/cocoa-radio-interview/#comment-1034</link>
		<dc:creator>Andy Matuschak</dc:creator>
		<pubDate>Wed, 03 May 2006 15:14:21 +0000</pubDate>
		<guid isPermaLink="false">http://macromates.com/blog/archives/2006/05/01/cocoa-radio-interview/#comment-1034</guid>
		<description>&lt;p&gt;Thanks a lot for the Sparkle plug in the interview, Allan! :)&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Thanks a lot for the Sparkle plug in the interview, Allan! :)</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Justin</title>
		<link>http://blog.macromates.com/2006/cocoa-radio-interview/#comment-1033</link>
		<dc:creator>Justin</dc:creator>
		<pubDate>Tue, 02 May 2006 22:45:27 +0000</pubDate>
		<guid isPermaLink="false">http://macromates.com/blog/archives/2006/05/01/cocoa-radio-interview/#comment-1033</guid>
		<description>&lt;p&gt;Great interview, Allan. I&#039;m the developer of &lt;a href=&quot;http://codesorcery.net/pukka&quot; rel=&quot;nofollow&quot;&gt;Pukka&lt;/a&gt;, which Blake mentioned. You&#039;re success is an inspiration -- and it sounds like you&#039;re having fun doing it. That&#039;s the best part.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Great interview, Allan. I&#039;m the developer of <a href="http://codesorcery.net/pukka" rel="nofollow">Pukka</a>, which Blake mentioned. You&#039;re success is an inspiration &#8212; and it sounds like you&#039;re having fun doing it. That&#039;s the best part.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Allan Odgaard</title>
		<link>http://blog.macromates.com/2006/cocoa-radio-interview/#comment-1032</link>
		<dc:creator>Allan Odgaard</dc:creator>
		<pubDate>Tue, 02 May 2006 22:02:55 +0000</pubDate>
		<guid isPermaLink="false">http://macromates.com/blog/archives/2006/05/01/cocoa-radio-interview/#comment-1032</guid>
		<description>&lt;p&gt;Ups… it should have said field editor, not first responder. The first responder system is indeed ingenious! :)&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Ups… it should have said field editor, not first responder. The first responder system is indeed ingenious! :)</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Marshall Elfstrand</title>
		<link>http://blog.macromates.com/2006/cocoa-radio-interview/#comment-1031</link>
		<dc:creator>Marshall Elfstrand</dc:creator>
		<pubDate>Tue, 02 May 2006 21:50:36 +0000</pubDate>
		<guid isPermaLink="false">http://macromates.com/blog/archives/2006/05/01/cocoa-radio-interview/#comment-1031</guid>
		<description>&lt;p&gt;I&#039;m interested to know what you dislike about the first responder system.  Is it the concept or the way it&#039;s implemented?  When I was first looking at Cocoa, the first responder concept seemed to me to be one of the more brilliant inventions (having had to deal with tracking focus and writing my own cut/copy/paste routines in other GUI environments).  But I haven&#039;t done anything really serious in Cocoa so I wouldn&#039;t be as aware of flaws in it.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I&#039;m interested to know what you dislike about the first responder system.  Is it the concept or the way it&#039;s implemented?  When I was first looking at Cocoa, the first responder concept seemed to me to be one of the more brilliant inventions (having had to deal with tracking focus and writing my own cut/copy/paste routines in other GUI environments).  But I haven&#039;t done anything really serious in Cocoa so I wouldn&#039;t be as aware of flaws in it.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Allan Odgaard</title>
		<link>http://blog.macromates.com/2006/cocoa-radio-interview/#comment-1029</link>
		<dc:creator>Allan Odgaard</dc:creator>
		<pubDate>Tue, 02 May 2006 02:37:32 +0000</pubDate>
		<guid isPermaLink="false">http://macromates.com/blog/archives/2006/05/01/cocoa-radio-interview/#comment-1029</guid>
		<description>&lt;p&gt;Thomas: he did the initial Ruby and Rails bundles. And our cooperation stopped after the 1.0 release — he has his own things to work on :)&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Thomas: he did the initial Ruby and Rails bundles. And our cooperation stopped after the 1.0 release — he has his own things to work on :)</p>]]></content:encoded>
	</item>
</channel>
</rss>
