Hacker News new | past | comments | ask | show | jobs | submit login
Git for Computer Scientists (eagain.net)
70 points by Mathnerd314 on July 4, 2010 | hide | past | favorite | 17 comments



I actually found this quite accessible, I was expecting something very complicated or theoretical but it's a good visualization and explanation about the internals of Git.


semi-troll comment time: the title of this article seems a bit elitist and demeaning ... what are the rest of the git tutorials on the web, then? "Git for grubby coders"? i don't see how simply presenting a bunch of DAGs all of a sudden makes it like "ohhhhh Computer Science!"


I disagree. Majority of us who use a version control do not need to know the internals. I can be a proficient git user without even knowing what a DAG is and that's the beauty of it. The software is so transparent that I don't need a degree in computer science to use it. However, learning the internals gives a nice perspective which helps in using the system better.


that's sort of my point, though ... you still don't need a computer science degree (or even much CS knowledge) to understand this tutorial. i would think that self-taught hackers might be offended by the title of this article, since it implies that you need to have some deep ivory-tower CS training in order to understand it. but in reality, it's quite well-presented and accessible to a general techie audience.


If the title says "X for Y", I assume that it's suitable for Ys. But I do not assume that it is unsuitable for non-Ys.


true, i can't dispute your logic :) but if something is totally hyperbolic and doesn't fit expectations, then it's still weird. imagine reading something that says "X for SUPER-DUPER-GENIUSES!!!" that somehow implies that X is not for regular folks, even though logically it shouldn't. oh well, people are irrational


It starts off by using the abbreviation DAG, SHA-1 hash, and object. If you know all three of those without looking them up, you're probably some sort of computer scientist.

I'd especially draw the line at DAG. At that point, we're talking abstract mathematics, not programming.


That makes me think about what would be the set of terms that, when seen and you instantly recognized them, probably indicate you are some other sort of scientist.

For example, let's say you were a student of Weird Science and thus were a weird scientist. You would probably instantly recognize:

  1. space-time continuum
  2. Cthulhu
  3. zombies
  4. fembot
  5. mind control lasers
  6. Tesla coils
  7. flying monkeys
  8. dead matter reanimation


You don't need "deep ivory-tower CS training" to have knowledge of computer science. I don't know why anyone would be offended to be called a computer scientist; it's not like being such precludes being an excellent programmer, nor does being a self-taught hacker preclude being an excellent computer scientist.


I think it's essential. Not knowing the internals both means that you're more likely to screw up and type the wrong git command, and makes it less likely that you can get yourself out of trouble on your own. It's hard to actually lose data with git, but you need a good understanding to fix things.


I would much rather rely on my backups than a knowledge of theoretical computer science to prevent me from losing things.

I have to use git/svn/mercurial from time to time, saying the internals of each vcs is essential knowledge is making quite a lot of assumptions about my time and how these tools are used.

people use thousands of tools every day, you can make the same argument "you know know the internals so you can use them properly" for each one, which sounds like a pretty surefire way of never getting anything done.


I didn't say it's essential for other source control systems. It's only essential for git.

This is why git is so annoying to learn and I'm reluctant to recommend it. Unlike, say, a filesystem where you can understand it at the POSIX level and there's no reason to understand disk sectors, the internals of git are exposed and there's no simpler model of how it works. Many of the commands don't make sense unless you start to understand the internals.


I think the fact that git forces you to learn how it works is one of its greatest strengths.

It's not like it's rocket science either; git's internals are remarkably straightforward considering what it can do. By having a rudimentary understanding of what git actually is, even supposedly "advanced" features like rebasing and partial commits (git add --patch) make perfect sense.

Git is a tool that will be used constantly. It pays to learn it thoroughly.

The UI of the command line tool is sometimes iffy (git rm --cached?), but that I think is a separate issue. The other VCS systems, being so "user-friendly", don't seem to encourage one to actually learn them. Mercurial's branches still don't make sense to me (bookmarks are better), and SVN I can use almost solely because I've learned some magic incantations that work for what I need to do.


i don't see how simply presenting a bunch of DAGs all of a sudden makes it like "ohhhhh Computer Science!"

Perhaps not, but CS students / graduates are more likely to be familiar with them from the often f^#kin crappy textbooks we have to wade through, which seem to think everything is better with DAGs / pages of near-identical diagrams for you to play "what's different?" with. I don't see that many who haven't gone through the education-machine would subject themselves to such things willingly to be efficient enough at it to make something like this worthwhile.


I sort of disagree.

I feel that presenting a bunch of DAGs does tie it in to Computer Science for sure. Graphs are an integral part of Computer Science, and to present it from that perspective does make it more "Computer Science-y".

I agree that to assume that only Computer Scientists (or people who have majored in Computer Science degree) understand what a DAG is, is elitist.


What exactly does it mean to be a computer scientist? I'd say if this article is accessible to you, it's reasonable to call you some sort of computer scientist, even if you don't have a degree, or aren't necessarily an authority on the subject.


crisp & concise. The analogy about refs being post-its is a nice one!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: