Live data from Hacker News

.NET for Beginners (2020)

dusted.codes

51–60 of 192 posts

Re: .NET for Beginners (2020)

#51

Earlier quoted context omitted.

Sure doesn't sound like beginner C# questions at this point, eh?

If you're experienced with other languages, you are... Also, there are plenty of beginners with Macbooks.

Is it bad that I would steer someone away from learning C# if they're on a MacBook, unless they're learning Unity? And then I would recommend what Unity recommends.

Re: .NET for Beginners (2020)

#52

I didn't read the whole article, just scanned it. But I'm surprised he chose Golang as a low-cognition entry barrier language. As a developer on Windows (relevant since we're talking about .NET), setting up Go was a pain in the ass. Making sure that my PATH variables were set up correctly and all that jazz, and then I'd run into issue after issue with packages and paths. I don't know what it is about golang, but man,…

> setting up Go was a pain in the ass. Making sure that my PATH variables were set up correctly and all that jazz, and then I'd run into issue after issue with packages and paths.

When was this? Within the last two years? When Go was transitioning from the original GOPATH style setup to modules, I had a ton of issues like this. So many, that I kept my Go version on an earlier build so I didn't have to deal with it.

These days, thankfully, all those issues are taken care of. I've mostly switched to cross compiling from WSL(2), but compiling on Windows has been fine for a number of versions now.

Re: .NET for Beginners (2020)

#53
post #49

Earlier quoted context omitted.

The framework you choose doesn't even matter that much. You're unlikely to even a notice a difference and changing from one to another is often as easily as selecting it from a drop-down (or editing a file) and recompiling. Yes, you can get into situations where something you're doing needs one or the other but it's very rare.

I'm sure you're right, but as a beginner in a new programming language there is a real fear of "choosing the wrong thing" You know that it will not matter that much, because you're familiar enough with all three. A beginner doesn't have that information. Think about it like this: Is it better for beginners to have such a 'non-choice'? Or is it better for them to be presented 1 maybe 2 options and say pick from these…

If you start a project in the IDE (or even the command line) there is already a default selected for you. Whatever that default is, would be fine. I don't think there's a single .NET tutorial out there that has you explicitly select the framework.

The problem is you're informed enough to ask the question! If you had no idea about the different frameworks you wouldn't have a problem.

Re: .NET for Beginners (2020)

#54

I didn't read the whole article, just scanned it. But I'm surprised he chose Golang as a low-cognition entry barrier language. As a developer on Windows (relevant since we're talking about .NET), setting up Go was a pain in the ass. Making sure that my PATH variables were set up correctly and all that jazz, and then I'd run into issue after issue with packages and paths. I don't know what it is about golang, but man,…

>Making sure that my PATH variables were set up correctly

Honestly, what's so technical about adding:

    export PATH=/usr/local/go/bin:$PATH
... to your ~/.bashrc ? Beyond that there's nothing more required other than, per project:

    mkdir myapp && cd myapp && go mod init myapp
Maybe you're thinking of setup prior to the introduction of Go modules?

Re: .NET for Beginners (2020)

#55

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…

The sprawl isn't just confusing for new programmers. Several years ago I was writing C# professionally, would always appreciate the new features that came with each new version of C#.

Recently I was reviewing the code of a library written in C# 9 and couldn't make head or tails of it. Half the code was using features that didn't exist a couple of years ago, enabling the author to use patterns which were not possible without those features.

Re: .NET for Beginners (2020)

#56

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…

It got a lot better in .NET Core three when they stopped using Nuget packages for the core framework works. Now building and updating apps based on just the core frameworks no longer installs and restores Nuget packages. This makes it faster, simpler, and takes less space on disk.

You probably still will have more Nuget packages in your ASP.NET Core project than a classic .NET Framework project would.

Details about the new system: https://github.com/dotnet/designs/blob/main/accepted/2019/ta...

Re: .NET for Beginners (2020)

#57

Earlier quoted context omitted.

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…

Mono was created by Miguel de Icaza, a Mexican (Now Mexican-American) programmer. Microsoft had nothing to do with it. Novell purchased it. Eventually Microsoft warmed up to it. Miguel de Icaza now works at Microsoft.

>Eventually Microsoft warmed up to it.

Only after Microsoft's Linux patent racket involving Suse, who Icaza worked for, branded them as the enemies of open source which became inconvenient once they realised the writing was on the wall for anyone who did not support open source.

Re: .NET for Beginners (2020)

#58

Earlier quoted context omitted.

If you're experienced with other languages, you are... Also, there are plenty of beginners with Macbooks.

Is it bad that I would steer someone away from learning C# if they're on a MacBook, unless they're learning Unity? And then I would recommend what Unity recommends.

Depends on why they would be learning C#

I do most of what I do with C# in WSL with VS Code (WSL Remote) ... because that's where I do most of my Programming. Where I work, pushing towards most of what we write to be able to deploy/operate in Linux/Docker environments. Doesn't make C# less of a language for the teams that have over a decade of experience with C#, but it is a mindset shift.

The bigger issues I have are with the framework and that it's very difficult to search for working paradigms as framework apis and interfaces have dramatically changed in a lot of areas the past few years. I like the dotnet cli better than what was before it... that said, it's still got a lot of rough edges.

And getting started, especially when you are experienced in other platforms, isn't always easy... even experience from .Net framework to newer runtimes has been painful in the past.

Re: .NET for Beginners (2020)

#59
post #54

I didn't read the whole article, just scanned it. But I'm surprised he chose Golang as a low-cognition entry barrier language. As a developer on Windows (relevant since we're talking about .NET), setting up Go was a pain in the ass. Making sure that my PATH variables were set up correctly and all that jazz, and then I'd run into issue after issue with packages and paths. I don't know what it is about golang, but man,…

>Making sure that my PATH variables were set up correctly Honestly, what's so technical about adding: export PATH=/usr/local/go/bin:$PATH ... to your ~/.bashrc ? Beyond that there's nothing more required other than, per project: mkdir myapp && cd myapp && go mod init myapp Maybe you're thinking of setup prior to the introduction of Go modules?

> Honestly, what's so technical about adding [...] to your ~/.bashrc ?

Oh boy, you don't tutor many beginners in programming do you?

Re: .NET for Beginners (2020)

#60

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.

The evolution of .Net standard, core, and framework has been mind boggling and difficult.

I’ve lost track, and I don’t even know how to keep tabs on this any more.

Too much information.

I envy the greenfield developers who can start with .Net Core or .Net 5.

Post reply on HN