Actually, the universities don't seem to agree with you anymore, and haven't for many years. And I'd be surprised if Ath didn't understand static linking. He was talking about .NET programming in Visual Studio from the prospective of his talking about the .NET runtime, and under those situations (using managed C++) it doesn't really apply as managed C++ doesn't compile to native code- it compiles to MSIL just like C# if you're using C++/CLI.
First, that may be right, especially with MS so heavily subsidizing universities. I've been out of the universities a while, I am 34 now, so its been about 10 years. It probably depends on what university you happened to attend though. If that is true, then they are doing a disservice to their students. I believe that if we have truly lost education of unmanaged code, then we need to get that back - perhaps as a 'systems programming' vs 'applications programming' branch.
Unmanaged code still beats the crap out of managed code when it comes to performance, and is NOT available on all platforms. And you sure aren't going to find device drivers written in managed code ;p
There may have been misunderstandings. I do see I may have taken his statement wrong.
1. Of course *managed* C++ compiles to MSIL, managed code is all the same regardless of the language used to create it (with caveats, of course, as you mention).
2. I could have sworn he meant 'with unmanaged C++, you have to redistribute the MS CRT runtime DLLs'.. but I think he *assumed* that the programmer was only going to be creating managed code, and meant that all of them would require the .NET framework anyway.
3. Like I said, it matters more to choose the language for what you are doing, rather than some 'perfect language for everything'
I had no intention to denude his statements, just felt the link he referenced to back up the C# utilization claim was false. *Unmanaged* C/C++ is still the most heavily used programming language, IMHO.
For a managed code language, I would recommend someone just go with C#, as managed C++ is a weird thing to me. I remember when they first created managed C++ (CLI) and I told my boss at the time. He was so arrogant, saying that is impossible, and telling me how wrong I was. I send him PROOF, but he refused to look. Infuriated me.
In the end ... what does the student want to learn?
1. Systems programming? What is really going on behind the scenes? Then learn native C/C++.
2. Applications programming? Don't care what is going on behind the scenes? Learn whatever else ;p.
The one advantage is that if you go with #1, then later #2 becomes VERY easy
. Also, you'll find #1 more portable to other platforms, more in use by common applications, and generally very useful and robust .. just a good thing to know.