Comment by cjsuk
8 years ago
Indeed. 15 years ago I kind of enjoyed it. Win32/winforms is still less horrible than the web these days.
8 years ago
Indeed. 15 years ago I kind of enjoyed it. Win32/winforms is still less horrible than the web these days.
Win32 is in no way less horrible than the Web. Win32 doesn't have any device-independent layout, at all. Forget about handling HiDPI sensibly. RegisterClassEx/CreateWindowEx are incredibly verbose. WndProcs are a mess compared to individual event handlers. The mishmash of COM and inconsistently named C APIs is terrible. COM involves a monstrous amount of boilerplate. COM requires you to deal with apartment threading, legacy that exists primarily for compatibility with Visual Basic 6, which is of course no longer supported but still saddles the platform. Creating an OpenGL context with WGL, with the "false context" stuff, is a nightmare compared to WebGL. Memory management is a giant pain to deal with. The GDI APIs are archaic and slow. I could go on…
Yet I would rather take all of that than dealing with Frankenstein CSS/HTML/JavaScript programming, while making sure it is pixel perfect across all browsers and not making use of the OS features and computer hardware that made me buy it in first place, e.g. WebGL 2.0 on DX 12 GPU.
Most of the issues you mention are solved in .NET, WPF and UWP. COM is a breeze to use in Delphi, MFC/ATL, .NET, C++/CX.
Windows is much more than just Win32.
Apparently Windows event system is so bad, that the younger generation re-inventing it in the form of React.
Also Cocoa, UI Kit, Android and Qt are all better solutions than Web.
Despite the populist mindset that programming the web is a shitshow, it’s really not. Tooling these days is pretty incredible and the ecosystem is pretty great when you are found needing - issues get fixed, PR’s get accepted. It’s a much better experience than a 20 year old environment where everything is set in stone, yet bugs and inconsistencies still exist.
The tools and software for traditional windows app programming have long been neglected and the newer ones throw you into a niche — and still don’t provide a cohesive story.
I would much rather pick up react and produce a working product in less time it takes to troubleshoot XAML databindng and styles, for instance. If my windows app needed something like a map component, I can drop one in my macOS, iOS app - the same one baked into the os - and on the web have an assortment of components to choose from — with WebGL support baked in.
Also, there isn’t such thing as a DX only gfx card - it happily runs OpenGL games and apps just fine
3 replies →
> Yet I would rather take all of that than dealing with Frankenstein CSS/HTML/JavaScript programming
I wouldn't.
> Most of the issues you mention are solved in .NET, WPF and UWP.
I wasn't talking about .NET, WPF, and UWP. I was responding to the claim that Petzold-style Win32 apps are better than the Web.
> Apparently Windows event system is so bad, that the younger generation re-inventing it in the form of React.
Huh? React is not WndProc.
> Also Cocoa, UI Kit, Android and Qt are all better solutions than Web.
Disagree.
I've written the same WebGL app twice now, once in Cocoa/Objective-C and once on the Web, with a TypeScript and Webpack stack. Once I got over the initial hump of learning the technology, it was a much nicer experience than my experience with Cocoa. TypeScript is a better language for UI development than C++, Java, or Obj-C, and the fact that the browser implementation of WebGL smooths over the issues with OpenGL on Mac was a huge relief.
1 reply →
You're assumptions are outdated
3 replies →
That sounds exactly like the state of affairs the moment you pick a JavaScript framework, which was my point.
Yeah... because compatibility here is MUST.
What I find missing, compared to back-in-the-day, is the _maturity_ of that ecosystem.
Win32 has warts on warts, but around the year 2000 the MS development space was a monoculture and the COM-to-GUI story was increasingly mature and integrated.
.Net came along and, on the one hand, positioned MS to be a whole different kind of tool provider (F# on dotnet core on linux in kuberernetes is niiiiice), but they also lost a few hundred man-years worth of local improvements to their platform. This without providing a credible replacement for Win32 ensuring it would be around for decades.
That fracture fractured again with XAML, again losing tons of maturity, and then fractured even further with the UWP/Silverlight/Metro/WhoKnows. I've never been a bigger fan of MS's product line, but can't justify or defend using much on the client other than html for fancy things or standard winforms for deployability.