By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,159 Members | 995 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,159 IT Pros & Developers. It's quick & easy.

C++ skills and commonly (?) used non-standard libraries.

P: n/a
Hello,

I have a couple of years of experience with C++. I started studying
C++ syntax, then I read the B.Stroustrup's book, and eventually I went
through the N.Josuttis' book on how to program with the C++ Standard
Library.

I am not a professional programmer however I would like to gain more
knowledge of the language to get what could be considered the skills
you'd expect from a professional developer ( I also know Unix
programming and some Ix86 32-bit Assembly programming too ).

My questions are about what to do in order to get the above-mentioned
skills. I've heard of commonly used libraries (e.g., Boost and ACE)
and I know of libraries (Trolltech QT) for GUI developing.

1) Do really exist some libraries that can be considered commonly used
libraries? If yes, which they are and what they are intended for?

2) Do you think I'd better start on learning how to use some of them?
(What I intended to ask is if you think a good developer should master
the most used of them, given the fact that He/She will be probably
asked to program with these libraries when/if working in a
professional context).

3) What else a good C++ programmer is expected to know in addition to
all of the above, altogether with strong mathematics, common
algorithms and data structures, and some computer networks knowledge?

Thank all of you in advance,

FabioMDF.
Jul 22 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a
fabio de francesco wrote:
I have a couple of years of experience with C++. I started studying
C++ syntax, then I read the B.Stroustrup's book, and eventually I went
through the N.Josuttis' book on how to program with the C++ Standard
Library.

I am not a professional programmer however I would like to gain more
knowledge of the language to get what could be considered the skills
you'd expect from a professional developer ( I also know Unix
programming and some Ix86 32-bit Assembly programming too ).

My questions are about what to do in order to get the above-mentioned
skills. I've heard of commonly used libraries (e.g., Boost and ACE)
and I know of libraries (Trolltech QT) for GUI developing.

1) Do really exist some libraries that can be considered commonly used
libraries? If yes, which they are and what they are intended for?
Usually, if anything could be considered "commonly used", it would be
a system library for programming the platform you're on. For example,
Windows API library, POSIX (although it's not really a library, just
standard interfaces), pthreads (if applicable, and it often is), Motif
(or Tcl/Tk), OpenGL. The list is by no means complete. Just a scratch
on the surface, really.

It helps to know where the language is headed. For example, many parts
of the Boost library can end up adopted as standard library extensions
in the near future.
2) Do you think I'd better start on learning how to use some of them?
(What I intended to ask is if you think a good developer should master
the most used of them, given the fact that He/She will be probably
asked to program with these libraries when/if working in a
professional context).
You can't be using all of them at once, I'm afraid, unless you yourself
are programming something like Qt. And also, depending on the context
(professional one) you may never really be using any of them because
the orgranisation could have chosen to either use a popular cross-platform
variation (like Qt, etc.) or has implemented their own. Get a feeling of
what's out there and learn them as you encounter the need.
3) What else a good C++ programmer is expected to know in addition to
all of the above, altogether with strong mathematics, common
algorithms and data structures, and some computer networks knowledge?


It's a misconception that it is necessary to know mathematics very well
to be a good programmer. Algos and data structures, no doubt. But if
you are involved in creating a database or a communications system, what
mathematics, really? Minimal, at best.

Networks? I don't think so. You can program all your life and become
very good at what you do without knowing anything about networks.

We're crossing the line of topicality here, so it would probably be
better to continue this discussion in comp.software-eng, where it really
belongs, but...

As to your question, good common sense and ability to estimate the amount
of work needed for a particular task is just as important as in any other
occupation. Work ethics, respect for your colleagues, i.e. ability to
work well in a group. As it turns out, while programming is considered
art by many (or at least by some), programmers rarely work alone.

Every little bit of knowledge helps. In order to be a good programmer in
a professional context it is often better to know the non-programming
aspects of the domain. E.g. being a physicist helps if you develop some
scientific software to support an experiment in physics. Being a chemist
probably helps if you develop software to control production of drugs.
You get the idea, I am sure.

Knowing when to stop is good too, so I better wrap up... ;-)

Good luck!

Victor
Jul 22 '05 #2

P: n/a
fabio de francesco wrote:
Hello, [snip]

1) Do really exist some libraries that can be considered commonly
used libraries? Yes. Many libraries exist for C++. The most common is the
Standard Template Library (STL). {I don't know if the run-time
library would be considered in this case.) See also the Boost
library ( http://www.boost.org )

If yes, which they are and what they are intended for? Depends on the library. Each one has a different purpose. For
example, there are GUI libraries and Matrix libraries.
Search the newsgroup for "Nikki Locke", this person routinely
posts a large list of libraries for C++.

2) Do you think I'd better start on learning how to use some of them? No. Learn the libraries that you need for the application. Don't
waste your time with libraries you will never use. For example,
there is a Tensor library, which I have never used in 30 years of
programming.\

(What I intended to ask is if you think a good developer should master
the most used of them, given the fact that He/She will be probably
asked to program with these libraries when/if working in a
professional context). "Most used" is a rather vague term; which depends on the industry
you are working in or the applications you are writing for. In
my realm of embedded systems, the most used libraries are quite
different than those required for Airplane, Word Processing and
Image Processing. In my current project, cryptography libraries
are commonly used.

When I was programming laser printers and tape drives, cryptography
was not commonly used; but motion control and compression libraries
were commonly used. Would you learn a library that was commonly
used in an industry that you are not working with?

3) What else a good C++ programmer is expected to know in addition to
all of the above, altogether with strong mathematics, common
algorithms and data structures, and some computer networks
knowledge? I am a good C++ programmer and I don't have any computer network
knowledge. One doesn't need to have computer network knowledge
to be a good C++ programmer.

In addition to knowing Computer Science stuff, one should also
learn:
1. Communication skills.
2. Knowledge about the product or the arena of the application.
If you are writing accounting programs, you should have some
knowledge about accounting.
3. Software Development methodologies. Learn more than one.
Such concepts as Test Driven Development, Sprial Model,
Waterfall model. Learn about data driven and event driven
systems.
4. Operating systems. Learn two; no, learn three; heck learn
many of them. Write your own.
5. No fault project management. Heh, Heh! Who made the bug
doesn't matter as much as how the whole team can fix the
bug and make the project / product better. Finger pointing
only slows down projects.
6. Database theory. There is a lot of data out there and
organizing the data will make products and programs more
efficient.
7. Lurk in this group for a year. :-)

Thank all of you in advance,

FabioMDF.


--
Thomas Matthews

C++ newsgroup welcome message:
http://www.slack.net/~shiva/welcome.txt
C++ Faq: http://www.parashift.com/c++-faq-lite
C Faq: http://www.eskimo.com/~scs/c-faq/top.html
alt.comp.lang.learn.c-c++ faq:
http://www.comeaucomputing.com/learn/faq/
Other sites:
http://www.josuttis.com -- C++ STL Library book
http://www.sgi.com/tech/stl -- Standard Template Library

Jul 22 '05 #3

P: n/a
Learn Operating Systems and Compiler Theories, then you will know what
your code is really doing. Learn design patterns in Object Oriented and
Generic Programming, then you'll know what a good C++ programmer will do...

Jul 22 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.