Live data from Hacker News

.NET for Beginners (2020)

dusted.codes

21–30 of 192 posts

Re: .NET for Beginners (2020)

#21
I'd like to see some data around the central claim. Is C# really that hard for beginners? I watch a lot of beginners on twitch (for several years now) start with C# and almost zero idea about programming. They all seem do pretty well, whether they are learning unity, winforms, web dev. They don't even stop and wonder any of the issues discussed in the article, they simply make the project type they want in visual studio and start learning the guts of programming. The issues discussed seem more of a problem with evolving your software over time, especially the framework -> core/.net 5+ transition. I'm not sure that really impacts beginners other than a few caught in the storm who needed to upgrade their software to a different version (given most would just stick to whatever they started with). The evolution of the C# language itself has caused fractures in recommendations on how you program in C# but then stabilize pretty quick. We've been through it quite a few times in the C# world, and if you are learning in a transition period, yeah, some tutorials are going to say one thing, and others another thing, but most beginners seem pretty ok with the idea that there is an "old" way and a "new" way. But like I said, I'd like to see actual data on the beginner learning experience rather than anecdotal accounts as there's always going to be people who find it hard and those who find it easy.

Re: .NET for Beginners (2020)

#22

Earlier quoted context omitted.

doesnt matter they are 99% the same, in the same way java versions coming out dont require you to relearn java or the java core libs

C# was never intended to run everywhere. It was a Java clone for Windows. Now msft wants to make it run everywhere. There's going to be some confusion in the transition.

You couldn't be more mistaken... C# and .Net (CLR) were absolutely written/meant to be portable. Mono was pretty well adapted from early on at a core level, though it didn't support all the options. If it weren't for MS patent stance and some FUD early on, it might have gained more adoption in the Linux space.

One of the reasons I chose to learn C# a couple decades ago over Java was the fact that interop was so much cleaner than JNI.

Re: .NET for Beginners (2020)

#23
post #3

Earlier quoted context omitted.

> How can I learn C++ and llvm" Rather "C++ and Qt" or "C++ and Boost".

"C++ and Qt" would be more analogous to "C# and WPF". .Net to C# is perhaps more like JVM to Java.

Qt is like Boost and .Net a general purpose framework; it is also very useful on the server side or with command line applications. Qt Widgets is only one of many modules. Btw. you seem to mix up .Net with the virtual execution system (VES) and its common intermediate language (CIL). Have a look at the standard (ISO 23271) part I; you can download it for free from https://standards.iso.org/ittf/PubliclyAvailableStandards/c0.... There is an additional technical report for the framework (ISO 23272), which can be downloaded from https://standards.iso.org/ittf/PubliclyAvailableStandards/c0....

Re: .NET for Beginners (2020)

#24

Like other design-by committee projects C# has considerable sprawl. As a result, it's overwhelming and confusing for brand new programmers to start writing hobby projects in. But C# is beginner friendly in that it's easy for inexperienced programmers to contribute business value to existing codebases. The everything-in-one ecosystem (IDE + autocomplete + database + deployment + source control + package management) re…

I will agree and disagree... a lot of things around the edges really do change between versions of .Net .. while C# is pretty progressive, the .Net framework does have some rough edges if you're either inexperienced, or have tended to hold on to a version for too long and now need to jump ahead a version or two.

The evolution of .Net Core (now just .Net 5) has been interesting and at times very painful.

Re: .NET for Beginners (2020)

#25

Earlier quoted context omitted.

C# was never intended to run everywhere. It was a Java clone for Windows. Now msft wants to make it run everywhere. There's going to be some confusion in the transition.

You couldn't be more mistaken... C# and .Net (CLR) were absolutely written/meant to be portable. Mono was pretty well adapted from early on at a core level, though it didn't support all the options. If it weren't for MS patent stance and some FUD early on, it might have gained more adoption in the Linux space. One of the reasons I chose to learn C# a couple decades ago over Java was the fact that interop was so much…

[deleted]

Re: .NET for Beginners (2020)

#26

The complaint around all the different concurrent iterations of .NET rings true to me. It used to be that you only needed "current version of .net" and then you just ran forward with all of the standard libaries and Visual Studio handled all of that for you and it was wonderful. Now you need to work with .NET Core and download a bunch of disjoint nuget packages to make everything work; and, then you download a specif…

I think a lot of the newer options are much easier... the greater flexibility of detaching most libraries from the base runtime has been useful for advancing the platform as a whole.

That said, I do feel the pain, the interface changes for binding web applications are very different, and if you relied on "Enterprise" libraries harder still. I'd rather do things the "new" way, but it's more the differences that make it harder.

Harder still, is when trying to google how to do X with .Net Core 3 or similar... Now that it's .Net 5, at least that should make some stuff easier, until 6 comes out at the end of the year, but that's more evolutionary. Getting search results that no longer apply is a pain. It's far less the C# language as it is the platform libraries themselves and the breaking evolution through .Net Core. I think TFA has a point that renaming .Net to something else instead of .Net Core or .Net 5 may have been a good idea.

Of course, now it's Azure * instead of a couple decades ago it was * .Net (anyone remember Office .Net, Windows .Net etc in early dev/beta marketing?)

Re: .NET for Beginners (2020)

#27

Earlier quoted context omitted.

Okay, where do you start in Learning C#? What do I have to install? What should I install? Even those are complex questions with a few answers. I started with C# two decades ago with the command line compiler and a very large book. There was really only a single option, and since I didn't have MSDN access, no beta VS for me. Today, I would suggest that a developer start with .Net 5 and VS Code, with the extension ins…

> Okay, where do you start in Learning C#? What do I have to install? What should I install? Visual Studio Community Edition 2019. Done. edit: I would encourage using regular .Net, not .Net Core until they've reached a certain threshold.

I would consider .Net 5 that threshold... there's no more Core, fyi. As for VS Community, if someone is getting started in C#, I'd suggest VS Code and learning the CLI tool before jumping in on the IDE bandwagon if only to learn the platform better in getting started.

Re: .NET for Beginners (2020)

#28
When I imagine starting to learn C# right now, I think I would need to:

- install the newest Visual Studio with default config

- create a new console app project

- start writing code in the template's main function

Granted, I have to know whether I want to create the console app in .Net Core 3.1 or .Net 5 or whatever, but I imagine I can find the answer to that pretty quickly and move on. Usually the answer will be "the newest version you have installed".

Any language feature I want to play with is just one automatic import tip away, and most of the features I would explore as a total novice don't even need that.

The complexity of various Nuget packages, ASP.Net versions, older versions of .Net only arrives once you need to uplift older projects, maintain libraries to be used across different framework versions etc. Those are tasks for a more experienced developer, for a good reason, and I believe this is true for any technology stack.

EDIT: formatting

Re: .NET for Beginners (2020)

#29

Earlier quoted context omitted.

Okay, where do you start in Learning C#? What do I have to install? What should I install? Even those are complex questions with a few answers. I started with C# two decades ago with the command line compiler and a very large book. There was really only a single option, and since I didn't have MSDN access, no beta VS for me. Today, I would suggest that a developer start with .Net 5 and VS Code, with the extension ins…

> Okay, where do you start in Learning C#? What do I have to install? What should I install? Visual Studio Community Edition 2019. Done. edit: I would encourage using regular .Net, not .Net Core until they've reached a certain threshold.

Also... "I don't see an option to create a web project." or "Where's the project to start a video game" ... There's lots of bundle options in the VS installer that someone may not understand, and if you install the kitchen sink, you may well fill a 256-512gb ssd.

Or... I'm running a Mac.

Re: .NET for Beginners (2020)

#30

Earlier quoted context omitted.

> Okay, where do you start in Learning C#? What do I have to install? What should I install? Visual Studio Community Edition 2019. Done. edit: I would encourage using regular .Net, not .Net Core until they've reached a certain threshold.

I would consider .Net 5 that threshold... there's no more Core, fyi. As for VS Community, if someone is getting started in C#, I'd suggest VS Code and learning the CLI tool before jumping in on the IDE bandwagon if only to learn the platform better in getting started.

> I'd suggest VS Code and learning the CLI tool before jumping in on the IDE bandwagon if only to learn the platform better in getting started.

I absolutely hate most CLI tools and C#'s is no exception. I'm happy to say that I have never, in any of my time developing, been in a situation where I absolutely had to use one for C#. It's made me very happy.

.csproj's and .sln files are such a better design pattern for project management than raw folders that I wouldn't torment someone by requiring them to learn that alternative model when any good C# IDE will do all of that for them.

Same with Java.

If you want to require someone to learn everything CLI, then they should probably be learning a different language, to start.

In a similar tone, if I was teaching someone Python, I would start them with running `python` and then just ... typing commands. I wouldn't teach them if __name__ == __main__ until later on. Same reason. Unnecessary complexity for the kind of work they're doing.

When you start wanting to configure CI on Jenkins (not TFS, because TFS handles all this for you, too), then the command line has any value for C#, imo.

Post reply on HN