+3  A: 

It's useful (and interesting) to understand how the machine works. However, if you already understand how memory management and pointers work then you probably already know low-level programming to a fair extent.

Mostly it's more efficient in programmer time to write in languages like Ruby. Understanding what it is translated into helps if you can avoid the bad habits of micro-optimizing and compensation mechanisms for limited abstraction mechanisms.

Colin Gravill
+1  A: 

If for no other reason than to teach you why we have these kind of new scripting languages and how programming has evolved over time.

Furthermore, these languages are implemented in something and being able to modify or at the bare minimum understand the implementation can be very beneficial. That's also besides the point of using the right tool for the job. The right tool is not always going to be a scripting language, particularly if you wind up working for a company that already has a massive investment in a classical language.

neorab
A: 

They say you are not a real programmer until you've had your hand chasing segmentation faults.

Maybe it's no longer true but the necessary skill to do so applies to debugging large systems written in higher level languages. Messed-up datastructures may not cause segfaults anymore but they cause interesting problems and the skill of thinking at multiple levels of abstraction at once is just about necessary to debug certain kinds of things.

Yes, I'm arguing for learning a skill you may have no use for because of its cross-applications.

Joshua
A: 

Anecdote: After working on a project in Delphi for 3+ months, the programmer, and the project was successful, came to me and we were talking about it. He gave me the most interesting comment. He said "Yea, I think I have this figured out pretty good, but I'm confused about the difference between RAM and Disk".

Now, me, being an old school grognard, had to consciously keep my jaw from smacking the desk because of the "absurdity" of the question. But, obviously, with a little thought, it wasn't absurd because, obviously, the distinctions between the two systems didn't come in to play with the client/server application that we wrote.

But, frankly, this is why you want to learn a lower level programming language. So you can better answer questions like that.

Will Hartung
+5  A: 

Read this article from Joel, and you'll know why.

NomeN
From the article: "Aren't you glad you don't have to write in C anymore? We have all these great languages like Perl and Java and VB and XSLT that never make you think of anything like this, they just deal with it, somehow. But occasionally, the plumbing infrastructure sticks up in the middle of the living room". Nice one!
StackedCrooked
Yeah, really enjoyed that article, thanks
Jamie Rumbelow
exactly, it's exactly the "law of leaky abstractions", but here he says it better.
NomeN
+1  A: 

I believe you are doing yourself a favor by learning C. So much of our software infrastructure such as operating systems, compilers, utilities etc. are written in C that you will have a real advantage by being able to read and if necessary troubleshoot the C program that underlies this infrastructure

ennuikiller
A: 

The problem of higher-lever languages is that they don't teach you to do things in a simple way. With low-level languages you need to think in much simpler structures.

In 1995, Borland Delphi arrived as a simple RAD solution. Visual Basic already existed by then and two other RAD environments were introduced around the same time: GUPTA SQL Windows and PowerBuilder. The latter two were clearly higher-level languages than VB or Delphi. While all fout RAD environments were similar equal in options, possibilities and ease of design, it was Delphi that also allowed non-RAD development and simple, reasonable low-level applications. With VB, you could do similar things, although that required a few tricks and PowerBuilder and SQL Windows just didn't support simple, low-level programming with pointers and direct memory management/allocations. It is no wonder that Delphi did become a very popular language for more than a decade, next to C++. It allowed developers to work at multiple levels: - low-level with pointers, inline assembly, simple memory access - high-level with components, forms and data modules

While knowing high-level languages and programming techniques, it's very useful if you can go a few levels lower, just to keep things simple, while the high-level languages will just increase your development speed.

Workshop Alex