Submitting a review for consideration is easy; please first read Slashdot's book review guidelines. Updated: 2008114 by samzenpus
All trademarks and copyrights on this page are owned by their respective owners. Comments are owned by the Poster. The Rest © 1997-2010 Geeknet, Inc.
The Practice of Programming (Score:5, Interesting)
There are a few books I recommend to kids just starting out in the industry.
Code Complete
Writing Solid Code
Programming Pearls
and The Practice of Programming
Even old stalwarts like Kernighan's The C Programming Language aren't as useful in the longterm as the 4 books above are.
Anyone who wants to make the jump from "code monkey" to professional should really take the time to read the books.
Re:The Practice of Programming (Score:5, Interesting)
Right. The four books you mentioned aren't books for teaching you about a programming language or a particular technique, unlike K&R, which focuses just on C. They are designed to teach how to think like a programmer and how write code like professional software developer. They are more about the fundamental nature of coding; they're not as much about trying to teach you the basics as they are about trying to teach you what you really need to know to successfully take a programming project through the development cycle as a coder.
Parent
Re: (Score:3, Insightful)
If you just skim through K&R, then yes, I can see why you'd think it was 'just on C'. But if you actually sit down and work through the problems, you'll find a lot more depth. Of course, it's all C code, but some of those exercises are deceptively challenging, and they really helped me to move beyond the mechanics of the language and start thinking about coding in a more sophisticated way.
The other books mentioned provide important insights into different aspects o
Re:The Practice of Programming (Score:4, Informative)
Thats because you're comparing training manuals to technical manuals. K&C is still useful to this day as a standard reference that still works all these years past. The only thing similar is Knuths works, one of the few compsci works created that serves as both a training and technical reference. (kids - read Shannon thouroughly as well, starting with "A Mathematical Theory of Communication")
Parent
Re: (Score:3, Informative)
kids - read Shannon thouroughly as well, starting with "A Mathematical Theory of Communication"
Interesting, for sure, but what does it have to do with programming?
Link, by the way: A Mathematical Theory of Communication [bell-labs.com]
Re: (Score:3, Informative)
What does information theory have to do with information science you ask? More than a little is my answer.
Re: (Score:2, Informative)
Re: (Score:2)
design patterns
those are two must have books.
"Need" an IDE (Score:2, Insightful)
Re: (Score:2)
If a programmer needs to use an IDE, as opposed to just using one for convenience, something is very wrong.
Perhaps, but don't draw such a hard line. Time constraints can easily push a "convenience" to the "need" category. Sure we can get everything done in the simplest text editor but an IDE is a big help for things like looking up unfamiliar method signatures.
Re:"Need" an IDE (Score:4, Insightful)
If a programmer needs to use an IDE, as opposed to just using one for convenience, something is very wrong.
Once you cover the basic needs of food and shelter, everything after that becomes a convenience
Parent
Re: (Score:2, Insightful)
If a programmer needs to use an IDE, as opposed to just using one for convenience, something is very wrong.
Once you cover the basic needs of food and shelter, everything after that becomes a convenience
So this would be the application of Maslow's Hierachy of Needs to programming!?
Re:"Need" an IDE (Score:5, Insightful)
I need an IDE to do my job. I could lay out graphical forms by hand, but it would take long enough as to not be profitable.
Parent
Re:"Need" an IDE (Score:5, Interesting)
When the hell did laying out graphical forms become programming?
Parent
Re:"Need" an IDE (Score:5, Interesting)
In my very humble opinion, tools such as Emacs and vi are precursors to larger development environments, such as Eclipse or Delphi. In your case, and assuming my argument is true, we would all be going back to flipping switches and pressing buttons, since that's the only true way of understanding the code.
If you don't accept my argument, then why are syntax highlighting, :make macros and identifier matching part of every vi install nowadays? And don't even get me started about emacs, which design purposes was to help programmers write better code. So, if you don't accept my premise, where do you draw the line?
For me, this development can't go fast enough. I'm looking forward to languages that integrate completely with an IDE, and leave simple character representation (ASCII e.a.) behind.
Parent
Re:"Need" an IDE (Score:5, Insightful)
I think you draw the line when a language "requires" an IDE so bloated that it runs slow on a Core 2 Duo machine, and makes you want to code in Notepad instead, except you can't because the language is too convoluted.
Parent
Re:"Need" an IDE (Score:4, Insightful)
1) Uh, since when did the nature of a language dictate how fast/slow an IDE implementation is?
2) Why, dear god, would a slow IDE be evidence that a language sucks?
3) What language are you using that is "too convoluted" to use outside of an IDE? Because I've used quite a few, and I've yet to come across *any* language that "requires" an IDE.
Parent
Labview (Score:3, Insightful)
I'm looking forward to languages that integrate completely with an IDE
Try Labview. And weep.
and leave simple character representation (ASCII e.a.) behind.
That's Labview - no plaintext representation at all. You'll be begging for one soon enough, with or without an IDE, unless your programs are at the "hello world" level of complexity. Some of the reasons are specific to Labview's failings. For instance, version management and project organization exist only as pathetic useless pretences, which obstruct rather than assist. Other reasons are intrinsic to the non-character representation. Try doing a diff between two Labview files, or even
Re: (Score:3, Insightful)
Is it perfect? F
Re:Labview (Score:5, Interesting)
There may be a non-character-based program representation (useful for developing and maintaining non-trivial projects) in the future, but I fear we'll all be retired or expired by then
This has been tried numerous times. It just doesn't work, period.
More recently, I recall reading an interesting interview with Microsoft "project Oslo" guys. Oslo is supposed to be a DSL framework for .NET. Now, existing releases already have something called "DSL SDK", integrated into VS, but the "DSLs" that it lets you create are purely graphical, like flowcharts, and have to be "coded" using a visual designer.
That didn't exactly catch on, and Oslo guys explained that one of the most repeated customer feedbacks was that, while visual designers are occasionally useful, in the end it's still faster and easier to spend half an hour training, and then write DSL code as actual text in a text editor. Note: not for a programmer, but for a business analyst, or some other guy who haven't ever seen any code before!
So they ditched the visual designer idea in Oslo, and instead came up with the tried and proven approach of parser generators (going for LL(*) over LALR as it's simpler to use and less restrictive, even if slower), and coupled it with a text editor that can load a grammar for the parser generator, and automatically provide syntax highlighting and simple completion for it.
Parent
Re: (Score:3, Insightful)
While I'm not sure what the low-level representation of the code has to do with anything -- that's a detail that ideally ought to be hidden by the IDE anyway -- I couldn't agree more. There's nothing wrong with better tools, and there are tasks that are flat-out impossible without better tools. Is there something "very wrong" if a traveler can't get from NY to LA in a single day without using an airplane? Of course not.
I've been programming since the punch card era, and I used to think that the greatest men
"Need" != "Helpful tool" (Score:4, Interesting)
All too often I see programmers who are completely helpless when they cannot use their favorite IDE, which is the problem I was alluding to. An IDE is a great tool that can save a lot of time, but when it gets to the point where people cannot figure out how to run a Java program without starting up Eclipse, something very bad is going on.
Parent
Re:"Need" an IDE (Score:5, Insightful)
I'm looking forward to languages that integrate completely with an IDE, and leave simple character representation (ASCII e.a.) behind.
Oh, me too! I can't wait until diff and patch no longer work, and every version control system has to explicitly support every distinct language, and examples on Stack Overflow are files you have to download and open in an IDE before you can examine them, and Google has to learn each language's binary serialization so that it can search code snippets.
In a time when every other type of file is moving to standardized formats, I just love the idea of my industry balkanizing into a million crap representations. That is certain to make us all more productive.
Parent
Re: (Score:2, Interesting)
Try looking into "literate programming". There is a character representation at the lowest level, but the output is all nicely formatted and typeset.
I played around with Haskell a bit. It has a built-in feature where you can integrate it with LaTeX and produce some really nice program listings complete with typeset documentation.
Re:"Need" an IDE (Score:5, Insightful)
That platform arrived in the 70's and it was called Smalltalk. All current mouse-based GUI systems are an offshoot of the original Smalltalk system. Wiki link [wikipedia.org]. In reference to your dream-system, things like this were pretty potent and ahead of their time:
This would obviously allow you to edit your IDE/OS in real-time/at runtime.
Parent
Re:"Need" an IDE (Score:5, Informative)
I'm looking forward to languages that ... leave simple character representation (ASCII e.a.) behind.
I worked on such a thing in 1983 at DEC (look up my MIT thesis to see). Structural editing.
Conclusion: it was an absolute disaster. Programmers cannot use this. Most of the work was in altering it to be as much like a plain text editor as possible.
Don't think you have an amazing new idea.
Parent
Re: (Score:3, Insightful)
Bullshit, you only make this argument based on your comfort zones and your levels of trust.
When you write code in a language that is not machine code you require some sort of text editor, you require some sort of file system for organizing your text files, and you require a compiler and a linker for making executables out of your human-readable code.You need to trust that all your tools actually do what they're supposed to do, and you need to be comfortable in that environment.
An IDE is simply one more tool
Re: (Score:2)
If you "need" to use an IDE, then you're limited to working in environments where one is available. That's just dandy until your Intarwebs2.0 company goes down the intartubes and the only job going is debugging C server code on a Solaris box without a GUI let alone an IDE.
Re: (Score:3, Insightful)
If you "need" to use a compiler, then you're limited to working in environments where one is available!
An IDE is a tool just like a compiler is a tool. There really is no difference, other than the fact that some people don't like IDE's.
I don't need a compiler to write my code, but it would be extremely time-consuming to do my work without one, so in practice I need one to be able to reach a meaningful level of productivity. In the same way I don't need an IDE write my code, but it would be extremely time-c
Re: (Score:3, Insightful)
I made the move from C++ to Java four years ago. I'd like to move back, or at least out of Java, simply for some variety. But I have a family to support, and the potential employers I've talked to that don't use Java would only be willing to bring me in at about half my current
Re: (Score:3, Insightful)
Bullshit, you only make this argument based on your comfort zones and your levels of trust.
Profanity, straw-man, pseudo-psychology.
When you write code in a language that is not machine code you require some sort of text editor, you require some sort of file system for organizing your text files, and you require a compiler and a linker for making executables out of your human-readable code.You need to trust that all your tools actually do what they're supposed to do, and you need to be comfortable in that en
Re: (Score:3, Interesting)
How can we have a flame war about the definition of a Real Programmer© without a link to the story of Mel [utah.edu], the original Real Programmer©?
Re: (Score:3, Interesting)
Re:"Need" an IDE (Score:4, Interesting)
From the postscript at the end of this version: "The original submission to the net was not in free verse, nor any approximation to it --- it was straight prose style, in non-justified paragraphs. In bouncing around the net it apparently got modified into the `free verse' form now popular. In other words, it got hacked on the net. That seems appropriate, somehow."
Parent
Re: (Score:2)
Well in *my* day, we didn't use any of those fancy dancy text editors! No sir, by golly, we used honest-to-god mechanical switches on a panel to program in our boolean logic and THAT'S THE WAY WE LIKED IT!
Now get off my lawn!
Re: (Score:2)
Yeah. I've only discovered the joy of ed in the last month.
I feel like such a newb. ;)
Brian Kernighan of AWK/AMPL Fame (Score:5, Insightful)
Re: (Score:2, Offtopic)
My thoughts exactly. Mod AC up !
hello, world (Score:4, Funny)
Parent
Re: (Score:2, Insightful)
Not the Brian Kernighan of "The C Programming Language" fame, then?
That's exactly what I was thinking. I'm like WTF with the title of this thread (??????????)
As Brian entered the room... (Score:4, Funny)
Seriously (Score:4, Insightful)
This is frickin slashdot. Who here needs an introduction of Brian Kernighan?
Re: (Score:2, Funny)
People with userid# over 20 000?
Re: (Score:2)
Re:Seriously (Score:4, Funny)
Btw, what is C programming language? Is it an obsolete computer language like Visual Basic 6 or machine code?
Parent
Re:Seriously (Score:4, Funny)
Btw, what is C programming language? Is it an obsolete computer language like Visual Basic 6 or machine code?
It's actually a tool created by communist conspirators to enable the creation of the infamous Lunix operating system [adequacy.org] intended to subvert our free society. That is why you're well advised to stay away from it if you ever see it, stick to God-blessed, corporate-backed tools such as Java and .NET, and report any sightings of C programmers in the wild (generally identified by the beard [nyu.edu]) to BSA and NSA.
Parent
Re: (Score:3, Funny)
Thought you were RMS there for a second. ;)
Re:Seriously (Score:5, Funny)
It's rumored he invented Al Gore.
Parent
Re:Seriously (Score:4, Informative)
Reflections on Trusting Trust is by Ken Thompson, not Brian Kernighan.
Parent
Alan Turing (Score:2)
Bring me a new interview with Alan Turing and maybe that would peak my interest
Now that could be quite the challenge. I hear he's not granting many interviews lately.