作为一名网页开发者,学习哪种桌面编程语言比较好?

16

我想学习一种桌面编程语言,最好是C、C++或C#。我是PHP/HTML/CSS程序员,想尝试开发桌面应用程序。我需要一个相当强大的工具,并且希望能够创建具有Windows图形用户界面(GUI)的应用程序。

Stack Overflow社区会推荐什么?在深入学习这些语言之前,是否有任何需要了解的知识?


抱歉有点跑题,但我建议增加一个“应该学习哪种编程语言”的特殊标签,以便轻松分类此类问题,并帮助人们更快地找到适合不同目的的编程语言。 - Muxecoid
@Marc - 谢谢。现在需要有人将这个标签放在其他148个问题上。 :) - Muxecoid
@Muxecoid 我已经为其中一些完成了。每次 SO 开始询问我是否是人类时,我就会停止。虽然它可能与“编程语言”有些重叠,但它是一个非常有用的标签。 - Daniel Daranas
1
我喜欢C语言,但我无法相信所有这些人都建议它作为弥合您在Web应用程序和开发Windows应用程序方面经验差距的语言。现在已经不是1990年了。hWnd和Windows SDK的时代已经过去了。 - Robert S.
26个回答

74

编辑:

一位网页程序员想要创建Windows应用程序,你建议使用C语言?

你们这些人怎么了?!

/编辑

显然是C#。

C#会更容易上手,你可以使用WinForms或WPF以及.NET中的所有新Microsoft工具来构建Windows应用程序。如果你熟悉PHP,应该已经熟悉其语法、面向对象的概念、异常处理等。

我建议你不要用C语言复杂化自己的生活,特别是如果你只是想创建Windows图形用户界面。它们提供了很好的教育体验,并且对于更高级的事情(例如使用其他工具包进行跨平台开发)很有用,但代价是陡峭的学习曲线和降低的生产率。

此外,如果你是一位网页开发者,那么在这三个选项中,C#是唯一可以(实际上)用于Web的语言。ASP.NET并不算是一个糟糕的框架,也值得探究。


4
他没有说更容易进入,他特别指出了“强大”,因此这个问题比仅仅追求最轻松的路径要开放得多。 - Cruachan
他说他需要“相当强大的东西”,在问题的背景下,这听起来对我来说毫无意义。 - Tiberiu Ana
8
喜欢编辑 ;-p - Marc Gravell
我同意你的答案。但是为什么你会说“绝对不能用C++”呢?听起来好像C++在这项任务上比C还要糟糕… - Johannes Schaub - litb
1
+1 喜欢大字母和情感。C/C++ 能够长期用于编写 GUI 已经令人惊讶了,现在就没有必要再把这种经历强加给任何人了。 - Daniel Earwicker
显示剩余5条评论

16
首先,简要了解一下C语言,写几个教程程序就可以了。 C语言很小,定义清晰,其明确的语言定义(Kernighan&Ritchie-《C语言程序设计》)只有几百页而已。 尽管理解指针和递归可能是一个挑战,但语言本身足够小,可以完全了解这种语言。 编写C代码的乐趣之一在于,达到一个水平后,你可以不用不断地参考文档来查看如何使用某些不常用的特性x或库函数y。 把学习C语言视为打好基础。
但是,要实际编写有用的应用程序,您需要使用C ++或C#。 这取决于您想写什么。 由于垃圾收集和使用的便利性,C# 在大多数面向业务的情况下可能得分更高,但是对于高性能、低级别或游戏领域,C ++ 得分会更高。 还有大量的 C++ 库可用于相对容易地利用(还有纯C代码,可以很容易地进行调整)。 如果您的目标是针对特定问题编写某些内容,则此类内容的可用性很可能可以抵消 C++ 在完成任务方面的更高开销。
例如,我在Sourceforge上对“image”进行了筛选搜索,并返回以下项目计数
C#:139 C++:569
即使是专门面向业务的内容,C ++ 得分仍然更高-“finance”
C#:12 C++:32
在任何数学或技术领域,C# 的得分都严重偏低-“fractal”
C#:4 C++:44 C:24(明确排除 C++)

当然,这只是一个相当粗略的分析。例如,如果我想编写一个桌面分形生成器程序,那么我会选择C++而不是C#,因为在C++中处理UI所需的额外工作量很容易被C++中大量可用的示例代码抵消。另一方面,如果我正在编写一个业务应用程序,在这种情况下没有大量的UI需要处理并且没有使用示例代码的重要优势,则我会选择C#。

事后编辑:至少熟悉C的另一个原因是,Mac和iPhone上的主要开发环境也有Objective-C。Objective-C是带有非常薄包装的C,与C++实际上只是近亲,因此,如果你预计可能会处于想要将代码移植到Mac上或直接在其上开发的位置,则认识一些C++(或C#)是比"侧步"跨越树更少混乱的基础。


学习C语言总是很好的,但是用它来制作桌面应用程序呢? - Dave Van den Eynde
26
当然,为什么不把你的航空母舰带去钓鱼旅行呢? - annakata
2
annakata,如果我只能为评论投票 :) - Binary Worrier
理解经济衰退?这是否意味着C语言成为信贷危机的官方语言? - Luke Woodward
有趣。你认为C是爬行的部分,而我认为C#是。 - annakata
显示剩余2条评论

16
我需要一些相当强大的东西,我希望能够创建具有Windows图形用户界面的应用程序。
为了实现丰富的Windows GUI,我会倾向于查看 "xaml" 变体:WPF(完整桌面)和Silverlight(类似于flash)- 这将为您提供最新的工具等,并拥有很多样式化功能。
为此,C# 将是主要选择。 Managed C++ 是一个选择,但需要更多的工作量。

托管C++得到了很大的改进,现在它被称为C++/CLI。在其中使用WPF不会是一项艰巨的工作,我个人认为。 - Navaneeth K N
3
我不会向新手推荐使用托管C++,因为它有太多层次,如果你不知道自己在看什么(比如.net、stl、托管与非托管和经典C++等),就会产生绝对的混乱。在我看来,最好还是选择C#。 - Binary Worrier

7

C#和其他编程语言解决的问题非常不同,但鉴于您的Web背景以及其快速开发方法,我肯定会选择C#。


这就是在快速开发和低水平之间的一种权衡。 - Sam Becker
没错 - 根据我的经验,如果你正在编写桌面应用程序,你就不需要那么底层。我的观点是,C++等语言是创建高性能应用程序的重要工具,但代价是开发速度慢。 - annakata
如果你想学习计算机编程或架构,那么学习C或C++是有意义的。除了少数标准应用程序外,特别是对于Web应用程序来说,C#是最好的选择。Marc关于WPF/Silverlight的建议也很好。 - Mark Brittingham

7
我的建议是学习C++。C#也不错,但它会限制你编写可移植的代码。如果你学习C++,你有很多选择。在Windows上,你可以使用Windows Forms应用程序或WPF与.NET框架。MFC是另一个不错的选择。QT是另一个可以在多个平台上运行的选择。因此,通过学习一种语言,你可以为多个平台编写代码,并拥有各种GUI工具包。学习C++后,学习C#将变得轻松。
祝一切顺利。

2
如果您希望实现可移植性,mono是一个越来越实际的选择。 - Marc Gravell

6

C#是这些语言中最高级的语言,这意味着它是最容易实现你想要的功能的语言。

使用C++甚至使用C可以制作Windows GUI,但这更加困难。


6

首先,一定要从基础开始学习:学习C语言。

然后,根据你的实际目标来选择。如果你想有任何跨平台的机会,就不能选择C#。你应该选择C++和Qt或wxWindows。


3
在我看来,你应该开始学习C语言,以获得有关内存、文件访问等方面的基础知识。C是一种低级语言,这意味着你将对访问操作系统的方式拥有更多的控制权,但要创建Windows应用程序,你需要编写大量的代码行。因此,在使用C进行几项任务后,我建议你从Visual Studio 2008的C#开始学习。.Net Framework附带了大量的类,使你的生活更加轻松。
希望能对你有所帮助。 此致敬礼。 Josema。

3

C/C++都允许低级编程。这意味着一切皆有可能,但即使是简单的事情也可能很难。如果你说你想要一个强大的东西时指的是这个,那么你应该从C++开始。它至少提供了一些不错的GUI库(gtk+和gtkmm或qt),而用C进行GUI编程则很痛苦。

另一方面,如果你想快速开发应用程序(这就是你所说的强大),那么C#可能是最好的选择。


2

我建议您使用C#。虽然不像其他两种语言那么强大,但是对于您的需求,我认为C#会是最少痛苦的选择。C和C ++是低级语言,因此我认为它们将会给图形用户界面等方面带来很多工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接