6 ms·
It wasn't a "me too", it was a "we can do better", and IMHO, they did. C# as a language is very nice to use. 1.0 was lacking a few crucial features, such as ge
by hermitdev 8y ago
It wasn't a "me too", it was a "we can do better", and IMHO, they did.
C# as a language is very nice to use. 1.0 was lacking a few crucial features, such as generics (while using 1.1, I was using a code generator to create strongly-typed collections). It sort of felt like Python at the time - Batteries included. Even at 1.0, the standard library was quite extensive. By 2.0, generics were there, and that ameliorated my biggest complain with the language. Every iteration since has been a boon to developer productivity.
Some features, such as Linq are hit & miss for me. On one side, Linq is great in that it allows one to succinctly express complicated logic. On the other hand, it also hides a lot of complexity and it can be hard to determine the algorithmic complexity of even the simplest Linq statement, unless you closely examine all of the types involved.
Also, not to be forgotten is the tooling. From day 1, tooling for .Net (C# in particular) was top notch, and it's only gotten better over the years. IDE support was great (except lacking edit & continue) - Intellisense was fast and worked incredibly great (and fast), with the built-in support for XML documentation, its was also helpful & informative. Compared to the Intellisense support for C++, which was so bad I've sworn off VS for C++ work (last time I tried was VS 2005, when it'd either hang or crash often) and rely upon command-line Vim instead.
I don't do much C# currently, but I still love the language. I'm probably about 1% C# and the rest C++ currently.
Edit: I'm aware that C# was largely born after MS's ill-fated embrace of Java (J#, IIRC) and the suit from Sun. I see C# as an embrace what worked, kill what didn't. Java still has some large annoying works (Exception specs), and C# said: we don't want that.Even C++ realized that exception specs sucked and ditched them in 2011, but Java's still clinging to them. Also: objects vs value types.
- ramensea 8y agoI have been using C# a lot recently. I can't stand it. It feels like it it lacks a coherent design. I'm not a huge Java fan either, but at least it feels coherent to me. I have used a lot of different programming languages and can see the values in their different approaches, but I have a hard time seeing it in C#. Also C#'s tooling is only good on Windows.
- jackfoxy 8y agoTry F#. There is a VS Code plugin with about all the tooling you need. Fully supported by dotnet core, so you don't have to use it on Windows.
- ramensea 8y agoI am not a fan of VS Code. It feels clunky and slow. Also Rider's auto complete is much nicer and faster. So I have considered F#, but it doesn't seem that compelling. Also it seems like the tooling is worse on other platforms.
- jackfoxy 8y agoA friend who uses vim says adding the vim plugin to VS Code makes it very fast. Just passing this on.
- keithnz 8y agowhat don't you find coherent about the desgin of C#? On HN there is far more value in being specific about your particular concerns rather than giving no reasons. There is a lot stuff written on the design of C#.
- pjmlp 8y agoSome examples from an old timer. Currently it has three different ways of using event handlers. The original way, anonymous delegates and lambdas. The semantics of for loop which were fixed around C# 6.0, need to hunt down release notes for this one. Something like .NET Native and .NET Core should have been there on v1.0 instead of tying the runtime to the OS.
- manigandham 8y agoThose are 3 options, and have different nuance. They also were added to the language in later versions but you can use what you what works, I find it hard to see how that makes the language incoherent as if multiple options are bad. What exactly changed with a for loop? The runtime is different from the c# programming language. Originally when this all started, Windows was the focus and Linux/open-source were not an option, so saying it should be there from v1 doesn't fit when there was only one OS that it was planned to run on.
- deleted 8y ago[deleted]
- BuckRogers 8y agoI want to offer my personal counter anecdote from the dissent around here. I recently got into fulltime C#, on purpose, over all other possible options. There's a lot of reasons why. - Industrial strength language with static types. I used Python and JS a lot, I'm passing. - Good tooling support, not every language has this. - Good support in general, backwards compatibility (or side by side support). - Game development possibilities with Unity. - Mobile development with Xamarin. - WebAssembly support already in motion with Blazor. - Not cool, which is exactly what I want in tech. Fads don't belong in tech. Means more job opportunities for me too. - Good serverside platform with .Net Core. - Native on the most popular desktop platform. - With full MS stack, opens up the option of being the sole IT guy at a small to midsize company. It's certainly possible. - Similar to Java, lets me move over with minimal disruption if the job market demands. - Write once, jobs everywhere. I can move back to the smaller area that I'm from. I live in Chicago right now but I've worked in 3 countries, 3 US states & .Net is popular enough in all those locales. - Career stability, less technical churn in the C#/SQL space (and Java). I'm very tired of flavor of the week scripting languages that are many times really used heavily in NYC & SF. - I'm not looking to learn new languages all the time. I'm looking to perfect myself as a consummate professional developer. I want to fully envelop all the things that I think people should, discrete mathematics, design patterns and I think learning new languages is great but there are other ways to become an exceptional programmer. For me, it was C# or Java to base the next leg of my career on. I like the abstraction layer they're on, on a technical basis I think they nailed it. Sometimes newer isn't better. This isn't going to be popular, because a lot of people believe in Javascript and invested heavily there career-wise. I didn't want to and wasm is going to chunk out 25% of the single language fullstack market from Javascript in 5 years anyway and keep taking. Ideally going forward on the web side, I would only do a SPA with Blazor or static pages. That's why I like C#. I'm looking forward to many relatively stable years in my career within the C#/SQL world without the trends. If it collapses, Java is in a similar situation marketwise.
- setquk 8y agoThe core of it is very good but the tooling falls on its arse on large projects and the build toolchain is dire and the update mill and roadmap schizophrenia has not been friendly. Also integration with other MSFT products is eyeball grating (VSTO for example). Been with it since it came out in 2002. I wouldn’t start a new project on the platform in 2018, even .net core.