Good books in computer science?

P

Paul Rubin

dads said:
I'm wanting to purchase some of the titles that have been raised in
this thread. When I look they are very expensive books which is
understandable. Do you think getting earlier editions that are cheaper
is a daft thing or should I fork out the extra £10-£30 to get the
latest edition?

It depends on the book. Also, keep in mind that quite a few good
books these days are online where you can read them for free. SICP
(mentioned in my earlier post) is one of them.
 
R

Rhodri James

Really? So you don't think that the best way to get good at something is
to practice?

Self-evidently. If what you practice is bad practice, it doesn't matter
how much you practice it you'll still be no good at good practice in
practice. Practically speaking, that is :)
 
L

Lawrence D'Oliveiro

Steven D'Aprano said:
Shame on you for deliberately cutting out my more serious and nuanced
answer while leaving a silly quip.

Can't have been very "serious and nuanced" if it could be summed up by such
a "silly quip" though, could it?
 
L

Lawrence D'Oliveiro

Chris said:
Vivaldi vs. Mozart

And the latter especially had definitely mastered his editor. Just think
of the sheer volume of the coding he managed during his short life.

Not many bugs either…

I thought Vivaldi did more. The style of music was such that they could
virtually sketch it out in shorthand, and leave it to the copyists to expand
to proper notation for the musicians to play. I imagine that it was also the
job of copyists to fix the typos.

In other words, high productivity was a direct consequence of adoption of a
cookie-cutter style.
 
S

Steven D'Aprano

Can't have been very "serious and nuanced" if it could be summed up by
such a "silly quip" though, could it?

But it can't be summed up by the silly quip, which is why I'm complaining
that the silly quip on its own fails to include the more serious and
nuanced elements of my post.
 
B

Bob Martin

in 117455 20090615 044816 Steven D'Aprano said:
But it can't be summed up by the silly quip, which is why I'm complaining
that the silly quip on its own fails to include the more serious and
nuanced elements of my post.

Lots of references to "good programmer" but no attempt to define the term.

Who is the better programmer - one who writes lousy code but produces good programs
or one who obeys all the rules of coding but whose programs break all the time?
(Yes, I know there are two other categories!)
In almost 50 years programming I have met all types but I tended to judge them
by the end results, not on their style.
 
L

Lie Ryan

Bob said:
Lots of references to "good programmer" but no attempt to define the term.

Who is the better programmer - one who writes lousy code but produces good programs
or one who obeys all the rules of coding but whose programs break all the time?
(Yes, I know there are two other categories!)
In almost 50 years programming I have met all types but I tended to judge them
by the end results, not on their style.

A programmer that just follows the recipes for the so-called "rules of
coding" is just, as Steven says, a bad programmers. Unless you write a
program that works, you are not a programmer; once you've written one
that works, we'll see whether you're a good or bad by your style.

Points is taken when the so-called rules are followed mindlessly.

Bonus Points if you can justify your breaking rules.

No point for program that doesn't work.
 
D

dads

I remember someone earlier in the thread mentioning reading source
code from good coders. I've been wanting to give this a go as it makes
perfect sense, I suppose the standard library would be a good start.
What would your recommendations be, something not too too hard, so I
don't understand.
 
P

Phil Runciman

FWIW I actually dislike this book! Gasp...

Much of the material is excellent but IBM got into the huge mess with the 360. Brooks observed failure from the inside and IMHO did a great job of it.

Project managers can never rescue stuffed concepts especially if a lot of money has been spent! Such projects have momentum and roll over anyone who gets in the way.

Brilliant architects are worth their weight in gold. I believe that ICL's VME/B OS began as a skunk works project.* It had such an architect. The latter was the official OS and was pretty good too. I think Warboys took over later once VME/B became official... if anyone out there knows better then please let us know and correct Wikipedia too. The Wikipedia item on VME is too sanitised for my taste. The "truth" is generally far more interesting.

If the software you are developing is going to be used by many people then remaining sharp and on top of your game is so important. Do not program if you are tired or you will spend your life debugging. ;-) I stop coding at 3pm for this reason. I come right again around 10pm!

Yes, despite the above, do read the book, but remember that among the content is a cautionary tale!

Ooops, the above is a bit away from Python. ;-)


Phil


*I was told this by the leader an ICL research team, no less than Alan Sutcliffe himself... many years ago now. (c. May/June 1970)


-----Original Message-----
From: Roy Smith [mailto:[email protected]]
Sent: Sunday, 14 June 2009 2:21 p.m.
Subject: Re: Good books in computer science?

"Rhodri James said:
The Mythical Man-Month (Brooks) is a must.

What's amazing about this book is just how relevant it is today, 35 years
after it was written. Some of the technical details have changed (how many
of us still keep our project notes on microfiche?), but cross out
"microfiche" and write in "wiki" and what he's saying is just as valid
today. It's not about computer science. It's not really even about
software engineering. It's more about general project management than
anything else.

In the same vein, Death March, by Ed Yourdon.
 
J

Joachim Strömbergson

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Aloha!
I remember someone earlier in the thread mentioning reading source
code from good coders. I've been wanting to give this a go as it makes
perfect sense, I suppose the standard library would be a good start.
What would your recommendations be, something not too too hard, so I
don't understand.

When people wants to know what (good) Python code looks like, I usually
point them to Trac:

http://trac.edgewall.org/

Trac is not only a good tool for development written in Python. Trac
also uses Trac to develop Trac (cudos for eating your own dogfood) and
Trac allows easy browsing of the source code.

I still consider myself a Python-n00b and my judgement might be all
wrong. But I believe that the Trac developers follows Pythonic code
rules and the result a prime example of what well written, well document
Python code looks like.

Check for yourself though at:
http://trac.edgewall.org/browser/trunk/trac

- --
Med vänlig hälsning, Yours

Joachim Strömbergson - Alltid i harmonisk svängning.
========================================================================
Kryptoblog - IT-säkerhet på svenska
http://www.strombergson.com/kryptoblog
========================================================================
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAko3RegACgkQZoPr8HT30QEMVwCgrNkOYMGFmhMYunwZqlTFpAkt
He8AoOEXIC/QXkRu+sHtzIz+1+JQZp2F
=o+g8
-----END PGP SIGNATURE-----
 
A

Aaron Watters

I'm wanting to purchase some of the titles that have been raised in
this thread. When I look they are very expensive books which is
understandable. Do you think getting earlier editions that are cheaper
is a daft thing or should I fork out the extra £10-£30 to get the
latest edition?

This is the best book ever written on computer science
and the first edition is free.

http://www.math.upenn.edu/~wilf/AlgComp3.html

-- Aaron Watters
http://aaron.oirt.rutgers.edu/myapp/amcharts/doc

===
less is more.
 
P

Phil Runciman

Because it reminds me of when things went badly wrong. IBM360, Von Neumann architecture, no hardware stacks ...

IMHO Burroughs and ICL had better approaches to OS design back then but had less resources to develop their ideas.

However, mainly this period marked a transition from the excitement and discovery phase of computing to commercial power plays and take-overs. The best ideas in a field tend to get lost in the melee of competition. Early computers were rooted in academia and there was a lot of cross fertilisation of ideas and approaches. IMHO commerce affected layers of the stack where it had no useful contribution to make. Vertical integration warred against sound architecture.

The book has an important message and I recommend that people read it. The book is to me, and possibly only me, an icon representing when things went wrong.



-----Original Message-----
From: Lawrence D'Oliveiro [mailto:[email protected]_zealand]
Sent: Wednesday, 17 June 2009 5:50 p.m.
To: (e-mail address removed)
Subject: RE: Good books in computer science?

Phil said:
FWIW I actually dislike this book!

Why?
 
B

Bearophile

Nathan Stoddard:
The best way to become a good programmer is to program. Write a lot of
code; work on some large projects. This will improve your skill more than
anything else. It's also important to learn new languages regularly. I
recommend to learn C, Python, and Lisp first.

To become very good in a practical activity (like programming or
writing stories or playing piano) you have to do many things for a lot
of time.

You have to practice it a lot, but that's not enough. You also must
keep pushing forward the limit of your skills, doing things hard for
you.

Reading smart books and learning from the experts in the field is
usually necessary. Quite often it's useful to read good books not much
related with the activity you are doing too, because the human mind
works better this way.

Another thing you have to do is to keep your eyes open, for example to
be able to understand when your learning is struck in some slow
corner: now and then you will have to meta-learn, that is to change
the way you learn and train yourself. This is a hard and often painful
thing to do, but it's probably necessary if you want to become very
good, because very often you learn in the wrong way, or in a not much
efficient way.

Howard Gardner too has written about such topic.

Bye,
bearophile
 
B

Bob Martin

in 117815 20090617 221804 Phil Runciman said:
Because it reminds me of when things went badly wrong. IBM360, Von Neumann =
architecture, no hardware stacks ...

IMHO Burroughs and ICL had better approaches to OS design back then but had=
less resources to develop their ideas.=20

However, mainly this period marked a transition from the excitement and dis=
covery phase of computing to commercial power plays and take-overs. The bes=
t ideas in a field tend to get lost in the melee of competition. Early comp=
uters were rooted in academia and there was a lot of cross fertilisation of=
ideas and approaches. IMHO commerce affected layers of the stack where it =
had no useful contribution to make. Vertical integration warred against sou=
nd architecture.

The book has an important message and I recommend that people read it. The =
book is to me, and possibly only me, an icon representing when things went =
wrong.

Well, it's an opinion, but certainly not one I would agree with!
AFAIAC the IBM 360 got everything right, which is why the instruction set is still
going strong 45 years later (I've used it for every one of those 45 years).
 
A

Asun Friere

For every one Horowitz there are a thousand wannbes thumping on the
piano trying to become Horowitz.
The traction that practice gives is maximal only in the beginning.

Funny but I was watching an interview/conversation between and older
composer and a young up and coming WFCP (World Famous Concert Pianist)
the other day. The composer had been teaching the pianist to
understand the works he was playing ... anyway, the old guy remarked
that when he was younger he wanted to be a WFCP too, but that he
lacked a crucial ability that the young star had. What was it? "I
lack the ability to make myself practise as well and for as long as
you do."
 
P

Phil Runciman

->From: Bob Martin [mailto:[email protected]]
-.Sent: Thursday, 18 June 2009 6:07 p.m.
-Subject: Re: RE: Good books in computer science?

->Because it reminds me of when things went badly wrong. IBM360, Von Neumann =
->architecture, no hardware stacks ...
->
->IMHO Burroughs and ICL had better approaches to OS design back then but had=
->less resources to develop their ideas.=20
->
->However, mainly this period marked a transition from the excitement and dis=
->covery phase of computing to commercial power plays and take-overs. The bes=
->t ideas in a field tend to get lost in the melee of competition. Early comp=
->uters were rooted in academia and there was a lot of cross fertilisation of=
->ideas and approaches. IMHO commerce affected layers of the stack where it =
->had no useful contribution to make. Vertical integration warred against sou=
->nd architecture.
->
->The book has an important message and I recommend that people read it. The =
->book is to me, and possibly only me, an icon representing when things went =
->wrong.


-Well, it's an opinion, but certainly not one I would agree with!
-AFAIAC the IBM 360 got everything right, which is why the instruction set is still
-going strong 45 years later (I've used it for every one of those 45 years)..

Yes, I was afraid someone would use that sort of argument. Sadly, having the best
instruction set does not lead to commercial success. If it did then Interdata would
still be with us. They used IBM360 instructions.

How many instruction sets have you used? I have used at least 9.(I nearly missed
the DG Nova). KDF9 had the best set for general computing that I had the privilege
of using but that is not to say it was the best. The Burroughs B series or PDP11 may
have been better... and doubtless there are many more candidates.

What I can say is that for scientific/engineering calculations the RPN of KDF9 was
Great because assembler was no harder than using algol60 for the calculations part of
the problems I worked on.

Oh yes, I even used assembler on the IBM360 series. It was a 360/50. The experience
Did impact on the force of my observations! FWIW I learned it using the training material
For the ICL System 4 which was superior to IBM's. The ICL System 4 was not a success...
despite its instruction set. ;-)

-AFAIAC the IBM 360 got everything right
How many known bugs did the OS end up with? I know it hit 50,000+ and counting. LOL

Suffice to say we are on a journey and Python is part of the scenery.


Phil
 
L

Lawrence D'Oliveiro

Phil said:
What I can say is that for scientific/engineering calculations the RPN of
KDF9 was Great because assembler was no harder than using algol60 for the
calculations part of the problems I worked on.

Unfortunately, we had to learn the hard way that machine instruction sets
must be designed for efficiency of execution, not ease of use by humans.
Stack-based architectures, for all their charm, cannot match register-based
ones in this regard.
 
C

Chris Jones

In message <[email protected]>, Chris
Jones wrote:

I thought Vivaldi did more. The style of music was such that they
could virtually sketch it out in shorthand, and leave it to the
copyists to expand to proper notation for the musicians to play. I
imagine that it was also the job of copyists to fix the typos.

100 years before Frederick W. Taylor was born..?

Vivaldi ran a school for musically-minded young women, I heard, so his
alumni may have pitched in. Mozart on the other hand, pretty much must
have spent his days coding. It has been estimated that the fastest
copyist would need years to manually reproduce the sum total of his
manuscripts.

Mind you, that's only stuff I read years ago, and even though I looked
around a bit, I have no evidence to corroborate.
In other words, high productivity was a direct consequence of adoption
of a cookie-cutter style.

It looks like we pretty much agree.

You make it sound like it was Vivaldi who invented Pacbase. :)

Maybe I'm nitpicking, but the one thing I don't understand is how you
practice programming.

The term makes obvious sense when you're talking about your golf swing,
acquiring competitive driving skills, playing tetris..

But programming..??

CJ
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,982
Messages
2,570,190
Members
46,736
Latest member
zacharyharris

Latest Threads

Top