In love with C#
-
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?
-
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 have used Basic and Visual Basic, since Basic , VB6 and .net. The best of VB is that uses English words, and C#, and when developing for Desktop is easier and faster than c#, I'm developing in C# but just 'cause is a requisite here, 'cause a lot of programmers learns Jave in MExican schools. I have used more than 500 lines of code than in VB. And intellisense support is better in VB. But finally the 2 languages can make the same, they are compiled in CLR.
-
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 like c# to an extent. likes: * its kinda like c, i like c. i can use my knowledge of c to divine ways of doing things in c# to an extent. * it's managed-ness makes intelisense work nicer...to an extent (then it starts to drive you insane to the point that you turn it off, like the passive aggressive spellchecker on your browser. dammit i will add that function later, I'm working on this! stop with the judgmental squiglies!) hates: * JUST LET ME MANAGE MY OWN MEMORY PLEEAASSEE! not to long ago we hit a wall where we needed to use 3.5 over 4.0 framework for compatibility with a linux server, but we needed bigINT to manage really big bits for integers, with memory management i could have used malloc to allocate the appropriate bits, then implemented the arithmatic using bitops on that memory block creating a bigInt class. but not being able to malloc that was impossible.not to mention the lack of control over when an object is unloaded (making the destructor nearly useless) * the need to use a third party obfuscator. its generally true that machine code is readable for code compiled in c++ or most any language compiling to machine code, but that requires someone well versed in machine code...CLI can be read by a decently well versed 3rd grader. where you gonna put that decryption key now huh? if you work in any language that compiles to CLI, you have open sourced your software. * everything throws errors when it fails! maybe i dont know if the website is available before connecting, if i dont want my program to crash i have to enclose it in a try catch, opposed to how c does it, return -1 and set stderr, i can just check for -1 and check stderr for the reason if i care. and maybe try catch wouldn't be such an issue if it weren't so frikken slow, my program has the choice of crash or put try catch everywhere, and just about everything throws errors for the stupidest reasons and if you have a large section in a try catch block, enjoy only getting half way through the block so you have to litter your code with try catch for any significant activity slowing it down ridiculously. * their general "we know what's best for you" approach that permeates the entire language. these arent minor things that can be fixed but underlie fundamental design decisions in the language. c# is great up to the point that you are doing something microsoft didnt consider you doing, then its just a big "NOPE!"
-
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:
-
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.
Agree. I also noted that VB's case statement is better. Also why keep the silly requirement for the break statement. There are times I miss the ability to select the ranges of indices, which use to be able to do in pre .NET VB. However, I try to avoid the use of indices.
-
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).
Oh I can just see how excited Apple would be once everybody starts using the Microsoft Framework for apps that run on Apple. The look and feel would be Microsoft and not Apple, and Apple would have to make thier own OS UI compatible. Then there would be less reason to pay the permium for Apple computers. Only advantage would be the sexy hardware designs.
-
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 have used MonoDevelop a bit to Unity scripts in C#. I prefer it to XCode and Objective-C any day of the week. I can't really compare it with VS since 90% of what I do in VS is native C++ and the 10% of C# I do has to interface with the native C++ so there is always that hassle. Plus, what little I've done in Mono has been small programs which are always more fun and elegant than the big legacy monsters I deal with in VS / C++. What I can say is that Mono is simple and intuitive and seems to just work.
-
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 OK as a language but the build env is really crap. MS haven't thought this one out at all. It is painful to maintain, painful to use and painful to deploy. When you work on a multiproject solution, it copies the DLLs from one project to another. If there are 50 projects, you could get 50 copies of the same DLL! Somewhere along the line, they get out of sync and you can't get the system back in sync without deleting every single bin and obj directory in the solution. You need to modify some flags to stop the DLLs copying all over the place and remind all developers that they need to do this to all new projects otherwise the mess starts all over again. If you work on libraries and have to support multiple compilers, it gets even worse. You can put the libraries in specific places but not the objects. So when you shift from say VS8 to VS9, VS9 looks at the objects, thinks they are up to date and doesn't bother building them, then says that the link failed. You actually need to modify the csproj file to get around this. Why do reference libraries in C# have to be on absolute paths. Person A sets up the development env on P:\Sally\Medical\Projects and checks in the code. If you don't have exactly the same file structure, you are completely stuffed: nothing builds! You can get around it with subst but that is another story. Person B sets up the development env on C: drive. If you aren't an administrator, you don't have access to the C: drive so you're completely stuffed too. Why do so many programmers think everyone is an administrator? Build a C# program - comes to 76K - wow that is really tiny. Try installing it on XP. It falls over - yes, you've guessed it, you need 20 to 30Mb of .net framework otherwise nothing works. Deployment using external DLLs is a real pain in C#. The bin directory contains all the C# DLLs but not any of the external DLLs that they use. When you deliver a system, you won't know what DLLs are missing until you call specific functions. By then you may be on a client site with no access to you dev env. Most C# programmers (even so called experienced ones) haven't experienced these pains so they don't know what it is like to really work with C#.
-
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...
Put your cursor on the }, press ctrl ] and it will take you to the matching one.
-
C# is not perfect, and the framework is not perfect, but I think that the teams that work on both Visual Studio and the languages, in particular the C# team do an excellent job. There are still areas that I think should have been improved in C# a long time ago, some of which are in Visual Basic. 1) In VB you can embed XML. 2) The case statement can be much more powerful. It is something that should be used sparingly, but that said, if it is used sparingly, then it should be reasonable to extend its capability. 3) Should be able to tag properties as Dependency Properties, and not have to do a full implementation unless you need to do something special. So on and so on.
At the risk of accusing you of never having decompiled anything, they don't do the same thing. VB's is more flexible, but functionally they serve different purposes, even if they can accomplish the same thing. Also, VB is dangerous. Two in 10 VB devs I've met are aware of option strict and out of those at least one advises against using it.