Becoming a C _developer_

C

Curious Student

I've for long known the C syntax and I like it very much. I can easily
understand C programs and I've myself written lots and lots of Win32
API code. However, since my mainstay has been VB, I'm not at all
confident of calling myself a C programmer and I still believe I do
not know C. That is true because when I look at projects on
SourceForge, I do not see myself as capable as re-creating that stuff.
I can't write sound editors, zip/compression apps, binary editors et
al.

As a self-analysis, I believe I know the C syntax but I score rather
measley on the vocabulary. So I ask you gurus: what's your advise to
someone who's known _only_ the C syntax for a long period of time now,
say more than 6 years, has done some Windows Programming but nothing
else in C. What's your tip to this self-learner who wants to take the
next step in writing apps alike those that feature on SourceForge.
Where do I look next? How do I improve my C vocabulary? Should I first
browse the standard library documentation? What next? I believe C in
itself is such a small language with a very general function set
dealing with basic data types in the standard library. Am I right in
assuming that for doing a particular non-generic application like the
ones mentioned above, I'd have to depend on a library and read its
documentation? Do these developers developing, say, a database
application that provides a C front-end connecting to a MS SQL Server
database do the connection thing from scratch in C or do they rely on
an external pre-packaged library?

How do I proceed improving my vocabulary? I want to quickly begin
writing a useful application that I can proudly boast of.
 
T

Tom St Denis

Curious said:
As a self-analysis, I believe I know the C syntax but I score rather
measley on the vocabulary. So I ask you gurus: what's your advise to
someone who's known _only_ the C syntax for a long period of time now,
say more than 6 years, has done some Windows Programming but nothing
else in C. What's your tip to this self-learner who wants to take the
next step in writing apps alike those that feature on SourceForge.
Where do I look next? How do I improve my C vocabulary? Should I first
browse the standard library documentation? What next? I believe C in
itself is such a small language with a very general function set
dealing with basic data types in the standard library. Am I right in
assuming that for doing a particular non-generic application like the
ones mentioned above, I'd have to depend on a library and read its
documentation? Do these developers developing, say, a database
application that provides a C front-end connecting to a MS SQL Server
database do the connection thing from scratch in C or do they rely on
an external pre-packaged library?

How do I proceed improving my vocabulary? I want to quickly begin
writing a useful application that I can proudly boast of.

Find a problem that isn't [adequately] solved. Then go solve it.

Don't just mindlessly write code and hope it will be "the next best
thing". Otherwise you will be like the majority of useless tools on SF.
If you're not that strong in C I'd pick a relatively simpler problem
to solve first.

Keep in mind that you don't always have to write something 100%
original. For instance, my claim to fame is crypto code despite the
fact that crypto libraries existed before I wrote mine. In my case I
decided [IMO] to make a better library by using a user friendly API.

Here's a sample problem if you're upto it ;-) It involves using the
curses [or ncurses] library and an XML library.

Write an RSS newsticker that can run in the background and scroll
accross the top of the screen [one line] news feeds. You'll have to
learn how to use ncurses [not hard] so you can write the line and more
importantly return the cursor to it's original position. You'll learn
how to interface with other libraries [like the XML code] and you'll
learn about IPC issues like signals [say use SIGALRM for the ticker update].

;-)

Good luck. And if you manage to write it... damn let me know cuz I'd
love to see it!

Tom
 
S

Stephen L.

Curious said:
I've for long known the C syntax and I like it very much. I can easily
understand C programs and I've myself written lots and lots of Win32
API code. However, since my mainstay has been VB, I'm not at all
confident of calling myself a C programmer and I still believe I do
not know C. That is true because when I look at projects on
SourceForge, I do not see myself as capable as re-creating that stuff.
I can't write sound editors, zip/compression apps, binary editors et
al.

As a self-analysis, I believe I know the C syntax but I score rather
measley on the vocabulary. So I ask you gurus: what's your advise to
someone who's known _only_ the C syntax for a long period of time now,
say more than 6 years, has done some Windows Programming but nothing
else in C. What's your tip to this self-learner who wants to take the
next step in writing apps alike those that feature on SourceForge.
Where do I look next? How do I improve my C vocabulary? Should I first
browse the standard library documentation? What next? I believe C in
itself is such a small language with a very general function set
dealing with basic data types in the standard library. Am I right in
assuming that for doing a particular non-generic application like the
ones mentioned above, I'd have to depend on a library and read its
documentation? Do these developers developing, say, a database
application that provides a C front-end connecting to a MS SQL Server
database do the connection thing from scratch in C or do they rely on
an external pre-packaged library?

How do I proceed improving my vocabulary? I want to quickly begin
writing a useful application that I can proudly boast of.

IMHO ->

I think you're on the right track. `C' is much more than
its syntax. I've been doing `C' for quite a while, and I
believe I see it used as more of a "glue" language than as
a pure implementation language (`C' is not unique in this,
though). Let me explain. It not enough to say "I'm a C
programmer" but "I'm a `C' programmer knowledgeable in the
following architectures (Unix, Mac, Windows, etc.) and I've
worked with the following APIs (X, Motif, MySQL, SDL, QT,
curses, pthreads, sockets, etc.)".

Basically, a `C' program will _glue_ the MySQL API with the
Motif API to produce the desired application. You wouldn't
necessarily use `C' to directly read the database file much
less use `C' to write pixels in the display memory. It's one
way of looking at things, however. You'll still "build"
things in `C', but usually if there's no _standard_ API
for it. In a way, you begin thinking in terms of not just
`C', but the API using `C'.

I'd say 1st, decide what architecture(s) you want to target:
Windows, Unix/Linux, etc. Then decide what API's interest
you. An approach might be to write something _simple_ in
VB (since you're already proficient in it), then "port" it
to `C' on your chosen architecture using the selected APIs.

Also, consider getting a couple of books. A couple of my
picks include "The C Programming Language" and "The Practice
of Programming".

While the _high quality_ of programs on SourceForge amazes me,
the authors' intent for their project(s) generally does not
include a tutorial for learning `C'. Also, this group has a
FAQ, and it's definitely worth reading.


HTH,

Stephen
 
D

Darrell Grainger

I've for long known the C syntax and I like it very much. I can easily
understand C programs and I've myself written lots and lots of Win32
API code. However, since my mainstay has been VB, I'm not at all
confident of calling myself a C programmer and I still believe I do
not know C. That is true because when I look at projects on
SourceForge, I do not see myself as capable as re-creating that stuff.
I can't write sound editors, zip/compression apps, binary editors et
al.

As a self-analysis, I believe I know the C syntax but I score rather
measley on the vocabulary. So I ask you gurus: what's your advise to
someone who's known _only_ the C syntax for a long period of time now,
say more than 6 years, has done some Windows Programming but nothing
else in C. What's your tip to this self-learner who wants to take the
next step in writing apps alike those that feature on SourceForge.
Where do I look next? How do I improve my C vocabulary? Should I first
browse the standard library documentation? What next? I believe C in
itself is such a small language with a very general function set
dealing with basic data types in the standard library. Am I right in
assuming that for doing a particular non-generic application like the
ones mentioned above, I'd have to depend on a library and read its
documentation? Do these developers developing, say, a database
application that provides a C front-end connecting to a MS SQL Server
database do the connection thing from scratch in C or do they rely on
an external pre-packaged library?

How do I proceed improving my vocabulary? I want to quickly begin
writing a useful application that I can proudly boast of.

It is interesting that you use the term 'vocabulary'. I look at writing a
program something like writing a story. I would imagine that all great,
modern authors started by reading other great writers. At some point they
had to try writing something themselves. Often they would start by writing
short stories and submitting them to magazines.

Stop reading source code and try writing a short 'story'. Don't try to
write the equivalent of War and Peace or Moby Dick. Write something small
and get some constructive criticism. Post your code to here and you will
get plenty of advice.
 
M

Malcolm

Curious Student said:
I've for long known the C syntax and I like it very much. I can
easily understand C programs and I've myself written lots and lots
of Win32 API code. However, since my mainstay has been VB,
I'm not at all confident of calling myself a C programmer and I still
believe I do not know C.
Knowing C is a bit like knowing how to use a pen, one is essential to
programming as the other is essential for writing, but by itself it can't
tell you what to write.
If you can write GUIs in Visual Basic then you can write them in C - the
control flow structures of both langauges are similar, and even the
functions have similar names. Underneath they are calling the same code,
usually.
How do I proceed improving my vocabulary? I want to quickly
begin writing a useful application that I can proudly boast of.
Ultimately a computer has got to something not connected with IT if it is to
be useful. So what are your interests outside of computing? Can these be
turned into a simple game, a business application, something for the home?
 
K

kal

Malcolm said:
If you can write GUIs in Visual Basic then you can write them in C

Not quite true. Programming in VB is like using a spreadsheet program.
You can actually produce a working program in VB without writing a
single line of code. "VB Programming" is somewhat of an oxymoran.
Underneath they are calling the same code, usually.

The VB runtime calls the same code a C program would call. But the
VB programmer is blissfully oblivious to such "mundane" things.
Ultimately a computer has got to something not connected with IT if it is to
be useful. So what are your interests outside of computing? Can these be
turned into a simple game, a business application, something for the home?

Avoid writing anything useful. Write something silly and utterly
useless. Write an OS.
 
V

Vijay Kumar R Zanvar

Darrell Grainger said:
It is interesting that you use the term 'vocabulary'. I look at writing a
program something like writing a story. I would imagine that all great,
modern authors started by reading other great writers. At some point they
had to try writing something themselves. Often they would start by writing
short stories and submitting them to magazines.

Stop reading source code and try writing a short 'story'. Don't try to
write the equivalent of War and Peace or Moby Dick. Write something small
and get some constructive criticism. Post your code to here and you will
get plenty of advice.

On the other hand, it is also interesting to note the way you have put it.
Generally, if I have seen around, people approach learning C in a mechanical
way than adapting a philosophical way. The philosophical view offers not only
the easiness, but also a starting point for imaginations. And, imagination is
very much essential for writing a story! Do you agree?
 

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

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top