No announcement yet.

Fundamental shift in plans

  • Filter
  • Time
  • Show
Clear All
new posts

  • Fundamental shift in plans

    ...I get the feeling that "something's up"...

    As a by-product of researching APIs that I'm curious about, I've run across some information at MS sites that have me reflecting on trends...

    First I reviewed a useful list of APIs

    and by following related links, I noticed how MS documentation and terminology has shifted from the Win32 "desktop" concepts, through Windows 8.1 APIs to the world of Windows 10.

    And as I follow those transitions, I see more and more "object" structures and methods, and more abstraction. There are discussions about such situations as the uncoupling of relationships between DLLs and "API Sets", to allow code to be more universal.

    Presentations of such changes makes me wonder if MS is converting the foundations of the OS to a more "pure" object structure, making a reality of the 1990's dream of an "object-oriented operating system", which was certainly not available then. Back then, I worked in Software Engineering at a major (Fortune 100) U.S. company, and experimented with SmallTalk on a Win 3.1 machine. Our team could see how useful an OO OS could be, but we didn't think it would ever come to reality. But now, it appears that MS is not only heading that way, they have developed a rather elaborate plan for the transition, and are pretty far along!

    Meanwhile, those of us who are still doing Win32 development may find ourselves forced into using OO development toolsets... I can see MS squeezing out Win32 languages like PB...

    Especially with the proliferation of non-Win32 platforms (like smartphones), I wonder if my plan for retirement is already obsolete -- I had been thinking I'd be using PB to develop a couple of programs that I'd been wanting to make for my own use and enjoyment.

    But taking a look at the "Universal Windows Platform (UWP)", I suspect my retirement may instead wind up as reading books I've deferred and goin' fishin'...

    Well, I don't know how accurate my assessments are, but my I do conclude that I have for the first time seen what appears to be fairly clear evidence that the world of Win32 programming is going to be retiring soon, too...

    Now where's that review of fishing boats...?


  • #2

    It just sounds like another Microsoft attempt to do something different, DDE then OLE then .WOT then C flat etc etc etc .... Some languages come and go but some remain, ADA[tm], VB, and many others will never see the light of day again. Look at what operating systems are written with and you will find C (some C++) and assembler that between them produce the system functions IE: The API function set. Any language that can use the API function set can live as long as the OS lives.

    In the past when Microsoft have tried to change the rules, it flopped badly as the buying public did not upgrade, that's how you got lemons like ME, Vista, to some extend Win 8. XP still lives, some win2000, Win7 and win10. Their income is far more important to Microsoft than some hair brain scheme to trash what keeps them eating.
    hutch at movsd dot com
    The MASM Forum


    • #3
      It's true, I remember MASM and Windows OS/2, the OS is gone, but the toolset remains...

      But I'm still going to take up fishing, just in case. Seems the longer of the professions...



      • #4
        Windows has been going through great changes for years since Windows Vista and later. One thing is what MS called MinWin or making the OS more modular under the hood. This can easily be seen when using the Dependency Walker utility. In the old days, you had the core OS DLL's like kernal32.dll, GDI32.dll, user32.dll, etc. But over time Microsoft broke up the OS into smaller and smaller more modular low level DLLs and I would venture to say that today most WIN32 calls to the core OS DLLs are simply wrappers being forwarded those low level OS DLL's. Whereas there use to be dozens of core DLL,s now there appears to be many dozens if not hundreds of low level DLL's. It is so bad now in Windows 10, that Dependency walker takes forever to find system dependencies for an app, since there are so many in the dependency tree of the app. It is actually minding blowing to see how many there are.

        Likely this has helped MS create things like Windows for IOT, Windows for ARM and the coming Windows Lite.

        The amazing thing through all of this is that the WIN32 has been kept stable throughout. Just consider my EZGUI framework. Likely there are few apps that access as many WIN32 API's in a single EXE or DLL as mine does. Every new iteration of Windows I "shivered" expecting it to break EZGUI. Now one of the programming habits I strongly followed was "always follow the rules" when it comes to the WIN32 API. If the API docs said "do it this way only", I did it that way. In the past the notorious "new version of Windows broke some apps" problem, was not because MS broke something, but often because those app builders didn't follow the rules as documented. They often looked for ways to do tricks Windows did not intend.

        Now for me with EZGUI, by following the rules, amazingly I have yet to see a version of Windows break anything in it. I really was expecting the worse with Windows 8, but more so with Windows 10, but once again no problems at all. That tells me Microsoft is committed to not breaking the WIN32.

        Now the WIN32 though has changed purpose. Rather than encourage development of apps using the WIN32, MS encourages use of all their higher level API's and frameworks. That does not mean the WIN32 is dead, but that it has now become the "assembler" language of Windows so to speak. In the same way assembler is low level compared to higher level languages, the WIN32 is the low level assembler to GUI frameworks. How do you think MS creates all those higher level frameworks ? They sit on top of the WIN32 API.

        Now as far as making the OS more OOP based, Microsoft failed big when it came to Windows Vista. It was their first attempt to build the OS using only managed languages (aka When you listen to Herb Sutters talk "Why C++?" he explains that it was a big failure and MS learned from it. Performance was terrible.

        Now the WINRT which came out with Windows 8, also was not the big panacea they had hoped for either.

        So would MS go back to the WIN32 ? Likely not, IMO. They are too stuck on OOP. C++ has pushed C in the background. So it is not surprising that they are building new OOP based API.s But remember that it is not likely they could replace the WIN32 completely with that. They would have to literally rewrite Windows from scratch to do that. Like and other frameworks, they simply are stuck with the low level WIN32 and must build on top of it. WIN32 has now become their assembler and likely more and more programmers can't even work with it. Only a few experts likely exist who know how to do that. But they likely have people who will build things on top of it.

        While this may be only my and some others opinion, OOP has too much overhead and it always takes a performance hit. There are also issues with "code flow" tracking with OOP and the bigger something built with OOP gets the more problems they have. MS can only go so far with it. They may succeed in "hiding" the WIN32 in favor of a higher level OOP based API, but I doubt they will ever be able to get rid of the WIN32 totally.

        I once had an interesting conversation with a Microsoft Architect (the term they use for their higher level tier of support people). MS was trying to touch base with Windows developers and offered a 30 minute "conversation" with support people to get feedback. I took their offer and when the first person I talked to learned how I program (low level WIN32), they said they would have to get back to me with someone who could handle that level of support. I ended up with a Microsoft Architect level guy, who was really knowledgeable and the 30 minute phone call I was suppose to get turned out to be 1 hour long. When I explained how I code using Powerbasic and the low level WIN32 API at one point he told me basically there are few people who program at that low of a level. That is why they had him talk to me rather than a typical MS tech guy.

        The WIN32 is basically becoming a lost art today and MS keeps programmers at a high level and shield them more and more from it. But he never told me that it was obsolete or not the way to program anymore. Just that it basically is too hard for the average programmer.

        IMO, Powerbasic has accomplished something Microsoft never could. They made WIN32 programming easier to do. C and C++ by their nature are terse and unnatural languages (Bob Zale called BASIC a "natural" easy to understand language). Powerbasic's simpler syntax makes even WIN32 programming doable by even everyday programmers. Because of this, the PB forums is one of the few WIN32 "expert" level forums left in existance. We may not consider it expert level, but trust me when I say from the outside worlds point of view it really is. The degree of knowledge about the WIN32 found in this forum is unparalleled today. From assembler programmers to GUI programmers and more the knowledge base is extensive. There are probably more PB'ers from this forum who have actually delved into writing drag and drop designers than probably most any other forum. It is a very difficult task. That is why many indie language developers fail in the long run is that while they can write a compiler or interpreter, they usually can't write a drag and drop designer. But this forum has had a number of programmers do that successfully. How about low level custom controls ? That is also a lost art. But from this forum has come EGrid, RMChart, MLG (grid), GDImage, EZGUI (has a number of them) and more. Again some very low level stuff.

        I may be wrong, but I really doubt the WIN32 is going anywhere. The only short coming we have right now (for PB) is the lack of 64 bit. But as long as 64 bit supports 32 bit (through WOW), PB programming is still very viable today and the WIN32 will be with us for some time yet. Maybe it will disappear someday, but not as soon as some may fear.

        Chris Boss
        Computer Workshop
        Developer of "EZGUI"


        • #5
          I may be wrong, but I really doubt the WIN32 is going anywhere
          Chris, couldn't agree more. If ms drop win32, people will just run something that does, how knows maybe even Wine. Lets not forget that ms have given win10 away for free, at some point they will want to make some money and then what will happen to an OS that costs money and doesn't support legacy?


          • #6
            I agree with Chris here, I still write some 32 bit code in PB as its great for making small tools but I mainly work in 64 bit and it is genuinely seductive once you get into it. While a vast amount of modern software is rediculous in how big it is, true 64 bit is barely larger than 32 bit code so if you have to handle big data, it is the way to go. With Win32, if you bother to set the /LARGEADDRESSAWARE flag, you have access to just under 2 gigabyes of memory and while you have to know what you are doing, you can do many things in a just under a 2 gig address space.


            Here is a 64 bit toy to check how much memory you have available dynamically. It is useful if you are writing apps that use a lot of memory during development before you do your own memory management. Comes in at 7.5k.
            hutch at movsd dot com
            The MASM Forum



            • #7
              Back in May, MS made some major changes to the "store" and is allowing Win32. They specifically said:

              “We recognize that Win32 is the app format that game developers love to use and gamers love to play, so we are excited to share that we will be enabling full support for native Win32 games to the Microsoft Store on Windows,” explains Microsoft’s gaming chief Phil Spencer. “This will unlock more options for developers and gamers alike, allowing for the customization and control they’ve come to expect from the open Windows gaming ecosystem.”


              MS has also said that the VB6 runtime will be supported until 2027.


              Win32 is not going anywhere, anytime soon. MS knows that is what people are continuing to use, except in places where 64-bit is needed.
              I am legally blind. Please forgive any typos. I do try and catch as many as I can.


              • #8
                Interesting to see this announcement, thanks Brice!

                Incidentally last week I read an article "Object-Oriented Programming - The Trillion Dollar Disaster"

                and it too has given me renewed hope that my PB coding projects will continue in my retirement.

                It's quite an interesting analysis, from both the technical side as well as of the marketplace factors. I felt it was worth the 20 minutes to read...



                • #9
                  John, thanks for that link. Makes a lot of sense, IMO.
                  "To every unsung hero in the universe
                  To those who roam the skies and those who roam the earth
                  To all good men of reason may they never thirst " - from "Heaven Help the Devil" by G. Lightfoot


                  • #10
                    Interesting article! Thanks


                    • #11
                      Originally posted by John Montenigro View Post
                      Incidentally last week I read an article "Object-Oriented Programming - The Trillion Dollar Disaster"
                      Well, given the tl;dr of that article is basically "Good programmers write good code, bad programmers write bad code, no matter the programming paradigm.", one could apply it to all sortsprogramming paradigms.

                      Or to cite MCM's signature line: It's not the paintbrush, it's the artist.

                      As with everything, it pays off to


                      • #12
                        Just my opinion but UWP may not live long. With .Net core 3.0 Microsoft is merging in single project Windows Forms, WPF, and UWP controls. All of which are windows only with Microsoft trending toward multi-platform everything. I'd expect shortly desktop applications either to die out (Windows Forms, WFP, and UWP haven't been getting much love lately) with them either adopting an existing cross platform UI, writing a new one, or chucking it all for something in the browser space which seems to be where they're leaning.
                        Sometimes life's a dream, sometimes it's a scream