Re: Win32 API future ...?
Quote:
Originally Posted by darwen
It's a very good technology. In my opinion of course, but in many other people's opinion too.
FWIW, I completely agree with you. .Net is by far the most exciting evolution of developer tools in the last decade or so, including Java. Developer productivity will knock socks off IT Managers across the country, as they move to .Net.
My point with the previous rant was just that there will always be room for development at a lower level, closer to the hardware.
Re: Win32 API future ...?
Quote:
My point with the previous rant was just that there will always be room for development at a lower level, closer to the hardware.
I agree - there's always going to be room for assembler and C++ for speed-critical parts of applications.
Quote:
Developer productivity will knock socks off IT Managers across the country, as they move to .Net.
I would say that it is quicker to write applications in .NET than in C++/MFC.
However productivity might not imply quality. I've seen some truly awful C# designs in my time.
The same is true of C++ of course : but I really feel with .NET we have the opportunity to bang our drums about good design.
Darwen.
Re: Win32 API future ...?
Quote:
Originally Posted by darwen
I would say that it is quicker to write applications in .NET than in C++/MFC.
I completely agree with you there. MFC suffers from poor design, so I usually spend more time looking up obscure methods then actually coding.
I think you should have tried out Java. It existed before .NET and whenever I use it I find it to be extremely productive.
Quote:
Originally Posted by hankdane
.Net is by far the most exciting evolution of developer tools in the last decade or so, including Java. Developer productivity will knock socks off IT Managers across the country, as they move to .Net
This is my main problem with .NET. I see no way in which it is very exciting. It doesn't introduce any new major concepts to programming (maybe some extra keywords, but it does not have any features that are revolutionary). I also doubt that it is more productive than Java. You should look at Java's library before you talk about how good .NETs is. The standard java library that is shipped with the java package has about 3200 classes. The enterprise library has more than 700 many of which are devoted to internet related programming. Obviously quantity does not mean quality, but I think that you will find that most of Java's classes are of very good quality.
Re: Win32 API future ...?
Quote:
Originally Posted by darwen
My point was these moves were made possible by faster hardware e.g. going from the ZX Spectrum to a 286.
I don't think that the hardware is the only factor.
The optimization of compilers is a major factor.
Old C compilers were poorly optimized, for two reasons:
They were small and compiled fastly, because they compiled on old machines (even if the developers machines were better than the users machines).
The old processors had few registers, and each register was specific to a task, and optimization was harder to make automatic. Memory segmentation also complicates compilation.
For example, even a relatively recent compiler, like Borland C++ 5, is good for 32 bits code (with optimizations activated), but relatively bad for 16 bits code.
Now, C++ compilers produce machine code with performances very near to assembly.
.NET is probably the "optimized technology", which will promote managed code.
Java, for example is a slow language, since it is generally interpreted (i don't know if there are interpreters that compile internally java code, maybe someone can say me).
Re: Win32 API future ...?
Young people see less into the future than older people, who are usually more mature because they have experienced more. When I was young i disregarded every kind of way of programming machines, which was not fast enough or even fastest there is. This is what young programmers like - speed. That is why you have many of them writing computer graphic demos using x86 assembly.
Speed is important. In fact, speed is what has been one of the major factors of computer evolution. Faster, meaner machines. Faster CPUs, faster graphic cards, faster RAM, faster harddisks. We simply cry for more computing power, and when after buying state of the art machine promising a GigaFlop-like number-crunching performance, some piece of software reduces that to a mere 20% of that or less, we cry, but for another reason, that of dissappointment and regret and greed. Because we KNOW we DESERVE the full potential of the machine, and we praise the tool which is able to harvest that potential. We turn to languages which, being at least minimally understandable, produce fast code.
If that wouldn't be true, .NET would already be ruling us all. Because .NET syntactically and logically, in terms of making the programmer type in a more "humane" code, IS SUPERIOR to even C++ in EVERY WAY. Everything is just smoother, better syntax there. Less code, more design. Isnt it nice ? Oh yes. In practice however, as we understand that behind our written code stands the .NET executing machine software, which actually does what the program tells it to, we cant help but smell a cave-at. The cave-at is immediate speed of execution.
At this point I should deviate from my flow of thoughts and say that there exist a number of languages, proclaimed platform independent, and which have very unique and utterly important features, other languages could make use of. These are among others Ada. The thing with Ada is the practical implementation. Perhaps, with proper support, it could be the future, more humane, programming future.However, it is .NET now, and Microsoft which made the effort to push the ideology forward instead. So discussing "all all that could have been" is of no relevance here, because .NET is already here in practical form. Now back to my original topic:
The truth is, speed is a relative thing in computer world. I believe the idea behind .NET is perfect. You distribute very good looking human readable code which gets compiled into native machine languge. You dont need to adapt the code to any platform, because it is rather platform independent. Since the hard work of making the whole .NET-system work is taken out of the programming language part of it (it is nice and readable), it has to lie somewhere else down the line. We may conclude that the efficiency and popularity of .NET heavily relies on the efficiency and popularity of its single, i dare to say, most important component - the "compiler" or, the "program execution program" - the CLR, or however you want to call it.
Machines get faster and faster, and now you buy much faster hardware for the same price or less than its counterpart 2 years ago. The CLR does not stand still either. Microsoft is constantly working to make the code execute as fast as your processor would execute its x86 equivalent if it exist. So why are you **** bent on performance ? Because everybody has opinions, and so, a technology which is surviveable will also be competeable. .NET will find its place among people who value their energy spent on writing a program, more then the actual relative speed, which they know will improve, even though it may not benefit the current version of their product, but only subsequent projects.
And Microsoft will eventually succeed with .NET. There is simply no other way. CLR can only get better. Try to argue with that. They will find new ways to optimize the code, even on the level of semi-intelligent code analysis patterns, which will elevate the CLR almost to a level of a human analysing and altering the code to produce the same result faster. "Compiler" will change to "program analysis, alteration, optimisation and execution".
So to sum this up, my personal opinion is, that in the mind of a true programmer, aware not only of here and now, but also of the past and the future, the idea of .NET being a great start for a new era of programming should sink in sooner or later, while the younger people still rebel and swear to Assembler. These young people would also swear to typing a Windows P-EXE file by hand manually, if they could squeeze some precious cycles out of it, but it takes truly a master of programming to realize how monumental the idea of .NET is. You write in human language, and your program runs on a piece of silicon controlling a number of hardware devices.
Dont be a computer (read: program Assembly all the time), make the human out of machine instead (program a true high-level language adapted to HUMAN logic). You can also meet halfway, then it is a good deal I guess. And, it is not the .NET it is something wrong with, in case you didn't like it, but CLR. Dont blame .NET, blame CLR, because it is CLR which executes your .NET program.
Re: Win32 API future ...?
I don't see .NET as a perfect language nor C++.
I would prefer a functional language with support for metaprogramming techniques and templates.
Functional programming languages are superior to OO languages when it comes to creating algorithms that just _has_ to work (because in a functional language a function isn't allowed to have side-effects which is kind of the point with OO languages).
PS. Sorry if I'm OT here, getting late and I haven't seen an interesting article to reply on for days.
Re: Win32 API future ...?
Quote:
Originally Posted by SuperKoko
Java, for example is a slow language, since it is generally interpreted (i don't know if there are interpreters that compile internally java code, maybe someone can say me).
Java VMs always compile the bytecode.
As to Amns wonderfully flawed mini-essay. Where were you when Java came out? If you think C#'s syntax is "soo perfect" then maybe you should look at Java's syntax. There is a striking similarity. Microsoft's C# is a slightly modified clone of Sun's Java. Java is an extremely productive language, and whenever I use it, my code fails much much much less than C++. You may wonder then why I don't use Java for all of my programs? Because it is much slower than C++ (like .NET) and it is easily decompilable (like .NET). This eliminates .NET from the commercial desktop application market, and does not make it a serious contender to Java in the enterprise application market. Java is older and, consequently, has had many more years than .NET to improve its design. Although definately not perfect, Java's libraries are extremely easy to use (Swing is like god compared to MFC, I wish there was a C++ version, Javas distributed networking packages are exceedingly better than C++'s).
Since you seem to worship .NET I would recommend you try Java. You will be surprised.
None of the .NET supporters have given any reason why .NET is "revolutionary". It has no special unique features, and suffers many of the same problems as other languages of its type. .NET will get more popular not because it is revolutionary, but because Microsoft will force it on us.
Btw, .NET is not platform independant. It is independant among versions of windows. It will not convert and non-windows users to windows users, because non-windows users already have Java to use.
Another btw, I am not a big fan of Java. I just have to use Javas strengths to point out that .NET is not as revolutionary as some fanatics here seem to think.
EDIT: This will be my last post actually arguing with anybody on the matter
Re: Win32 API future ...?
No language is perfect. Everything has is drawbacks. Just take a few:
C
It's not OOP and since it uses pointers it's very dangerous, but powerfull when used correctly.
C++
Just lacks a few functionally that would be needed for good OOP design. And still has the pointers, but references would do the pain ...
Java
It is slow, and in my eyes it has an overcrowded (for example in the java.io.* package) runtime. So many BufferedOutputStringReaderWriterPrinters ... :sick:
C#
Might have some compatibily problems and restrictions for example in using generic types and/or if you try to make a deeper work on the windows platforms. It's hard to break out the universe of the .NET.
Assembler
It's complex, hard to overview but generates the fastest code. It is the basic language.
So you cannot define one language as the best. Neither Java nor C++ nor Assembly nor Fortran and so on and so on
Back to topic: Through the years the native Win32 API has come one of the biggest I know. It is very overcrowded of subsystems, functions and types that it must have an end, and a final OOP solution. And I think when we have a even as powerful .NET as the native WinAPI is, it is the end I always wished to have. And hopefully they don't cut out C++ of the .NET. Sincerly C is a dying race on Windows platforms. :cry:
Re: Win32 API future ...?
I agree with NoHero that no language is perfect. Each has its purpose
The problem with .NET is that it might not be an end to the endless clutter of the Win32 API. Judging from Microsoft's MFC, Win32 Api, Foxpro, J#, and other poorly designed languages and libraries, I have see no reason why .NET won't fall to the same fate
Re: Win32 API future ...?
Quote:
Originally Posted by Ben_Phillips
I also doubt that it is more productive than Java.
I have more experience with Java and J2EE than with .Net, and I can tell you from first hand and lots of second-hand experience: .Net is a lot more productive than J2EE.
Every Java developer I know that's tried .Net has been impressed.
You keep mentioning the Java libraries, but you don't seem to have taken much of a look at the .Net Framework. The breadth and width is impressive. Moreover, the design in the Framework is far more consistent than the Java packages, making learning curves smoother.
You say there is nothing new in .Net. I don't think that's completely true: the CLR is a new concept; it may get some ideas from the Java Runtime model, but there are significant differences. Saying C# is a modified form of Java is not entirely fair either; or, at least, if you want to say that, you have to own up to the fact that Java, after all, is just a slightly modified form of C++.
Anyway, even if there is nothing new in .Net, there is something to be said for taking all previous working models, pick out the best component(s) of each, and provide a better implementation that combines all of these.
The security model is superb, and is just one example where .Net far surpasses J2EE. For a good overview of the .Net security model, see this Foundstone Whitepaper.
I could go on, but as someone with years of experience in both environments, I can tell you: J2EE can barely hold a candle to .Net. The gap only seems to widen.
Re: Win32 API future ...?
This debate has gone way beyond the point of being pointless. Obviously the .NET worshippers have a closed mind, and, I guess I do (though I would argue that if someone could actually show me solid evidence that .NET is really great then I would try to listen)
Quote:
Originally Posted by hankdane
Anyway, even if there is nothing new in .Net, there is something to be said for taking all previous working models, pick out the best component(s) of each, and provide a better implementation that combines all of these.
The problem is that it doesn't pick out the best components. Finding major differences between the actual C# and Java languages is difficult (libraries don't count). Obviously there are small syntatic differences here and there, but nothing major. I'm not saying libraries don't matter for choosing a language (since they really are the major thing), but that when comparing the actual syntax of C# and Java there is barely a difference.
If you want a language that picks some out the best components of other languages check out the D Programming Language. It is a very young language and does not have the backing of a large workforce, but it is still very fun and its versioning, contracting, and debugging options are very attractive. It also has bounds checking, garbage collection, exceptions, etc that are really necessary to new languages. No it is not near perfect, but I am much more impressed by it than .NET
EDIT: Oh and Java is llike C++. It is an improved design though. C# is not an improved version of Java.
Re: Win32 API future ...?
I guess for me, the real question is whether Microsoft will rewrite their flagship server products in .NET and how well will that project go.
If .NET is everything that proponents say it is, then why not rewrite SQL Server in .NET?
Re: Win32 API future ...?
Quote:
Originally Posted by jack.dingler
I guess for me, the real question is whether Microsoft will rewrite their flagship server products in .NET and how well will that project go.
If .NET is everything that proponents say it is, then why not rewrite SQL Server in .NET?
Even better, how about Exchange Server rewrriten in .NET? Wouldn't that be a cool test?
Re: Win32 API future ...?
Actually I think SQL Server IS being incorporated with Visual Studio 2005
Re: Win32 API future ...?
The general theme of those posting in favor of .net seems to be ease of use. It makes life as a programmer easier. Funny how haters of vb use that same (dumbing-down of the programmer) argument against it. I have not seen anyone succesfully provide any reasons why .net would make a program do something better, faster, more efficiently or effectively, etc. Only that you can produce a program in less time and with less effort. This will IMHO lead to programmers becomming less like programmers, because something else is doing more of the thinking and actual work.
It's like a painter who, instead of actually having and using talent to paint a portrait, simply takes a photo of the subject, runs it through a computer program to add some fake brush strokes, and prints it out. Such a picture is essentially worthless, no matter who the artist is supposed to be. That's because the value of the work is not in how pretty the picture is when it's done, or whos' signature is on it, but the uniqueness of it, and the WORK and TALENT required to produce it. That's what I hear from people who hate vb: it lets anyone throw a program together, though the results are generally slower and less efficient, therefore less productivity can be derived from using such a program as compared to a well-written one. From what I'm reading of .net, it's along those same lines, yet people seem much more eager to hop on the bandwagon. Maybe it's because of the hype, or the fact that it's the "latest thing", or the promises of faster machines to hide the inefficiencies, or...
Still, the decompiling issue remains, staring us in the face, and it's as if supporters of .net have simply turned a blind eye to it. They seem to actually pretend it doesn't exist, in the hopes it will magically go away.
One or two refreshing posts point out that every language has both good and bad attributes. Every language has some uses in some segment of the market. That's fine, and I'm sure .net will hold to that trend. Java has similar drawbacks to .net, and it found a place in the market.
I suppose one reason why I dislike the whole .net thing is that I see programming as a kind of art. I LIKE the hard work it takes to make something truly good. This applies to any discipline, whether it be programming, woodworking, music composition, culinary arts, etc, etc.. Everyone understands the difference between a fast-food place and a fine dining establishment. You don't pay a large sum of money to have a meal slapped together by some kid just trying to make a few extra bucks on the weekends. You don't expect the equivelent of a walk-in vending machine. You want the chef to prepare you a real treat - better than the every-day junk. You want the atmosphere, the extra attention to details, the aroma, and so on. We are all familiar with the names of musicians who stand out because they are good at what they do, as opposed to those who are hyped up by the promoters. These artists get respect, and their works are not so soon forgotten.
What does all this have to do with programming? You might say that the industry changes to rapidly to bother trying to make an art out of it. However, we still are plagued by the 16 IRQ limitation of years gone by. I'm still waiting for the industry to get its act together and dump the whole kit and caboodle, windows and all. The turm "longhorn" really is befitting, as windows has IMHO outlived its natural lifespan. In fact, the m$ stranglehold on the desktop market is one thing I'd change if I could. There are better alternatives, yet here we sit with some of the worst standards of all which have been conceived. So, if you want to argue in favor of something because you think it's better in some way, take a look at other computer architectures and operating systems. "Don't want to change", you say? Why? Something else is better, so we should all jump on it, right?
That's why win32 is going to stick around. We're stuck with it for better or for worse, just like we're stuck with windows itself, unless you can work in a much smaller market. We're stuck with tons of spam in our email inboxes, even though there is plenty that could be done. Why? Because we have the SMTP standard which allows spam to exist. It wasn't designed to prevent spam, and people with a lower moral standard plague the world. We all know the value of email filters, and you might wonder why the same ideas aren't applied to the sending end, so that the spam can't even make the first hop from the point of origin. Well, that's standards for you, like it or not.
Ask yourself why you don't copy all your music in wave format instead of mp3's. Heck, who cares about space these days? Don't we all have 18000 Terabytes of storage and 240 Terabytes of RAM? Don't we all have a graphics accelerator card with more memory than your whole computer did not long ago?
The point of all this ranting is: To forget about optimization would make things far worse than it already is, for everyone. It's actually a good thing .net is so easy to decompile, because this will mean the software industry won't tend to sink to yet another new low so fast. Still, we are sinking, as hardware gets cheaper, and slow, clunky software is a dime a dozen. It is known that the software market continues to degrade in value. This is one reason why .net can gain appeal, for the same reasons that vb has. It just makes it easier to turn out a program that won't crash or create memory leaks. It does not make a person a better programmer, nor does it make programs execute faster or use less resources. While you can certainly optimize the code, the temptation to ignore that will rule the majority. Over time, this will bring down the value of the typical .net app, as more people begin with it rather than C++ or whatever. Only the availability of faster hardware and more memory will have the effect of closing the gap. It's a race we cannot win. Sooner or later we'll hit the brick wall, Moore's Law or not. Devices can't continue to get smaller and faster, while storage rises, without end. This means windows, .net, AND win32 are all doomed at some point, unless you expect technology to stand still forever in all aspects. The fact is, the computer industry makes continuous advances, and new standards are proposed all the time. However, consumers of this technology can't (or refuse to) change over night. It costs too much, or takes too long, or any number of other arguments. I see .net as just another one of these things, not as some revolutionary concept, or anything so grand that we should all stand and solute.
Win95 consumes about 300 megs with a clean install, and each new version continued to bloat the thing, such that xp takes 1.5 GB, requires more memory, and is notably slower. Moving to .net will add insult to injury. I don't see this as a rise in technology or value. Compare this to athletes: They train the body, optimizing every muscle for performance, speed, endurance, etc. Better understanding of how the human body works has resulted in higher standards for athletes. Today we can jump higher, run faster, swim longer, and much more. All better than in years past. Athletes are leaner than they used to be, because each muscle is more efficient. They don't grow extra limbs or get muscle implants. What we don't do is lower the bar for the fat guy who can't jump, or shorten the track and make the best runners wear high heal shoes to make it easy for those who aren't able to run as well. Taking steroids is illegal. Why? Because it's CHEATING. It's taking the EASY way out, rather than working hard to deserve your results.
I could go into a rant about the intellectual challenge, but I hope I've made my points clear by now.