如今,新手程序员应该花时间学习编写"桌面"应用程序吗,还是网络在哪里?

时间:2020-03-06 14:29:05  来源:igfitidea点击:

作为一个新手,我花了一些时间学习少量的C和相当多的PHP。我看过为Windows编写桌面应用程序,但是由于API的复杂性,似乎存在相当大的入门障碍。值得学习吗,还是本机应用程序将来会变得越来越少?

从我的角度来看,我曾经使用过的唯一桌面应用程序是Web浏览器和文本编辑器,以及操作系统本身。我需要的一切现在都在线上。

学习编写非Web应用程序是一项有用的技能吗?如果是这样,我应该学什么?

解决方案

我们应该学习任何想要学习的东西。如果我们不这样做,我们可能会发现这比我们需要做的难。

我个人开始为Windows编写桌面应用程序,因为当时我使用它。这些天来,我确实认为我们是对的,我们可以无需花费大量时间即可制作网站/在线应用程序。

但是,如果我们是编程新手,那么即使编写一个不错的Web应用程序也将很困难。一个独立的页面很简单,但是当我们将数据库,安全性和管理添加到组合中时,事情就会越来越多。

本地应用程序总是会有一个市场,尽管很多东西正在转移到Web上,并且基于Web的应用程序比以往任何时候都具有更大的范围,但本地GUI应用程序永远不会消失。

但是,除了坚持自己喜欢的方式之外,很难给我们任何真正有用的建议。如果仅使用Web东西,那么成为Windows GUI程序员会有点愚蠢:)

非Web应用程序在不久的将来将非常有用(正如我现在所看到的)。使用必须使用网络协议与客户端进行通信的解释性脚本语言,在线编写良好的桌面应用程序将无法高效地完成任何工作。
但是,如果我们对联网感兴趣,也许可以同时尝试一下。使用RSS阅读器,简单的Web浏览器或者IRC客户端。他们所有伟大的项目。

在我看来,新手应该专注于所选语言的基础知识和内部知识。图形或者Web界面应等待,直到我们知道后端正在做什么。我个人建议我们从控制台程序开始,但是我想这取决于我们使用的平台。也许桌面界面在Windows上更容易启动。

最佳实践(以我的观点)是使用我们要提供的功能编写可靠的后端,然后以模块化方式编写它,以便稍后可以决定是要提供桌面界面还是Web界面(或者两者) 。用户界面的选择一开始就无关紧要。

我认为选择一侧并认真地坚持下去永远不是一个好主意。我认为,优秀的工程师会尽可能多地展示自己的知识,这样他就可以明智地做出决定,确定哪种才是完成任务的最佳工具。

换句话说,不要选择平台,操作系统,编程语言等,然后忽略其他内容。最好全面掌握技能。

我同意,我们应该学习想要的内容。一旦我们了解了Web,就可以学习一些桌面编程,从而拓宽视野。我们永远不会知道何时需要它。

但是,此外,如果我们正在学习Windows桌面开发,那么我们绝对应该看一下Cand /或者VB.NET。到目前为止,.NET Framework是开发Windows桌面应用程序的最简单方法。据我了解,这比C ++容易得多(实际上我自己并没有花很多时间在C ++上)。

学习非Web应用程序将永远是有用的。总是会有不适合作为Web应用程序的应用程序。即使一切都变成了Web应用程序,仍然需要编写服务器端代码和Web浏览器。

此时,如果我们对Windows平台感兴趣,那么我建议我们研究一下Cand WPF。这些技术可用于本机和Web环境。

Web开发固然很好,但是大多数系统即使具有良好的Web前端,也仍然主要位于Web级别以下,有点像冰山一角。

最终,大多数Web实施在设计上都是n层,具有较低级别,例如数据访问以及与非Web语言中出现的对等服务器的集成。

正如我所看到的,似乎有一种无所不在的语言可以触及所有这些级别,而.Net Framework则是如此。请注意,我没有对c#,vb等做任何说明。我认为这只是一个品味问题。但是我不记得看到使用php来做数据层的n层银行网站。也没有一个在线订购网站会使用ruby与它的jd edwards服务器通信。

这是重量级语言仍然流行的地方,如果那是我们想要工作的地方,那么我们可以按照自己选择的任何语言变体学习.Net框架。

@Rich Bradshaw,

我认为我们可以通过查看任何求职网站来获得有关问题的答案。

what should I learn?

无论我们喜欢什么,都能带给我们足够的钱。

我相信," Web"应用程序的未来开发模型将更类似于当前的桌面应用程序开发模型。我的意思是,明天的Web应用程序将不再是维护,调试和测试困难且昂贵的HTML / AJAX工作,而是将使用针对浏览器中已经可用的平台的编译语言进行开发。 Flash,Silverlight和(在较小程度上看来)Chrome是这种想法的最新代表。

因此,学习那些"复杂的" API也许并没有浪费时间。我的小组构建了WPF应用程序,但我个人认为这些应用程序不会比当前的HTML / AJAX项目更复杂。

那是一个很好的问题。
我今天知道,即时通讯工具中大多数我知道的应用程序是网络应用程序。
但是使用flex之类的语言,如果桌面应用程序再次出现,我将不会感到惊讶。

要精通,我们应该同时做这两项。一个领域的技能可能会或者可能不会很好地转化为另一领域。例如,缺乏状态会导致许多桌面开发人员开始构建Web应用程序时绊倒。当然,经历可能会有所不同

掌握一门学科,然后再转到下一门学科。

我还处于学习业务应用程序开发的初期阶段。我迈出的第一步是研究数据库。现实世界中的大多数应用程序都是以数据为中心的。最好从桌面应用程序开始。进行一些拖放操作,然后研究背后的代码。我在用ASP.NET做同样的事情。我已经下载了大量的入门套件。这完全取决于学习风格。对我而言,我可以通过"边做边学"来学习,而不是通过逐节学习集合理论来学习。这就是为什么烹饪书和头等书对我完全有效的原因。

从语言背景中,我注意到我们仅提到PHP和C。这两种语言严格来讲都不是面向对象的/ OO语言。我们确实应该学习传统的OO语言,例如Java或者C#,因为大多数工作都在寻找这些技能。顺便说一句,请阅读Yegge关于专业开发人员应该学习哪种语言的建议,并自己考虑应该做什么。

假设我们对企业应用程序开发感兴趣,那么我不得不说该领域正在从传统的Web开发(从网页上的数据库中显示内容)过渡到富Internet应用程序(仍从数据库中显示数据),但是前端开始近似桌面应用程序)。构建富Internet应用程序将需要桌面UI开发人员长期了解的概念。因此,我认为我们不必在Web开发和桌面开发之间进行选择。

这可能会变小,但我还是要说。

我们可以编程,也可以不编程。大约18个月前,当我正在寻找新工作时,我正在寻找市场,并且我在做很多.NET,但是有些地方要我做JAVA。

我当时在做Web服务,他们希望有人做其他事情……最终,如果我们知道如何编写代码,那么我们就可以做到这一点。如果我们现在正在编写桌面应用程序,并且说要在6到8个月内迁移到某些ASP.NET MVC,那很好。

我们可能需要一些启动时间来学习语法,并对某些事情有所了解,但最终我们会没事的。我说这对所有新语言都适用...技能就是技能

专业的.NET程序员应同时处理Webform和Winform。
即使我们是从Webform开始的,但最终,我们将有机会接触Winform。
就像主题" VB vs C#"一样,我们不会看到.net专家谈论此话题,因为最后,我们应该都了解它们。

在某些情况下,可以使用网络之外的东西:

  • 脚本语言/控制台应用程序-在这里可以想到构建脚本的示例,但也可以编写批处理或者命令文件来完成诸如句柄部署之类的简单任务或者完成一些其他简单任务,而这些任务可能最好在黑匣子内完成,而不是手动完成一遍又一遍的东西。
  • Windows服务(WCF)-这些对监视事物并发出"服务器已关闭!"也可能很有用。给某人的消息,以找出出了什么问题。

对于中间件和后端开发,还有一些要说的地方,那就是编写Web服务或者处理查询数据库或者将数据插入到DB中,这可能与前端Web UI工作不同,只是为了给几个例子。除了嵌入式系统和移动设备之外,软件开发的其他示例在某种意义上也是非Web和非桌面开发。