well, as a first language for you how much it takes from you to master C++, and how you were learning. and how much daily you spend time on that ?
Regards,
iCoder
Printable View
well, as a first language for you how much it takes from you to master C++, and how you were learning. and how much daily you spend time on that ?
Regards,
iCoder
Depends what you mean "master". Some people never seem to master it.
I was a COBOL programmer for about 5 years before switching to C++. It was several months before I could really do anything useful with it, then probably a year before I was what I would consider good with it.
Being a masterful programmer isn't really about the language you use though, it's about the way you approach a problem and the solutions you develop. The language is just a tool.
Yeah, I was pretty comfortable with it and writing fairly complex Windows apps after a year or so. I've also seen people with 10 years experience, unable to figure out the mean of a series of numbers. There are still a lot of features of the language I don't know well compared to some of the people here, but I would would venture to say I'm one of the better programmers out there.
As I said, the language is a tool. Mastery is a mindset.
I was able to write decent "C with classes" code pretty early on. It took quite a while before I realized that wasn't the best way to go about things.
Ditto for me. Most of my "C++" experience is in embeded avionoics, which is really "C with classes". After 12 years, I still don't consider myself a master, but I can code just about any type of app efficiently.Quote:
I was able to write decent "C with classes" code pretty early on. It took quite a while before I realized that wasn't the best way to go about things.
Truer words have rarely been spoken.Quote:
As I said, the language is a tool. Mastery is a mindset.
I bet that every C++ programmer is not versed in everything that the language offers.
For example, some know C++ templates backwards and forwards, while other respected programmers may not know everything about them. Yes, there are common elements of the language that every programmer should know, but there are other C++ features that some may know, while others won't know (or use) much of.
Bjarne Stroustrup himself (the inventor of C++) doesn't keep track of all of the things the language he invented can do. Even he was surprised when he first saw a C++ template meta-program. Scott Meyers, a highly respected author of C++ books, was not versed in the STL until after his second book.
In other words, no C++ programmer knows everything (well) in C++.
Regards,
Paul McKenzie
Don't confuse mastering programming with mastering C++.
Somebody may know Wordperfect or Word inside and out but that doesn't mean they can write a best-selling novel, and some of the best writers may only know the most basic feature set of Word that they need to get the job done.
Very few programmers will be writing very involved programs well with only one year of experienced, but a really good, experienced programmer, should be able to do really well with C++ in a year of less.
C++ is a tool. People tend to learn as much or as little as they need to get their job done. You may be the best programmer in the world and never "master" C++, or you may know all the ins and outs of the language and be a terrible programmer.
Reminds me of a programmer (or purported to be one) I used to work with.
He had "book knowledge" of the Windows API. He could tell you the API call, how many parameters it took, what each parameter meant, etc. The problem is that he couldn't write a real Windows program if his life depended on it.
Regards,
Paul McKenzie
On the other hand, I met C++ programmers trying to catch C++ exceptions "thrown" by WinAPI functions, sorting non-virtual listview controls using std::sort and so on.
Definitely, to make real-life programs (particularly, Windows applications) it's not enough just to know the C++ language, even at advanced level.
Paul captured my sentiment/intent.
I can write efficient relaiable apps in several languages. I'm especially good at real-time back-end processing apps and diagnostic tool. I know MFC very well. But I know next to nothing about the .Net platform.
I recently started a new job and will be converting an MFC app to C# with Windows Forms. I expect in a year or so to be very good with C#.
If you have a solid grasp of programming theory, switching between languages and tools is just a matter of learning the syntax and the Object Model (and coding conventions for that language).
My colleagues learned C++ via a book or two, then got some C/C++ related jobs, later we entered the same company and his salary was $150,000/year while I was only $30,000. I gave up because I envied, that saddened me deeply.
I left the company promising myself that I would master the language. It "nearly" [yet to self-claim 'mastering-level'] works, I grasp the basics, know a couple of random people and pour my advice all over the place.
It took me only 2-3 months.
Begin by wondering why 'struct' is different stuff in C#. :)
Well, seriously, that can be stated if have never seen C++ code written by Java programmers or never dealt with (plain) C code after years of C++ programming. Not mentioning .NET programmers (yet)...
Otherwise, can reformulate a little bit: "although different languages may have pretty different syntax and may use pretty different coding conventions and object models, it's much easier to switch between them if you have a solid general programming background".
[ continued ]
This thread demonstrates that for many people, switching between languages is not just "a walking in the park".
Or course, if want to write programs and not only a bunch of lines of code. ;)
Heh, I feel that that was more a matter of a difficulty in switching between rather different programming paradigms. I think mlgoff assumed that the same programming paradigms would be common to the different programming languages (e.g., a switch from Scheme to Haskell will probably be easier than say, Scheme to Prolog).Quote:
Originally Posted by ovidiucucu
It's not necessary to go so far to demonstrate how hard, generally people get the key differences between even more related languages like, let's say C++ and C++/CLI.
I'm trying to answer the OP by using two quotes:
// Of course, in that times C++ was not invented yet, otherwise he would never mention German. :DQuote:
"Never knew before what eternity was made for. It is to give some of us a chance to learn German."
Mark Twain
// Every day it's posible to find still unknown issues in C++. Besides, C++ is a language which is still evolving.Quote:
Two programmers were drinking in a bar.
"You, C++ programmers think that you know everything and nobody is above you to know more", said the the first one, a VB(.NET) guy.
"That's true", replied the other, looking at the ceiling "...not even Lord knows everithing (about C++)".
// To see that is true, just compare C++03 and C++11.
How much wood would a wood chuck chuck if a wood chuck could chuck wood? It takes you as long as it takes you! Everybody is different.
well, thanks guys, so as if begin learning from now, after 4 years is there a hope to be emplyed in big companies such as "google, MS ..." and those compaines or others ?
Thanks again for your help
By 4 years are you also referring to an undergraduate program in computer science?
It is impossble to judge the difficulty of switching between paradigms, because that is much more dependent upon how the individual thinks and their ability to internalize the different concepts.Quote:
Heh, I feel that that was more a matter of a difficulty in switching between rather different programming paradigms.
I prefer being a big fish in a small pond although I'm sure some of us work for big companies. Big companies have a lot of bureaucracy and BS you have to put up with that small companies don't. I've worked for big companies and the Federal government as a contractor and have no desire to do it again. I much prefer the small company mindset.
Based on 30 years experience. Depends if you want to be part of a big team or work independently. I'm much more of a work independently kind of guy and small companies usually present that kind of environment. As I said, big fish in small pond is usually more rewarding than just another cog in the wheel. I come and go as I please, own quite a bit of stock in the company, get 6 weeks vacation, really don't report to anybody or have to account for my time, and make quite a bit more than a typical big company would pay. All I have to do is keep our software running and everybody is happy.
There is no such thing as Mastering C++. Not even the creator can remember all the functions he added. Which is kinda sad to be honest. There are over 1000's of functions. I know quite a few thousand but it's very very difficult. Take your time. You dont need to "Master" it. You just need to learn the basics and advance from there.
I didn't say anything about starting my own company, although I have.
You expressed surprise that a lot of us don't work for the big companies. All I'm saying is smaller companies are more rewarding to some of us. It's much harder to get noticed in a big company, you'll spend a lot more time in meetings, there are way more levels of management that really impede progress, and you tend to get pigeonholed into a certain category based on years of service or education rather than actual accomplishments.
I prefer to work alone rather than as part of a development team, and I prefer the leaner, maverick, get it done attitude of smaller companies, rather than the much slower paced, more timid approach a lot of big companies tend to take.
All I'm trying to do is explain why we don't all work for Microsoft or IBM.
your vision is pretty much ok !!
There is no guarantee that you will be working with C++, as you will be meeting the demands of your employer. C++ is a safe bet however, since knowing C++ well means that you know OOP along with a lot of concepts that you can carry with you over to Java, C# or whatever you do at work.
There is nothing sad about being honest with your ability to remember details or your level of competency. After all one of a programmers primary skills is the ability to reference. So not knowing it all is not an end-all. C++ is very broad and there are other languages that have a limited scope in comparison, where there are fewer excuses for being less knowledgeable.
... and you may add as many functions your muscles want, without telling a word to the creator.
No need to confess either to Bjarne Stroustrup or ISO C++ Committee. :D
[ Later edit ]
BTW. The creator of STL is Alexander Stepanov.
C++ is a great starting point in my opinion but beware ! The learning curve is very steep (especially when you start moving into templates etc).
For instance if you know (and I really do mean know i.e. down to how memory for structs, arrays, vectors etc is arranged) C++ then moving into C# is a snap if it usually takes people a while to adjust to the .NET way of doing things with garbage collection etc (I know I took a while to see the benefits).
Working for small companies definately gives you the best environment to work in.
Generally you can just get on with things with no code reviews etc.
This can either be good or bad. Good in the respect you don't have to report to anyone or justify yourself much but bad in the fact that you can develop very sloppy programming habits which then come up and bite you later on.
They don't pay very well either...
Working for a large organisation (I work for a bank) is a tough environment. It's very unforgiving, you're expected to justify all your coding decisions and morale tends to be quite low.
However they do pay much much better than small companies and are more open to contractors (which is where the real money is).
Starting off in a small company is my best advice. That's what I did and then progressed upwards.
Darwen.
A lot depends on your mindset. Some people are very good at learning theoretical stuff without necessarily needing a practical application to work on. Others (I'm one of them) need to have a practical use for something before they can really get to grips with it. I taught myself to program only because I had some practical problems I needed to solve, so it fell into place very quickly. I don't think it would have made much sense to me if I'd learned it at college or just by reading books (although I did read a lot of books).
I was exactly the same at school. I totally ignored logarithms because I couldn't see any point to it. After I left school I got a job as a sound engineer and quickly realised that a lot of things in sound (amplitude perception / frequency perception etc) occur logarithmically. Once I understood the reason for logarithms the whole thing just fell into place.
i think it's too early now to think about jobs as i am still studying in college and " this is just the first year" all i need now is to focus on learning C++ and mayber later " after couple of years" i'll pick another language to learn it, so if you can please go to my other thread: http://forums.codeguru.com/showthread.php?t=523112 and help me it would be nice!
Thanks and have a good day!