我想学习桌面编程语言,最好是C,C ++或C#。我是PHP / HTML / CSS程序员,我想进入桌面应用程序。我需要一些非常强大的功能,我希望能够使用Windows GUI创建应用程序。
Stack Overflow社区会推荐什么?在深入研究这些语言之前,我应该有什么知识吗?
答案 0 :(得分:73)
编辑:
网络程序员想要创建 Windows应用程序并推荐C?
/编辑
C#将更容易进入,并允许您使用WinForms或WPF以及.NET中的所有新Microsoft玩具构建Windows应用程序。如果您了解PHP的方法,那么您应该已经熟悉语法,面向对象的概念,异常处理等。
我建议你不要用C复杂化你的生活,如果你想要的只是创建Windows GUI,肯定不会用C ++。它们确实提供了良好的教育体验,它们对更高级的东西很有用(例如,使用其他工具包进行跨平台开发),但代价是更陡峭的学习曲线和降低的生产力。
此外,如果您是网络开发者,C#是您可以(实际上,heh)用于网络的3个选项中的唯一语言。 ASP.NET不是一个糟糕的框架,也值得研究。
答案 1 :(得分:17)
首先简要介绍一下C,写一些教程的程度。 C很小,定义明确,语义定义明确(Kernighan& Ritchie - C编程语言)只有几百页。尽管掌握指针和递归可能是一个挑战,语言本身足够小,以至于可以完全了解语言。编写C的乐趣之一就是要达到一个人们可以编写代码而不必不断地参考文档来查看如何使用鲜为人知的特征x或库函数y的水平并不是很难。考虑将C学习作为基础。
然而,要实际编写有用的应用程序,您将需要使用C ++或C#。这取决于你想写什么。由于垃圾收集和一般易用性,C#可能会在大多数面向业务的情况下得分,但C ++会为高性能,低级别或游戏域而得分。还有大量可用的C ++库代码可以相对容易地利用(而纯C代码也很容易适应)。如果您的目标是针对特定问题编写一些内容,那么这样的可用性很可能抵消了C ++在完成任务时所带来的更高开销。
作为示例,我在Sourceforge上对'image'进行了过滤搜索并返回了以下项目计数
C#:139即使有目的地更多以商业为导向的C ++仍然得分更高 - '财务'
C#:12对于任何数学或技术方面的分数,对C# - 'fractal'
进行大量加权 C#:4这当然是一个相当粗略的分析,但是例如,如果我的目标是编写桌面分形生成器程序,那么我将选择C ++而非C#,因为在C ++中处理UI所涉及的额外工作将很容易被C ++中提供的大量示例代码。 OTOH如果我正在编写一个业务应用程序,其中没有很大的优势来拥有示例代码和大量的UI来处理那么我会去C#。
事后编辑:至少熟悉C的另一个原因是,还有Objective-C作为Mac和iPhone上的主要开发环境。 Objective-C是一个非常薄的包装器,只是C ++的第一个堂兄,所以如果你想到你可能会想要将代码移植到Mac上或直接在Mac上开发,那么我认为你是如果你至少对C ++(或C#)如何在C上构建而不是必须在树上“横向”进行一些感觉,那么就会发现它不那么令人困惑。
答案 2 :(得分:16)
“我需要非常强大的功能,我希望能够使用Windows GUI创建应用程序。”
对于丰富的Windows GUI,我很想看看“xaml”变种:WPF(完整桌面)和Silverlight(如闪存) - 这将为您提供最新的工具等,以及大量的造型功能。
为此,C#将是首选。托管C ++是一种选择,但它更有用。
答案 3 :(得分:7)
我的建议是学习C ++。 C#很好,但它会阻止你编写可移植代码。如果你学习C ++,你会有很多选择。在Windows中,您可以使用Windows窗体应用程序或WPF与.NET框架。 MFC是另一个不错的选择。 QT是在多个平台上运行的另一种选择。因此,通过学习一种语言,您可以为多个平台编写代码,并获得各种GUI支持。学习C ++之后,学习C#将是微不足道的。
一切顺利
答案 4 :(得分:7)
C#vs其他人真的解决了截然不同的事情,但考虑到你的网络背景和快速开发方法,我绝对选择C#
答案 5 :(得分:6)
C#是这些语言中最高级的语言,这意味着它是最容易实现你想要的语言。
Windows GUI可以肯定是用C ++制作的,甚至可以用C制作,但它更难。
答案 6 :(得分:6)
绝对要先了解基础:学习C。
然后转到你的真正目标。如果你想要多平台C#的机会被丢弃。你想要使用C ++和Qt,或wxWindows。
答案 7 :(得分:3)
在我看来,你应该开始研究C,以获得有关内存,文件访问等方面的基础知识。 C是一种低级语言,这意味着您可以更好地控制对操作系统的访问方式,但是要创建Windows应用程序,您必须编写大量代码。出于这个原因,在使用C做一些事情之后,我应该从使用Visual Studio 2008的C#开始。.Net Framework附带了大量的类,使您的生活更轻松。
希望它有所帮助。 亲切的问候。 Josema。
答案 8 :(得分:3)
C / C ++都允许低级编程。这意味着一切皆有可能,但即使是简单的事情也很难。如果你说你想要一些强大的东西,那就是你的意思,你应该从C ++开始。它至少为您提供了一些不错的GUI库(gtk +使用gtkmm或qt),而使用C进行GUI编程则很痛苦。
另一方面,如果你想快速开发应用程序(这就是你强大的意思),那么C#可能就是你要走的路。
答案 9 :(得分:2)
我推荐C#。它并不像其他两个那么强大,但是为了你的需要我相信C#将是最不痛苦的。 C和C ++是低级语言,因此我认为它们将为GUI和其他东西做很多工作。
答案 10 :(得分:2)
保存C.对那些建议学习C的人,请为此提出论据。我声称学习C而不是C ++绝对没有任何好处。与他们不同,我有arguments到back this claim up。
简而言之:C已经是C ++的一个子集,用于所有意图和目的,但它远非最有趣的子集。它只提供了对新的编排范式非常有限的洞察力。另一方面,C ++定义了一些非常有趣的新范例,而且这些范例是C必须提供的所有范例(即迭代器是指针的泛化)。
重申:如果选择在C和C ++之间,请选择C ++。
答案 11 :(得分:2)
通过语言,首先在Unix上使用C,然后使用MFC进行C ++,然后使用C#(从1.0开始)我认为回到早期的语言版本有点像学习拉丁语。哦,可能只是偷了保罗格雷厄姆的东西,但我同意。
如果你必须有一个最小的目标代码大小,非常好的C非常好,非常适合嵌入式的东西,它是汇编语言的一步。我正在考虑像Microchip PIC等,你可能只有1K字的程序空间。如果你可以拥有更大的对象大小但仍然需要能够直接锤击金属,那么C ++是非常好的。所以像设备驱动程序,网络堆栈等等。这种胶水程序位于一切之下。
操作系统最终可能会出现这两种情况 - 或者更可能是两者的混合 - 取决于程序员,代码的年龄,需要与之交互的内容,外部积雪的深度(只需再运行一次)然后我会写那个方法!)
C#非常擅长以业务为重点的高级用户层应用程序。它们可能是基于网络的,基于客户端的,两者兼而有之 - 它并不重要。关于.net系列的好处是你有一个丰富的库,这个层很重要,并且它正在大量开发,以便一直更丰富。
随着计算机变得越来越强大,开发人员的成本超过了处理器或内存的成本。
使用C#,忽略C和C ++。当您对C#感到满意时,您将无需使用较低级别的语言进行编程以提高速度。
答案 12 :(得分:2)
虽然我同意C“有用”,但对大多数程序员来说肯定不再是必不可少的。对我来说,这些天它的主要功能是让我了解底层硬件如何影响程序性能和行为但这就结束了。在过去的9年里,我没有在开发工作中使用它。
关于掌握面向对象的开发,我觉得C#和C ++都会给你一个坚实的基础,但是C ++更灵活(并且更难以正确使用),而C#更加一致并且可以去你将进入.NET开发。因此,我建议学习C#和一种“新的”.NET演示技术,如Windows Presentation Foundation或Silverlight。或者,首先学习Windows窗体,但它有点缺乏演示。
我推荐使用C的唯一情况是,如果您要进入设备驱动程序,嵌入式控制器或类似程序等相当低级的东西,但在大多数情况下,您仍然可以使用C ++。
答案 13 :(得分:2)
同样,从技术角度来看,对C#和C. Sure C的另一次投票很有意思并且会教你所有细节,但事实是,你不需要知道所有细节来制作一个应用程序。如果你的目标是让某些东西发挥作用,听起来就像它那样,那就是C#的举手。 C#是三者中最高的,这意味着更少的时间来对抗语言,更多的时间使得工作。
听起来像大多数人都建议你学习C,这样你最终可以做出更好的C#程序。为什么要等,直接去C#学习它。我确实认为C ++是一种绝对优秀的语言,有一天你应该学习它,但如果你从未学过C或C ++,那就没有理由不能制作高质量的C#语言 - 很多人每天都这样做!
答案 14 :(得分:1)
C#是一个很好的起点。你可以免费获得它,你可以使用XNA studio(也是免费的)做一些有趣的图形。
如果你有特定的理由,我只会学习C ++。
如果您正在进行Windows编程,我建议您执行Petzold's Programming Windows本书之一的前几章。它将使您基本了解C以及Windows如何在裸机级别工作。你真的不需要学习C. Charles Petzold握着你的手,让你在基本的C Windows程序中运行。
答案 15 :(得分:1)
在C#中开发Windows应用程序的工作量远远超过C或C ++。学习C#。
答案 16 :(得分:1)
我建议::
首先进入C.花一些时间来使用它(但不要太多)
然后进入C#。这就是你更容易处理GUI事物的方式。 像VisualStudio这样的IDE可以帮助你处理很多GUI。
如果你想成为C / C ++ / C#真正优秀的程序员,那么它可能不是一个好方法,但我认为你对成为一个Guru或类似的东西不感兴趣:)
答案 17 :(得分:1)
学习C#...如果你想开发桌面应用程序。
答案 18 :(得分:1)
学习C#。
从基础知识开始是好的,但是比C开头更好,我将从C#的基础开始。 这将为您提供C#基础知识的优点,并在您可以转向更高级的主题之后。
例如,您可以查看Charles Petzold“.NET Book Zero”here。
答案 19 :(得分:1)
我会选择C#。
我已经用其他2完成了我的时间(很多)并找到了C#'清洁'。您还可以获得.Net中包含的各种功能的丰富库。我假设您对开发其他非Windows平台不感兴趣,这些平台可能是使用C或C ++的理由。我还假设您不需要从系统中挤出最后一滴性能,而C可能会给您带来轻微的优势。
对于那些说你应该学习C以便理解编程是如何工作的人我会说你应该学习汇编程序以了解C的工作原理。我做了,它确实有帮助,但它真的值得痛苦吗?要成为一名程序员,你必须开启你的大脑。想想你正在做什么并理解你的工具!
我的投票:C#
答案 20 :(得分:1)
我建议你从C#开始,但很快就会升级到C ++,因为一旦你学会了如何编码,你应该回到自己的根源。我正在学习电子学,因为我会更进一步。你越了解如何以及为什么,就越能了解如何最好地获得你需要去的地方。我认为一个不懂任何低级语言的C#程序员会编写相当次优的代码,但是学习C#的低级程序员会对所有托管内容过于谨慎。所以,无论你选择什么,你都应该考虑长期做这两件事。
答案 21 :(得分:1)
你开始使用什么样的语言并不重要,但如果我是你,我会这样做:
从C语言开始(可能很难理解) 转到C ++ 最后是C#
答案 22 :(得分:0)
我需要一些非常强大的功能,我希望能够使用Windows GUI创建应用程序。
好的C是非常强大的,因此可以处理这个标准,但像C#和WPF这样的东西会让生活如此,如果你的目标是GUI应用程序,那就更容易了。
答案 23 :(得分:0)
使用适当的库集,标准C ++中的内存可以像托管(智能指针)一样简单。一些C ++小部件库与C#.NET一样易于使用。但是由于有几个抽象层,它可能比C#表现更差。使用C ++,您需要学习非标准库。使用.NET,您需要的大多数组件都是标准的。
C很古老,没有STL。它要求你聪明,但我怀疑它的优点。
答案 24 :(得分:0)
您打算为Windows制作基于gui的应用程序吗?根据具体情况,我推荐VB。但是,根据您的选择,我会选择C#。
答案 25 :(得分:0)
没有C / C ++ / C#经验以C开头。编辑:好的,直接用C#或C ++开始不要浪费时间。你不能再用C认真地编写Windows桌面应用程序代码了,这只是痛苦的。
然后转向面向对象语言以获得更强大的功能。
如果你不想远离窗户平台,C#不是更好的选择,或者看看Mono平台。
IMO,C#比C和C ++更先进,你将更快地构建大型应用程序。 WPF librarues将为您提供没有Windows样式的漂亮UI(但仅限于Windows系统......)