Title: dotNET and us
Question: Opinions about NET
Answer:
I have spent last weeks to study the net framework. I have stayed to learn more about its facilities, about the new programming model in general. I have also reviewed my article ("Stay with Borland and Win") about net framework. I also read the comments that was posted about it.
And now, I consider that is the moment to publish an in depth impression about it. The opinions that you will see in this article are completly new. New because now I'm little relaxed and, I think, not so subjective like in the moment when I have wrote my last article. I want to present here what the future that will be reserved for us.
Delphi vs NET Framework
Can this opponents be compared? I think not. Is premature to compare a compiler with a framework. In fact, at this moment, the history returns. Remember days when Delphi1 was borned. You have to remember that at this moment Microsoft has presented there new OS, named Windows95. Unfortunately, Delphi1 was created for Win3.1 platphorm. And all of us was deprimated. A year later, Borlan has presented the new Delphi2 platphorm. With many enhancements and, of course, support for real 32 bit programming. Was cool, but the real best version for win32 programming was Delphi3.
The same is happening today. Microsoft has announced the NET platphorm (framework). The MS "marketing machine" runs efficient. Everyone is talking about it. There are many conferences, a tons of books on the market and many sites related to the "new technology". Our Delphi (at its 6 version) seems to be old. The new model is in everyone mind.
The reality is that we cannot compare Delphi with the NET Framework. Delphi is a language. NET is a new concept. A framework that comes with a tons of languages. Delphi is a compiler thats builds low level code. NET seems to be more flexible.
At the "do I need to go to NET technology?" questions, that I think is in everyone's mind I have receive the following answer at the Microsoft PDC Conference(I don't remember the speaker's name, sorry):
"Of course you have! Why? Because Microsoft said that! If you want to remain on the software market, you have to go to the NET! Thats because the software industry is so dynamic!"
But, we have enough time to discuss this subject later. Lets look now inside NET.
dotNET and dotNOT
NET is a framework and VisualStudio NET the tool to make NET compatible software. In NET projects, you can use any supported language. In example, you can create an object using Perl and then you can use it into a C++ project. Seems to be cool. Under NET framework, objects are the same for all languages. In fact, you have a single Object framework for all languages. You can see the NET Framework like a meta-VCL. You know that the VCL is the same for Delphi and CBuilder. Unfortunately, components created with CBuilder can not be installed under Delphi. In NET this is possible, and simply to realise. In fact this is a normal behaviour under the NET framework. And this happends because the NET compiled code is not pure compiled. The NET compiled code is like java compiled code. It is bytecode that can be run on any NET Compatible machine. The NET virtual machine are using alanguage like assembler that is named IL (Intermediate Language). I have studied it and it seems to be cool. In fact I can say that I like it. Thats because it is an assembler like language riched with many OO features. You can try use it.Once an object at compile time is "converted" to IL code, when you have to use it, you haven't to think about the object "creation language", because it isn't important. Under the NET all languages "knows" IL and this is enough for a programming language to "understand" what properties, methods an object has.
Now lets see whats happend when you run a program. First, a JIT compiler is activated and your program will be converted from bytecode to real "machine code". So, your program will run fast. This is the theory, but I have observed that NET compiled programs are slower than others. To avoid continuous JIT compiling process, you can use ngen.
Also NET provides a Security framework with public key implementation. Microsoft said that you haven't to create registration modules for your software. In fact they are said that you haven't to write a single line of code. And, theoretically, this is true.
Unfortunately, NET IDE that came with VS NET is the same like old MS IDE. The same totally unconfortable Object Inspector. The same component pallete that is really inefficient and totally unergonomical. And there are many other critical opinion about MS IDE.
For NET Framework is a huge support aviable. You have many tutorials aviable on the market, so you can learn it fast.
In NET Framework you have full support for small devices. You can create WinCE code, WML sites etc. Also, the Web Services(SOAP) are really easy to create. The same I can say about XML implementation. XML Comments are nice and easy to use.
And, we can say many many other thinks about NET. I think, for now, I have speak enough. Now let's see how the future will looks:
A. The future will be slow
As I have said the NET compiled applications are slow. You have to buy some new hardware, in order to start with NET Framework. The same MUST happend with your customers! But this is a good news for hardware industry. The course for speed is now restarted.
B. The future will be insecure
I have said about the security features in NET world. Yes, Microsoft implementation is cool. But, for me is really easy to crack any NET compiled code. Remember what I have said about IL language? Yes, it is smart. And even for a beginner will be really easy to disable the "security protection". So, are you thinking to distribute a shareware version of your NET program? Belive me, this will not works. I repeat that. IT IS REALLY EASY FOR A BEGINNER TO DISABLE YOUR PROTECTION! In example, I have start one week ago to write an IL to C# converted and this project is working. Of course I have to work, but when it will be ready, the dissasambled programs will be more easy to understand.
So, I think that in the Microsoft vision the shareware will not exists. Maybe this is possible...
C. The future will be hide
Sounds strange? Yes! The future will be hide, I can say that the future will be completly hide for us. Let's think why Microsoft has invested so much into this framework? The history is little complicated. First was the Department of Justice of the USA. When they have said something like Microsoft split, Mr. Gates has think to "replace" windows with a new OS kind: the NET Framework. Today, we know that Microsoft will not be splitted. And, the next move will be the new Microsoft Operation System. Will be an completly NET OS. And all Api's will be hide for us. And this will not transform Microsoft into the market leader because Microsoft will be the software market. I am not an astrolog, but, in my opinion, this is the Mr. Gates next move. Will you be able to be Microsoft oponent? I think not.
D. The future will be "identical"
In fact, in the NET future, the programming language notion will dissapear. Thats because all NET languages are the same. In my opinion, if you know the NET Framework structure, you will be able to learn each NET language in less than a week. The leader of net languages is C#, and I think this is the future programming language. Why? "Because Microsoft wants that!"
And after all of this pressupositions lets return to our main question. "Do I have to learn NET?". You will be surprinsed if I'll said that this question is actual for many programmers that are using actual Microsoft Tools. In example, for a Visual Basic programmer, that has the goto into his blood, is very hard to understand NET OO programming. Thats because Visual Basic was, from the start, a scripting like language. Today, VB NET is an OO language, and this is a nightmare for a tipical VB programmer.
But, returning to our main question, my answer is YES. We, as programmers, MUST be prepared for the future. Unfortunately, today we doesn't know how the future will looks. But, the most important is to be prepared. If the NET will be the next OS we have to know it.
Borland has announced their support for NET. At http://www.borland.com/net/ you can read more about their strategy to the NET platphorm. Is really hard for Borland to start again "from the scrach" and I apreciate that.
As final conclusion I have to said the following:
- NET is good for middle enterprise solutions. In large organisations, the NET will not be known. Java is the leader here and will remain;the same will happend in small enterprises where tools like Borland Delphi is ideal;
- In my opinion NET is still an experiment. If it will resist we will see. For near future, the pure compiled languages will remain the market leaders because a publisher wants to its code to be protected. And Microsoft is not shure about
- The distribution of the NET project is hard. Your end user MUST have NET framework installed. Maybe this will be possible 2 or 3 years from now. Today noone is interestyed in installing NET. The NET is known by us, as programmers, but for a manager or for a marketing guy this will still remain an totaly unknown notion.
- For independent programmers like me the future is unknown. If the NET will represent "the next generation" will be really hard for us to resist. Thats because the competitors will be able to decompile my programs and they will can implement quickly algorithms from my programs. But, I will not go to NET "from the firt time". Today my customers are not interested in what language I have created a program. They are interested in the final solution and, for now, I will continue to develop using Delphi. But today I dedicate time each day for learning NET. If the future will be NET, I have to be prepared. And this must happend with you. Anyway I'm waiting for Microsoft Office NET, because I want to decompile it. Will be Microsoft happy for that? I think not!
- If NET will not be the future, the Microsoft will go down quickly. Many MS customers are not satisfayed with Microsoft dictatorial style. This is a centrifugal move and this will be destructive for MS if it will happend
- Today, on the job market are many C# requests. It is a ilusion. Few years ago the sames happend with Smalltalk programmers. I saw 1.000$ per day offer as Smalltalk programmer. Who is programming now in Smalltalk? This lesson you have to learn. There are many moments when the market is "in flame", but after this moments the silence is next.
Here I will finish my opinions. Please don't injury me. There are just opinions. If you have something to say, add comments to this article. I am really interested in then. And don't forget: "FOR A PROGRAMMER, THE LANGUAGE IS NOT SO IMPORTANT. THE BASE STONE IS A STRONG KNOWLEDGE OF ALGORITHMS AND PROGRAMMING TECHNIQUES. THE REST IS JUST A PICECE OF CAKE."