Maybe a shift in software development is required ?

I was looking forward to the news about Windows 7 tablet PC’s at the recent CES, but rather than be excited and have found it quite depressing.

I have read article after article about CES and all I hear talked about is ARM CPU’s, Android and Windows for ARM. For a long time developer who has primarily worked on Intel based computers (CPU’s) running some form of DOS and Windows , I find this very disheartening.

Over the years I have always tried to find the optimal programming language for my needs. For DOS it was QuickBasic 4.0 and PDS 7.1 (I unfortunately didn’t know much about TurboBasic at the time). My requirements were simple. I needed a language which was easy to work with, produced very readable code and which had a compiler which produced fast executables.

When Windows came a long, I dabbled with Visual Basic, but the early versions were very slow and later versions, while with much faster execution speed, became bloated in other ways (too many dependencies). I finally came across Powerbasic and once I got over the learning curve (Windows API) I began to be very productive and I had what I needed. I have a rule and that is to use only one programming language primarily and to learn to become an expert at it. I want my programming tools to produce lean (small) and fast executables. To be blunt, I have a lot invested in Powerbasic and also in Intel based Windows PC’s (target for my software).

One thing I have found is that it is better to work primarily with a single operating system (family such as Windows) and with a single programming language which helps leverage that operating system which works on a single CPU family. Why ?

No matter what anyone says, the panacea of cross platform development tends to always fall flat on its face. A good example is trying to write applications for both the Mac and Windows PC’s. I found it interesting that years ago a lot of graphic software was written for both the Mac and Windows (ie. Corel Draw) and the software, while it worked well, never really fully benefited from either operating, because you have to compromise to make software run on multiple platforms. What was interesting was that at one point, when my wife upgraded her CorelDraw suite, the version she got was only for Windows and no longer a hybrid app for both Mac and Windows. Why ? Likely because Corel had to compromise too much for multiplatform development or at least that is my guess about it and they wanted to leverage the operating system as much as possible (or maybe even the CPU).

The idea of Microsoft now trying to target the ARM CPU for Windows makes me wonder how this will effect the market for Intel based Windows software. There may be good reasons for the decision, but it forces developers like me to consider, “should I switch to a development tool which provides me cross platform development ?”. I have no desire to switch my development tools and for now, ARM is just not in my future plans. I have to ask myself, how can you write a compiler which is optimized for two different CPU’s ? Comprimise may be necessary and one may not get the most out of either target CPU. Now you can write libraries optimized for each CPU, but still a lot of code can not be in a library. Also each CPU may handle some tasks better than the other, so the software will not run the same (speed) on different CPU’s.

I have not been happy with the direction of software development tools for Windows. Microsoft pushes C# too much. The operating system is written likely in C++ and all of the documentation favors C. DotNet has been pushed on developers and a long time favorite programming language of many, like Visual Basic has slowly been put out to pasture. Supposedly all of this new programming language direction is geared towards making programming easier, more productive and better. COM components (while I see some of the benefits) was suppose to significantly benefit programming by making programming more component based and to increase code reusability. Actually IMO, I think it may have made the operating system more bloated and harder to work with. I think the Windows registry was a big mistake! I have been using my primary development PC (with Windows XP) for a good 7 or 8 years now and I am seeing the effects of the Windows Registry over time. COM requires all the components to be registered in the registry and it becomes a total mess over time. You see, I download a lot of trial software in the areas of graphics, multimedia, web development and programming and over time my registry is becoming a veritable nightmare.

I think what is needed to improve the Windows experience and Windows software development, especially for the next generation of Windows tablet PC’s is to start rethinking how we develop software. We need to stick to the basics and make programming simpler, in the sense of writing code that leverages the Intel CPU, rather than make it look bad. In the old days, compiler makers counted CPU cycles producing generated machine code which used minimal resources (memory, CPU time, etc.) and ran as fast as possible. There needs to be a push towards more simpler coding styles, rather than complexity which slows down modern PC’s. Is this realistic you may say ?

Yes, it is. I have been writing programming tools for about 10 years now and one thing I have learned is, that I don’t have to feel stuck writing applications which are bloated and slow. By using PowerBasic and following long time proven coding methods I can write software which can fly with minimal hardware resources. I use good code reusability methods, but I don’t use COM. I appreciate the importance of quality libraries (don’t reinvent the wheel). I also work hard to find ways to leverage the power of the Windows API.  Now I ask, “why can I write a GUI engine which can do so much, while the runtime (DLL) is so small and yet it runs so fast ” compared to what would be possible using other common programming languages today ? Its because of not being fooled into thinking that one must write software exactly the same way everyone else does (ie. Visual Studio, C#). I stick to long time proven methods of programming (BASIC and modular design, while avoiding OOP) and with the right compiler (PowerBasic) I can leverage the Intel based CPU running Windows.

For me, the Intel Atom processors and the new breed of Sandy Bridge processors coming from Intel have plenty of power for running the software I write. I have no problem in writing software which will run well on such CPUs. Yet computer magazine after computer magazine are saying that Intel will lose ground in the coming tablet market and that ARM is the future. Maybe to prove these negative views towards Intel CPU’s and Windows 7, we should rethink how we write software. Maybe a shift in software development is required ?