<?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: Turducken</title>
	<atom:link href="http://imprompt.us/2007/turducken/feed/" rel="self" type="application/rss+xml" />
	<link>http://imprompt.us/2007/turducken/</link>
	<description>Computer Science and Teaching and Other Ancillary Things</description>
	<lastBuildDate>Sat, 31 Mar 2012 15:41:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
	<item>
		<title>By: Mike Atlas</title>
		<link>http://imprompt.us/2007/turducken/comment-page-1/#comment-16705</link>
		<dc:creator>Mike Atlas</dc:creator>
		<pubDate>Sat, 03 Oct 2009 04:42:53 +0000</pubDate>
		<guid isPermaLink="false">http://imprompt.us/2007/turducken/#comment-16705</guid>
		<description>Running with the Turducken analogy, I enjoy explaining to non computer science people (females especially....this is going get me in trouble someday) that running a program is like preparing a meal: you have ingredients to start with (data). You may need to follow several recipes (functions) to make a full meal, and some recipes may require you to have a different recipe&#039;s finished result already completed before you proceed further in the current recipe (using returned data from another function call). There are infinite different ways to mix up the food (data), and sometimes you might need to stir the food repeatedly (looping) until it is ready (conditionals). &lt;br&gt;&lt;br&gt;The end result? Something tasty and presentable that has more value than the initial ingredients.</description>
		<content:encoded><![CDATA[<p>Running with the Turducken analogy, I enjoy explaining to non computer science people (females especially&#8230;.this is going get me in trouble someday) that running a program is like preparing a meal: you have ingredients to start with (data). You may need to follow several recipes (functions) to make a full meal, and some recipes may require you to have a different recipe&#39;s finished result already completed before you proceed further in the current recipe (using returned data from another function call). There are infinite different ways to mix up the food (data), and sometimes you might need to stir the food repeatedly (looping) until it is ready (conditionals). </p>
<p>The end result? Something tasty and presentable that has more value than the initial ingredients.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter</title>
		<link>http://imprompt.us/2007/turducken/comment-page-1/#comment-1200</link>
		<dc:creator>Peter</dc:creator>
		<pubDate>Wed, 30 Jan 2008 21:24:39 +0000</pubDate>
		<guid isPermaLink="false">http://imprompt.us/2007/turducken/#comment-1200</guid>
		<description>Turn down your smug, dude.  State may be nasty, but is essential for almost all useful algorithms (network flow, anything with a double-ended queue, and the like), and it models very well how people think about these things.  It&#039;s possible to do without it - or to incorporate it into functional programming via monads and the like - but almost every modern algorithm requires relatively complex data structures in order to be as efficient as possible.  The bizarre quest for purity uber alles - even in the face of increased runtimes and worsening code opacity - is a bug in Computer Science and the study of programming languages, not a feature.  People are still writing dissertations about how to combine basic data structures with pure functional programming.  As of right now, programs need state to do anything of use or to implement most algorithms.</description>
		<content:encoded><![CDATA[<p>Turn down your smug, dude.  State may be nasty, but is essential for almost all useful algorithms (network flow, anything with a double-ended queue, and the like), and it models very well how people think about these things.  It&#8217;s possible to do without it &#8211; or to incorporate it into functional programming via monads and the like &#8211; but almost every modern algorithm requires relatively complex data structures in order to be as efficient as possible.  The bizarre quest for purity uber alles &#8211; even in the face of increased runtimes and worsening code opacity &#8211; is a bug in Computer Science and the study of programming languages, not a feature.  People are still writing dissertations about how to combine basic data structures with pure functional programming.  As of right now, programs need state to do anything of use or to implement most algorithms.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: StCredZero</title>
		<link>http://imprompt.us/2007/turducken/comment-page-1/#comment-1199</link>
		<dc:creator>StCredZero</dc:creator>
		<pubDate>Wed, 30 Jan 2008 20:36:19 +0000</pubDate>
		<guid isPermaLink="false">http://imprompt.us/2007/turducken/#comment-1199</guid>
		<description>&quot;...stuffing arrays inside of dictionaries inside of if statements and loops and recursive functions is...&quot; is often done in procedural programming.  It shouldn&#039;t be done (at all often) in Object Oriented programming.  It&#039;s not done in functional programming either.  

State is nasty.  That&#039;s one of the basic tenets of computer science/automata theory.  But there are lots of ways to manage state and its concomitant complexity.  You, my friend, seem to be just at the beginning of learning about the many ways this is done.</description>
		<content:encoded><![CDATA[<p>&#8220;&#8230;stuffing arrays inside of dictionaries inside of if statements and loops and recursive functions is&#8230;&#8221; is often done in procedural programming.  It shouldn&#8217;t be done (at all often) in Object Oriented programming.  It&#8217;s not done in functional programming either.  </p>
<p>State is nasty.  That&#8217;s one of the basic tenets of computer science/automata theory.  But there are lots of ways to manage state and its concomitant complexity.  You, my friend, seem to be just at the beginning of learning about the many ways this is done.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: gwenhwyfaer</title>
		<link>http://imprompt.us/2007/turducken/comment-page-1/#comment-1192</link>
		<dc:creator>gwenhwyfaer</dc:creator>
		<pubDate>Mon, 28 Jan 2008 15:57:22 +0000</pubDate>
		<guid isPermaLink="false">http://imprompt.us/2007/turducken/#comment-1192</guid>
		<description>&gt; For this matter, I will even include php, although php is the most horrible language ever created.

I see your PHP and raise you a MUMPS.</description>
		<content:encoded><![CDATA[<p>&gt; For this matter, I will even include php, although php is the most horrible language ever created.</p>
<p>I see your PHP and raise you a MUMPS.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: she</title>
		<link>http://imprompt.us/2007/turducken/comment-page-1/#comment-1191</link>
		<dc:creator>she</dc:creator>
		<pubDate>Mon, 28 Jan 2008 13:37:49 +0000</pubDate>
		<guid isPermaLink="false">http://imprompt.us/2007/turducken/#comment-1191</guid>
		<description>One big difference is static, old languages vs dynamic, newer ones.

And I dont mean Perl - perl is ugly. 
I refer to the generation of ruby and python (i mentioned ruby first because I prefer ruby, but I prefer python&#039;s readability over perl&#039;s line noise any time, even if some decisions in python are extremely awkward for me)

(For this matter, I will even include php, although php is the most horrible language ever created. It however shows that the www is extremely important, and even if you are such an ugly language you can win a LOT by trying to be simple in essence, and focusing on getting a job done. I dont think php would have ever survived 
without the www though, and I am still sad that neither ruby nor python really tackle php&#039;s strongest base - the www root. A solution like rails or django is totally the wrong way to beat php, for several reasons. Anyway, I digress with ranting... sorry)


Back to the point

&quot;Teaching someone to program is a nice illustration of how impossibly weird this activity actually is, and how foreign it is the first time.&quot;

I think with i.e. ruby, these things get a lot more natural in human thinking. Yes, you still have loops and if/elsif conditions, but at least you have your data structure easier accessible (easier to your brain)


array.each do &#124;your_entry&#124;
  puts your_entry
end

(Though I&#039;d prefer {} in the above case, but &quot;do&quot; is a nicer word for my brain and thus nicer to try to understand)



&gt; Functions can contain any code, including calls to other 
&gt; functions. This is crazy for people. They just sort of freak out
&gt; when they see functions calling each other and nesting inside of
&gt; each other.

I think that depends on the way you think. In ruby, everything is a method, and if you have a cat like this:

class Cat # which obviously should be a cat

then I think everyone would understand models like this:

cat = Cat.new
cat.meow # the cat will meow
cat.hide # the cat tries to hide... what a coward
cat.move_legs # obviously, in order to move, the cat must move it legs
cat.run_away # a method which will invoke many other methods... run_away is a complex task, which may involve hiding, moving legs, meowing maybe if you want to alert a human &quot;friend&quot; etc... etc..

Ruby&#039;s model is not a perfect real-life simulation. There are &quot;multiple relationships&quot; in reallife world, but ruby distinguish between a class and a module. 
In such a way, a language like Io has a &quot;purer model&quot; (but personally I feel Io still has quite a way to go before it can really take off)

I think that the best new language would be one that stops 
re-creating what other languages feature, and instead 
concentrates on the human being. Objects are great to 
work with but it still is not the best way for a human
THINKER.</description>
		<content:encoded><![CDATA[<p>One big difference is static, old languages vs dynamic, newer ones.</p>
<p>And I dont mean Perl &#8211; perl is ugly.<br />
I refer to the generation of ruby and python (i mentioned ruby first because I prefer ruby, but I prefer python&#8217;s readability over perl&#8217;s line noise any time, even if some decisions in python are extremely awkward for me)</p>
<p>(For this matter, I will even include php, although php is the most horrible language ever created. It however shows that the www is extremely important, and even if you are such an ugly language you can win a LOT by trying to be simple in essence, and focusing on getting a job done. I dont think php would have ever survived<br />
without the www though, and I am still sad that neither ruby nor python really tackle php&#8217;s strongest base &#8211; the www root. A solution like rails or django is totally the wrong way to beat php, for several reasons. Anyway, I digress with ranting&#8230; sorry)</p>
<p>Back to the point</p>
<p>&#8220;Teaching someone to program is a nice illustration of how impossibly weird this activity actually is, and how foreign it is the first time.&#8221;</p>
<p>I think with i.e. ruby, these things get a lot more natural in human thinking. Yes, you still have loops and if/elsif conditions, but at least you have your data structure easier accessible (easier to your brain)</p>
<p>array.each do |your_entry|<br />
  puts your_entry<br />
end</p>
<p>(Though I&#8217;d prefer {} in the above case, but &#8220;do&#8221; is a nicer word for my brain and thus nicer to try to understand)</p>
<p>&gt; Functions can contain any code, including calls to other<br />
&gt; functions. This is crazy for people. They just sort of freak out<br />
&gt; when they see functions calling each other and nesting inside of<br />
&gt; each other.</p>
<p>I think that depends on the way you think. In ruby, everything is a method, and if you have a cat like this:</p>
<p>class Cat # which obviously should be a cat</p>
<p>then I think everyone would understand models like this:</p>
<p>cat = Cat.new<br />
cat.meow # the cat will meow<br />
cat.hide # the cat tries to hide&#8230; what a coward<br />
cat.move_legs # obviously, in order to move, the cat must move it legs<br />
cat.run_away # a method which will invoke many other methods&#8230; run_away is a complex task, which may involve hiding, moving legs, meowing maybe if you want to alert a human &#8220;friend&#8221; etc&#8230; etc..</p>
<p>Ruby&#8217;s model is not a perfect real-life simulation. There are &#8220;multiple relationships&#8221; in reallife world, but ruby distinguish between a class and a module.<br />
In such a way, a language like Io has a &#8220;purer model&#8221; (but personally I feel Io still has quite a way to go before it can really take off)</p>
<p>I think that the best new language would be one that stops<br />
re-creating what other languages feature, and instead<br />
concentrates on the human being. Objects are great to<br />
work with but it still is not the best way for a human<br />
THINKER.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nikhil</title>
		<link>http://imprompt.us/2007/turducken/comment-page-1/#comment-1189</link>
		<dc:creator>Nikhil</dc:creator>
		<pubDate>Mon, 28 Jan 2008 11:20:37 +0000</pubDate>
		<guid isPermaLink="false">http://imprompt.us/2007/turducken/#comment-1189</guid>
		<description>I think this is where a little bit of http://weblog.masukomi.org/2007/3/12/you-really-don-t-want-to-become-a-programmer comes in. If your mind is geared to changing perceptions, partly due to your genes and partly due to your environment, then this jump becomes easy. Humans as a society are incredibly UNresponsive to change, we just don&#039;t want to change our mindsets and experiences. The ones who do often do it ahead of there time and end up in a mess. Only a few can convince the majority or do something great.</description>
		<content:encoded><![CDATA[<p>I think this is where a little bit of <a href="http://weblog.masukomi.org/2007/3/12/you-really-don-t-want-to-become-a-programmer" rel="nofollow">http://weblog.masukomi.org/2007/3/12/you-really-don-t-want-to-become-a-programmer</a> comes in. If your mind is geared to changing perceptions, partly due to your genes and partly due to your environment, then this jump becomes easy. Humans as a society are incredibly UNresponsive to change, we just don&#8217;t want to change our mindsets and experiences. The ones who do often do it ahead of there time and end up in a mess. Only a few can convince the majority or do something great.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anon. E. Mouse</title>
		<link>http://imprompt.us/2007/turducken/comment-page-1/#comment-1188</link>
		<dc:creator>Anon. E. Mouse</dc:creator>
		<pubDate>Mon, 28 Jan 2008 06:23:07 +0000</pubDate>
		<guid isPermaLink="false">http://imprompt.us/2007/turducken/#comment-1188</guid>
		<description>I&#039;m female but I don&#039;t cook. I can program though. Change your ways.</description>
		<content:encoded><![CDATA[<p>I&#8217;m female but I don&#8217;t cook. I can program though. Change your ways.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Phil</title>
		<link>http://imprompt.us/2007/turducken/comment-page-1/#comment-1187</link>
		<dc:creator>Phil</dc:creator>
		<pubDate>Mon, 28 Jan 2008 04:56:49 +0000</pubDate>
		<guid isPermaLink="false">http://imprompt.us/2007/turducken/#comment-1187</guid>
		<description>&gt; The first time I was exposed to algorithm and design theory in C++ I felt hopeless - as if there were some huge international conspiring joke, of which I was the only person in the world who had not been let in on the punchline.

C++ *is* the punch line.

Try another language. Most of them make more sense than C++.</description>
		<content:encoded><![CDATA[<p>&gt; The first time I was exposed to algorithm and design theory in C++ I felt hopeless &#8211; as if there were some huge international conspiring joke, of which I was the only person in the world who had not been let in on the punchline.</p>
<p>C++ *is* the punch line.</p>
<p>Try another language. Most of them make more sense than C++.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Atlas</title>
		<link>http://imprompt.us/2007/turducken/comment-page-1/#comment-1186</link>
		<dc:creator>Mike Atlas</dc:creator>
		<pubDate>Mon, 28 Jan 2008 04:53:12 +0000</pubDate>
		<guid isPermaLink="false">http://imprompt.us/2007/turducken/#comment-1186</guid>
		<description>Running with the Turducken analogy, I enjoy explaining to non computer science people (females especially....this is going get me in trouble someday) that running a program is like preparing a meal: you have ingredients to start with (data). You may need to follow several recipes (functions) to make a full meal, and some recipes may require you to have a different recipe&#039;s finished result already completed before you proceed further in the current recipe (using returned data from another function call). There are infinite different ways to mix up the food (data), and sometimes you might need to stir the food repeatedly (looping) until it is ready (conditionals). 

The end result? Something tasty and presentable that has more value than the initial ingredients.</description>
		<content:encoded><![CDATA[<p>Running with the Turducken analogy, I enjoy explaining to non computer science people (females especially&#8230;.this is going get me in trouble someday) that running a program is like preparing a meal: you have ingredients to start with (data). You may need to follow several recipes (functions) to make a full meal, and some recipes may require you to have a different recipe&#8217;s finished result already completed before you proceed further in the current recipe (using returned data from another function call). There are infinite different ways to mix up the food (data), and sometimes you might need to stir the food repeatedly (looping) until it is ready (conditionals). </p>
<p>The end result? Something tasty and presentable that has more value than the initial ingredients.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt</title>
		<link>http://imprompt.us/2007/turducken/comment-page-1/#comment-1185</link>
		<dc:creator>Matt</dc:creator>
		<pubDate>Mon, 28 Jan 2008 04:12:35 +0000</pubDate>
		<guid isPermaLink="false">http://imprompt.us/2007/turducken/#comment-1185</guid>
		<description>As a CS student myself, I am glad to read articles like this - reassurance for unsure CS noob still living inside of me.  The first time I was exposed to algorithm and design theory in C++ I felt hopeless - as if there were some huge international conspiring joke, of which I was the only person in the world who had not been let in on the punchline.
Now, as I have been exposed more to the concepts central to CS I am beginning to realize all that is the turducken in all of its deliciousness.  Although I am far from understanding it all, multiple exposures to this information in varying formats has allowed for the gradual digestion of these concepts.  I feel that it is this reoccurring exposure in multiple settings, in multiple formats (varying languages and concepts) that helps students to really &quot;get it&quot;.
I remember my first exposure to the concepts of linked lists and recursion - I thought to myself &quot;there is no way. There is no way in any world this stuff makes sense, let alone actually does any work.&quot;  I am pretty sure on my second exposure I felt pretty much the same sentiment; just to a slightly lesser extent.  Each time I see &#039;it&#039; again, I still kind of feel that way - just to a lesser extent. Each time, taking a little more understanding away with me.</description>
		<content:encoded><![CDATA[<p>As a CS student myself, I am glad to read articles like this &#8211; reassurance for unsure CS noob still living inside of me.  The first time I was exposed to algorithm and design theory in C++ I felt hopeless &#8211; as if there were some huge international conspiring joke, of which I was the only person in the world who had not been let in on the punchline.<br />
Now, as I have been exposed more to the concepts central to CS I am beginning to realize all that is the turducken in all of its deliciousness.  Although I am far from understanding it all, multiple exposures to this information in varying formats has allowed for the gradual digestion of these concepts.  I feel that it is this reoccurring exposure in multiple settings, in multiple formats (varying languages and concepts) that helps students to really &#8220;get it&#8221;.<br />
I remember my first exposure to the concepts of linked lists and recursion &#8211; I thought to myself &#8220;there is no way. There is no way in any world this stuff makes sense, let alone actually does any work.&#8221;  I am pretty sure on my second exposure I felt pretty much the same sentiment; just to a slightly lesser extent.  Each time I see &#8216;it&#8217; again, I still kind of feel that way &#8211; just to a lesser extent. Each time, taking a little more understanding away with me.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

