pre-requestie for learning C...

T

thushianthan15

Hi,

I am new to programming. I would like to learn C programming language.
But, one of my cousin told me that, it is only suited for Computer
Science students and for learning that language you should know the
following things :-

1. Computer Organization and Architecture

2. Assembly Language [ For good understanding of pointers ]

Is it true ? Any suggestions ?

Excuse my English.

Thank you...

Thushanthan.
 
M

Mensanator

Hi,

I am new to programming. I would like to learn C programming language.
But, one of my cousin told me that, it is only suited for Computer
Science students

That's wrong.
and for learning that language you should know the
following things :-

1. Computer Organization and Architecture

2. Assembly Language [ For good understanding of pointers ]

Is it true ?

Absolutely not (although it certainly doesn't hurt).
Any suggestions ?

Hard to say. If you know absolutely nothing, C will be
more difficult to learn and there are probably better
languages to start with.

Other things to consider are what resources you already
have. Do you even have a computer? What software do you
already have? Things like Excel have programming languages
built in (they are usually not C). Do you use Windows or
Linux?
 
T

thushianthan15

I am new to programming. I would like to learn C programming language.
But, one of my cousin told me that, it is only suited for Computer
Science students

That's wrong.
and for learning that language you should know the
following things :-
1. Computer Organization and Architecture
2. Assembly Language [ For good understanding of pointers ]
Is it true ?

Absolutely not (although it certainly doesn't hurt).
Any suggestions ?

Hard to say. If you know absolutely nothing, C will be
more difficult to learn and there are probably better
languages to start with.

Other things to consider are what resources you already
have. Do you even have a computer? What software do you
already have? Things like Excel have programming languages
built in (they are usually not C). Do you use Windows or
Linux?


Excuse my English.
                             Thank you...
Thushanthan.

Thank you for your reply. Yes, i have computer and i am using Linux
[ Ubuntu ]. I also installed gcc ....

Thushanthan.
 
W

Wolfgang Draxinger

Hi,

I am new to programming. I would like to learn C programming language.
But, one of my cousin told me that, it is only suited for Computer
Science students and for learning that language you should know the
following things :-

1. Computer Organization and Architecture

C is completely agnostic about the organisation and architecture of a
computer by design.

What you really need to know is how algorithms work, i.e. how to split a
complex task into simple pieces, that can be used to program a computer.
But that more a topic of math and applies to _every_ programming language.
2. Assembly Language [ For good understanding of pointers ]

Not needed. Actually knowledge about low level pointers might add some
confusion, when it comes to how C deals with them.
Is it true?

You don't need a in depth understanding about how computers work, if you're
just starting to learn programming. C is as good as any other programming
languages. The only drawback is, that upon programming errors resulting in
program crashes, debugging tends to be a little more exhaustive, but not
much.

Once you figured out how to write simple programs and get to do more and
more complex things you also gain the knowledge to understand computers.

IMHO it's easier to understand assembler programming, once you've learnt
some high level languages, than in the other way. For assembler you've to
break up algorithms in so tiny pieces, that it's easy to get lost, if one's
not used to do that (breaking down algorithms to simpler and simpler
steps).
Any suggestions?

Learn C. And also learn other languages. Especially try to not focus on a
single paradigm.

C is a imperative language: Operations are in a given order (the compiler
might decide to do things in slightly different, but still equivalent
order) and will be executed that way. Most languages follow this paradigm,
among C these are Pascal/Delphi, Perl, Python, Ruby, Tcl, C++, C#, D,
Objective-C.

Then there are functional languages: In those everything is taken as a
function in the mathematical sense: A certain set of values put into a
function will always result in the same output values. A program is defined
by a set of expressions composed of evaluation of such function. What
matters is the result of the expression and its mathematical correctness.
The order of operation is of second rank, though it can be done by defining
iterative functions (i.e. parameters of the functions vary with each call).
Languages following this paradigm are: Haskell, Clean, OCaml, SML, F#,
Erlang, Lisp, Scheme.

And then there are languages that allow a mixed paradigm style of
programming, though the usually focus on the imperative part. Among those
are Python, Tcl and Ruby.

Then you'll probably get in touch with the paradigm of "object oriented
programming" (OOP). This paradigm is focused on data ecapsulated in opaque
object instances and every operation is a manipulation on such encapuslated
data. Object instances are of classes, and those classes can be derived
from other classes. OOP can be found on both imperative and functional
programming and can usually implemented with every programming language
capable of defining custom data types and scoped functions (it can be in
fact implemented with every turing complete language, but doing it with
BASIC or pure assembler will be a PITA). To ease up things some languages
provide out of the box support for OOP structures. Of the aforementioned
languages those are: Delphi, Perl, Ruby, Python, C++, C#, Tcl, D,
Objective-C, OCaml, Haskell, Clean, Scheme, F#, Erlang.

Wolfgang
 
P

Peter Nilsson

... one of my cousin told me that [C] is only suited for
Computer Science students

Well some of those students venture out into the real world.
They take their C skills with them.
and for learning that language you should know the
following things :-

1. Computer Organization and Architecture

2. Assembly Language [ For good understanding of pointers ]

I've found that the people who claim to know about such things
are often the worst C coders, precisely because they claim to
know such things. [Not all, just an awful lot!]
Is it true ?

Nope. Knowing 6809 and 68000 assembly was the worst handicap
I had coming to terms with pointers in C. It wasn't until I
stopped thinking of C as 'portable assembler', i.e. stopped
looking at disassemblies, that I actually got my learning
curve going in an upwards direction.
Any suggestions ?

C is an abstract high level language. Treat it as such.
 
M

Mensanator

That's wrong.
and for learning that language you should know the
following things :-
1. Computer Organization and Architecture
2. Assembly Language [ For good understanding of pointers ]
Is it true ?
Absolutely not (although it certainly doesn't hurt).
Hard to say. If you know absolutely nothing, C will be
more difficult to learn and there are probably better
languages to start with.
Other things to consider are what resources you already
have. Do you even have a computer? What software do you
already have? Things like Excel have programming languages
built in (they are usually not C). Do you use Windows or
Linux?

Thank you for your reply. Yes, i have computer and i am using Linux
[  Ubuntu ]. I also installed gcc ....

Sounds like you have everything you need. You may have languages
other than the C compiler with your gcc. That's actually the first
thing you need to learn - how to compile & run your programs.

Remember, for anything you want to do, you have to do something else
first (when you learn recursion, hopefully you'll see the joke).

Before you can run a program, you have to compile it. Before you can
compile it, you have to create a source. before you can create a
source,
you have to know how to use an editor. Before you can use an editor,
you have to jnow how to use a shell. And so on. And some things are
in parallel. When you reach the stage where you're actually writing
the source, you have to also know the language. Some things like IDEs
will do some of these steps for you, sometimes they help, sometimes
they get in the way.

Then, any tutorial on learning C can probably be used. Start from
the beginning and do the exercises, when OS or assembly issues come
up, the tutorials will cover them.
 
T

thushianthan15

On Mar 4, 6:23 pm, "(e-mail address removed)"
Hi,
I am new to programming. I would like to learn C programming language.
But, one of my cousin told me that, it is only suited for Computer
Science students
That's wrong.
and for learning that language you should know the
following things :-
1. Computer Organization and Architecture
2. Assembly Language [ For good understanding of pointers ]
Is it true ?
Absolutely not (although it certainly doesn't hurt).
Any suggestions ?
Hard to say. If you know absolutely nothing, C will be
more difficult to learn and there are probably better
languages to start with.
Other things to consider are what resources you already
have. Do you even have a computer? What software do you
already have? Things like Excel have programming languages
built in (they are usually not C). Do you use Windows or
Linux?
Excuse my English.
                             Thank you...
Thushanthan.
Thank you for your reply. Yes, i have computer and i am using Linux
[  Ubuntu ]. I also installed gcc ....

Sounds like you have everything you need. You may have languages
other than the C compiler with your gcc.  That's actually the first
thing you need to learn - how to compile & run your programs.

Remember, for anything you want to do, you have to do something else
first (when you learn recursion, hopefully you'll see the joke).

Before you can run a program, you have to compile it. Before you can
compile it, you have to create a source. before you can create a
source,
you have to know how to use an editor. Before you can use an editor,
you have to jnow how to use a shell. And so on. And some things are
in parallel. When you reach the stage where you're actually writing
the source, you have to also know the language. Some things like IDEs
will do some of these steps for you, sometimes they help, sometimes
they get in the way.

Then, any tutorial on learning C can probably be used. Start from
the beginning and do the exercises, when OS or assembly issues come
up, the tutorials will cover them.


Thushanthan.

Thanks for all your replies.

Thushanthan.
 
P

Phlip

I am new to programming. I would like to learn C programming language.
20 years ago it was wrong. Today, you can get a heck of a lot of programming
done in a softer language. C, today, is for the low-level system stuff, like the
inside of your database or your soft language. And learning C is good for
getting them to compile and run!

Furtherless, "computer science" is about researching new knowledge. Most of
programming is just "technology", which is applying science to get the job done.
And most of that should use a soft language.
and for learning that language you should know the
following things :-
1. Computer Organization and Architecture
2. Assembly Language [ For good understanding of pointers ]
Is it true ?
Absolutely not (although it certainly doesn't hurt).

They are great for recognizing the symptoms of a stray pointer or double free()...
Thank you for your reply. Yes, i have computer and i am using Linux
[ Ubuntu ]. I also installed gcc ....

Install ruby, smalltalk, python, and perl, too, and try little programs with
them! One will catch on with you.

C is a wicked choice for a _first_ language!
 
P

Phlip

1. Computer Organization and Architecture
C is completely agnostic about the organisation and architecture of a
computer by design.

That's because its very definition targets an "idealized machine" concept that
forces fun things like pointers as typed address, arrays as contiguous memory,
memory as chunks of heaps that must be allocated and freed, etc.
 
T

toby

Hi,

I am new to programming. I would like to learn C programming language.
But, one of my cousin told me that, it is only suited for Computer
Science students and for learning that language you should know the
following things :-

C is the wrong language for most tasks. Make sure you need C before
you learn C. As others point out, there are much better starting
points.
1. Computer Organization and Architecture

2. Assembly Language [ For good understanding of pointers ]

Is it true ? Any suggestions ?

Excuse my English.

                             Thank you...

Thushanthan.
 
P

Phlip

toby said:
C is the wrong language for most tasks. Make sure you need C before
you learn C. As others point out, there are much better starting
points.

Including C++, which is _not_ C, and which should not be learned like C.

Disregard any C++ tutorial which starts with character arrays to hold text. The
tutorial should start with std::string, as a high-level object.
 
J

jacob navia

toby said:
C is the wrong language for most tasks.

C is a general purpose programming language and can be used for any
task. This guy is just talking nonsense.
Make sure you need C before
you learn C. As others point out, there are much better starting
points.

They do not know what they are talking about
 
L

luser-ex-troll

C is the wrong language for most tasks. Make sure you need C before
you learn C.


What a supremely bizarre thing to read in comp.lang.c!

As others point out, there are much better starting
points.

I'll grant that, perhaps. But due to its ubiquity,
utility, and history, there's a sense of accomplishment
to learning C that younger (more cuddly) languages
lack. LISP and Forth have it, too.
I think PERL would be an excellent starting language.
From a very brief tutorial you can begin to do wonders.
Or Tcl/tk for the GUI-blindered.


luXer-ex-trog
 
G

Guest

(e-mail address removed) wrote:

To ease up things some languages
provide out of the box support for OOP structures. Of the aforementioned
languages those are: Delphi, Perl, Ruby, Python, C++, C#, Tcl, D,
Objective-C, OCaml, Haskell, Clean, Scheme, F#, Erlang.

Scheme? Lisp has some OOP stuff but I didn't think scheme did.
 
P

Pascal J. Bourguignon

Hi,

I am new to programming. I would like to learn C programming language.
But, one of my cousin told me that, it is only suited for Computer
Science students and for learning that language you should know the
following things :-

1. Computer Organization and Architecture

2. Assembly Language [ For good understanding of pointers ]

Is it true ? Any suggestions ?

Don't start learning programming with C.

The best professors of the world, teaching at MIT, start teaching
programming in their 6.001 course with scheme.


All information about scheme:

http://www.schemer.org/


MIT Scheme:

http://groups.csail.mit.edu/mac/projects/scheme/


Another nice scheme IDE:

http://www.drscheme.org/


The MIT 6.001 course for beginners (notice they've got videos of the
whole courses):

SICP = Structure and Interpretation of Computer Programs
http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html
http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/
http://www.codepoetics.com/wiki/index.php?title=Topics:SICP_in_other_languages
http://eli.thegreenplace.net/category/programming/lisp/sicp/



Other interesting books to learn how to program with scheme:

HTDP = How to Design Programs -- An Introduction to Computing and Programming
http://www.htdp.org/2003-09-26/Book/

CA = Concrete Abstractions -- An Introduction to Computer Science Using Scheme
http://www.gustavus.edu/+max/concrete-abstractions.html



Once you know how to program, you can learn easily other programming
languages.

Have fun!
 
P

Pascal J. Bourguignon

I'll admit perl has its place but it seems like a bad idea

Yes it is. Perl is the worse language of the world.

as a first language (maybe its just me, but the syntax is eccentric
and the book I tried seems heavy going). Python looks a nice
starting language.

I don't like python, but some teachers find it as good as lisp to
teach programming. I'd stay with lisp or scheme...
 
K

Keith Thompson

jacob navia said:
C is a general purpose programming language and can be used for any
task. This guy is just talking nonsense.
[...]

Yes, it *can* be used for any programming task, but it's not always
the best tool for the job.
 
G

Guest

I am new to programming. I would like to learn C programming language.
But, one of my cousin told me that, it is only suited for Computer
Science students and for learning that language you should know the
following things :-
1. Computer Organization and Architecture
2. Assembly Language [ For good understanding of pointers ]
Is it true ? Any suggestions ?

Don't start learning programming with C.

The best professors of the world, teaching at MIT, start teaching
programming in their 6.001 course with scheme.

I thought I'd heard MIT had dropped scheme for their introductory
programming course?

All information about scheme:

         http://www.schemer.org/

MIT Scheme:

         http://groups.csail.mit.edu/mac/projects/scheme/

Another nice scheme IDE:

         http://www.drscheme.org/

The MIT 6.001 course for beginners (notice they've got videos of the
whole courses):

SICP   = Structure and Interpretation of Computer Programs
         http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4..html
         http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/
         http://www.codepoetics.com/wiki/index.php?title=Topics:SICP_in_other_...
         http://eli.thegreenplace.net/category/programming/lisp/sicp/

this has a reputation of being a tough read- it expects a certain
mathematical
literacy

Other interesting books to learn how to program with scheme:

HTDP   = How to Design Programs -- An Introduction to Computing and Programming
         http://www.htdp.org/2003-09-26/Book/ 

this is allegedly easier

CA     = Concrete Abstractions -- An Introduction to Computer Science Using Scheme
         http://www.gustavus.edu/+max/concrete-abstractions.html

Once you know how to program, you can learn easily other programming
languages.  

Have fun!

indeed
 
G

Guest


from my quote file:

"SICP is the most important printed literature to develop
from our species in the 20th century."
(Amazon Review)
 

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,770
Messages
2,569,583
Members
45,075
Latest member
MakersCBDBloodSupport

Latest Threads

Top