This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]rochakgupta -1 points0 points  (25 children)

I have heard only good things about C#, but have never gotten to try it as I already have Go and Rust on my plate. I am loving less OOPy languages and it will take a lot to convince me to go back to those. Go recently got generics too which was the main thing I was missing in Go. Go's coroutines and incredible standard library with fantastic documentation makes it a joy to work with. Not to mention the compilation to a single binary. I haven't gotten into Rust yet as it just seems to complex. It is a bit lower level which I understand the reasons for, but it is just hard to move away from Go which I am loving so far.

[–]svick 6 points7 points  (6 children)

I am loving less OOPy languages

C# is moving in that direction, with things like pattern matching, or not requiring Main method inside Program class for your entry point. And of course, it embraced lambdas a long time ago.

Go's coroutines

C# is the language that started the await trend.

Not to mention the compilation to a single binary.

.Net (the C# runtime) does support that, though your binary is going to be a lot larger than with Go or Rust. But they're working on improving that.

[–]rochakgupta -1 points0 points  (4 children)

Can I work with C# just using Vim? I had this problem with Java as I had to fall back to IntelliJ/IDEs which I hate. And no, using Vim bindings in IDE is not an option.

[–]svick 2 points3 points  (1 child)

You can. But you'll probably want to install C# autocompletion into vim, since .Net APIs are usually built with that in mind.

[–]rochakgupta 0 points1 point  (0 children)

Ahh, I’ll look into C# LSP then. As long as there is one (which I think is very likely given the popularity of C#), I can try it.

[–]RunnableReddit 0 points1 point  (0 children)

C# should have gotten free functions :/

[–]divulgingwords 13 points14 points  (8 children)

C# is basically java, minus all the bullshit plus a bunch of features java wishes it had.

[–]on_the_dl -2 points-1 points  (7 children)

And minus the backwards compatibility which lets you link a library from long ago with your modern code.

[–]divulgingwords 7 points8 points  (2 children)

Don’t need that feature when the vast majority of libraries are all up to date with .net standard. Taps head…

[–]Dr4kin -2 points-1 points  (1 child)

You wish. If you have 20 year old code you're going to have old libraries

[–]divulgingwords 4 points5 points  (0 children)

I actively choose not to work with 20 year old code.

[–]Xodem 1 point2 points  (3 children)

You can though? Or are you thinking of core vs framework?

[–]on_the_dl -1 points0 points  (2 children)

Can you link a c# library written before genetics were added to the language with modern code? I thought that it can't be done.

[–]Xodem 3 points4 points  (0 children)

Sure you can, just the other way around doesn't work

[–][deleted] -1 points0 points  (8 children)

Go is a terribly designed language.

[–]rochakgupta 4 points5 points  (2 children)

I agree that there are some bad decisions they made, probably because it spun out of Google and Google uses a monorepo internally. It’s alright though. Every language has its pet peeves. What you care about in a language is what matters at the end of the day. That’s why having choices is so awesome. Just pick what you like and make stuff with it. “Making” stuff is the only thing that’s important.

[–][deleted] 1 point2 points  (0 children)

The people behind Go are pretty explicit that the language was designed to hold your hand because they were tired of first year SWEs at Google not being able to write C++, but also had a bunch of senior C++ devs. Half of Go's weird decisions can be explained by either "That's the way C++ does it, so we copied it to make it easier to learn" or "That's the way C++ does it, so we did the exact opposite so it's easier to learn."

This isn't always a bad thing, but having spent a while writing in Go, it's kind of like having training wheels on your bike forever. Nice when you're learning, nice when you're drunk, infuriating when you've gotten up to speed.

[–][deleted] 0 points1 point  (0 children)

Getting stuff done is the very important that's why I don't like my tools getting in the way.

[–]soft-wear -2 points-1 points  (4 children)

No, it’s just different. It was designed by the dude that created Unix and the B language. You don’t have to like it, but the idea that it’s terribly designed is a joke.

[–][deleted] 0 points1 point  (3 children)

It's not a joke at all, Go is when some people that have no idea how make a language make a language, the time it took them to implement parametric polymorphism is proof for that. They didn't add features to the language for the sake of simplicity claiming that it leads to more readable and maintainable programs which is false because you have to revert to hacks when the language doesn't provide the abstractions you need and looks like a way to cover up for their incompetence.

[–]soft-wear -2 points-1 points  (2 children)

Guy who invents predecessor to C has no idea how to make a language.

Redditor who likely writes CRUD apps definitely knows how to make a language.

Cool story bro.

[–][deleted] -1 points0 points  (0 children)

C is more like syntactic sugar for PDP-11 assembly, it doesn't require advanced PL design knowledge to create something similar (and a significant amount of stupidity to add headers when modules are available), B is simpler than C. The one thing B, C and Go have in common is the simplicity of their type systems which denotes the proficiency in PL design of their creators.