Evolution of C#
-
I read this very interesting post on C# (partial methods for partial developers[^]) which got me thinking that slowly C# shows signs of some feature bloat - kind of what happened with Java 5. What do you think? Would you like as much "sugar" as possible in you coding coffe? Or, are you more happy with a clean and simple language, like C# is now, but may not be in future revision (Algol 68 anybody?)?
"When you have made evil the means of survival, do not expect men to remain good. Do not expect them to stay moral and lose their lives for the purpose of becoming the fodder of the immoral. Do not expect them to produce, when production is punished and looting rewarded. Do not ask, `Who is destroying the world?' You are."
-Atlas Shrugged, Ayn RandRohde wrote:
C# shows signs of some feature bloat
of course it does. don't forget, C# at least partly is a product.
-
Rohde wrote:
slowly C# shows signs of some feature bloat
IMO, they should have stopped with generics. All this lambda, Linq, var stuff feels like someone's trying to sell me shoes designed originally for aliens that we've never even confirmed exist. Marc
Old fart that I am, I've decided to stop at the .NET2 syntax. I'm comfortable with it, and I don't see any need to rush towards things like MixIns or Linq.
Deja View - the feeling that you've seen this post before.
-
I read this very interesting post on C# (partial methods for partial developers[^]) which got me thinking that slowly C# shows signs of some feature bloat - kind of what happened with Java 5. What do you think? Would you like as much "sugar" as possible in you coding coffe? Or, are you more happy with a clean and simple language, like C# is now, but may not be in future revision (Algol 68 anybody?)?
"When you have made evil the means of survival, do not expect men to remain good. Do not expect them to stay moral and lose their lives for the purpose of becoming the fodder of the immoral. Do not expect them to produce, when production is punished and looting rewarded. Do not ask, `Who is destroying the world?' You are."
-Atlas Shrugged, Ayn RandI agree that C# should be kept as simple as it is in version 2. Rather have the ability to reference a plugin/DLL that would extend VS and .NET to include new features like LINQ, etc... Keep the language clean!
Cheers, Simon > company:: Broken Keyboards Software > blog:: brokenkeyboards > skype :: SimonMStewart > CV :: PDF
-
I read this very interesting post on C# (partial methods for partial developers[^]) which got me thinking that slowly C# shows signs of some feature bloat - kind of what happened with Java 5. What do you think? Would you like as much "sugar" as possible in you coding coffe? Or, are you more happy with a clean and simple language, like C# is now, but may not be in future revision (Algol 68 anybody?)?
"When you have made evil the means of survival, do not expect men to remain good. Do not expect them to stay moral and lose their lives for the purpose of becoming the fodder of the immoral. Do not expect them to produce, when production is punished and looting rewarded. Do not ask, `Who is destroying the world?' You are."
-Atlas Shrugged, Ayn Rand -
Rohde wrote:
C# shows signs of some feature bloat
of course it does. don't forget, C# at least partly is a product.
Oh, I'm aware of that. I guess that's one thing C++ has going for it (although in that case we've got entirely different issues - like the absurd long time it takes for the standard body to push out C++4000 - or what it'll be :) - oh well we can't have it both ways :) Maybe it's time to take up COBOL and be and old grumpy mainframe programmer at a bank, swearing at all the young kids with their fancy OOP, Lambda, LING, etc. :) ).
"When you have made evil the means of survival, do not expect men to remain good. Do not expect them to stay moral and lose their lives for the purpose of becoming the fodder of the immoral. Do not expect them to produce, when production is punished and looting rewarded. Do not ask, `Who is destroying the world?' You are."
-Atlas Shrugged, Ayn Rand -
After all these years, Microsoft has decided to accept my demands to improve C#. Now I can declare all my methods in the .h file and define them in the .cs! Looking forward to my other requests: preprocessor macros and inline x86 ASM. :suss:
to_be_defined wrote:
Now I can declare all my methods in the .h file and define them in the .cs
You could do this in c++ since the language existed! Interesting to see what makes c# guys happy.;P
// "Life is very short and is very fragile also." Yanni
while (I'm_alive)
{
cout<<"I love programming.";
} -
I read this very interesting post on C# (partial methods for partial developers[^]) which got me thinking that slowly C# shows signs of some feature bloat - kind of what happened with Java 5. What do you think? Would you like as much "sugar" as possible in you coding coffe? Or, are you more happy with a clean and simple language, like C# is now, but may not be in future revision (Algol 68 anybody?)?
"When you have made evil the means of survival, do not expect men to remain good. Do not expect them to stay moral and lose their lives for the purpose of becoming the fodder of the immoral. Do not expect them to produce, when production is punished and looting rewarded. Do not ask, `Who is destroying the world?' You are."
-Atlas Shrugged, Ayn RandWell, I kicked a bit when nullable types came in as that just did not seem proper use of the "?" symbol. Generics had their place and made life a bit easier as did many other improvements to the language. Now we have LINQ built in with Lambda expressions, annonymous types and partial classes. When they first hit, I thought, "boy, they are sure bloating all this up, I am happy with the current C# implementation".. Well, after working with the enhancements, I cannot go back. They just keep improving and making my life much easier in the process once after I got use to the new additions. At times I might think that it would be best if they slowed down a bit, but the increase in productivity keeps me wanting more. I doubt their current level of additions will last too much longer. They are really making C# a wonderful language to work with and saving me a lot of code in the process. No complaints here!
Rocky <>< Blog Post: Windows Live Authentication - Easy Stuff! Tech Blog Post: Vista ReadyBoost! Tech Sites: SilverlightCity.com ~ TheSilverlightDirectory.com ~ TheWPFDirectory.com
-
I stopped using C# for my astronomy software project because it is so slow, it takes up huge amounts of runtime memory, and most people do not want to spend 30 minutes downloading and installing windows updates just to run a program.
Exactly! I thought about rewriting one of my small projects with c#, so I had to create a new installer and guess what should be considered(as much as I remember): Service pack2 for XP, Installer 3.x, MDAC 8.x, .net framework 2, .Net framework 3, etc. Just imagine a user waiting for all these softwares to be installed before my small application installs! I totally dismissed updating:-D
// "Life is very short and is very fragile also." Yanni
while (I'm_alive)
{
cout<<"I love programming.";
} -
I read this very interesting post on C# (partial methods for partial developers[^]) which got me thinking that slowly C# shows signs of some feature bloat - kind of what happened with Java 5. What do you think? Would you like as much "sugar" as possible in you coding coffe? Or, are you more happy with a clean and simple language, like C# is now, but may not be in future revision (Algol 68 anybody?)?
"When you have made evil the means of survival, do not expect men to remain good. Do not expect them to stay moral and lose their lives for the purpose of becoming the fodder of the immoral. Do not expect them to produce, when production is punished and looting rewarded. Do not ask, `Who is destroying the world?' You are."
-Atlas Shrugged, Ayn RandAll actively used languages evolve, just as all active programs evolve. Be honest, has there ever been a language where you weren't writing a program one afternoon and thought to yourself, "wouldn't it be nice if...." Perhaps the thought ended there, perhaps it didn't. But that happens to many programmers, and even the writers of these programs. "What if" is the most powerful, and most dangerous statement we all make. It makes Vista out of XP, it makes XP out of ME and 2000, it makes C# from VB&C++&Java, but it also evolves the specifics of any system, it makes Java 5 from Java, it makes OpenGL 3 from OpenGL 2, and OpenGL 2 from OpenGL 1. "What if" means your software you know and love will change, the stuff you write will change, everything you use will change. "What if" is both salvation and damnation to the programming body at large. :) "What if" can move mountains. -- modified at 13:31 Friday 7th September, 2007
_________________________ Asu no koto o ieba, tenjo de nezumi ga warau. Talk about things of tomorrow and the mice in the ceiling laugh. (Japanese Proverb)
-
I read this very interesting post on C# (partial methods for partial developers[^]) which got me thinking that slowly C# shows signs of some feature bloat - kind of what happened with Java 5. What do you think? Would you like as much "sugar" as possible in you coding coffe? Or, are you more happy with a clean and simple language, like C# is now, but may not be in future revision (Algol 68 anybody?)?
"When you have made evil the means of survival, do not expect men to remain good. Do not expect them to stay moral and lose their lives for the purpose of becoming the fodder of the immoral. Do not expect them to produce, when production is punished and looting rewarded. Do not ask, `Who is destroying the world?' You are."
-Atlas Shrugged, Ayn RandI think the C# team is choosing language features carefuly, especially when compared to other .NET languages like VB. I agree that partial methods aren't a "general use" concept and are aimed more at code generation tools rather than people, but I think that they will be an important addition for helping keep the generated code cleaner.
Scott.
—In just two days, tomorrow will be yesterday. [Forum Guidelines] [Articles] [Blog]
-
Old fart that I am, I've decided to stop at the .NET2 syntax. I'm comfortable with it, and I don't see any need to rush towards things like MixIns or Linq.
Deja View - the feeling that you've seen this post before.
I'm still on the fence with Linq, but MixIns (extension methods) can actually be very useful when done properly. They can add a level of semantic "completeness" to a type, by providing the same helper/utility methods that we always write in a more natural way of accessing them...as methods on the type itself. Since you write an extension method in exactly the same way you write a static utility class (the only difference is the
this
keyword before the first (which should be the source data type) parameter) you can still use them as a helper class and make explicit calls to it.Scott.
—In just two days, tomorrow will be yesterday. [Forum Guidelines] [Articles] [Blog]
-
After all these years, Microsoft has decided to accept my demands to improve C#. Now I can declare all my methods in the .h file and define them in the .cs! Looking forward to my other requests: preprocessor macros and inline x86 ASM. :suss:
to_be_defined wrote:
Now I can declare all my methods in the .h file and define them in the .cs!
Not at all the intent behind partial methods. Depending on how the partial method is declared, it might not even be compiled into the final assembly. So it really isn't like a .h file.
Scott.
—In just two days, tomorrow will be yesterday. [Forum Guidelines] [Articles] [Blog]
-
I agree that C# should be kept as simple as it is in version 2. Rather have the ability to reference a plugin/DLL that would extend VS and .NET to include new features like LINQ, etc... Keep the language clean!
Cheers, Simon > company:: Broken Keyboards Software > blog:: brokenkeyboards > skype :: SimonMStewart > CV :: PDF
That's kind of what's happening. The .NET 3.0 and 3.5 versions of the framework are built on top of the .NET 2.0 CLR. The changes/additions in 3.0 and 3.5 are an additional set of libraries that sit on top of (and outside) the 2.0 CLR. The only changes to the 2.0 bits are service packs that get installed (only in the case of .NET 3.5). I think the bigger issue has been the choice of "version" numbers and the confusion it has/is causing.
Scott.
—In just two days, tomorrow will be yesterday. [Forum Guidelines] [Articles] [Blog]
-
All actively used languages evolve, just as all active programs evolve. Be honest, has there ever been a language where you weren't writing a program one afternoon and thought to yourself, "wouldn't it be nice if...." Perhaps the thought ended there, perhaps it didn't. But that happens to many programmers, and even the writers of these programs. "What if" is the most powerful, and most dangerous statement we all make. It makes Vista out of XP, it makes XP out of ME and 2000, it makes C# from VB&C++&Java, but it also evolves the specifics of any system, it makes Java 5 from Java, it makes OpenGL 3 from OpenGL 2, and OpenGL 2 from OpenGL 1. "What if" means your software you know and love will change, the stuff you write will change, everything you use will change. "What if" is both salvation and damnation to the programming body at large. :) "What if" can move mountains. -- modified at 13:31 Friday 7th September, 2007
_________________________ Asu no koto o ieba, tenjo de nezumi ga warau. Talk about things of tomorrow and the mice in the ceiling laugh. (Japanese Proverb)
El Corazon wrote:
"What if" can move mountains.
Let me test it: "What if Microsoft stops .Net?", is it still there? Another test: "What if that girl...?" . . . Damn it, nothing happens. Could you please change your "What if" with mine, it's not working for me.:-D
// "Life is very short and is very fragile also." Yanni
while (I'm_alive)
{
cout<<"I love programming.";
} -
I stopped using C# for my astronomy software project because it is so slow, it takes up huge amounts of runtime memory, and most people do not want to spend 30 minutes downloading and installing windows updates just to run a program.
INITCOMMONCONTROLSEX wrote:
because it is so slow
Since it's ultimately an interpreted language, it will always be slower than C/C++. However, I think for the majority of .NET applications the slowness comes not from the JIT process but from poorly written code. (Not applying that to your code at all, just making a general statement.)
INITCOMMONCONTROLSEX wrote:
it takes up huge amounts of runtime memory
The amount of memory used is misleading, particularly if you are using Task Manager as the gauge. When a .NET executable starts, it receives a chunk of memory from the OS to use as the managed heap. From that point on, the .NET runtime manages the memory use. Task Manager reports the amount of OS memory allocated, which can change, but is almost always larger than the actual working set of the application. If the OS starts getting memroy starved, the runtime will release memory as needed.
INITCOMMONCONTROLSEX wrote:
most people do not want to spend 30 minutes downloading and installing windows updates just to run a program
At this point, most people already have those updates or are used to having to download them from/for other applications and Windows updates. Now that Vista (and later OSs) will have the .NET Framework pre-installed, this alleviates a lot of the download time.
Scott.
—In just two days, tomorrow will be yesterday. [Forum Guidelines] [Articles] [Blog]
-
Exactly! I thought about rewriting one of my small projects with c#, so I had to create a new installer and guess what should be considered(as much as I remember): Service pack2 for XP, Installer 3.x, MDAC 8.x, .net framework 2, .Net framework 3, etc. Just imagine a user waiting for all these softwares to be installed before my small application installs! I totally dismissed updating:-D
// "Life is very short and is very fragile also." Yanni
while (I'm_alive)
{
cout<<"I love programming.";
}Hamed Mosavi wrote:
Service pack2 for XP, Installer 3.x, MDAC 8.x, .net framework 2, .Net framework 3, etc.
A lot of this is relative to the target operating system as well. Vista already comes with pretty much everything you need. There is also not a requirement that your installer bundle all of the prerequisites; sometimes it is acceptable to simply point out the fact that a particular patch/version is needed or the installer can offer to download it. At this point, most of the components you mention are already going to be on an end-users computer through Windows Update or installing some other piece of software.
Scott.
—In just two days, tomorrow will be yesterday. [Forum Guidelines] [Articles] [Blog]
-
All actively used languages evolve, just as all active programs evolve. Be honest, has there ever been a language where you weren't writing a program one afternoon and thought to yourself, "wouldn't it be nice if...." Perhaps the thought ended there, perhaps it didn't. But that happens to many programmers, and even the writers of these programs. "What if" is the most powerful, and most dangerous statement we all make. It makes Vista out of XP, it makes XP out of ME and 2000, it makes C# from VB&C++&Java, but it also evolves the specifics of any system, it makes Java 5 from Java, it makes OpenGL 3 from OpenGL 2, and OpenGL 2 from OpenGL 1. "What if" means your software you know and love will change, the stuff you write will change, everything you use will change. "What if" is both salvation and damnation to the programming body at large. :) "What if" can move mountains. -- modified at 13:31 Friday 7th September, 2007
_________________________ Asu no koto o ieba, tenjo de nezumi ga warau. Talk about things of tomorrow and the mice in the ceiling laugh. (Japanese Proverb)
Interesting. I have no idea who said it, but "Necessity is the mother of invention." During the overall discussion, I notice that liking or disliking a language feature seems a function of one particular coding habits. For example, personally, I have several "I don't like that, so I am not using it" code habit. Here's a quick list: - I don't like friend in C++. I am not comfortable with its use because 9 times out of 10 it is being used by a developer who is being lazy in their design and is not willing to put the effort in to refactor the design. - I don't like internal in C#, for a similar reason, although at least the scope of the keyword is clearly restricted to the assembly and namespace. Mind you, I have written some class-factories which use an internal specifier on the constructors. (Yup, I'm a hypocrite! ;) ) I don't know if I will like partial methods or not. I am concerned with the implication that a method exists, but gets compiled out completely simply because it does not get defined beyond the prototype. Of course, having said that ASSERT is a very useful tool in C++. Of course, what I really miss in C# from C++ is the ability to defined a template class. I realize I can write Reflector/Emit code to generate these things, but that pushes the template work back to me. In C++ I made heavy use of the templates in order to implement some general boiler plate. Every time I have a typed Collection in C#, or managed a COM pointer, I have desperately wished for the template class capabilities. j.
-
INITCOMMONCONTROLSEX wrote:
because it is so slow
Since it's ultimately an interpreted language, it will always be slower than C/C++. However, I think for the majority of .NET applications the slowness comes not from the JIT process but from poorly written code. (Not applying that to your code at all, just making a general statement.)
INITCOMMONCONTROLSEX wrote:
it takes up huge amounts of runtime memory
The amount of memory used is misleading, particularly if you are using Task Manager as the gauge. When a .NET executable starts, it receives a chunk of memory from the OS to use as the managed heap. From that point on, the .NET runtime manages the memory use. Task Manager reports the amount of OS memory allocated, which can change, but is almost always larger than the actual working set of the application. If the OS starts getting memroy starved, the runtime will release memory as needed.
INITCOMMONCONTROLSEX wrote:
most people do not want to spend 30 minutes downloading and installing windows updates just to run a program
At this point, most people already have those updates or are used to having to download them from/for other applications and Windows updates. Now that Vista (and later OSs) will have the .NET Framework pre-installed, this alleviates a lot of the download time.
Scott.
—In just two days, tomorrow will be yesterday. [Forum Guidelines] [Articles] [Blog]
.Net may be great for lots of things, but for what I am doing it does not seem to be. I am writing a solar system simulator similar to the one on the NASA page, only it will draw the planets and their moons to the scale they will appear on the user's telescope and camera equipment. C++ and OpenGL in my opinion work much better than .Net/Managed DirectX because of all the number crunching involved. And I didn't know that about memory usage. I always used Task manager.
-
.Net may be great for lots of things, but for what I am doing it does not seem to be. I am writing a solar system simulator similar to the one on the NASA page, only it will draw the planets and their moons to the scale they will appear on the user's telescope and camera equipment. C++ and OpenGL in my opinion work much better than .Net/Managed DirectX because of all the number crunching involved. And I didn't know that about memory usage. I always used Task manager.
INITCOMMONCONTROLSEX wrote:
C++ and OpenGL in my opinion work much better than .Net/Managed DirectX because of all the number crunching involved.
Absolutely. There are still certain things that unmaged code will be better at, particularly in heavy scientific and math applications like that.
INITCOMMONCONTROLSEX wrote:
And I didn't know that about memory usage. I always used Task manager.
Unfortunately, it seems that most people don't know about the issues around using Task Manager to monitor memory for .NET apps. There are some performance counters that can be used to measure this information.
Scott.
—In just two days, tomorrow will be yesterday. [Forum Guidelines] [Articles] [Blog]
-
I read this very interesting post on C# (partial methods for partial developers[^]) which got me thinking that slowly C# shows signs of some feature bloat - kind of what happened with Java 5. What do you think? Would you like as much "sugar" as possible in you coding coffe? Or, are you more happy with a clean and simple language, like C# is now, but may not be in future revision (Algol 68 anybody?)?
"When you have made evil the means of survival, do not expect men to remain good. Do not expect them to stay moral and lose their lives for the purpose of becoming the fodder of the immoral. Do not expect them to produce, when production is punished and looting rewarded. Do not ask, `Who is destroying the world?' You are."
-Atlas Shrugged, Ayn RandPerhaps, but partial classes should have been there from the beginning, that way we wouldn't have the
partial
keyword anyway. It's still pretty silly, it's just a needless clue to the compiler, all classes should bepartial
by default. After a language evolves to a certain point it needs to morph into a new language, e.g. C -- C++ -- C#, I like C#, but I look forward to the next language too.