<?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"
	>
<channel>
	<title>Comments on: Functional Dependencies</title>
	<atom:link href="http://www.donniepinkston.net/2007-03-14/functional-dependencies.html/feed" rel="self" type="application/rss+xml" />
	<link>http://www.donniepinkston.net/2007-03-14/functional-dependencies.html</link>
	<description>(there are many more like it, but this one is mine)</description>
	<pubDate>Thu, 04 Dec 2008 23:30:58 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: donnie</title>
		<link>http://www.donniepinkston.net/2007-03-14/functional-dependencies.html#comment-2572</link>
		<dc:creator>donnie</dc:creator>
		<pubDate>Sun, 18 Mar 2007 05:29:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.donniepinkston.net/2007-03-14/functional-dependencies.html#comment-2572</guid>
		<description>Well Fred, you are correct on both counts.  Yes, OCaml does have a set data structure, which the students actually used in their OCaml programs.  And yes, the students' programs were also algorithmically inefficient.  :-)

This is a bit of an apples-to-oranges comparison, I admit.  I would expect my C++ program to be much slower if it relied only on STL sets.  Those also use a tree to represent the values in the set, and it would be very inefficient to compute unions, differences, etc.  So, the main difference here is simply in how you represent the set, based on the characteristics of the set, and based on what you will be doing with the set.  For example, these sets will have no more than 26 elements!  And, there will be a lot of set unions and differences.  So, most of the general-purpose set data-types wouldn't be a good choice.

Similarly, I am sure that one could cook up an OCaml data type exactly like the one I made in C++:  sets are ints, and each element in the set is a bit in the int.  I imagine you could probably make a very efficient program in any language, as long as you have bitwise logical operations at your disposal.

The other part of the problem is how one actually computes the set of functional dependencies.  There are fast ways and slow ways, and in the set of slow ways there are some &lt;em&gt;really&lt;/em&gt; slow ways, and then some not so slow ways.  It may also be that the students didn't have their programs as well-tuned as I did.

So, maybe I should have entitled my post "Old Age and Treachery."  :-)  This problem doesn't come down specifically to the language that's used; it's more about recognizing what operations are used 95% of the time in the solution, then making those operations really really fast.

Oh, and also I am fond of C++.  :-)</description>
		<content:encoded><![CDATA[<p>Well Fred, you are correct on both counts.  Yes, OCaml does have a set data structure, which the students actually used in their OCaml programs.  And yes, the students&#8217; programs were also algorithmically inefficient.  <img src='http://www.donniepinkston.net/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>This is a bit of an apples-to-oranges comparison, I admit.  I would expect my C++ program to be much slower if it relied only on STL sets.  Those also use a tree to represent the values in the set, and it would be very inefficient to compute unions, differences, etc.  So, the main difference here is simply in how you represent the set, based on the characteristics of the set, and based on what you will be doing with the set.  For example, these sets will have no more than 26 elements!  And, there will be a lot of set unions and differences.  So, most of the general-purpose set data-types wouldn&#8217;t be a good choice.</p>
<p>Similarly, I am sure that one could cook up an OCaml data type exactly like the one I made in C++:  sets are ints, and each element in the set is a bit in the int.  I imagine you could probably make a very efficient program in any language, as long as you have bitwise logical operations at your disposal.</p>
<p>The other part of the problem is how one actually computes the set of functional dependencies.  There are fast ways and slow ways, and in the set of slow ways there are some <em>really</em> slow ways, and then some not so slow ways.  It may also be that the students didn&#8217;t have their programs as well-tuned as I did.</p>
<p>So, maybe I should have entitled my post &#8220;Old Age and Treachery.&#8221;  <img src='http://www.donniepinkston.net/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  This problem doesn&#8217;t come down specifically to the language that&#8217;s used; it&#8217;s more about recognizing what operations are used 95% of the time in the solution, then making those operations really really fast.</p>
<p>Oh, and also I am fond of C++.  <img src='http://www.donniepinkston.net/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Fred</title>
		<link>http://www.donniepinkston.net/2007-03-14/functional-dependencies.html#comment-2561</link>
		<dc:creator>Fred</dc:creator>
		<pubDate>Sat, 17 Mar 2007 10:58:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.donniepinkston.net/2007-03-14/functional-dependencies.html#comment-2561</guid>
		<description>OCaml has a set data structure too, so I wonder if the students' programs were just algorithmically inefficient or if it really has something to do with the language?</description>
		<content:encoded><![CDATA[<p>OCaml has a set data structure too, so I wonder if the students&#8217; programs were just algorithmically inefficient or if it really has something to do with the language?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
