You keep saying that, as if it were a bad thing. Certainly for learning programming, and quite a few applications, there is no advantage to have to deal with things on an OS (or OS-specific) level. A higher-level language may be preferable. I think I disagree strongly to categorizing that as an absolute "negative".
I made it quite clear in the original post:
Shields you from the OS (the .NET framework act as an intermediary), a good thing in many ways except for learning how computers work
There. A NUANCED point of view. It could be in the positives or the negatives, it's not clear-cut, I chose one because I'm trying to keep things simple. If I didn't, many people would inevitably point out that you'd better learn with C/C++ because they teach you how to interface with the OS (which is why C and C++ are usually taught for CS degrees). And they would be right, except that C/C++ also have their drawbacks which must be accounted for.
In short I'm not rooting for any particular language in the post; I'm not rooting for high-level vs low-level languages; I'm comparing all approaches in as a few words and examples as possible and give beginners an idea of what to look for and what to expect before their attention span runs out. It's not an introduction to programming and it doesn't try to be that.
It would be more useful if instead of discussing semantics and the speed of .NET programs, you [people on this thread in general] provided suggestions for reference material such as how to get started on Mac (I got nothing on that) or books.
Uhm, I said that you could easily have Windows Presentation Foundation in native C++ (or even C). As in that you could implement the same thing in C++ because it has nothing to do with the programming language, not that you could call the .NET version. Reading comprehension. There's nothing inherent about the language that makes it impossible to have modern APIs.
But... I am in no way implying that it is impossible to implement modern GUIs that are callable from C++. I'm just saying you are going to have a much easier time, as a beginner, making GUIs by going with C# than with C or C++, considering the whole package, language + libraries + IDE. I make it clear when I list what you should be looking for when choosing a programming language. If someone actually gets misled into thinking WPF can't be implemented in C++, which I sincerely doubt can ever happen, the forum is there for that.
dramonai: For anyone under 15, maybe. C is probably the best language out there for beginners because it teaches you more about how programs run.
Xilo: I disagree. There's more to programming than memory management. Memory management just gets in the way of learning concepts.
Please notice that although the post do lean towards Python/C# more than C/C++, it compares both approaches according to their respective advantages and drawbacks and doesn't clearly take a side on the issue. C/C++ are better for teaching Computer Science, C#/Python are better for getting stuff done and having fun doing it. I am aware of this, so please keep this on topic. I am looking for suggestions to improve the OP so that this section can have a helpful "Getting started" FAQ.
Then you're saying that Visual Studio lets you do it, not C#. WPF isn't part of C# (and isn't even available on anything other than Windows.)
But Visual Studio won't let you do it in C++. And from the purpose of a non-programmer I see no purpose in trying to explain the difference between Visual C#, C# and .NET, since in 99% of cases if they take this path they will download Visual C# express and start using the three in combination. Again, if I have to be more precise, this drags on the post and makes it less useful. I link to MSDN which has excellent explanations on what is C#, what is Visual Studio etc., if the reader is interested.
The same goes for Python. Python is not an interactive shell, but 99% chances are you are going to download CPython from python.org and start messing around with the IDLE, and this is a superior learning experience compared to using a build-and-run IDE. Python makes a great learning tool precisly because of that, even though the IDLE is not a language feature. Most argumentations in favor of Python point that out, if you care to look around. (http://www.stanford....on-teaching.htm
) Are they misleading? No. Same goes for C# and its related GUI design features.
I spent 2 weeks learning almost everything to do with C. After that. it took me a couple days to get my first fully-authored GUI program done using the Windows API.
I spent a day creating my first VB program, and it was a WinForms Tic-Tac-Toe which you could play against, with three levels of difficulty. You can't really argue that GUIs isn't a strong point of C# and VB, especially compared to C.
Besides I'm not saying C makes it impossible, I'm saying it makes it hard, in the context of a comparison with C# and Python.
Fact: Everything you can do in C# or VB you can do in C.
Sure. Hence I'm recommending C as an excellent first choice. Just because I list some drawbacks doesn't mean it's not a recommendation. I listed drawbacks for all languages.
ALL .NET applications are SLOW.
If startup time is your one and only concern, why not use NGEN? Besides this kind of blanket statement leads me to think you have no idea what you are talking about. .NET applications can be faster than the fastest code C++ compilers can generate in some cases due to run-time optimizations by the JIT. Besides, .NET makes it easier to write fast code