Hacker News new | past | comments | ask | show | jobs | submit login
A list of free programming books (github.com/vhf)
455 points by vhf on Oct 11, 2013 | hide | past | favorite | 64 comments



mjd's Higher Order Perl should be on most people's must-read list: http://hop.perl.plover.com/book/


This is one book, you absolutely must read. Even if you don't program in Perl.

This is basically the equivalent of SICP for the scripting world.


I checked it out after you recommended it in another thread. Its great. Any other recommendations ?


it's a really good book, no doubt, but comparing it to sicp is a bit much. if you don't program in perl already, it might be more beneficial to just learn haskell, and writing some functional perl could be a first step toward that goal, particularly if you're coming from a background in C. i read some of if while learning perl because i was already somewhat familiar with functional programming.


Thanks. I hate looking at perl syntax but will investigate based on this comment.


Higher Order Perl is the book that actually got me excited about Perl again after using it for ten years and then not needing to touch it for five. As usual MJD is clear, absorbing, and has great taste in what to write about. So many techniques are a great fit for Perl/Ruby/Python and yet are completely absent from books on those languages.


It seems worth mentioning specific books by name, since lists of lists don't help people differentiate the great from the good. Algorithms by S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani looks really promising as an introductory algorithms textbook. I wonder if anyone has experience using it in class?

http://www.cs.berkeley.edu/~vazirani/algorithms.html

I wonder a little about that text's status as a freely available draft and whether it would be kosher to distribute the pdf if that site disappears.


It's basically just the lecture notes for their class bundled up into a book. I took the class it was based off, and, well, it was okay but not great.

It lacks any sort of underlying narrative or structure--I think this is common with algorithms texts in general. Probably why I didn't like the course much. It feels like a bunch of disjoint topics held together very loosely by some techniques that get repeated a bit.

I compare it very unfavorably to Sispser's Introduction to the Theory of Computation which, I felt, was much more coherent as a book. It's not a fair comparison at all because they're about different (although related) subjects, but I think it neatly illustrates my point.

Also, I don't believe Sipser's book is free, so it's not entirely relevant in that sense either. I just brought it up because I think it's the best example of the underlying narrative and structure I was talking about.


Two and a half years into my bachelor's, Sipser's Introduction to the Theory of Computation is the only computer science textbook I've had so far that I'd say I really found useful for anything beyond the homework problems, besides K.N. King's C Programming: A Modern Approach.

(To keep this on topic, my assembly instructor -- the legendary [to NC State students] Dana Lasher -- posts his course pack online. [1] It's a comprehensive introduction to computer architecture topics and original 8086 assembly programming.)

[1] http://courses.ncsu.edu/csc236/lec/001/cops.htm


How does Sipser's content compare to Ullman's (free) Foundations of Computer Science?

http://i.stanford.edu/~ullman/focs.html

As far as x86 assembly goes, I found Kip Irvine's book to be pretty great. (not free) It's not a subject I would want to spend more time on, though.


They're not similar at all. FoCS is mostly about introductory programming and data structures (with a tiny bit about automata). Sipser's book is about computation and complexity - it's comparable to Hopcroft and Ullman's Intro to automata theory, languages, and computation, for which Ullman recommends FoCS or equivalent as a prerequisite.


Interesting. Thanks.

Coincidentally I just signed up for Ullman's Automata course at Coursera. The description makes it seem pretty basic but I'm interested to see what he does with it.


Which book would you recommend for algorithms and data structures instead?


I've used Algorithms by S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani for the course they teach at Berkeley and didn't like it at all. I'm a pretty big fan of Algorithms by Sedgewick. There is a class on Cousera is also taught by Sedgewick and uses the book. The first half of the book follows a traditional data structures course and the second half a traditional algorithms course.

Some people might find it as a downside but the book was written with Java in mind. I personally didn't mind this at all.

http://www.amazon.com/Algorithms-4th-Edition-Robert-Sedgewic...


As often as this gets recommended, I'd go with Introduction to Algorithms (CLRS)[1]. I'm currently in the process of going through it on my own as I'm taking a semester off, and I find it perfect to study from. It goes in depth, explaining the math behind run times (which some may like about it, while other might not), and it covers a lot of ground. I haven't fully finished it, and I'm only on chapter 6, but so far it's one of my favourite textbooks to study from.

[1] http://www.amazon.com/Introduction-Algorithms-Thomas-H-Corme...


Skiena's Algorithm Design Manual and Kleinberg and Tardos' Algorithm Design are both very nice books. CLRS is very nice, and depending on your personal ethics the Solutions manual for the 2nd edition is pretty easily obtainable online, which might be useful for that despicable and highly discouraged activity known as self-study. Sedgwick's stuff is not bad.

I used Aho, Hopcroft, and Ullman's two Algorithms books in class. They are old but extremely good. If you want to buy dead tree books they're available used for a very low price.

Hope that helps.


So... recommendations for all the major books.


I can go into the strengths and weaknesses of each (I'm kind of a packrat...) but you haven't said anything about yourself or what you're looking for. If you really don't know what you're looking for you should just do what the majority of people here would tell you to do and get CLRS. It's not an accident that these are popular textbooks or that CLRS is the most popular.

(I didn't really mean to recommend Sedgwick's stuff. As I said, I just think it's not bad.)


Algorithms by S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani looks really promising as an introductory algorithms textbook. I wonder if anyone has experience using it in class?

We used this in our upper-division intro to algorithms course. Solid book, goes over important algorithms while remaining short and concise, A+ would read again.


I took the Dasgupta's algorithms class at UCSD a couple years ago. I don't know the legal status of the PDF there, exactly, but he gave the link out to the class and almost everyone in the class used it instead of a physical textbook.

I thought the text (and class) was pretty good, although I'm sure being in the class helped. You should definitely have some experience with basic data structures, discrete math and graph theory before diving into it.


It's interesting to see how git/Github as a platform replaces Wikipedia in certain cases for collecting information and enabling people to contribute.


Yep. There are huge advantages to a GitHub model over Wikipedia for collecting information.

Shameless plug, but highly relevant: I'm trying to make 'git as a platform' more accessible for non-programmers with a project I'm working on - http://www.penflip.com. Wrote about it in detail here: http://madebyloren.com/github-for-writers

Glad to discuss it further if anybody's interested.


Have you seen Draft [0]? It seems fairly close to your concept of "github for writers".

[0] https://draftin.com


Indeed I have. Nate's got something great going with Draft, but I don't know if I don't think he's shooting for a github-esque platform.


Just looked at this, sounds like a great idea! I would use it to create a textbook for the high-school programming course I teach.


Yeah, especially with Markdown integration, which makes incredibly easy for someone to host their own "information site" and make it look nice and modern. I wonder if Wikipedia would ever change their revision system in favor of git.


Someone would have to own each Wikipedia page to approve pull requests. As it is now, anyone can do the edits directly even if there's not a person dedicated to curating a particular page.



Hah! Thanks for the link, didn't think anyone remembered it. Coder Heya was fun to build, I wish a community would have built around it though.


Nice, thnk!


Similar list with more differences than the Stack Overflow one: http://programming-motherfucker.com/become.html


http://programming-motherfucker.com/become.html

Another great list of books for programming languages/tools/frameworks/gen dev


This one about building Android apps using HTML/JS/CSS isn't free anymore - http://ofps.oreilly.com/titles/9781449383268/ - itwas in Open Feedback Publishing System some time ago. Now you'd need to buy it. (BTW, it has 2.5 stars on Oreilly site.)


That's already been identified as an issue in the github repo.



Here's a nice collection about the same on Stack Overflow as well - http://stackoverflow.com/questions/194812/list-of-freely-ava...


I discovered that when I Read The Fine Article directly. I also discovered that the original list os frozen and out-of-date. It includes at least one book that is no longer freely available, and omits my own JavaScript Allongé, which was made free this month.


I just started on "JavaScript Allongé" and am really enjoying your prose and working through the examples. Good job!

I had to look up what _allongé_ meant as I've never heard it ordered. It sounds like the perfect drink.

"coffee beverage made by using an espresso machine to make an espresso (single or double dose or shot) with much more water (generally twice as much), resulting in a stretched espresso"

http://en.wikipedia.org/wiki/Lungo


And which was among the first additions to this list, because it truly is an awesome read !


I like how this is nearly exactly the text from the stack overflow question...

http://stackoverflow.com/questions/194812/list-of-freely-ava...


README.md says : " This list initially was a clone of stackoverflow - List of freely available programming books by George Stocker. Now updated, with dead links gone (hopefully) and new content. "

I've had this SO list in my bookmarks for long enough, and there were more and more dead links in it. I felt the need to move it to github in order to keep it up-to-date and to augment it.

I apologize if the intention or original source were not made clear.


This is the right thing to do. SO has a very specific vision, that of finding and displaying the definitive answer to an objective question.

A resource like this doesn't fit their model, even if you strain it by trying to invent a question that appears to fit their format.

"This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed."


This is thing I hate about SO. Its view of what is on-topic is completely arbitrary and narrow-minded. I understand that Jeff's initial vision was to create a site for objective questions & answers, but over time SO mods have taken it to the extreme.

The list of best programming books may not be totally objective, but the wisdom of the crowds just should be enough to filter out what's good from what's bad. When mods lock the allegedly non-objective questions, they force content to become stale and rot - but still showing up at the top of search engines.


Sorry, I didn't look at the url and thought this was the README.md :-(

I have given you an upvote


Red-gate has some decent and current t-sql programming books and mssql dev books available for free.

http://www.red-gate.com/community/books/



Yes, this is basically a carbon copy of other lists, but I found at least one resource that was new to me - http://refcardz.dzone.com/ So cool.

Thanks :D



http://www.gnu.org/software/emacs/manual/eintr.html

This is where the resources has moved to.


Great list. Thanks a lot!

I couldn't find this url in this post and it made me pretty happy when I found it. A website full of IT book which can be downloaded for free.

http://www.it-ebooks.info/


Semi-OT: For e-book reader owners: you can use pandoc to convert from HTML to ePub.


Full-OT: pandoc requires ghc, which takes about 1GiB of disk space, which I found very odd, given that gcc is about 75 MiB.


Yeah, but dude, it's fukken haskell :D. Good comment anyway, I didn't realize the drawback...


It seams the Learning Android book was removed by O'Reilly.


Now all I need is an automated way to download them all


I used to have the same reaction when stumbling upon lists like this. But it has never proved to be a great idea. You get easily overwhelmed by the amount and variety of content available. Before even starting reading one of these books, you need to filter them by topic, by scope, by usefulness, and by quality. You inevitably end up starting none of them.

I prefer focusing on one subject or programming language, search the internet for feedbacks and reviews, select the one book (free or not) that fits my needs and read that one. I'm consequently more informed about what my further needs are: do I want to learn more about this programming language? Or about a different but complementary one? Or do I need to reach for a more language-agnostic topic?

It's the usual "quality over quantity" issue, that prevents yourself from taking no decision at all when facing too many options.


i had that same experience. most books are good but are usually replaceable. some books i can't understand how good they are because they're beyond my level. And a few are just right, and also take you to that "a-ha moment."

you need to do your research and select that one right book and work through it. If in the middle of a book you think you're not making good progress, you should just drop it and find another one.


The biggest question now is, where do we start?


From a topic you deem interesting of course. But be aware of the fact a book does not give the experience you gain by working hands-on to something.


Thank you!


wish there was a list of !!!good!!! programming book, not even free. Like, book that would make you a better dev.


Can you point out at least one programming book which makes you a worse developer?

Doesn't it depend on what specifically you are trying to learn?


I think the point is that there are only so many hours in a human lifespan. While I'd love to read everything that the world has to say on the subject, I'd like to focus on books that will be the most enlightening (or entertaining).


Aren't they all free?




Join us for AI Startup School this June 16-17 in San Francisco!

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

Search: