Hello Nathan,
Hey guys,
I am a Computer Science student attending classes at the University
of Michigan-Dearborn. I have been in college for a few years now,
but I have some questions for you. I am really struggling with my
programming classes. Its hard to describe...I can understand small
scale programs, but when it comes to designing an application like
itunes(just as an example) I'm lost.
If someone came up to me and said I want you to design your own mp3
player, I would be completly lost. I guess I just get overwhelmed
with the steps it takes to make a huge program. Now onto my
questions:
1) How can I get better at programming? Are there any real good
books out there that i can learn from?
The best way to learn is by doing. Reading is certainly a good step.
Read everything that you feel like reading. You can get ideas from
just about anywhere.
As you gain experience with different areas of programming you will
feel cabable of tackling bigger problems. Hopefully as time goes on
you will understand how it all breaks down and combines again and
be able to solve larger problems.
Moving from a 100 line program to creating an MP3 Player is a big
step, but it really isn't that big. As you take more courses you
will explore other areas that may be helpful in such a project.
At some point you may take a course on databases or communications
or embedded devices. Each of these stresses something that might
help you create an MP3 Player. You can educate yourself by reading
and trying out new ideas. Get the concepts down, like playing with
a database, and then use it for some practical purpose, such as
managing a play list.
An MP3 Player is just a complex device like a car. Seeing a car
for the first time you may have no idea what all the parts are
doing. We learn in steps to create, maintain, and modify such
things. The problems you are currently working on are at the
detail level. You are given a problem to solve and perhaps
much of the knowledge to solve it. Now imagine your MP3 Player --
what must it contain and be able to do? It doesn't matter that
you can't sit down and describe it all and build it today. Can
you imagine the parts you might have to make? How do they all
fit together? It doesn't matter that your MP3 Player works
like another one. It only matters that you have designed
something a bit larger than you previously could. When you
have components that you can't readily build you may need to
do a little research or perhaps make some test projects.
You will learn from experience how to build larger projects
and it likely won't take you all that long to start imagining
doing them.
2) Is there anyway to understand the syntax better?
You can read, program, and hang out in these support groups.
Answer questions where you can, learn from others as you need to.
There are always books, manuals, and specifications for languages
-- read them. The most important concepts are those that you will
use. Few people know everything about C and C++, the important
aspect is that they were able to create something useful with what
they know.
3) What languages should I learn? So far, I have had a C, C++, and
part of a JAVA class.
Any and all languages are useful. Be fluent in the languages that
you want to work in. Explore the others to find concepts and ideas
that you may not have been exposed to. There is no end to the hype
of one language being better than another. It all depends on your
needs and goals. There is also the ability to decide that your
problem is best solved using several languages or tools. There
is nothing wrong with mixing C, C++, VBASIC, Forth, or Assembler.
Each has its strengths and weaknesses. You get to decide how best
to solve your problems and at other times you may need to maintain
and enhance projects in languages you aren't familair with. After
the first few dozen languages they all look the same and you may
be able to "sight read" new languages and be able to work with them.
Have fun,
David