Comment by pcwalton
8 years ago
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
> 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.
Try to make a CRUD SPA as fast as a Delphi one, including a nice L&F by default, just with mouse clicks and setting a few properties.
> Also, there isn’t such thing as a DX only gfx card - it happily runs OpenGL games and apps just fine
This statement means you don't have much experience in graphics programming, at least regarding the fun of dealing with drivers and how OEMs classify GPU features.
So if you prefer I will rephrase it as "WebGL 2.0 on OpenGL 4.6 GPU".
Now feel free to compare what it means in GPU features.
Hint, WebGL 2.0 is basically OpenGL ES 3.0, which maps to OpenGL 4.3.
https://www.khronos.org/developers/reference-cards/
2 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.
Petzold-style Win32 apps were already out of fashion on Windows 95.
Apparently others with better knowledge of Web than me, think otherwise about React vs WndProc.
https://bitquabit.com/post/the-more-things-change/
As for your WebGL example, I would have used Swift with SceneKit instead, regarding productivity in native development on Apple systems.
You're assumptions are outdated
Please provide a link to a Delphi like tool for the Web, including components for backend comunication.
2 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.