Well, I generally view C# as being Java with a Microsoft preference. There is Mono, but your one step of downloading Visual Studio seems to be a non-starter if someone wants to use Linux. Plus, “overhead” isn’t really installing things most of the time for me. At my school, we have machines for students to work on and even if you don’t, there are very good virtual programming environments for a lot of languages that literally have zero setup for the students. They just have to browse to a website.
The overhead I think about more is related to syntax and semantics. A quick search for “C# Hello World” pulls up https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/inside-a-program/hello-world-your-first-program. Look at that first program. It has five keywords (using, namespace, class, static, and void) as well as at three other things (System, Main, Console) that I would argue have nothing to do with printing a simple message. Compare that code to the Python code, print(“Hello World!”), or the Scala script, println(“Hello World”). That’s what I mean by overhead. I can’t hope to explain to CS1 students on the first day of class what several of those keywords mean. So I just have to tell them that they have to do this magical incantation and put all this stuff around their code to make it work, then in a month or so they will know enough for me to really explain stuff.
Do you know of a simpler way to write Hello World in C# that lacks this overhead?