Yes he hit it right on the head with pointers. The next hangups for most people would either be event-driven programming and/or objects. I quickly understood OO programming but I do have to admit that event-driven programming threw me for a loop. I
was so comfortable in top down programming that the idea of events took a couple of hours to wrap by brain around.
I think at a micro level, programming is pretty easy (well, after doing it for a while...once you "get" pointers and references or classes or events, writing them becomes automatic). There aren't a whole lot of programming constructs, and most of the
actual lines of code that I write are by and large the same as others. The challenging part is organizing those constructs to build up in such a way that there are as few of those "same as others" as possible without organizing things in an unintuitive way.
Now, the hardest part on working on a real project is trying to maintain a pure and consistent organization of the constructs while dealing with organic requirements and tight deadlines where a customer doesn't care about elegant code or an intuitive API (but
then, I write mostly end-user code) and prefers something hacked together but on-time vs. something that is maintainable and aesthetically pleasing to a developer.
Yea, the heck with pointers, who needs them anyhow lol
Alright pointer are confusing for beginer... but they are just great because they are FAST and by using them you get a pretty good of what is going on under the hood, because pointers are NOT gone in .Net, they are just disguised.
Look, last year I wrote Image Processing Library for my company, in C#. And I wrote two versions of it, one using the standard .net/C# array accesors (b[i]++), and the another one using pointer arithmetics (*b ++)
Guys! the difference was simply astonishing! the debug version of the program using pointers was 13 times faster than the program using standard array accesors in release version! how about that??!! The performace of the release program's version using pointers
was very close to a Visual C++ (not .net) implementation.
That's why I prefer C# to VB.Net (I starting to learn the nuts and bolts of C++.net) and of course why Java can never outperform C# (or the .net platform I should say) at least for this kind of tasks
Ok I have to mark the code as unsafe, but this kind of performance worths it.
All about these things are very funny. At the school, we first viewed C, then we passed to C++. All the teachers were saying "Take care with pointers..." or "Use pointers instead of variables...". Now Microsoft comes with C++ Managed Code and tells us
not to use pointers because of its risk in security and stability.
So, first we worked just with pointers, then the languages let us work with variables and pointers, nowadays they tell us not to use pointers...
Do you guess the future? (No pointers at all)
Robert Hess is awesome. I specifically asked to meet him when I visited Microsoft. He probably thought I was a total weirdo for asking to meet him out of the blue like that.
Anyway this is a pretty short video. Hopefully you have more that you're going to post. I think he's probably got some pretty interesting things to say outside of the .NET Show where he pretty much lets the guests take over.