"Becoming a Programmer" is a little ambiguous don't you think? Hell, my 12 year old brother can claim to be a programmer because he's O.K. in BASIC and uses it from time to time. He's not a professional programmer and he's not a particularly well educated one. But the fact that he does any development at all qualifies him as an amateur programmer at the very least.
All semantics aside, I have one thing to say to those in the language fueled argument we've got going here... Why can't we all just get along? D:
So it means you disregard peoples' criticism of C++ design flaws on the grounds that they're "not good at using it"?
I think Albatross probably means more like peoples inability to do something is cited as a flaw in the language.
I just think that many of the so-called design flaws are to some degree scapegoats.
It is kind of like me blaming bad design of a nail because they keep bending when I try to hammer them in and not considering that I may be using an inappropriate technique for the nails that I am using.
The value of criticism, both good or bad, comes from the person who is criticising. A self confessed hater of C++ saying bad things about it is worth less than someone who loves it saying bad things about it.
So why is it that when someone tries to bash a computer language it's taken seriously?
What you call bashing, I call analysing. There are some reasons not to discuss natural languages : they are vastly more complex, it is nearly impossible to force a change, they have multiple purposes. Having said that, I'm willing to have such discussion any day.
Grey Wolf wrote:
It is kind of like me blaming bad design of a nail because they keep bending when I try to hammer them in and not considering that I may be using an inappropriate technique for the nails that I am using.
Bad design does not mean that something is broken, only that it could be done better. If nail which doesn't bend exists, you can say that the bending one is poorly designed as there is room for improvement. C+ has plenty of inconsistencies and I'm sure you know more of them than I do.
Grey Wolf wrote:
The value of criticism, both good or bad, comes from the person who is criticising. A self confessed hater of C++ saying bad things about it is worth less than someone who loves it saying bad things about it.
This is a terrible way to think, even though I understand where it comes from. The value of criticism should only come from the contents of that criticism. Haters often make perfectly valid statements.
Now, on topic, I don't know what the situation is in Romania, but if it's anything like in Lithuania (and I don't see why it wouldn't be), you should be just fine. It seems to me that there is a high demand for programmers and there aren't many of them.
Bad design does not mean that something is broken, only that it could be done better.
Agreed but also what is sometimes described as bad design, is a necessary compromise that the critic has failed to pick up on. The gist of the first part of my post was to try to reiterate the point that Albatross appeared to be making, that not all stated design flaws are indeed design flaws or at least made out to be bigger than they are.
C+ has plenty of inconsistencies ...
Agreed, I'm not saying C++ is perfect but I wouldn't necessarily say there is bad design. To me, bad design means more along the lines that it dose not meat the requirements and constraints in an appropriate manner.
I am posting this because I'm preety upset, my code doesn't compile and I think I suck at programming in general.
I'm 28, I worked as a servie engineer at different companies since I graduated automation college and now I want to be a programmer.
I'm learning C++ since roughly last december and I switched my job to software testing. I was thinking it should take no less than a year until I would be able to write a simple window application, but I'm bogged down in my own mess understanding classes.
Do you know any people that have succeeded to be hired as programmers with similar background? (unrelated work experience and age)
What are your thoughts/advices for me?
Please be honest, bleak realism is a great incentive for me. :) (but then again, utopian optimism too)
C++ is a great language and it should be relatively safe and relatively easy to use.
But the problem is that it is often taught badly. By that I mean that advanced, difficult-to-use and potentially dangerous features are taught to beginners whereas the more understandable, safer and easier to use features are left for more advanced students.
I think that the reason why C++ is often taught backwards is because of its C heritage. For some reason people feel the need to teach C++ students all about C before teaching them how to use C++ the way it was designed to be used.
The whole point about C++ is that low level dangerous and hard-to-use features are hidden away inside relatively safe data abstractions that hide those details from the programmer. The standard libraries go a good way to providing useful basic programming tools. There are also good third-party libraries that cover a wide variety of non-trivial programming tasks like boost.
Learning C++ still has its special difficulties because its syntax is often a bit tricky and the error messages can appear quite cryptic. But a good book can help a great deal.
I recommend:
"Accelerated C++ Practical Programming by Example" by Andrew Koenig and Barbara E. Moo.
"Programming Principles and Practice Using C++" by Bjarne Stroustrup
My advice, if you are serious about programming, is to buy one (or both) of those books and work methodically through it from start to finish. Then see how you feel about programming in C++.
I've always found tattooed tree corpses to be more reliable (just keep them away from fire) than E-books. Especially if you don't happen to have a portable computer and/or portable power source...but at this point I'm just posting out of sheer boredom.
"Do tell! Although I hope you're not suggesting it to be actually implemented as A object3; object3=object1;"
That is exactly what I had in mind: putting the virtual forum boxing gloves aside, what do you have against that suggestion?
Well for a start it requires a default constructor. Moreover it is longer and thus more time consuming and error prone. As far as I'm concerned there is no harm in having a dual notation. Besides, if you don't like a notation and there exists an alternative, then don't use it :)
I'm not ranting about C++, or any language. Please believe me, a few work-arounds don't compare to changing a 20kg fan in a freezer at -20 deg.C on a wobbly ladder. There are things in this world that were designed with another part of the body, not the head. I've seen this over and over with equipment I was working with (the axiom of bad design): if something needs to be fixed, you can see it but can't reach it, or you can reach it and feel by touch but you can't see it. We had a device that required two people to change a sensor because the human hand doesn't bend that way; one was holding the screwdriver and the other was holding the sensor and received instructions from the first how to align the holes (because he could not see from that position).
I also fixed some note counters. To change the logic board to one of those, everything needed to be dissasembled; it was designed like an onion, you had to take it apart layer by layer.
So please consider: programming is quite a good thing to do. You don't get electrocuted on a ladder, wet, cold, dirty, burned with flame, burned with refrigerant (whitch is a worse burn than heat), work holidays, get calls on sunday night at 12 o'clock to go 400km away and fix the problem, work 30 hours straight, control panel schematic missing, and after you find the defect see that you don't have a replacement -- start inventing and ... the customer constantly nagging in your face the whole time... he thinks you're not professional, why did you arrive so late? what's taking so long???
So, syntactic inconsistent statement? O, rly? :)) How about a fire alarm sensor malfunction and you got 5 hours until the goods thaw and you have to start the plant ASAP?
I just want to say that my ideea of a problem is somewhat different. It will still be a while until I'll know enough to get angry about the shortcomings of C++ or any other language.
I want to thank the authors of the tutorial and everybody who's contributing to cplusplus.com!
All this said, anybody who switched to programming in their 30s, please tell me what did you do before; how long did it take for you?
Thank you for your books suggestions. I have many of them on my PC. I want to read Stroustroup and Eckel but I'll leave them for after I have a few basics straight. I have this ideea that I should write as much code as possible, because that's what I feel clumsy with.
In the start, I thought it will be a year until I could write a minimal GUI application. But now it's been 6 months and I see no less than a year ahead.
Thank you!
Thank you all for your posts, they were very informative.
Following your suggestions, I took up doing practice problems for a while and take a break from learning new things. I will then take up the remainder of the theory when I'll have better succes at implementing new notions.
Personally, I nearly had a fit when I came upon classes (and instances of classes used by OTHER classes involving pointers... dude!). My approach was to give up! I did not write code for a while. Then I realized I needed a living person to help me through the ”barrier”. Luckily enough, I found such a person who patiently sat down with me, and broke things down. Sometimes drawing on a sheet of paper, until things started to *click*.
I still find C++ to be a very hard language at times (yes, the whole pointer thing drives me insane). But... I digress, sorry. My best tip for you is to check your surroundings, if you find someone who are willing to help. GRAB that person, and try to soak up as much information as possible. I know that I would never had made it this far without the extra help, and I very much still consider myself a beginner. Hell, I couldn't fire up my code in a GUI even if my life depended on it.
The thing about pointers, is that eventually you have an Eureka! moment, and everything becomes clear. C++ becomes substantially less daunting after that, at least, it did for me...
I'm willing to vouch for darkestfright's experience with pointers. I had that Eureka moment and C++ really did become a lot less daunting for me. After that almost everything else just clicked.
Hi,
I had the eurika with pointers some time ago. So I did with recursion too.
But I've bit more than I can chew on classes with the chess game. I understand the keywords, I understand that constructors build things and that copy constructors exist, and the member functions are preety much the same as any other function.
It just doesn't come toghether in my head. I did this practice problem yesterday... all the code ended up in a member function and I called that in main. :))
That's what I like technology for, that moment when you pass the threshold of understanding.
I agree with darkestfright and xander337 too. Pointers were a big mess to me also until that Eureka! moment and then things start to become clearer. Of cuz every now and then when I get stuck-ed with pointer-related problem, I will take out a piece of paper and pen to draw diagram to visualize which is pretty useful to me btw.