仍然值得学习台式机GUI开发吗?[关闭]


18

在过去的几年中,我从事的所有重要项目都是基于Web的,或者具有非图形用户界面(服务,命令行脚本等)。我可以将WinForms应用程序放在一起,也可以在需要时执行一些简单的WPF,但是我从来没有真正研究过一些较低级别的API,例如MFC或QT。

我了解这取决于情况,但总的来说,还是值得花一些时间来更好地学习桌面开发,还是应用程序以使该知识不那么相关的步伐迁移到Web和移动设备上?另外,您希望与您合作的开发人员具有桌面GUI专业知识吗?


5
进行桌面应用程序开发很棒,但是出于对Knuth的热爱,不要理会MFC。95%的Windows桌面应用程序作业所需的全部是WinForms或WPF / XAML。您不想拥有的其他5%的工作。
亚当·克罗斯兰

1
@Adam:为“您不想拥有的其他5%的工作” +1。- 如此真实。:)
鲍比表

Answers:


38

我会说是的。程序开发中存在某种钟摆效应。首先,一切都直接在计算机上运行。然后,当计算机功能强大到可以运行多个程序时,他们得到了带有哑终端的大型机。但是,愚蠢的终端确实在可用性方面很烂,因此,只要计算机功能强大到足以在终端大小的系统中放入合理数量的硬件,我们便拥有了个人计算机,并且所有内容都直接在计算机上运行。

然后他们发明了万维网,然后我们又回到了大型机(服务器)和哑终端(浏览器)。但是哑终端在可用性方面仍然很烂,人们开始重新学习30年前的经验教训。 ,而我们又朝着远离这一趋势的方向发展。如今,许多真正热门的开发都是针对本地运行的台式机(或移动)应用程序,但它们可以出于特定目的而连接到Internet以增强其功能。


5
+1指出这些趋势是周期性运行的。但是,我已经看到了将终端应用程序重新编写为桌面应用程序的情况,并且用户能够更有效地使用终端应用程序。
拉里·科尔曼

2
与浏览器的区别在于,它们实际上可以在本地系统上运行代码,并且此功能随着每一代浏览器的发展而增长。这样做的结果是,桌面和Web应用程序之间的可用性差异不是很大。对于许多人(包括我自己),gmail比Outlook更有用。钟摆每次摆动的距离都不太远,并且会中途停止,无论基础技术如何,应用程序都是本地和云部分的混合体。
Joeri Sebrechts

13
+1,我讨厌人们开始声称台式机已经死了,这太荒谬了。
汉尼拔·莱克特博士

1
@Joeri:大多数终端总是可以在本地至少执行一些操作。我所见过的令人沮丧的JavaScript可以完成IBM 3270(例如)在本地也可以完成的工作。
杰里·科芬

1
@Joeri Sebrichts-当Gmail允许我将电子邮件拖放到任务或日历项中时,我可能会同意您的观点,但是在那之前,功能太少了。
JeffO 2010年

11

即使您从不打算进行桌面开发,我还是建议您获得足够的经验,以便对何时在Web客户端上使用桌面解决方案更好地有所了解。


+1:假定“台式机已死”并且应用程序日趋复杂,这与纯台式机开发人员说“作为Web应用程序永远不会好”的情况恰好相反。选择您想使用的工具,但又足够了解其他工具,以了解其真正的好处/陷阱。
史蒂文·埃弗斯

8

是的,但不是您的思维方式。

GUI编程不再困难,除了熟悉gui编程界面外,它也不需要专业技能。与现代的MFC之类的东西相比,在现代编程环境中,钩住按钮,窗口和控件并不是一件容易的事,并且相当容易。GUI编程在需要时很容易学习。

但是,尽管连接按钮和文本框非常容易,但是知道何时何地放置按钮以及设计供人类使用的GUI却非常困难。这是一项非常有价值的重要技能。但是,适用于本机界面和Web的设计原理非常相似。

因此,学习如何设计有效且不会混淆用户的良好用户界面,您将免费熟悉它们的编程。


2
尤其是在如今,用户体验负责软件设计。体系结构不再负责。
rwong

5

这确实取决于您的情况。我最近在一家财富500强公司工作,该公司有多个项目将Web应用程序转换回桌面应用程序(SmartClient / Click-Once)。在他们的特定情况下,这很有意义,并消除了现有应用程序遭受的一些可用性问题。

如果您是一名全职员工,并且您的公司通常不设计桌面应用程序,那么完全了解Winforms或WPF可能没有任何意义。但是,如果您是一名顾问,并且希望能够为您的客户提供另一项服务,那么它就不可能受到伤害。


4

嗯,除了GMail,Stack-Exchange和银行的家庭银行业务外,我还使用全天的非网络软件。现在随着智能手机和平板电脑的到来,Web应用程序对我的吸引力甚至降低了(我使用智能手机Facebook客户端)。那是用户方面。

开发人员方面:在过去的十年中,我几乎只从事非网络软件的工作(当我担任软件顾问时,我的职业跨越了许多非常不同的领域),并且我看不到未来的网络趋势。

因此,是的,它仍然是必须学习的桌面GUI环境。


2
哇,您不使用Internet搜索引擎吗?
JBRWilkinson

1
@JBRWilkinson:不,我依靠Gopher。认真地说,请确保我一整天都在使用Google,但这并不是任何台式机工具或应用程序的真正替代品。
Wizard79 2010年

2

当然,“取决于”-但我认为您的经验很典型。我很少需要为我编写的任何应用程序创建胖客户端。除非有特定的原因需要客户端在桌面上运行(连接性问题或3D游戏等),否则我认为对于开发人员和管理员来说,维护应用程序的一个“实例”更为容易。如果他们具备设计Web应用程序的技能,则通常可以进入桌面应用程序领域。

实际上,我认为让胖客户端开发人员学习Web应用程序编程更为重要,因为HTTP的继承无状态性使应用开发范式难以为继(或者至少需要花点时间来思考)面板上的控件)。

别忘了-您拥有Silverlight和Adobe Flex / AIR之类的技术,它们可以跨越台式机/ Web应用程序之间的界限。


+1使得网站开发更加困难。我最初是一名桌面开发人员,后来不得不从事Web开发工作。肯定要复杂得多(显然,这是在承担可比较的任务,这并不容易)。
鲍比表

@Guzica-是的,我遇到过与优秀的开发人员有相似的态度,他们与我紧密合作,致力于桌面应用程序开发。一旦他们尝试进行切换,对他们来说并不像他们最初想象的那么容易。我不知道这是否是Web应用程序编程中固有的复杂性,它只是一种不同的编程方式,而且您对系统可以做什么的许多基本假设必须改变(除了学习新框架外)。
沃森

使用更有限的工具来做事情总是比较困难,这不会使其变得“更加复杂”。这使它更加麻烦。
山姆

0

根据IE9团队的说法:

本机应用程序和网络应用程序之间不应存在差距。硬件加速,快速JS和站点固定启动了它

我认为这些技术将更加紧密地融合在一起是一个安全的选择。如果您是Java开发人员,则开发桌面应用程序和Web应用程序(使用GWT)之间几乎没有什么区别。期望越来越多的“桌面”开发平台能够瞄准浏览器引擎并非没有道理。期望越来越多的桌面应用程序具有类似Web的分发模型(在后台自动更新,沙盒执行(例如chrome))也不是没有道理的。


3
那是总的BS。我正在开发一个延迟测量应用程序,该应用程序必须位于本地才能实时测量和显示市场数据交付的延迟。这种事情永远不会转移到云中。
蒂姆(Tim)2010年

这是整个BS,因为您发现对于本地化应用程序的需求非常荒谬。
Mike M.

@Tim:您说对了,有些应用程序将永远是本地的。同样,其他应用也永远不会是本地的(例如Google翻译)。但是,在本地运行并不意味着它不是来自云。Chrome在本地运行,但它是基于云的应用程序(您几乎无法控制它的“版本”)。尝试将本机代码执行绑定到浏览器平台(Google NaCl),并尝试将Web语言绑定到本机应用程序(Adobe Air)。
Joeri Sebrechts 2010年

1
@Mike M-这并不离谱。在我之前的工作中,我从事海军舰载软件的工作。这些也很可能不在云端。我工作的域可能不会迁移-由于延迟和硬件接口的原因,它们必须是本地的。网络很不错,但是出于某些原因,我们中的某些人仍在本机应用程序区域中工作。
蒂姆(Tim)2010年

@Tim我的意思是,您发现了一个无法承受的情况。作者在说MOST时就意识到这一点。您提出了一个对策,这太好了。您绝没有证明整个事情没有基础。当然,有时由于多种原因,它必须是本地的。但是对于绝大多数人来说,插入一些光缆,您可以在10毫秒的时间内穿越1200英里?作为用户,我的桌面应用程序中的每个应用程序都可以花10毫秒以上的时间来加载表单,这没关系。
Mike M. 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.