I am sure some of us have stopped and thought “Is Microsoft really going in the right direction with its development languages?” and then you probably put your nose back into the compiler and continued coding, not giving it another thought. But wait a minute, perhaps you are right. Maybe we should take another look instead of just blindly following Microsoft’s techies into their vision of what software should be like. Sure we see the new versions of .NET and think “Cool! Finally we can do that!” But you know what? It is probably borrowed from another language… perhaps from Java. In this entry we will propose some questions and take a very brief look at where the platforms, C# and Java, might be going….. on this entry of the Programming Underground!
C#. We use it from time to time, we love some of its simplicity over VC++, we enjoy the readability of it like VB and it makes our lives as programmers easier. Or does it? The last language I learned was Java and when I first went to tackle it I thought I was going to be plunging into a different world far from my safe haven of Microsoft technology. I knew Java came out of the world of C/C++ but I thought it would be very cryptic in nature and that it would have the readability of C++. Fortunately I was wrong.
As I progressed through my study materials I realized something quite profound. Java was actually pretty straight forward and had a layout that was easier for even a beginner to understand. But unlike simple beginner languages, it had the depth and robustness of C++. What can be done in C++ was pretty much possible in Java… minus perhaps the nice fancy eye candy windows and all those ready made activeX controls that you just plug in and play on the .NET IDE. I must give some kudos to Sun Microsystems for their handling of the Java language as a whole. They really embodied the readability principle with several of their method names and kept things very simple and straight forward. They kept me asking “That is all their is to it? Why don’t I have to do 10 more steps?”
But this matchup between C# and Java might be an unfair fight for Microsoft. They have had an arm tied behind their back. They have a global monopoly with Windows and about 20 years of being in the industry trying to keep those 90% of the world computer users happy, no small feat I assure you. It has been known for a long time that the Microsoft’s vision of C++ has had to stumble forward with innovation while keeping around the old stuff (legacy code) to keep previous programs working. This was part of the reason why they created C# after all. To shed off those troublesome backwards compatibility problems and start anew on the .NET framework. Even after that though the designers wanted to stay in line with what C++ had done years before so that existing industry developers could find themselves using C# with little needed training and without a huge leap forward. I think C# was a great improvement but after learning Java, it still seems a bit too tied to the old problematic way of doing things.
I am not saying that C# has been doomed or that nothing new has come out of C# and its .NET framework ideology. However, when you go to a platform independent style language like Java you find that using C#, or another Microsoft language, might make you feel like you are among the many drones harvested for brain battery power, born into coding bondage, only to wake up and realize that someone else runs your life (See the matrix analogies here?). The question should be asked “Should we continue with Microsoft?” and I answer “Yes, but now is the time to start dabbling into other languages so that if the Microsoft boat sinks, you will already be in the life boat.”
If Java can continue its path and remain flexible but with a simple model and equally simple method names and ideas, I could see it taking over as a top programming contender to Microsoft’s dominance in the future. As more and more tech heads go from implementing Microsoft solutions and into the realms of open source systems, Java will probably continuing to grow. That system independence is addicting and a very attractive feature of the language. Like eluded to earlier, it even makes you feel enslaved to the Microsoft vision. But, and this is a big but, if they attempt to follow Microsoft blow for blow instead of doing what they think is ultimately right, they may suffer the same demise in the future. Java might go way of the do-do and perhaps some other language will gain dominance. Resurgance of COBOL? I SURE HOPE NOT! 😀
I think Microsoft can learn from Java. Simplify some stuff at the expense of alienating some developers. If it means that you are going to be more independent and more in line with established standards, it will be nothing but good juju in the future. I think in the end they will gain more developers than losing them. Then it will be a really heated fight with the developers, and ultimately the users, winning out.
I want to set the record straight though, I love Microsoft languages and I love Java. I insist on knowing them both and that every programmer coming up the ranks should really look at both of them seriously. Diversifying your language skillset is crucial to development in this new information driven age. Just keep in mind that when you program with either of them you are programming using someone else’s vision. I guess this fits into the little known adage for programmers that everyone should “Code into a language, not code in a language”. I just think I am finding the Java grass is a bit greener on this side of the programming hill right now.