How many years do you need to learn C++?

I am new to programming and I want to develop a File Compression program.
How many years do you think one needs to learn C++ and complete such a program?
Well your particular problem sounds more conceptual that programmatic. The programming would be trivial. The concept on the other hand...

Any particular reason?
There is no particular reason, I just want to learn C++ doing some practical problem.
File Compression program were the first I used while I first learned computers. So you may say I have an affinity for them.
Also I want to add some improvements over the existing ones.
A file compression program is almost entirely pure math. More importantly, you say you want to develop something practical, please do not make another file compression format. The last thing we need is someone spreading useful files on the internet with some god awful .ksz extension that can only be opened by 1 single program (the one you made) that is no longer compatible with current OS'es.

Try building a webcrawler, or a data miner of some sort. Find something you're interested in, anything, and find a website that relates to that, and try and make a program that gets some arbitrary stat for that website. Try and find every post I ever made.
You don't need to learn a lot of C++ to write such a program. You should design your algorithm and data structure on paper, then learn enough C++ to translate that to code.
Intrexa:
More importantly, you say you want to develop something practical, please do not make another file compression format


I don't want to do that. :)
Thanks for the hints.

I was thinking of using the existing LZMA algorithm. The output file format will be Zip and 7Z.
How about that?
So how much time it will take considering that I don't have any experience in programming and I am just a beginner.

How much time it takes to learn WinAPI and making GUI?
How much time it takes to learn WinAPI and making GUI?


Please don't. Please learn QT or some other API. I hate WinAPI.... But that's just me. I'm completely unreasonable on the subject.

Time is relative. It's up to your affinity to the topic of programming, the data mining techniques you use, and the determination you have.
You'll need to learn the language before tackling larger things like the WinAPI and GUI programming.
jsmith wrote:
You'll need to learn the language before tackling larger things like the WinAPI and GUI programming.

+1

probably not what you want to hear, but in C++, it helps to learn how to crawl before you try to walk

as for learning C++, I can tell you that I have been using it since about '85 and I'm still learning something new on a weekly basis

for example, I just learned yesterday that in Visual C++, the behavior of volatile appears to be extremely different from that of most other compilers - enough to break any chance for portability

although the language is finite, the time it takes to master it appears to be approach a very long time (it is so big), but don't be discouraged - learning enough C++ to find it useful doesn't take forever

just be aware that it doesn't take very long to learn enough C++ to be dangerous
closed account (3hM2Nwbp)
Agreed with kfmfe04, I've been doing C++ for roughly 5 years and while the syntax is pretty much nailed down, I still don't have much of the C++ Standard memorized.

To adapt a rather macabre saying...there are a lot of way to skin cats in C++. After a while, you'll learn how to do it without getting all messy.

Idiom Definitions for 'There are many ways to skin a cat':
This is an expression meaning there are many different ways of doing the same thing.
I was thinking of using the existing LZMA algorithm. The output file format will be Zip and 7Z.
How about that?
So how much time it will take considering that I don't have any experience in programming and I am just a beginner.
LZMA in particular is a a rather advanced algorithm. Plus, I don't think it's documented anywhere but the 7-Zip source. So you'd have to get good enough to read and understand the 7-Zip source (and Igor Pavlov's style is horrendous), and also good enough to understand what the algorithm itself is doing. You'd need some experience implementing other compressors first, plus a book or two on data compression and algorithms (LZMA stands for Lempel-Ziv Markov chain)...
It will take you several years.

Now, if you don't actually want to implement the algorithm, that's a different story.
It would make no sense to implement the algorithm yourself. It would take a lot of time and the result would be much slower and more buggy than the existing implementation. If it's just for the learning experience, devise your own compression algorithm and then work on improving its efficiency, speed and memory usage little by little. You'll learn more that way.
Otherwise, all you need is to figure out how to use the functions that come with the LZMA SDK, which isn't particularly hard.
helios wrote:
It will take you several years.


Really !!!
After reading all these replies I am really feeling discouraged.
I thought it would take at most 2 years.
Anyway I will try my best.
closed account (yUq2Nwbp)
ravigtm don't ask that question to anyone......start learning and someday you'll feel that you are ready.....your question only complicates your job...
If you keep at it, you should be able to create an archiver in a few months time.
I have no idea, but I will keep at it
Topic archived. No new replies allowed.