In love with C#
-
I've just starting doing some projects with C#. I've done some stuff previously but those were some casual utilities. I've just stepping into some real dotnet stuff. C# :Wow.. what a cool thing on earth. I'm liking it so much I might start talking in C#. The love for C++ isn't fading but C# is pure glamour. I'm yet to dive deep into the lang, but even at these depths, it's so much nicer than my experiences with other languages. C# is one of the best creations of MS! :rose: :love: :rose:
Starting to think people post kid pics in their profiles because that was the last time they were cute - Jeremy.
C# is okay, the framework makes a large number of things quite easy but it does have it's flaws like most other things. Outside of work I don't tend to use it, instead preferring things like C++, Go, Python and I'm quite getting into Node.js now. I have done some C# in my own time using Mono though.
-
I've just starting doing some projects with C#. I've done some stuff previously but those were some casual utilities. I've just stepping into some real dotnet stuff. C# :Wow.. what a cool thing on earth. I'm liking it so much I might start talking in C#. The love for C++ isn't fading but C# is pure glamour. I'm yet to dive deep into the lang, but even at these depths, it's so much nicer than my experiences with other languages. C# is one of the best creations of MS! :rose: :love: :rose:
Starting to think people post kid pics in their profiles because that was the last time they were cute - Jeremy.
To answer the original question: Love: - Clean, very readable and minimalistic syntax - C with object orientation the way it should have been done in C++ (backwards compatibility made C++ extremely ugly and cluttered in my opinion). - The type system in general. Admittedly a .NET feature, but integrates nicely with C#. - Reflection, generics, namespaces, lambdas and a lot of other stuff. - The ability to perform like C++ using "unsafe" and "unchecked" blocks, and possibly ngen when needed (almost never happens, but nice to know its there). Hate: - Inability to write methods in methods. The original docs say "we don't compile code onto the stack", which is ridiculous. It's a matter of scope and visibility, not where it gets compiled (of course not the stack). I don't want to clutter class namespace with small helpers only used in one method - presumably using local variables. - Inability to declare variables outside of getter and setter blocks in properties. I don't want shadow members in class namespace - too easy to inadvertently use the shadow member instead of the property. Those variables would work exactly like class members but would be invisible to the rest of the class. Maybe with a special keyword to make it clear that they aren't on the stack, but persist with the instance (or forever, if the property is static).
-
Enjoy your journey :thumbsup: I started on C# just over five years ago and have never looked back since - it is the most elegant programming language I have used so far.
“That which can be asserted without evidence, can be dismissed without evidence.”
― Christopher Hitchens
In many respects c# can be considered to be proprietary 'Microsoft Java'. As Java is a respectable language, the same can be said about c#, but as Java's roots are in c, there are still some hang-ups from that far-off time. The one I really hate is the switch statement. vb's select case statement is much better. Whoever heard of jump statements? Yuk! Nowadays we all believe in goto-free programming. The one thing I miss in all these modern languages is Algol 60's wonderful feature of being able to define arrays with ranges of indices from, say, -n to +n. This can be useful in all kinds of situations.
-
Meh. I've seen worse languages than C#, but there is really nothing exciting about it. Good enough for developing boring enterprise applications, I guess.
-
I've just starting doing some projects with C#. I've done some stuff previously but those were some casual utilities. I've just stepping into some real dotnet stuff. C# :Wow.. what a cool thing on earth. I'm liking it so much I might start talking in C#. The love for C++ isn't fading but C# is pure glamour. I'm yet to dive deep into the lang, but even at these depths, it's so much nicer than my experiences with other languages. C# is one of the best creations of MS! :rose: :love: :rose:
Starting to think people post kid pics in their profiles because that was the last time they were cute - Jeremy.
Man, I love LINQ! In VB its ugly, but in C# its beautiful! ;P
-
I've just starting doing some projects with C#. I've done some stuff previously but those were some casual utilities. I've just stepping into some real dotnet stuff. C# :Wow.. what a cool thing on earth. I'm liking it so much I might start talking in C#. The love for C++ isn't fading but C# is pure glamour. I'm yet to dive deep into the lang, but even at these depths, it's so much nicer than my experiences with other languages. C# is one of the best creations of MS! :rose: :love: :rose:
Starting to think people post kid pics in their profiles because that was the last time they were cute - Jeremy.
Ridiculous C# still has no virtual static methods. Even .NET has no such capability, what's suxx. C# cannot return multiple values from method. C# has very limited metaprogramming, it's a trend of the next decade. C#'s interfaces cannot be partly implemented inside themselves, even if method access no any fields. C# has no slices, killer feature of the D language. C# has no 'with' operator which reduces insignificant code. C# has ugly type cast syntax, which you have to use everywhere. In C# function cannot be overriden unless it's marked as virtual. LINQ syntax is also ugly. 'Switch' operator is the same primitive like you write on C in 70th! Seems, MS monkeys are happy with it. This list is a way far from completion, so sometime I think to leave this ridiculous student homework like ".NET" and use something more modern like 'D'.
-
I've just starting doing some projects with C#. I've done some stuff previously but those were some casual utilities. I've just stepping into some real dotnet stuff. C# :Wow.. what a cool thing on earth. I'm liking it so much I might start talking in C#. The love for C++ isn't fading but C# is pure glamour. I'm yet to dive deep into the lang, but even at these depths, it's so much nicer than my experiences with other languages. C# is one of the best creations of MS! :rose: :love: :rose:
Starting to think people post kid pics in their profiles because that was the last time they were cute - Jeremy.
The only thing I'd change would be to make objects and strings not nullable.
int i1 = 5;
int i2? = null;String s1 = '';
String s1? = null;Button b1 = new Button();
Button? b1 = null; -
I've just starting doing some projects with C#. I've done some stuff previously but those were some casual utilities. I've just stepping into some real dotnet stuff. C# :Wow.. what a cool thing on earth. I'm liking it so much I might start talking in C#. The love for C++ isn't fading but C# is pure glamour. I'm yet to dive deep into the lang, but even at these depths, it's so much nicer than my experiences with other languages. C# is one of the best creations of MS! :rose: :love: :rose:
Starting to think people post kid pics in their profiles because that was the last time they were cute - Jeremy.
I'll never regret changing our default language from VB to C#! Love the syntax. Minor grudge: When looking at a pile of '}' having to add an 'else' it's difficult to navigate to the right one. Really hate: It's Case Sensitive! Which might be usefull for computer generated code, but makes no sense at all when man made. However, todays IDE's compensate retty well for that evil...
-
Ridiculous C# still has no virtual static methods. Even .NET has no such capability, what's suxx. C# cannot return multiple values from method. C# has very limited metaprogramming, it's a trend of the next decade. C#'s interfaces cannot be partly implemented inside themselves, even if method access no any fields. C# has no slices, killer feature of the D language. C# has no 'with' operator which reduces insignificant code. C# has ugly type cast syntax, which you have to use everywhere. In C# function cannot be overriden unless it's marked as virtual. LINQ syntax is also ugly. 'Switch' operator is the same primitive like you write on C in 70th! Seems, MS monkeys are happy with it. This list is a way far from completion, so sometime I think to leave this ridiculous student homework like ".NET" and use something more modern like 'D'.
Thornik wrote:
Ridiculous C# still has no virtual static methods. Even .NET has no such capability, what's suxx.
I'm positive that I wouldn't call that "ridiculous". I'm not even sure I'd call it a shortcoming. I'll admit though, that I can't think of any problem I've ever had for which this would have been a solution.
Thornik wrote:
C# cannot return multiple values from method.
Having worked with Perl, I don't see this as a particular disadvantage, either. Retrun a struct; you'll get roughly the same effect.
Thornik wrote:
C# has very limited metaprogramming, it's a trend of the next decade.
Another "shortcoming" that has never affected my ability to do whatever I want in the language. However, I'm unlikely to be programming when the next decade rolls around in 2021, so I guess I somewhat non-chalant about this one...
Thornik wrote:
C#'s interfaces cannot be partly implemented inside themselves, even if method access no any fields.
That is rather the point, isn't it? It's an interface, not an implmentation. If you want a partial implementation, use an abstract class.
Thornik wrote:
C# has no slices, killer feature of the D language.
C# has no 'with' operator which reduces insignificant code.OK, I'll give you those.
Thornik wrote:
C# has ugly type cast syntax, which you have to use everywhere.
No uglier than any other language I've ever worked with, though, and quite a bit simpler and obvious than some. Try it in Ada sometime.
Thornik wrote:
In C# function cannot be overriden unless it's marked as virtual.
Not quite true. The "new" keyword will accomplish much the same task, albeit in a manner not quite identical.
Thornik wrote:
LINQ syntax is also ugly.
Beauty is in the eye of the beholder. I love the LINQ syntax.
Thornik wrote:
'Switch' operator is the same primitive like you write on C in 70th! Seems, MS monkeys are happy with it.
I have to admit, I don't have much of a problem with it, either, other than the r
-
Have you used it yourself? I'd be very interested in reading about any hands-on experience with it. I know I could look for reviews elsewhere but you get a different perspective from someone who works at the coalface, so to speak.
"I do not have to forgive my enemies, I have had them all shot." — Ramón Maria Narváez (1800-68).
MonoDevelop was the name I was actually looking for, as the response to my original post has stated. No, I have not used it personally, though I have been considering taking a look at it. It does have limitations. But you can go to the Mono Web site and look up the implement features as well as the features which are unsupported.
djj55: Nice but may have a permission problem Pete O'Hanlon: He has my permission to run it.
-
Have you used it yourself? I'd be very interested in reading about any hands-on experience with it. I know I could look for reviews elsewhere but you get a different perspective from someone who works at the coalface, so to speak.
"I do not have to forgive my enemies, I have had them all shot." — Ramón Maria Narváez (1800-68).
I use it on linux. I don't do a lot of visual/interface stuff, so it works well for my needs. It doesn't have a visual web designer [yet] and the forms are gtk#. Overall it's a good product I think. If you are used to , and expecting, VS you may be dissapointed. If you just want to code c# (or .net) then you will like it :D
If it moves, compile it
-
In many respects c# can be considered to be proprietary 'Microsoft Java'. As Java is a respectable language, the same can be said about c#, but as Java's roots are in c, there are still some hang-ups from that far-off time. The one I really hate is the switch statement. vb's select case statement is much better. Whoever heard of jump statements? Yuk! Nowadays we all believe in goto-free programming. The one thing I miss in all these modern languages is Algol 60's wonderful feature of being able to define arrays with ranges of indices from, say, -n to +n. This can be useful in all kinds of situations.
I would disagree about C# being Microsoft's Java. They have their similarities, and Java was a jumping point, but C# has an entirely different philosophy in a lot of areas. For example, the way the language designers think about exceptions is wildly different. C# designers are also open to breaking the rules of OO to create a more powerful language. Java is the OO language, so the designers follow the rules to a T the vast majority of the time. The list could go on, but really I like both languages for different things. The majority of the time I stick with C# (I'm a fanboy) but I don't think it's a full replacement for Java in every situation.
-
I've just starting doing some projects with C#. I've done some stuff previously but those were some casual utilities. I've just stepping into some real dotnet stuff. C# :Wow.. what a cool thing on earth. I'm liking it so much I might start talking in C#. The love for C++ isn't fading but C# is pure glamour. I'm yet to dive deep into the lang, but even at these depths, it's so much nicer than my experiences with other languages. C# is one of the best creations of MS! :rose: :love: :rose:
Starting to think people post kid pics in their profiles because that was the last time they were cute - Jeremy.
The designers of C# have irritated me in a number of ways: 1. I don't like the fact that they eliminated drop-through on case statements. It is irritating to have to code work-arounds for situations where one or more case statements can execute the same code. 2. The fact that they did not provide the ability to create static libraries that could be included at compile time and thus eliminate the need for having to ship umpteen dlls with your code. 3. This is more about .NET rather than C#, but I think it applies: With every version of .NET they take something away. In .Net V4 they removed the ability to catch memory exceptions...!!!##@^! 4. This is more about .NET rather than C#, but I think it applies: LINQ is not part of the framework! It is a binary lump that you can't step through in the debugger. Stop pretending it is part of the framework and part of C#
-
I'd like to split that in two parts... I love C# and I love .NET Framework. - I love C# because it is terse yet elegant, like C, and - in contrast with C++ - has very little syntactic weirdness going on to support object-orientation. I especially like recent additions such as generics and lambda expressions, that while introducing some syntactic weirdness does so in a very careful and minimalistic way. - I love the .NET Framework for all the stuff I don't have to do. My first project in C# was an industrial control system using multi-threading, serial ports and TCP services. I was quite shocked when I realized I didn't have to implement any of that stuff myself. When I was about to implement an event queue to pass machine events between threads, I found the Queue class and just had to laugh... As for the VB:ers commenting here... you have the .NET Framework as well, and what you write will be compiled into the same MSIL or machine code. And what is beautiful in a language is purely a matter of taste. So I wouldn't even think of looking down on you. After all, I've spent over 10 years in earlier versions of VB, and although I come from C and prefer strong typing, it isn't THAT bad (the old versions, that is - I have spent very little time in VB.NET, but from what I understand, it is nowadays as strongly typed as you want it to be - making it better, in my opinion). And... I'm VERY jealous of one thing. Using C# in ASP.NET (or Razor), you're in a method body, and can't write other methods or functions. I know, views should be lightweight, but I prefer writing a four-line method over repeating the code ten times, and sometimes the task is too trivial and implementation-dependent that it doesn't belong in the controller. In VB, you can do that... :( If ony I could stand the syntax... but again, that's a matter of taste... :)
There are a few ways to get around Razor methods - partials, @helper sections, static helper classes, or extension methods - depending on what exactly you're trying to do. One thing I strongly dislike about Razor is the lack of documentation. MSDN works great navigating the C# class library, but the Razor reference just isn't there yet. I have to find method and syntax docs on offsite personal blogs. There are other things about Razor that cause me daily pain, but I don't want to get too far off topic here. ;)
-
There are a few ways to get around Razor methods - partials, @helper sections, static helper classes, or extension methods - depending on what exactly you're trying to do. One thing I strongly dislike about Razor is the lack of documentation. MSDN works great navigating the C# class library, but the Razor reference just isn't there yet. I have to find method and syntax docs on offsite personal blogs. There are other things about Razor that cause me daily pain, but I don't want to get too far off topic here. ;)
-
I would disagree about C# being Microsoft's Java. They have their similarities, and Java was a jumping point, but C# has an entirely different philosophy in a lot of areas. For example, the way the language designers think about exceptions is wildly different. C# designers are also open to breaking the rules of OO to create a more powerful language. Java is the OO language, so the designers follow the rules to a T the vast majority of the time. The list could go on, but really I like both languages for different things. The majority of the time I stick with C# (I'm a fanboy) but I don't think it's a full replacement for Java in every situation.
The other major difference is the JVM is a giant turd in the punch bowl. Slow/versioning issues/stability issues/etc.
Pete O'Hanlon wrote:
I'm looking forward to it; primarily because it should wipe that smug grin off Steve Jobs face.
CPallini wrote:
You cannot argue with agile people so just take the extreme approach and shoot him. :Smile:
-
I have an iMac as well and from what I read, MS's Office for Mac is a very good product. Now, if only MS could port VS to run on iMac as well then I'm sure it would be superior to Apple's Xcode and Objective-C. If only they could put VS/C# on the Mac... Until then, if ever. :((
"I do not have to forgive my enemies, I have had them all shot." — Ramón Maria Narváez (1800-68).
-
I've just starting doing some projects with C#. I've done some stuff previously but those were some casual utilities. I've just stepping into some real dotnet stuff. C# :Wow.. what a cool thing on earth. I'm liking it so much I might start talking in C#. The love for C++ isn't fading but C# is pure glamour. I'm yet to dive deep into the lang, but even at these depths, it's so much nicer than my experiences with other languages. C# is one of the best creations of MS! :rose: :love: :rose:
Starting to think people post kid pics in their profiles because that was the last time they were cute - Jeremy.
The nature of the programming I've done almost my whole career requires the power and control of C++ (actually, many things I've worked on would benefit from assembly, but the time/cost benefit isn't there.) That said, I do some work in .NET and find that I like it all they up until it turns on me and I can't get that one last thing to work right without jumping through hoops. As with any language/framework, it isn't how well it helps you start a project, but how well it helps you finish it. When you hit the wall in .NET, you hit the wall and getting around it can be very painful, time consuming and unstable. Then there's .NET Compact Framework.
-
To answer the original question: Love: - Clean, very readable and minimalistic syntax - C with object orientation the way it should have been done in C++ (backwards compatibility made C++ extremely ugly and cluttered in my opinion). - The type system in general. Admittedly a .NET feature, but integrates nicely with C#. - Reflection, generics, namespaces, lambdas and a lot of other stuff. - The ability to perform like C++ using "unsafe" and "unchecked" blocks, and possibly ngen when needed (almost never happens, but nice to know its there). Hate: - Inability to write methods in methods. The original docs say "we don't compile code onto the stack", which is ridiculous. It's a matter of scope and visibility, not where it gets compiled (of course not the stack). I don't want to clutter class namespace with small helpers only used in one method - presumably using local variables. - Inability to declare variables outside of getter and setter blocks in properties. I don't want shadow members in class namespace - too easy to inadvertently use the shadow member instead of the property. Those variables would work exactly like class members but would be invisible to the rest of the class. Maybe with a special keyword to make it clear that they aren't on the stack, but persist with the instance (or forever, if the property is static).
PeterTheSwede wrote:
- Inability to write methods in methods. The original docs say "we don't compile code onto the stack", which is ridiculous. It's a matter of scope and visibility, not where it gets compiled (of course not the stack). I don't want to clutter class namespace with small helpers only used in one method - presumably using local variables.
Lambdas might be useful here?
-
PeterTheSwede wrote:
- Inability to write methods in methods. The original docs say "we don't compile code onto the stack", which is ridiculous. It's a matter of scope and visibility, not where it gets compiled (of course not the stack). I don't want to clutter class namespace with small helpers only used in one method - presumably using local variables.
Lambdas might be useful here?