Beej's Guide to Network Programming (2012)
beej.us
beej.us
If there was more stuff like this in C-land I probably wouldn't have been clambering to get away from C and into more nurturing, sharing communities at the first opportunity.
Really cool to see he's keeping it up to date.
Edit:
Matter of fact he lists it as the first reference under "More References"
[0] https://github.com/nickdesaulniers/c-http-server/blob/master...
It's the guide I recommend to everyone who wants to learn about network programming in C. I actually purchased the (slightly expensive) printed version and never regretted it :)
http://www.lulu.com/shop/brian-hall/beejs-guide-to-network-p...
When comparing to other education text books though I'd not be able to complain. Neither am I, as I still think it was worth it, if just to support the author and to have an addition to the bookshelf.
It's a great book for all kinds of stuff, too, not just network programming.
> What's this? There are two types of Internet sockets? Yes. Well, no. I'm lying. There are more, but I didn't want to scare you. I'm only going to talk about two types here. Except for this sentence, where I'm going to tell you that "Raw Sockets" are also very powerful and you should look them up.
There are quite a few books written like this, including most online tutorials, and other resources.
What I don't like about it is that more than 50% of the content is filled with the author's anecdotes (some of them have better sense of humor than others), while the actual content being discussed is barely touched.
You'll never see this kind of content on advanced mathematics, or field that require intense concentration, advanced thinking, because it's difficult to switch the context of your thinking from the author's silly jokes to the actual thing you're trying to learn.
In this case, it's simply touching the very simple bsd socket api, so of course it's very easy to follow. But imagine that you removed all the unnecessary jokes and anecdotes, you'd end up with 50% of the text and 100% of the useful information. I'm pretty sure information density is a good quality to have for any piece of writing.
Note that this is merely an example and not a personal attack on the authors or something. Having to re-read a chunk of text 5-10 times on average to extract pertinent information is something I really don't enjoy; I don't usually have to do it with journal/conference papers (usually 2x is enough to grasp the details of the idea being presented) or with other textbooks.
I would rather the information being presented be somewhat 'spaced out' to give my brain time to process it without having to go back over it. Having to re-read a denser text takes rather longer, imo, than having to read text with slightly less dense content just once or twice.
So, yes, it is likely a matter of taste. But my point was, I suppose, that information presented in a dense manner takes rather longer to digest.
Beej (despite numerous anecdotes and so on) manages to present his information in a straightforward fashion that doesn't require multiple readings to grasp. Algebra could also be presented in a similar (if probably less jokey) fashion. A lower amount of entropy per sentence means I have to do less work just to get through the explanations and can spend more time on working through the examples. Given that the time I have to spend studying is finite, a more direct approach to explaining material before letting a student practice does seem more efficient.
That's why I like this tutorial. It doesn't take itself seriously, which is rather more approachable than some works, and the pertinent information is directly presented but not in such a way that I have to re-re-re...-re read to grasp the details.
there are authors whose works demonstrate possibility of high-quality textbooks in absense of any "qutesy" or other noise.
your and GP's post show that different information passing styles suit different people differently.
Richard Stevens certainly found the right balance, I've read almost all of his material, yet I don't have any sense of his personality or personal history other than that he is very professional.
I also find it easier to ingest; I wish I had known about this guide a few years ago. I learned socket programming from man pages. It's an experience I don't want to recommend.