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

Discussion in 'C++' started by fabio de francesco, Aug 6, 2004.

  1. 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.
     
    fabio de francesco, Aug 6, 2004
    #1
    1. Advertising

  2. 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
     
    Victor Bazarov, Aug 6, 2004
    #2
    1. Advertising

  3. 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
     
    Thomas Matthews, Aug 6, 2004
    #3
  4. fabio de francesco

    Jack Guest

    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...
     
    Jack, Aug 27, 2004
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Myk Quayce

    Newbie: Grouping Commonly-used Methods

    Myk Quayce, Jun 16, 2004, in forum: ASP .Net
    Replies:
    1
    Views:
    320
    Paul Bobrowski
    Jun 16, 2004
  2. Myk Quayce

    Newbie: Grouping Commonly-used Methods

    Myk Quayce, Jun 17, 2004, in forum: ASP .Net
    Replies:
    1
    Views:
    363
    John Saunders
    Jun 17, 2004
  3. Myk Quayce

    Grouping Commonly-used Methods

    Myk Quayce, Jun 17, 2004, in forum: ASP .Net
    Replies:
    1
    Views:
    363
    Craig Deelsnyder
    Jun 17, 2004
  4. Sriram Srinivasan
    Replies:
    13
    Views:
    583
    Benjamin Kaplan
    Nov 12, 2009
  5. Chris Angelico
    Replies:
    27
    Views:
    157
    88888 Dihedral
    Feb 21, 2014
Loading...

Share This Page