4 ms·
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/C
by pcwalton 9y 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…
- mobilio 9y agoYeah... because compatibility here is MUST.
- cjsuk 9y agoThat sounds exactly like the state of affairs the moment you pick a JavaScript framework, which was my point.
- pjmlp 9y agoYet 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.
- oceanswave 9y agoDespite 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
- pjmlp 9y ago> 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/ https://www.khronos.org/developers/reference-cards/
- pcwalton 9y ago> 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. Use Bootstrap for the look and feel. The browser's painting stack is far faster than Delphi's '90s style GDI, so you don't have to do anything there.
- pjmlp 9y agoYou love to use the GDI example against native devs, a Win16 technology, long superceded by better alternatives on Windows. I only used Delphi as an example, because in 2017 the Web is yet to produce anything that approaches it, even Web Components are yet to be fully done. A RAD tool is much more than just rendering widgets, a simple CRUD application should be doable just by clicking and setting properties, including talking to the database backend. Speaking of WebComponents, when will Mozilla support HTML Imports?
- OldSchoolJohnny 9y agoYou're assumptions are outdated
- pjmlp 9y agoPlease provide a link to a Delphi like tool for the Web, including components for backend comunication.
- meredydd 9y agoAllow me to present: https://anvil.works/ https://anvil.works/ Visual interface editor? Check. Component-based UI model? Check. (It's all in Python, everything is an object, very Delphi-ish.) Back-end communication? Check. (One-line RPC to call functions on the server.) Database integration? Check. (The built-in datastore runs on Postgres, and lets you do things like delegate views on a table directly to the client. Mix this with data bindings, and you can create CRUD apps with tiny amounts of code. Or you can start importing the appropriate Python libraries and go to town with your favourite DB.)
- pjmlp 9y agoThanks for proving me wrong, Anvil actually does look quite good.
- pcwalton 9y ago> 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.
- pjmlp 9y agoPetzold-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/ 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.