4 ms·
What are the best programming books around?
I am currently 15, studying in 10th grade in India. I have been experimenting with Semantic Web technologies since like the past 8 months or so. I want to improve my core skills and would be great if could get some recommendations for some good books. I am planning to read Don Knuth's TAOCP, is that the right way to go or should I start with another book?
- tjr 16y agoTAOCP is awesome. If I had been advised to read it when I was 15, I probably would have either studied it as hard as I could, or given up after the first few pages. It's pretty intense material for a beginner, in my opinion. But only you can judge for yourself. Take a look at a copy of it, if you can, before you buy it. TAOCP focuses on algorithms and other microscopic aspects of programming; it may not offer much insight into building whole software applications. Also, you might consider looking at Don Knuth's book Concrete Mathematics, which is a somewhat more casual coverage of the math chapter in the first volume of TAOCP. You mention in a comment that you want to learn software architecture. I really like this book: http://www.amazon.com/Software-Architecture-Primer-John-Reekie/dp/0646458418/ http://www.amazon.com/Software-Architecture-Primer-John-Reek... If you're into web applications at all, perhaps the best book to understand the basics of design is: http://philip.greenspun.com/seia/ http://philip.greenspun.com/seia/ Either way, don't give up on TAOCP. Whether if you're ready for it now, or if you want to wait a few years, it's great that you're interested in reading it, and I would encourage you to study it as much as you can, if you discover that you are indeed intrigued by the topics it covers.
- rishabhverma 16y agoThanks, and which language should I focus on the most? Currently I know PHP and lately have started playing around with python too. Should I stick with pyhton or try out C or C++ before too as I have really less experience with C.
- tjr 16y agoI suggest Python. PHP is okay enough for web applications, but suboptimal for just about anything else. C is certainly worth learning, but can be challenging to use. Python is a pretty good language to learn with, and is perfectly usable for real projects.
- rishabhverma 16y agoWhat are the best books for pyhton, I have started reading How to Think Like a Computer Scientist, is it good enough or should I start with some other book? P.S. I know pyhton, but want to further improve my skills in it.
- waterlesscloud 16y agoI'd go with C. The fact that it's challenging is exactly why you should learn it at this stage. Many of my generation went Basic -> Assembly, and PHP -> C is not a dissimilar sequence.
- Mithrandir 16y agoC is a good language, but if you're just starting off with computer programming, you should try Python. Otherwise, TAOCP is a good book. MIT also offers some free course work at: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-087-practical-programming-in-c-january-iap-2010/ http://ocw.mit.edu/courses/electrical-engineering-and-comput... and http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-088-introduction-to-c-memory-management-and-c-object-oriented-programming-january-iap-2010/ http://ocw.mit.edu/courses/electrical-engineering-and-comput... Full list at http://ocw.mit.edu/courses/#electrical-engineering-and-computer-science http://ocw.mit.edu/courses/#electrical-engineering-and-compu... Good luck! :)
- rishabhverma 16y agoActually I am versed with computer programming , but the thing is I am not well versed with computer architecture and related stuff, so what are the best resources I should follow to get well versed with computer architecture?
- Mithrandir 16y agoAt MIT OpenCourseWare, there are several good courses on computer architecture. 6.033 Computer System Engineering: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-033-computer-system-engineering-spring-2009/ http://ocw.mit.edu/courses/electrical-engineering-and-comput... 6.823 Computer System Architecture: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-823-computer-system-architecture-fall-2005/ http://ocw.mit.edu/courses/electrical-engineering-and-comput... 6.828 Operating System Engineering: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2006/ http://ocw.mit.edu/courses/electrical-engineering-and-comput...
- NonEUCitizen 16y agodon't forget 6.004: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-004-computation-structures-spring-2009/ http://ocw.mit.edu/courses/electrical-engineering-and-comput...
- Archan 16y agoI think Knuths work might be too Mathematical in nature for you. If you wish to work on sematic web its better you start with Collective Intelligence its a good book to start with . However it uses Python for its examples. As far as Computer Architecture is concerned do you imply Software architecture or Computer Architecture
- rishabhverma 16y agoThanks for your advice. So what is the best stage to read Knuth's work? With computer architecture i basically imply software architecture, but I want to know the basics of computer architecture too.
- hga 16y agoFor low level software architecture, at the level of the firmware that drives processors (plus the electronics that are below that), as NonEUCitizen recommended MIT's 6.004 is a good bet (http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-004-computation-structures-spring-2009/ http://ocw.mit.edu/courses/electrical-engineering-and-comput...). For the medium level, assembly language and on up a fair bit (at least to C), CMU's got what looks like a great course and book: http://www.cs.cmu.edu/~213/ http://www.cs.cmu.edu/~213/ There's enough meat on the web page for the course that it should give you an idea if you want to get the book. For the higher levels, in addition to the MIT Computer System Engineering courses mentioned by Mithrandir (http://news.ycombinator.com/item?id=1850311 http://news.ycombinator.com/item?id=1850311), especially 6.033, check out this classic from the '70s: Lions' Commentary on UNIX 6th Edition, with Source Code (http://en.wikipedia.org/wiki/Lions%27_Commentary_on_UNIX_6th_Edition,_with_Source_Code http://en.wikipedia.org/wiki/Lions%27_Commentary_on_UNIX_6th...). Me and a lot of other people learned the basics from it, and while it's certainly dated, it has the advantage of being lucid and complete while not being too big or overwhelming, and of course nowadays if you want to go so far as running a Version 6 UNIX there are PDP-11 simulators that you can use for the purpose. I.e. it's a good foundation, like SICP is for languages and TAOCP is for algorithms (although there are less detailed and difficult books to get you started on algorithms that you might want to try first). Good luck and enjoy!
- omermuhammed 16y agoKnuth's TAOCP may be too much too early. Here are some links that will help you further your study. http://stackoverflow.com/questions/194812/list-of-freely-available-programming-books http://stackoverflow.com/questions/194812/list-of-freely-ava... http://stackoverflow.com/questions/78955/what-are-the-best-programming-and-development-related-blogs-closed http://stackoverflow.com/questions/78955/what-are-the-best-p... The first is list of free online books, the second programming related blogs. Fair warning, programming is a life long learning job. I am not trying to discourage you, but you need to understand that you will need to LIKE learning to be good at programming. Good Luck!
- pjscott 16y agoStructure and Interpretation of Computer Programs is a classic for a good reason. And it's available online: http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html You can get a lot out of SICP, if you take the time.
- alina24 16y agoThe C Programming Language(K&R) and The Unix Programming Environment are the best to start off with.
- malandrew 16y agoThe Little Schemer http://www.ccs.neu.edu/home/matthias/BTLS/ http://www.ccs.neu.edu/home/matthias/BTLS/