Yeah, what about it.
No offense meant to Mr. Atokar, but the 'satisfaction guarantee' means nothing unless you explain in what way you intend to guarantee it. It just comes off to me as marketing fluff.
Which is fine, but I see enough of that stuff not to be fooled by it.
Since English is not his first language, he may not have expressed what he meant very well. Especially if he's 14, and probably a little impatient.
So he's likely not an idiot, but just not expressing what he meant in a way that I'd understand him.
NSA doing ITIL for software?
Not written here?
We wanna take all their research and make it look like our own?
"The leaky program drips into the cup, and out onto the floor."
IE is more picky (and not neccesarily wrong) than firefox, so things work in firefox, then you fight to get thme to work in ie.
Today I found out you can't add appendchild to a table, you have to appendchild to a tbody
You can in firefox, but not in IE.
It would be nice if everybody was as lax as firefox, but it makes more sense.
Either way, it's annoying.
There will still be a few things broken but it won't be nearly as bad. It's better to start with strictly correct markup and then compensate for IE than to start with IE brokenness and rely on Firefox working around it.
They don't speak html exactly.
Both browsers will render tables without thead and tbody, but only firefox will let you appendchild to a table, ie requires a tbody.
It is often frustrating to explain object techniques to someone who has only just started working with C++.
I feel like I keep saying the same thing repeatedly, over and over again, iterating over the same material, repeating myself, saying the same thing over and over again, all with subtle and not-so-subtle variations, in an effort to bang through the mental block preventing my young friend from grasping what seems patently obvious to me.
It's not his fault. He's learning. And this style of programming, while powerful, is a little weird to get used to. But some of this stuff feels so basic. Put this object in here, and use it to hold this kind of information.
You wouldn't believe how difficult a concept this is, apparently. It's called 'aggregation'... there's a name for it, but this poor guy, who is just starting out, is having a very rough time wrapping his mind around it.
I wish I could use a stream operator to dump what I'm thinking into his brainpan.
Mind you, I wouldn't want anyone to think the guy isn't bright. He's very bright. It's just some rough material.
But I remember being in situations where everybody in the room knew an awful lot of things I didn't and were discussing them and the problems, and I had to figure out enough so I'd have something to remember so when I had a chance to look up what all those things they were talking about were, I'd have a clue how to put the pieces together to make a picture.
I think at some point there is a learning cliff where you start to learn how to learn new concepts. Or your aresenal becomes big enough that no matter what soembody throws at you "oh, it's kinda like this with that, in an object, but serialized. I get it."
When you're green you just don't have all that background to draw on.
Funny story from prodigy: I inherited a (rather complex, of course) mime parser from IBM and was using it just fine in my AIX mail system.
In austin land they were writing a windows client for prodigy that included a mail program, so I handed over the mime parser knowing he'd need it and knowing IBM it works flawlessly in windows and AIX.
So weeks went by and he was having problems with it. We kept going back and forth with emails and going back and forth, finally there was a trip planned to austin so I went and I figured I'd meet the kid.
I was told by two more senior guys "we call him green."
After 5 mintues I could tell he'll be a monster some day. He's really smart, really fast and really excited, he still thinks he's going to change the world.
If only he could get this mime parser to work.
so he explained to me the problems he was having, and how he added code to the mime parser to fix this, and changed it here to fix that, but then it still blows up over here.
So I thought about it for a minute, and realized what the problem was.
I said take out all your changes, put the original code back. He wasn't happy.
I said "Show me where you open the email file to read."
And sure enough as I expected, he had fopen("xxx", "r");
You know, to read.
But what he didn't know was that in windows land (and I'm sure fleeb got burned with this at smoe point along with the rest of us) in windows land, you have to specify 'rb' if you want to get the exact file without windows interpreting CRLF as LF for you.
So in fact the mime parser was fine, but it was expecting CRLFs and only getting LFs, so it was having problems.
The kid flipped.
He was so sure of himself, so right so all knowing, and some long haired old guys shows up and says "put a 'b' there."
Green. There isn't a better word.
Speaking of streams (since fleeb brought it up), I remember when Drew learned about streams and produced the biggest piece of crap with streams everywhere.
He went crazy on stringstreams. It was for the admin server (I forget what we called that thing, I'm sure you remember) and it had dozens of commands it could respond to.. he had written all these commands and tested almost none of them, and I had to go in there and straighten that out and rip out all these stream things that either didn't work or were impossible to debug.
Anyway fleeb I think maybe one of the things you're up against is that besides object oriented programming being a little different if you are used to procedural programming.. it's also that C++ is not a very friendly language.. in fact it is damned complex. You mention the stream operator. How is that NOT going to confuse? Operator overloading is the absolute last thing people should have to learn when they are trying to understand objet oriented programming.
Also I would avoid words like polymorphism. Start with simple concepts like data objects that hold all the data together for things. If he knows C already then he knows structures.. and object are derived from structures.. so he'll get that.
STAMP was the culmination of drew learning about streams and the existence of LISP. You remember all those parenthesis. I really wanted to smack him for that.
I remember one of the first tutorials I read on C++ was about cout << "hi from stu";
LOOK how easy C++ is.
Worst teachers in the world, as you said, that's the LAST thing you want to teach a new C++ person.
The thing that threw me for a loop was once when sanjay asked me a C question.
What do you mean a C question? You know this stuff upside down and backwards. And he said "yeah, I know C++ , but some of the low level C stuff I was never good at,"
And I was stunned. Up until that point, it had never occured to me that you could let alone anybody might have learned C++ without learning C. But in fact, it happens all the time.
If you think about it java is C++ without the C.
I forget what exactly he was doing but it had to do with shifting bits or something like that. But it just stunned me, that one of the best designers and c++ guys I ever met had to come to me for a C question.
I always assumed everybody learned in the same order I did.
Basic --> assembly of some kind --> C --> C++
But I think maybe nowadays it goes the other way.
You learn C++ first, then learn the low level C stuff as you need it, and if you graduate into the esoteric you learn some assembly, and then at the final level of geekdom you buy an old 8 bit machine on ebay (like oh, my trs 80 model 100) and write some basic on it because you can apprecaite how cool it is.
my my my what is this world coming to.
I'm definately trying to keep him away from operator overloading and some of the other insane things C++ can do, but I can't help but show him certain things, just to get the job done. I had to write some code that winds up requiring that he uses the bind library. You guys play with bind yet? (tr1::bind, or boost::bind... same thing). That thing allows you to do some insanely cool stuff in C++, but will seriously mind-fuck you until you 'get it'. I had to tell him, "just do this. Try to figure how it works later." I hated doing that, but it was the only way I could make the code work for his needs as well as mine without having to seriously limit everything. But he's starting to figure out the power of boost::bind, which is fucking impressive. This guy will do very well, if he hangs in there.
When I mentioned the stream operator earlier, I was kind of joking... about being able to simply stream my brain into his so he could see where I was coming from more easily.
My god, the things you can do in C++ that would drive me insane if he didn't get his sea legs first. Particularly by abusing the operator keyword. I could see him now, overloading the parethesis operator to do some truly fucked up shit, then overloading a few casting operators so the object would act like Frankenstein at a masquerade party, not because he needed to, but because it was cool.
Although he has some pretty good aesthetic sense to him. He seems to have a general sense of when he'd be guilty of doing something incredibly fucked up.
Yeah, C++ is not the friendliest language to learn when you're starting out. This guy started with VB (for web pages, no less), and SQL. Having to think about managing pointers, working with references, implied copies of instances of objects, and so on... it's all so arcane and weird for him. But he is getting it, if slowly.
Today, the real trouble was not so much the C++ language itself, as much as learning object technology techniques. I didn't phrase it like this, but, "This object is an aggregate of this other object, which can thereafter use the thing to retrieve information so you do not have to store the same information in two different places." It's a simple idea, but he had a rough time grasping it, only because he never thought about objects in this way before. He comes from a procedural world, and hasn't exactly made the conceptual leap to object oriented techniques.
One of these days, he'll make that leap, and all this stuff will be really nifty-neato-keen to him. Then, if I'm still nearby, I can blow his mind with Generic Programming techniques. That's the spiffy-fun stuff that makes my life so much better right now. I've hinted to him about its power, but he still needs to 'get' how objects work.
Oh, and yeah, Ford, I have been burned by the 'b' thing occasionally.
I made a point of never trying to figure out what passing a template to a template does.
I only remember its signifigance because it breaks one of the whitespace rules in C
forgive my forgetting the syntax but ...
type <othertype <secondtype> > x; // you HAVE to put the space between the > > or it becomes the >> shift operator.
There's another one. I think oh right, diving and int pointers:
int y = 3;
int z = 3 / *x; // you have to but shouldn't have to put a space between the / and *
I imagine there are zillions of those, but those are the only ones I remember.