views:

138

answers:

1

Hi everyone, I am an intermediate c++ programmer and done some work using ACE, now I want to learn one of those Libraries thoroughly to progress in to my career. That why I need your kind help to make a decision, that what should I learn first. And also please consider my destinations are to be an expert network programmer and Protocol designer. Thanks for your time and kind answers in advance.

+4  A: 

This might not be the answer you're looking for, but I would strongly suggest that you don't artificially restrict yourself too much when it comes to career goals. Figure out how long you do expect your career as a programmer to continue and then ask yourself if you (a) can really see yourself doing network programming only for that amount of time and (b) if you well and truly believe that the one library you select for your in-depth knowledge will be able to fulfil the needs you have now for the rest of your career, without stagnating your career.

What will sustain your programming career in the long term is not the in-depth knowledge of a single library or two, but your overall ability as a programmer. Libraries are tools (unless you are a library designer) in the same way that programming languages are tools (unless you are a language designer) and one mark of a good programmer is her or his abilities to select the appropriate tool for the task.

With all that out of the way, I do recommend that every C++ programmer is at least familiar with the fact that boost exists and some of the core libraries like the smart pointer library, regular expressions etc. I would not expect anybody working for me to be an expert in all facets of Boost but I do expect even fairly inexperienced C++ programmers to know where they can find it and that they will be better off using code from Boost rather than trying to, say, write their own pooled memory allocator. The examples I gave might not look like they are directly applicable to network programming in the most narrow sense but they will certainly be needed in most programs of a non-trivial size.

Another good reason to keep up with Boost is that a lot of the techniques that eventually will/might make it into the C++ standard library originate from Boost. Keeping an on where Boost is going will allow you to keep an eye on certain developments in the C++ community as new usage idioms are still being developed in C++; the language and its canonical usage is not "fixed", at least not as of now, and again this is something you will have to keep up with if you are planning on a longer term career as a C++ programmer.

Timo Geusch