Saturday, July 3, 2004

.NET Undocumented: Whidbey May Miss the Next Coding Revolution: "Text editors are going to go away (for source code, that is)! Don't get me wrong, source code will still be in text files. However, future code editors will parse the code directly from the text file and will be display in a concise, graphical and nicely presented view with each element in the view representing a parse tree node. (NOTE: I now the word graphical is misleading, so I explain it more in this newer post.)"
- from

I found this while surfing today. It's officially July 4th, 2004. I have been using Whidbey Express, Visual C# 2005 Beta for the past few days and am thrilled with the direction that it's going. Only about a month ago did my curiousity in C# peak to the point that I was inspired to go out and get Chris Sell's "Windows Forms Programming in C#" (TODO: Add link). Most of the coding I did on my first app was done through trial and error. Coming from a web only background, I'd never really gotten into programming real programs for Windows, or any platform for that matter. I'd played with other languages and IDEs but couldn't get the hang of it.

I'd been starting to focus on Javascript more when I picked up SharpDevelop, a free C# IDE that does some nice things with .NET 1.1 as the compiling language. Some of the cool features are the fact that it can convert to and from C# and VB.NET. I used the feature once and everything compiled fine.

Now the issue that I first found when I started looking at .NET versus other languages was that you had to had a CLR (Common Language Runtime) on your machine in order to use the programs built with it. However, the promise of CLR and frameworks like .NET, DotGNU and Mono is that you can install one of these frameworks on any major platform.

That said, I predict a slew of custom Operating systems based on the CLR. There may not be a slew but I'd suspect we can expect several more companies to enter the operating system market. Sun is one example of a company that will probably introduce a consumer level OS around the same time that longhorn comes out. Don't count Linux distros out either. IBM and their commercials hyping support of Linux and such factors as free software like Apache, MySQL and PHP, has really garnered a large user base for linux. Apple can be included as a platform that can use a CLR, though I'm not sure which one it uses.

The point is that it doesn't matter what platform it is, the apps that I'm building, will work on machines that have the one of these frameworks. Right now, I'm developing with .NET 1.1 as well as .NET 2.0 Beta. The latter may change in it's capabilities over the next couple years but my app isn't currently so complicated that I won't be able to update it when I need to. I have plenty of time to develop this app as well considering Longhorn, which will use .NET 2.0, won't be out for another two to three years. I suspect that .NET 2.0 will be available for the windows platforms that the beta can be run on.

What I'm still eager to see is sparkle. I've heard it uses Avalon and I suspect it will use vector graphics and tweening to perform animation in programs that are built to use it. I can see the option of using HTML as well as XAML, C#, VB.NET, C++.NET and ASP.NET to build windows forms. The paradigm I see is a blurring of what an application is. The fact that HTML, or I should say DHTML (though I hate that term in describing Dynamic HTML...), is so capable of achieving programmatic fuctions, using server-side as well as client-side scripting, makes it very powerful. Throw in some interoperability between the webpages and the program and you have a Rich Client that can be updated in areas as needed, such as a current "Update Program" link, XML feeds, Up to date help files, etc...

Right now, I'm still playing around to see what I can program and evaluating what I need to program to build the application I want to build. I've got a beta of my first application with a few songs and a copy of the first edition of my book, in pdf format, at my site.