在过去的几年中,我从事的所有重要项目都是基于Web的,或者具有非图形用户界面(服务,命令行脚本等)。我可以将WinForms应用程序放在一起,也可以在需要时执行一些简单的WPF,但是我从来没有真正研究过一些较低级别的API,例如MFC或QT。
我了解这取决于情况,但总的来说,还是值得花一些时间来更好地学习桌面开发,还是应用程序以使该知识不那么相关的步伐迁移到Web和移动设备上?另外,您希望与您合作的开发人员具有桌面GUI专业知识吗?
在过去的几年中,我从事的所有重要项目都是基于Web的,或者具有非图形用户界面(服务,命令行脚本等)。我可以将WinForms应用程序放在一起,也可以在需要时执行一些简单的WPF,但是我从来没有真正研究过一些较低级别的API,例如MFC或QT。
我了解这取决于情况,但总的来说,还是值得花一些时间来更好地学习桌面开发,还是应用程序以使该知识不那么相关的步伐迁移到Web和移动设备上?另外,您希望与您合作的开发人员具有桌面GUI专业知识吗?
Answers:
我会说是的。程序开发中存在某种钟摆效应。首先,一切都直接在计算机上运行。然后,当计算机功能强大到可以运行多个程序时,他们得到了带有哑终端的大型机。但是,愚蠢的终端确实在可用性方面很烂,因此,只要计算机功能强大到足以在终端大小的系统中放入合理数量的硬件,我们便拥有了个人计算机,并且所有内容都直接在计算机上运行。
然后他们发明了万维网,然后我们又回到了大型机(服务器)和哑终端(浏览器)。但是哑终端在可用性方面仍然很烂,人们开始重新学习30年前的经验教训。 ,而我们又朝着远离这一趋势的方向发展。如今,许多真正热门的开发都是针对本地运行的台式机(或移动)应用程序,但它们可以出于特定目的而连接到Internet以增强其功能。
是的,但不是您的思维方式。
GUI编程不再困难,除了熟悉gui编程界面外,它也不需要专业技能。与现代的MFC之类的东西相比,在现代编程环境中,钩住按钮,窗口和控件并不是一件容易的事,并且相当容易。GUI编程在需要时很容易学习。
但是,尽管连接按钮和文本框非常容易,但是知道何时何地放置按钮以及设计供人类使用的GUI却非常困难。这是一项非常有价值的重要技能。但是,适用于本机界面和Web的设计原理非常相似。
因此,学习如何设计有效且不会混淆用户的良好用户界面,您将免费熟悉它们的编程。
嗯,除了GMail,Stack-Exchange和银行的家庭银行业务外,我还使用全天的非网络软件。现在随着智能手机和平板电脑的到来,Web应用程序对我的吸引力甚至降低了(我使用智能手机Facebook客户端)。那是用户方面。
开发人员方面:在过去的十年中,我几乎只从事非网络软件的工作(当我担任软件顾问时,我的职业跨越了许多非常不同的领域),并且我看不到未来的网络趋势。
因此,是的,它仍然是必须学习的桌面GUI环境。
当然,“取决于”-但我认为您的经验很典型。我很少需要为我编写的任何应用程序创建胖客户端。除非有特定的原因需要客户端在桌面上运行(连接性问题或3D游戏等),否则我认为对于开发人员和管理员来说,维护应用程序的一个“实例”更为容易。如果他们具备设计Web应用程序的技能,则通常可以进入桌面应用程序领域。
实际上,我认为让胖客户端开发人员学习Web应用程序编程更为重要,因为HTTP的继承无状态性使应用开发范式难以为继(或者至少需要花点时间来思考)面板上的控件)。
别忘了-您拥有Silverlight和Adobe Flex / AIR之类的技术,它们可以跨越台式机/ Web应用程序之间的界限。
根据IE9团队的说法:
本机应用程序和网络应用程序之间不应存在差距。硬件加速,快速JS和站点固定启动了它
我认为这些技术将更加紧密地融合在一起是一个安全的选择。如果您是Java开发人员,则开发桌面应用程序和Web应用程序(使用GWT)之间几乎没有什么区别。期望越来越多的“桌面”开发平台能够瞄准浏览器引擎并非没有道理。期望越来越多的桌面应用程序具有类似Web的分发模型(在后台自动更新,沙盒执行(例如chrome))也不是没有道理的。