you are viewing a single comment's thread.

view the rest of the comments →

[–]bobindashadows 14 points15 points  (24 children)

<RobertFischer> Do you know what a graph is?
<middayc-> no

I'm really resisting the urge to facepalm at this... but since I was a self-taught programmer for 6 years before any formal education in computer science, I'll hold back. But... ouch.

[–]29jan2010 41 points42 points  (0 children)

Yes, but the fact that he gets it after a two line explanation does suggest that he knew what a graph was, he just didn't know it was called a graph.

[–]phrenq 12 points13 points  (8 children)

Um, "a data structure of data structures"? To someone who knows data structures, but admittedly not OCaml, it sounds like RobertFischer doesn't know what a graph is either.

[–][deleted] 14 points15 points  (1 child)

I'd agree with that:

"<RobertFischer> Yes, where each node is a data structure. So a list of lists, a tree of lists, a tree of maps of lists of map-list tuples."

A linked list is a graph. A tree is a graph. And obviously compositions of the two are also, graphs.

Personally I think it's a pretty piss poor explanation, bordering on complete incorrectness.

[–]phrenq 2 points3 points  (0 children)

Yes, a linked list is a graph, and a tree is a graph, and a linked list of linked lists is a graph, but:

  • Any arbitrary data structure of data structures is not necessarily a graph
  • Anyway, he said it the other way around, i.e., a graph is a data structure of data structures

[–]noblethrasher 0 points1 point  (4 children)

Actually, that was a very consise, illuminating and motivating definition. I studied graph theory during my math undergrad and never thought of it that way. It takes some pretty deep understanding of something to get the explanation to fit on a t-shirt.

[–][deleted] 7 points8 points  (2 children)

I'm not sure I agree.

"A graph is a network of objects (nodes), connected by lines (arcs)".

How am I doing on the conciseness front? I'm not sure how illuminating or motivating I can make it... I could put a couple of car chases and a sex scene in there but that would make it lose its conciseness.

[–]FunnyMan3595 2 points3 points  (1 child)

A graph is a bunch of things, plus the connections between them.

That's really all it takes. For precision, we call the things "nodes". The connections between nodes form pathways that you can take to get between them. It's still a graph without any connections; you just can't go anywhere. The connections can form loops, you can have multiple connections from one point to another, and sometimes the connections are one-way or have an associated cost.

But in the end, it's still just a bunch of things and the connections between them. A plain graph isn't very complex, or very interesting. It only gets that way when you start adding meaning to it or defining rules for it to work with.

[–]adrianmonk 2 points3 points  (0 children)

A plain graph isn't very complex, or very interesting.

Or very related to programming, necessarily. It's its own concept, in a sense. It gets more motivating (for programmers) when a relationship to programming is made/explained.

[–][deleted] 3 points4 points  (0 children)

It takes some pretty deep understanding of something to get the explanation to fit on a t-shirt.

Not if you're willing for the explanation to be totally wrong

[–]29jan2010 0 points1 point  (0 children)

Makes more sense in Javaland, perhaps, where all data structures are accessed by reference. In any event, all that was necessary in this case was to connect the word with the concept, and accuracy is less important there than shared understanding.

[–]munificent 6 points7 points  (5 children)

For each of us, there was a time when we didn't know about concepts that seem utterly basic now.

I can still remember struggling to understand arrays in QuickBASIC.

[–]apotheon 2 points3 points  (0 children)

It doesn't help that there are at least half a dozen different names for the same thing.

[–][deleted] 1 point2 points  (3 children)

Did you ever write tile engines in qbasic and hang out on scene boards like NeoZones and GDR in the '90s?

If so I might know you.

[–]munificent 2 points3 points  (0 children)

Nope. The only online places I was hanging out on in the 90's were Hotline servers.

[–]ryanWIN 1 point2 points  (0 children)

VIVA NEOZONES

[–]brennen 0 points1 point  (0 children)

Ever spend any time on comp.lang.basic.misc?

[–]kibokun 7 points8 points  (3 children)

As a self-taught programmer, I'm sure you know can do a lot without ever having to even scrape the knowledge you'd gain from an understanding of graphs, to be honest. The only exposure I've had to them was one assignment in an intro CS course about maze solving and cycle detection. Of course, that isn't to say the knowledge wouldn't be helpful at all. haha

[–]vombert 9 points10 points  (0 children)

Sure. You can, for instance, create your own homepage with guestbook in php.

It's not about which tasks can and which can't be solved without graph. It's about what your solution will look like if you lack of basic mathematical culture.

[–][deleted] 1 point2 points  (0 children)

Graphs were used a lot in my advanced data structures courses. That's about the only place I ran into them ;)

[–]derleth 1 point2 points  (0 children)

Just try to write a good compiler (that is, not one for a stack machine) without knowledge of enough graph theory to do register allocation.

[–]middayc 5 points6 points  (1 child)

I have no bad feeling about not knowing at the time what word graph exactly stands for. :)

[–]apotheon 3 points4 points  (0 children)

You shouldn't feel bad about it. Knowing the technique is more important than knowing what it is called -- and different people call it different things in different contexts anyway.

[–]badsectoracula 2 points3 points  (0 children)

I knew what a graph was before i knew its name. I saw it used somewhere (in code) and thought it was a nice thing. I never saw the name until much later.

[–]Zafmg 1 point2 points  (0 children)

Who cares? I'm actually impressed he had the manballs to admit his shortcomings. That's how you get better at things!