Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re2: How does learning C benefit a programmer?

by pmas (Hermit)
on Jul 31, 2001 at 09:33 UTC ( [id://101072]=note: print w/replies, xml ) Need Help??


in reply to Re: How does learning C benefit a programmer?
in thread How does learning C benefit a programmer?

Sorry answering so late, I just returned from extended weekend vacation... :(

I recommend learning C as one (important) step in understanding your computer - and C bring you so close to hardware it's scary sometimes... ;)
I learned C after knowing couple of assembler languages, Algol and PL/1, and after that one can get feeling how C builds layer between assembler and traditional high-level languages as perl.

If you are inclined to learn another language allowing you to do scary trick and gain complete control of the computer, try FORTH. It allows you to do things as no other languages - for the price. It was said only 10% of programmers are able to program reliably in FORTH, but they all can be very good and productive. The way FORTH is build it might run on bare processor without OS (FORTH will be the OS). It has some simple concepts and some extremely powerfull techniques to define new concepts. I newer seen another language allowing to define new control stuctures so easily. Not data structures, control structures.
My professors of computer science taught me that programming means "extending language by adding concepts to better solve tasks from problem domain" -- adding new data stuctures and operators/procedures to process them.
FORTH is ultimate example of this approach. For some reason it is not very popular - I can understand it is not easy on beginners, but IMO it is very empovering excercise on your understanding.
I've seen implementation of complete Tiny-Pascal part of Pascal language written in FORTH on 11 pages not too dense written - one page was interpreter on P-code and one was CDL-like extension to FORTH, basically YACC for FORTH.

I recommend to learn C assuming it will be just one of other languages which concepts you are willing learn. If you have intention to learn only one more language (after perl you already know), I will have hard time to decide between java (with all the objects and hype and usefullness for your career etc) and maybe VisualBasic. Maybe, if you are interested in Windows platform, VisualBasic might be a good choice. It is farther away from perl than C, and will give you different perspective. Also, it is common script language for all MS Office products, and believe me, you can do a lot of smart things in VisualBasic for MS Word, or for Outlook, if you'll learn MS Office object model.

"The C Programming Language" by Brian Kernighan and Dennis Ritchie. Countless people have said over the years that it's a terrible book for beginners...

I believe it is misunderstanding. This book was never intended to be for beginners - I believe it says so in preface. Just the opposite: is is book for programmers experienced in other languages to get quick understanding of common features other languages have common with C, and how they might differ. And book does excellent job solving this problem -- I alway remember how much more enjoyable experience (for a programmer knowing half a dozen different languages) is to learn new language from a book like Kernighan/Ritchie's book. The only exception so far was Camel book -- and also because it it not intended as first programming book for complete novice with no experience of programming whatsoever.
IMO, because you already know perl, you'll enjoy Kernighan/Ritchie's book better than another "C for complete beginner" book. Also, "Big Blue C" book is a classic, as a Camel book. Concept of first program as print "Hello, world!"; comes from here.

pmas
To make errors is human. But to make million errors per second, you need a computer.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://101072]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (7)
As of 2024-04-19 11:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found