Ugh. He may have invented the language, but that book is as long as it is awful. There are *much* better (and more accessible) texts on C++.
I agree with you. Having read the third edition soon after it came out (and having read the second edition earlier) I felt that the third edition present too much stuff early on for someone new to the language. I also got the impression that intent of the book seemed more to "sell" the language to the reader than introduce the language.
A relevant fact about Radiohead right now is that the band is unsigned. Maybe they will release their next album themselves and have it available on iTunes since they will see a large share of the proceeds. Radiohead is a known band so they could sell a new album on iTunes without needing a record label's publicity.
I think a lot of the readers, including the parent poster, on Slashdot (not surprisingly) missed the context in which Linux made his comments.
He is not saying using COW is bad for the fork() system call or such stuff. He is talking about transferring data between the kernel and user space for things like sockets. In this case COW is used to prevent the user-space code from writing to the buffer while the kernel is still using the buffer but the user-space code will eventually write to the buffer. Depending on the scheduling of the user code and the kernel code, the user-space code could attempt its write while the kernel is still writing and require a copy of the page.
In this case avoiding concurrent access to the buffer is the goal. It can be done either with COW or by simply copying the buffer in the beginning. In the COW implementation if the page ends up being copied, the whole COW trick is pure overhead. In addition with SMP systems cache coherency issues can come into play making a COW based solution to this problem even less attractive.
And the whole thing about Linus dissing FreeBSD/Mach developers is one flippant statement in a longish technical discussion - but putting it in a Slashdot headline definitely makes for better press.
I would suggest dividing the topic of computers into some broad areas which you think should be covered by a library and then find the good books in those areas. You want books of general interest which a person with keen interest in computers would be able to use and learn from (not highly specialized books). I have tried to list areas which cover the general areas of computer studies. Plus in the areas I have some knowledge I have given a list of useful books.
Algorithms/Data Structures
Donald E Knuth, The Art of Computer Programming, Vols. I - III
Robert Sedgewick, Algorithms
Leiserson, Cormen, Rivest, Algorithms
Horowitz, Sahni, Fundamentals of Data Structures (get one of the editions around 1990 using C)
Programming Techniques/Languages
Kernighan, Ritchie, The C Programming Language, 2nd ed
Bjarne Stroustroup, The C++ Programming Language, 3rd ed
+ insert the book on your favorite programming language here.
Software Engineering/ Design & Development Techniques
F.P. Brooks, The Mythical Man Month
Gerald M Weinberg, The Psychology of Programming (book may be out of print but is an interesting read)
Gamma et al (I don't remember the other authors' names), Design Patterns
Following two books (even though by MS Press are very good)
Steve McConnell, Code Complete
Steve Maguire, Writing Solid Code
Computer Networks
Andrew S Tanenbaum, Computer Networks, 3rd ed
Davies and Patterson, Computer Networks, A Systems Approach
W Richard Stevens, TCP/IP Illustrated, Vol 1 and 2
Doug Comer, Internetworking with TCP/IP, Vol 1 and 2
some books on web development (HTML, Perl etc) and general info about the Internet would also be useful but I don't know the right books.
Operating Systems
Peterson, Silberschatz, Galvin, Operating System Concepts, 6th ed
Andrew Tanenbaum, Modern Operating Systems
plus a book on practical OS design
McKusick, Bostic, Karels, The Design and Implementation of the 4.4BSD Operating System
Computer Architecture
Patterson, Hennessy, Computer Architecture A Quantitative Approach, 2nd ed (an advanced book)
Patterson, Hennessy, Computer Organization and Design : The Hardware/Software Interface
Databases
C.J. Date, An Introduction to Database Systems, 6/7 ed
Silberschatz, Korth, Sudershan, Database System Concepts
Security/Cryptography
Bruce Schneier, Applied Cryptography
Numerical Computing
Press, Teukolsky et al, Numerical Recipes in C : The Art of Scientific Computing
Computation Theory
I do not have a good idea
some book on Artificial Intelligence
Compilers
Aho, Sethi, Ullman, Compilers: Principles, Techniques and Tools (the dragon book)
Computer Graphics
Foley, van Dam et al, Computer Graphics: Principles and Practice
some book on Fractals since it is an interesting topic
PC Maintenance
i have no idea here but these are of practical value.
Computers and Society
some books which explore the effects of computers on society and interaction between the two.
The C++ Programming Language, 3rd Edition is pretty excellent.
Ugh. He may have invented the language, but that book is as long as it is awful. There are *much* better (and more accessible) texts on C++.
I agree with you. Having read the third edition soon after it came out (and having read the second edition earlier) I felt that the third edition present too much stuff early on for someone new to the language. I also got the impression that intent of the book seemed more to "sell" the language to the reader than introduce the language.
A relevant fact about Radiohead right now is that the band is unsigned. Maybe they will release their next album themselves and have it available on iTunes since they will see a large share of the proceeds. Radiohead is a known band so they could sell a new album on iTunes without needing a record label's publicity.
I think a lot of the readers, including the parent poster, on Slashdot (not surprisingly) missed the context in which Linux made his comments.
He is not saying using COW is bad for the fork() system call or such stuff. He is talking about transferring data between the kernel and user space for things like sockets. In this case COW is used to prevent the user-space code from writing to the buffer while the kernel is still using the buffer but the user-space code will eventually write to the buffer. Depending on the scheduling of the user code and the kernel code, the user-space code could attempt its write while the kernel is still writing and require a copy of the page.
In this case avoiding concurrent access to the buffer is the goal. It can be done either with COW or by simply copying the buffer in the beginning. In the COW implementation if the page ends up being copied, the whole COW trick is pure overhead. In addition with SMP systems cache coherency issues can come into play making a COW based solution to this problem even less attractive.
And the whole thing about Linus dissing FreeBSD/Mach developers is one flippant statement in a longish technical discussion - but putting it in a Slashdot headline definitely makes for better press.
You can compare the two versions at www.distrowatch.com.
I would suggest dividing the topic of computers into some broad areas which you think should be covered by a library and then find the good books in those areas. You want books of general interest which a person with keen interest in computers would be able to use and learn from (not highly specialized books). I have tried to list areas which cover the general areas of computer studies. Plus in the areas I have some knowledge I have given a list of useful books.
Algorithms/Data Structures
Donald E Knuth, The Art of Computer Programming, Vols. I - III
Robert Sedgewick, Algorithms
Leiserson, Cormen, Rivest, Algorithms
Horowitz, Sahni, Fundamentals of Data Structures (get one of the editions around 1990 using C)
Programming Techniques/Languages
Kernighan, Ritchie, The C Programming Language, 2nd ed
Bjarne Stroustroup, The C++ Programming Language, 3rd ed
+ insert the book on your favorite programming language here.
Software Engineering/ Design & Development Techniques
F.P. Brooks, The Mythical Man Month
Gerald M Weinberg, The Psychology of Programming (book may be out of print but is an interesting read)
Gamma et al (I don't remember the other authors' names), Design Patterns
Following two books (even though by MS Press are very good)
Steve McConnell, Code Complete
Steve Maguire, Writing Solid Code
Computer Networks
Andrew S Tanenbaum, Computer Networks, 3rd ed
Davies and Patterson, Computer Networks, A Systems Approach
W Richard Stevens, TCP/IP Illustrated, Vol 1 and 2
Doug Comer, Internetworking with TCP/IP, Vol 1 and 2
some books on web development (HTML, Perl etc) and general info about the Internet would also be useful but I don't know the right books.
Operating Systems
Peterson, Silberschatz, Galvin, Operating System Concepts, 6th ed
Andrew Tanenbaum, Modern Operating Systems
plus a book on practical OS design
McKusick, Bostic, Karels, The Design and Implementation of the 4.4BSD Operating System
Computer Architecture
Patterson, Hennessy, Computer Architecture A Quantitative Approach, 2nd ed (an advanced book)
Patterson, Hennessy, Computer Organization and Design : The Hardware/Software Interface
Databases
C.J. Date, An Introduction to Database Systems, 6/7 ed
Silberschatz, Korth, Sudershan, Database System Concepts
Security/Cryptography
Bruce Schneier, Applied Cryptography
Numerical Computing
Press, Teukolsky et al, Numerical Recipes in C : The Art of Scientific Computing
Computation Theory
I do not have a good idea
some book on Artificial Intelligence
Compilers Aho, Sethi, Ullman, Compilers: Principles, Techniques and Tools (the dragon book)
Computer Graphics
Foley, van Dam et al, Computer Graphics: Principles and Practice
some book on Fractals since it is an interesting topic
PC Maintenance
i have no idea here but these are of practical value.
Computers and Society
some books which explore the effects of computers on society and interaction between the two.