10

作为一个新手,我花时间学习了一点 C 和一些 PHP。我看过为 Windows 编写桌面应用程序,但由于 API 的复杂性,似乎存在相当大的进入障碍。这值得学习吗,还是原生应用程序在未来会变得不那么普遍?

在我看来,我使用过的唯一桌面应用程序是 Web 浏览器和文本编辑器,当然还有操作系统本身。我需要的一切现在都在线。

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

4

17 回答 17

20

我不认为选择一方并虔诚地坚持下去不是一个好主意。我认为一个优秀的工程师会尽可能多地暴露自己,这样他就可以就哪个是完成任务的最佳工具做出明智的决定。

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

于 2008-09-20T14:24:51.880 回答
5

原生应用程序总会有市场,尽管很多东西正在转移到网络上,并且基于 Web 的应用程序的范围比以往任何时候都大,但原生 GUI 应用程序永远不会完全消失。

然而,除了坚持你喜欢的东西之外,真的很难给你任何真正有用的建议。如果您只使用网络东西,那么成为一个Windows GUI程序员会有点愚蠢:)

于 2008-09-20T14:23:20.433 回答
3

这可能会被修改——但我还是要说。

您可以编程,也可以不编程。大约 18 个月前,当我正在寻找一份新工作时,我正在研究市场,我做了很多 .NET,但有些地方希望我做 JAVA。

我在做 Web 服务,他们希望有人做其他的事情......在一天结束时,它归结为 - 如果你知道如何编码,你就会知道如何编码。如果您现在正在编写桌面应用程序并说在 6-8 个月内您想迁移到一些 ASP.NET MVC,那么您会没事的。

你可能需要一些启动时间来学习语法并感受一些东西 - 但最终你会没事的。我说这适用于所有新语言……技能就是技能

于 2009-06-30T22:05:22.217 回答
2

非 Web 应用程序在遥远的未来将非常有用(正如我现在所看到的)。我们将无法使用必须使用网络协议与客户端进行通信的解释性脚本语言来像在线编写良好的桌面应用程序那样高效地做任何事情。但是,如果您对网络感兴趣,也许您可​​以尝试两者兼而有之。制作一个 rss 阅读器、一个简单的 Web 浏览器或一个 IRC 客户端。他们都是伟大的项目。

于 2008-09-20T14:23:25.643 回答
1

你应该学任何你学的东西。如果你不这样做,你可能会发现它比你需要的更难。

我个人开始为 Windows 编写桌面应用程序,因为我当时使用它。这些天来,我确实认为您是正确的-您可以制作一个网站/在线应用程序,而无需在该过程中投入太多资金。

但是,如果您是编程新手,即使编写一个像样的 Web 应用程序也将是困难的。独立页面很简单,但是当您将数据库、安全性和管理添加到组合中时,事情就会增长。

于 2008-09-20T14:21:40.780 回答
1

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

最佳实践(在我看来)是编写一个具有您想要提供的功能的可靠后端并以模块化方式编写它,因此您可以稍后决定是否要提供桌面界面或 Web 界面(或两者) . 用户界面的选择在开始时应该无关紧要。

于 2008-09-20T14:24:27.653 回答
1

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

目前,如果您对 Windows 平台感兴趣,那么我建议您研究 C# 和 WPF。这些技术用于本机和 Web 环境。

于 2008-09-20T14:27:12.797 回答
1

Web 开发一切都很好,但是大多数系统即使它们有一个很好的 Web 前端仍然主要位于 Web 级别以下,有点像冰山。

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

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

这就是重量级语言仍然普遍存在的地方,如果那是您想要工作的地方,那么在您选择的任何语言变体中学习 .Net 框架都是必经之路。

于 2008-09-20T14:27:35.930 回答
1

我相信“Web”应用程序的未来开发模式将更类似于当前的桌面应用程序开发模式。我的意思是,明天的 Web 应用程序不会是维护、调试和测试困难且昂贵的 HTML/AJAX 工作,而是使用针对浏览器中已经可用的平台的编译语言开发。Flash、Silverlight 和(在较小程度上,似乎)Chrome 是这个想法的当前典范。

所以也许学习那些“复杂”的 API 并不是浪费时间。我的团队构建 WPF 应用程序,我个人认为这些应用程序不会比当前的 HTML/AJAX 项目更复杂。

于 2008-09-20T14:31:38.340 回答
1

掌握一门学科,然后进入下一门学科。

我还处于学习业务应用程序开发的初级阶段。我采取的步骤就是研究数据库。现实世界中的大多数应用程序都是以数据为中心的。最好从桌面应用程序开始。做一些拖放然后研究背后的代码。我正在用 ASP.NET 做同样的事情。我已经下载了大量的入门工具包。这完全取决于你的学习方式。对我来说,我可以通过“边做边学”来学习,而不是通过大量的集合理论来学习。这就是为什么烹饪书和头脑第一的书对我来说非常有用。

于 2008-09-20T19:23:58.183 回答
1

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

假设您对企业应用程序开发感兴趣,我不得不说,该领域正在从传统的 Web 开发(在网页上呈现来自数据库的内容)过渡到富互联网应用程序(仍然呈现来自数据库的数据,但是前端开始近似于桌面应用程序)。构建富 Internet 应用程序需要桌面 UI 开发人员早就知道的概念。因此,我认为您不必在 Web 开发和桌面开发之间做出选择。

于 2008-09-20T20:46:35.287 回答
0

我同意,你应该学习你想学的。一旦你对 Web 有所了解,然后学习一些桌面编程来扩大你的视野。你永远不知道什么时候需要它。

但是,另外,如果您正在学习 Windows 桌面开发,那么您绝对应该看看 C# 和/或 VB.NET。.NET Framework 是迄今为止为 Windows 开发桌面应用程序的最简单方法;据我了解,这比 C++ 容易得多(实际上我自己并没有花太多时间在 C++ 上)。

于 2008-09-20T14:25:39.007 回答
0

@Rich Bradshaw,

我认为您可以通过查看任何求职网站来回答您的问题。

我应该学什么?

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

于 2008-09-20T14:28:32.543 回答
0

这是一个非常好的问题。我现在知道,我所知道的大多数应用程序开发都是网络应用程序。但是对于诸如 flex 之类的语言,如果桌面应用程序再次出现,我不会感到惊讶。

于 2008-09-20T14:38:09.120 回答
0

要精通,您应该两者都做。一个领域的技能可能会也可能不会很好地转化为另一个领域。例如,当许多桌面开发人员开始构建 Web 应用程序时,缺少状态会绊倒他们。当然,您的体验可能会有所不同

于 2008-09-20T14:45:29.350 回答
0

专业的 .NET 程序员应该同时处理 webform 和 winform。即使您从 webform 开始,但最终,您将有机会接触 winform。就像一个话题“VB vs C#”,你不会看到一个.net专家谈论它,因为最后,你应该知道他们两个。

于 2009-08-24T09:06:23.723 回答
0

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

  1. 脚本语言/控制台应用程序 - 这里想到构建脚本作为示例,但也编写批处理或命令文件来执行简单的任务,例如处理部署或执行一些其他简单的任务,这些任务可能更好地在黑盒中完成,而不是手动执行一遍又一遍的东西。

  2. Windows 服务 (WCF) - 这些也可能用于监视事物并发送那些“服务器已关闭!” 消息让某人去找出问题所在。

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

于 2009-08-24T15:38:38.547 回答