Posted By: SecretSoftware | Jan 18th, 2007 @ 6:23 AM
page 1 of 3
Comments: 59 | Views: 20277
SecretSoftware
SecretSoftware
Code to live, but Live to code.
What do you think is missing from 3.0 and should be in 4.0? What are your expectations for C# 4.0?

It should be interesting to see what others think about what should be in 4.0 and what is missing that would make life easier for devs.


Thanks
Chadk
Chadk
excuse me - do you has a flavor?
SecretSoftware wrote:
What do you think is missing from 3.0 and should be in 4.0? What are your expectations for C# 4.0?

It should be interesting to see what others think about what should be in 4.0 and what is missing that would make life easier for devs.


Thanks

Wow wow, calm down.
3.0 recently shipped. Let see what good stuff is comming to us in 3.5 first, shall we? Big Smile
Harlequin
Harlequin
http://twitter.c​om/TrueHarlequin
SecretSoftware wrote:
What do you think is missing from 3.0 and should be in 4.0? What are your expectations for C# 4.0?


No more starting threads like this unless you give input of your own on your own question Cool
pathfinder
pathfinder
Hard work never killed anybody, but why take a chance?
SecretSoftware wrote:
What do you think is missing from 3.0 and should be in 4.0? What are your expectations for C# 4.0?

It should be interesting to see what others think about what should be in 4.0 and what is missing that would make life easier for devs.


Thanks


A cure for cancer and  deadly diseases. 
Hopefully they will still allow for side-by-side installations of frameworks. Why can't they let a platform mature in any meaningful way? Nothing ever feels "finished".
Xaero_Vincent
Xaero_Vincent
Sexy me

Yea, Microsoft should slow down .NET development. People aren't having enough time to learn the new features and port their software.

.NET is only getting more baggage with each release. Eventually, it will be as bad as Java with tons of deprecated classes, methods, etc.

Microsoft should honor .NET 3.0 durning the life of Vista then support 4.0 in Vienna, three years down the road.

Harlequin
Harlequin
http://twitter.c​om/TrueHarlequin
SecretSoftware wrote:

2) I want to do this :

s = new Socket (), rather than Socket s = new Socket (),

I know var kinda does this,but I want a variable to hold multiple types  in the course of execution. so I can set s = null, and assign it to a new instance of another object


This doesn't sound like very type safe code. Why would you want to do this? We're in OO land now, this isn't PHP or ASP.
littleguru
littleguru
<3 Seattle
SecretSoftware wrote:
2) I want to do this :

s = new Socket (), rather than Socket s = new Socket (),

I know var kinda does this,but I want a variable to hold multiple types  in the course of execution. so I can set s = null, and assign it to a new instance of another object


aaaah! I can already see the mess. s being Socket then Form then Foo then DateTime... Please no!
littleguru
littleguru
<3 Seattle
SecretSoftware wrote:
Basically integrate .NET with Directx libraries, so you can use them natively in the .NET framework and leverage these right there into your applications.


Isn't that WPF?
littleguru
littleguru
<3 Seattle
SecretSoftware wrote:
12) Applications should be able to do self diagnostics and also be able to check their integrity on their own. The CLR should refuse to run applications whose compile time hash is different than their pre-runtime hash, or even during runtime hash. Find a way to make the application self-aware of its integrity as part of the services provided by the CLR. the Strongname while good, its still a mess because malicous hackers can sign the assembly themselves and the modify it.


Is already there and called "strong name".
Harlequin
Harlequin
http://twitter.c​om/TrueHarlequin
littleguru wrote:

SecretSoftware wrote: Basically integrate .NET with Directx libraries, so you can use them natively in the .NET framework and leverage these right there into your applications.

Isn't that WPF?


Unless he means being able to make a new Bitmap(500,500) and use DirectX to draw stuff onto it. Would be nice to be able to make 3D pie charts and stuff with lighting effects Smiley
littleguru
littleguru
<3 Seattle
Harlequin wrote:

littleguru wrote: 
SecretSoftware wrote: Basically integrate .NET with Directx libraries, so you can use them natively in the .NET framework and leverage these right there into your applications.

Isn't that WPF?


Unless he means being able to make a new Bitmap(500,500) and use DirectX to draw stuff onto it. Would be nice to be able to make 3D pie charts and stuff with lighting effects


I thought that is possible in WPF too? You can create a pie control there and use all the effects.
littleguru wrote:

Isn't that WPF?


Or XNA, depending on what you aim to achieve.
littleguru
littleguru
<3 Seattle
SecretSoftware wrote:
8) Add Memory space randomization. So that when your application starts its memory space fingerprint looks different than last time. Making it hard for exploit code to work in .NET framework applications (This should be supported by the runtime).


The GC is already collecting data if there is time and depending on how full the memory already is etc. This does mean also some randomization.

If you do some interop and a native method relies on the location of an object in memory you have to pin it in C#. If you are not doing that the GC moves it around as he wants and the native method gets the wrong piece of memory.
littleguru
littleguru
<3 Seattle
SecretSoftware wrote:
13) I wish that the .NET framework and the Runtime in general would encrypt in memeory strings by default. No one should see whats in memory except the application itself (perhapse symmetric crypto between memory space and application?).


Damn that gets slow... Next everybody would cry that .NET is so slow... Should be only optional and disabled by default (to avoid the crying)
littleguru
littleguru
<3 Seattle
SecretSoftware wrote:
14) the compiler should be a smart compiler. Basically when you have repetitive code that is similar in manipulation of things, but is different in minor areas, that it groups the similar stuff together into new methods, and arrange for the flow to be correct at the same time. This would result in small size product and efficent code.


The MSIL code you see when looking at it with ILDASM is the real code that gets executed... The runtime is inlining and removing vtables etc. (the jitter and managed runtime is also here for something). That happens all behind the scenes. The runtime does already a lot to make code faster and remove duplicate stuff.

I wouldn't like the compiler to remove a piece of code an call another method that does the same, just because he thinks so. That's weird if you do performance checking etc. It looks non deterministic to the user. The developer might also have thought a little bit when putting the code not in the other method, when having it in two methods... Performance, for example, could be a reason.

It's better to educate the developers to write better code then having the compiler to do it!
littleguru
littleguru
<3 Seattle
Anyway, .NET 4.0 is going to be about LINQ and the new more functional possibilities for C# and other languages... AFAIK.
Sven Groot
Sven Groot
My name has 9 letters. Coincidence? I think not...
SecretSoftware wrote:
As I already pointed out, Strong Name fails in its goal. Hackers can change the code and resign it again. So its useless. Strong name can protect against average users who no nothing in computers than just to move the mouse around.

We need something more reliable than this. Something that will really raise the bar too high.

The problem with this is that it's virtually impossible. If you embed the checking in the application, hackers would be able to remove the check when they modify the application. If it's part of the CLR, then the problem remains that the CLR doesn't know what signature an assembly should have. You can include that information in the assembly (as it is with strong names), but what's stopping the hacker from modifying that too? It's a catch-22.

Strong naming is primarily meant to identify assemblies uniquely, kind of like GUIDs in COM, not as an anti-hacking tool. They have the benefit that if assembly X references assembly Y by its strong name, X can be sure it gets the exact version of Y it wants, not a different one that's incompatible. Here it works because it's X that knows what signature Y should have, but that won't help if a hacker also changes X of course. That plus the ability to assign trust to assemblies with specific signatures in the framework's CAS policy is basically all that it's meant for.
page 1 of 3
Comments: 59 | Views: 20277
Microsoft Communities