<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.1" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments on: Data Structures as Culture</title>
	<link>http://weblog.scifihifi.com/2004/12/25/data-structures-as-culture/</link>
	<description>Buzz Andersen's Weblog</description>
	<pubDate>Tue, 14 Oct 2008 05:31:43 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.1</generator>
		<item>
		<title>By: ridiculous_fish &#187; Blog Archive &#187; Float</title>
		<link>http://weblog.scifihifi.com/2004/12/25/data-structures-as-culture/#comment-19499</link>
		<dc:creator>ridiculous_fish &#187; Blog Archive &#187; Float</dc:creator>
		<pubDate>Sat, 04 Nov 2006 01:10:21 +0000</pubDate>
		<guid>http://weblog.scifihifi.com/2004/12/25/data-structures-as-culture/#comment-19499</guid>
		<description>[...] My friend over at SciFiHiFi suggests that Microsoft likes trees, but Apple likes hash tables. Well, I think that Microsoft prefers integer arithmetic, while Apple (or at least Cocoa) likes floating point. Here&#8217;s a bunch of examples I found: [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] My friend over at SciFiHiFi suggests that Microsoft likes trees, but Apple likes hash tables. Well, I think that Microsoft prefers integer arithmetic, while Apple (or at least Cocoa) likes floating point. Here&#8217;s a bunch of examples I found: [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: J.B.</title>
		<link>http://weblog.scifihifi.com/2004/12/25/data-structures-as-culture/#comment-15852</link>
		<dc:creator>J.B.</dc:creator>
		<pubDate>Tue, 03 Oct 2006 04:31:12 +0000</pubDate>
		<guid>http://weblog.scifihifi.com/2004/12/25/data-structures-as-culture/#comment-15852</guid>
		<description>Whoa!  I had no idea this would be so true industry-wide.

I work at Boeing (150,000 employees), and one thing they're absolutely crazy about is trees, both in employee structure (management trees are *very* narrow), and programs (they like to put *everything* in big hierarchical databases).  It's insane how tree-crazy they are here.  The complexity is incredible; to generalize (slightly), nobody has any taste or sense of simplicity, so everything grows very quickly in complexity beyond the ability of any mere mortals to understand it.

They even have a way to make a Gantt chart into a tree.  Yeah, I know.

My previous job was at a university.  They barely even used the filesystem hierarchy: almost everything was two levels deep in the folder structure.  It was very manageable.  If I had to pick one data structure to describe that experience, it would have to be the list (either linked, or array).  Dictionaries were a close second, just to store some key,value-style metadata about the lists.

I'm now looking for another list/dict job.  :-)</description>
		<content:encoded><![CDATA[<p>Whoa!  I had no idea this would be so true industry-wide.</p>
<p>I work at Boeing (150,000 employees), and one thing they&#8217;re absolutely crazy about is trees, both in employee structure (management trees are *very* narrow), and programs (they like to put *everything* in big hierarchical databases).  It&#8217;s insane how tree-crazy they are here.  The complexity is incredible; to generalize (slightly), nobody has any taste or sense of simplicity, so everything grows very quickly in complexity beyond the ability of any mere mortals to understand it.</p>
<p>They even have a way to make a Gantt chart into a tree.  Yeah, I know.</p>
<p>My previous job was at a university.  They barely even used the filesystem hierarchy: almost everything was two levels deep in the folder structure.  It was very manageable.  If I had to pick one data structure to describe that experience, it would have to be the list (either linked, or array).  Dictionaries were a close second, just to store some key,value-style metadata about the lists.</p>
<p>I&#8217;m now looking for another list/dict job.  <img src='http://weblog.scifihifi.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Digital Digressions by Stuart Sierra &#187; Blog Archive &#187; Who Needs Data Structures?</title>
		<link>http://weblog.scifihifi.com/2004/12/25/data-structures-as-culture/#comment-12896</link>
		<dc:creator>Digital Digressions by Stuart Sierra &#187; Blog Archive &#187; Who Needs Data Structures?</dc:creator>
		<pubDate>Fri, 08 Sep 2006 16:29:05 +0000</pubDate>
		<guid>http://weblog.scifihifi.com/2004/12/25/data-structures-as-culture/#comment-12896</guid>
		<description>[...] Ran across an interesting remark in a discussion of Microsoft hiring interviews: If I remember, a lot of MIT people back in the 70s broke the computer world into the Lisp and non-Lisp data typers. The Lisp folk took a casual attitude towards data structures - just shove them in a list, put them on a plist, stash them in a cache. If it gets slow or confusing, add some tags and a hash algorithm. Most non-Lisp folk were appalled at this. They wanted to see the data structure design up front, the data relationship dictionary, complete and comprehensive, even before any coding started. [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] Ran across an interesting remark in a discussion of Microsoft hiring interviews: If I remember, a lot of MIT people back in the 70s broke the computer world into the Lisp and non-Lisp data typers. The Lisp folk took a casual attitude towards data structures - just shove them in a list, put them on a plist, stash them in a cache. If it gets slow or confusing, add some tags and a hash algorithm. Most non-Lisp folk were appalled at this. They wanted to see the data structure design up front, the data relationship dictionary, complete and comprehensive, even before any coding started. [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Craig Turner</title>
		<link>http://weblog.scifihifi.com/2004/12/25/data-structures-as-culture/#comment-9472</link>
		<dc:creator>Craig Turner</dc:creator>
		<pubDate>Tue, 25 Jul 2006 01:57:06 +0000</pubDate>
		<guid>http://weblog.scifihifi.com/2004/12/25/data-structures-as-culture/#comment-9472</guid>
		<description>&#62; .. reminded me of something I’ve noticed about Apple: for a great
&#62; many people there, the hashtable seems to be something of a pet
&#62; data structure.

Ahaha so true. When we were at WebObjects training years ago the group developed a phrase that we would slip in at every opportunity - "The NSDictionary is the computer!"  - a (bizarre) reference to the Sun jingle of the day.</description>
		<content:encoded><![CDATA[<p>&gt; .. reminded me of something I’ve noticed about Apple: for a great<br />
&gt; many people there, the hashtable seems to be something of a pet<br />
&gt; data structure.</p>
<p>Ahaha so true. When we were at WebObjects training years ago the group developed a phrase that we would slip in at every opportunity - &#8220;The NSDictionary is the computer!&#8221;  - a (bizarre) reference to the Sun jingle of the day.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: edwin</title>
		<link>http://weblog.scifihifi.com/2004/12/25/data-structures-as-culture/#comment-9462</link>
		<dc:creator>edwin</dc:creator>
		<pubDate>Mon, 24 Jul 2006 22:50:01 +0000</pubDate>
		<guid>http://weblog.scifihifi.com/2004/12/25/data-structures-as-culture/#comment-9462</guid>
		<description>I think you're over-extrapolating. I work at Microsoft: allow me to assure you that trees are not accorded any mystic special significance. 

All this means is that unfortunately the interviewers on your friend's loop didn't get together beforehand and make sure their questions were sufficiently diverse.

If you want to accuse anyone of being over-fond of trees, how about the C++ STL authors? IIRC that had tree-based structures exclusively for years - before hash_map was added to the standard. I think that was due to comparison being considered a more basic operation than producing a hash code.</description>
		<content:encoded><![CDATA[<p>I think you&#8217;re over-extrapolating. I work at Microsoft: allow me to assure you that trees are not accorded any mystic special significance. </p>
<p>All this means is that unfortunately the interviewers on your friend&#8217;s loop didn&#8217;t get together beforehand and make sure their questions were sufficiently diverse.</p>
<p>If you want to accuse anyone of being over-fond of trees, how about the C++ STL authors? IIRC that had tree-based structures exclusively for years - before hash_map was added to the standard. I think that was due to comparison being considered a more basic operation than producing a hash code.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Snyder</title>
		<link>http://weblog.scifihifi.com/2004/12/25/data-structures-as-culture/#comment-9446</link>
		<dc:creator>Mark Snyder</dc:creator>
		<pubDate>Mon, 24 Jul 2006 16:08:23 +0000</pubDate>
		<guid>http://weblog.scifihifi.com/2004/12/25/data-structures-as-culture/#comment-9446</guid>
		<description>I think the difference between the two approaches is more technical than cultural.  An application developer is expected to be facile with high level data structures such as lists, maps, etc. that are used to compose applications... whereas a systems developer is expected to be familiar with the low level representations of programming languages, objects, etc., where programs are represented via abstract syntax trees, objects have an implicit containment hierarchy, etc.  

What do I think this means about Microsoft vs. Apple?  It could be nothing more than a difference in the respective job positions... or - and I suppose this is possible - it could indicate that Apple fosters an object oriented approach to systems building in contrast to Microsoft, which prefers a low-level approach that is driven more by computer science theory than by software engineering best practices.</description>
		<content:encoded><![CDATA[<p>I think the difference between the two approaches is more technical than cultural.  An application developer is expected to be facile with high level data structures such as lists, maps, etc. that are used to compose applications&#8230; whereas a systems developer is expected to be familiar with the low level representations of programming languages, objects, etc., where programs are represented via abstract syntax trees, objects have an implicit containment hierarchy, etc.  </p>
<p>What do I think this means about Microsoft vs. Apple?  It could be nothing more than a difference in the respective job positions&#8230; or - and I suppose this is possible - it could indicate that Apple fosters an object oriented approach to systems building in contrast to Microsoft, which prefers a low-level approach that is driven more by computer science theory than by software engineering best practices.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Maciej</title>
		<link>http://weblog.scifihifi.com/2004/12/25/data-structures-as-culture/#comment-9410</link>
		<dc:creator>Maciej</dc:creator>
		<pubDate>Mon, 24 Jul 2006 08:25:38 +0000</pubDate>
		<guid>http://weblog.scifihifi.com/2004/12/25/data-structures-as-culture/#comment-9410</guid>
		<description>You can make some rocket science data stuctures out of trees, but most pactical problems are better solved with plain old arrays and hashtables.</description>
		<content:encoded><![CDATA[<p>You can make some rocket science data stuctures out of trees, but most pactical problems are better solved with plain old arrays and hashtables.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kaleberg</title>
		<link>http://weblog.scifihifi.com/2004/12/25/data-structures-as-culture/#comment-2450</link>
		<dc:creator>Kaleberg</dc:creator>
		<pubDate>Tue, 27 Sep 2005 21:30:39 +0000</pubDate>
		<guid>http://weblog.scifihifi.com/2004/12/25/data-structures-as-culture/#comment-2450</guid>
		<description>Excellent insight. This actually says a lot about the difference between the Microsoft and Apple worlds.  

If I remember, a lot of MIT people back in the 70s broke the computer world into the Lisp and non-Lisp data typers. The Lisp folk took a casual attitude towards data structures - just shove them in a list, put them on a plist, stash them in a cache. If it gets slow or confusing, add some tags and a hash algorithm. Most non-Lisp folk were appalled at this. They wanted to see the data structure design up front, the data relationship dictionary, complete and comprehensive, even before any coding started.

You get a similar dichotomy today. The Microsoft people want to have a clue as to what is going on before they start working, so they build a tree structured model. They want to know what is important and what is not. The Apple people don't care about having a clue, as long as they get something useful and usable. They know that what they think is important may not be important to their customers.

This is probably an old Apple corporate thing. The Apple II was basically a platform for running VisiCalc on, the proverbial tail wagging the dog. Excel and MarinerCalc aren't the big reasons for buying an Apple these days. You're more likely to want an Apple for Mosaic or SoundJam, or their successors.  Apple figures that most of its users are smart, and that they'll figure out what to do with the box, if the box lets them do it.

Microsoft, in contrast, took over the old IBM operating system monopoly, and the old OS\360 business model. Businesses are hierarchies with the boss at the top. The software has to reflect this. Everyone, and every piece of software and data, has to know its place. You can't just have people running around making things and selling them. As long as users can get their assigned jobs done, the box and its software are great.

I suppose we should consider this progress though. Microsoft is tree oriented. The old IBM was array oriented. One step at a time.</description>
		<content:encoded><![CDATA[<p>Excellent insight. This actually says a lot about the difference between the Microsoft and Apple worlds.  </p>
<p>If I remember, a lot of MIT people back in the 70s broke the computer world into the Lisp and non-Lisp data typers. The Lisp folk took a casual attitude towards data structures - just shove them in a list, put them on a plist, stash them in a cache. If it gets slow or confusing, add some tags and a hash algorithm. Most non-Lisp folk were appalled at this. They wanted to see the data structure design up front, the data relationship dictionary, complete and comprehensive, even before any coding started.</p>
<p>You get a similar dichotomy today. The Microsoft people want to have a clue as to what is going on before they start working, so they build a tree structured model. They want to know what is important and what is not. The Apple people don&#8217;t care about having a clue, as long as they get something useful and usable. They know that what they think is important may not be important to their customers.</p>
<p>This is probably an old Apple corporate thing. The Apple II was basically a platform for running VisiCalc on, the proverbial tail wagging the dog. Excel and MarinerCalc aren&#8217;t the big reasons for buying an Apple these days. You&#8217;re more likely to want an Apple for Mosaic or SoundJam, or their successors.  Apple figures that most of its users are smart, and that they&#8217;ll figure out what to do with the box, if the box lets them do it.</p>
<p>Microsoft, in contrast, took over the old IBM operating system monopoly, and the old OS\360 business model. Businesses are hierarchies with the boss at the top. The software has to reflect this. Everyone, and every piece of software and data, has to know its place. You can&#8217;t just have people running around making things and selling them. As long as users can get their assigned jobs done, the box and its software are great.</p>
<p>I suppose we should consider this progress though. Microsoft is tree oriented. The old IBM was array oriented. One step at a time.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
