What is a good desktop programming language to learn for a web developer?
我想学习桌面编程语言,最好是C、C++或C语言。我是一个php/html/css程序员,我想进入桌面应用程序。我需要一些非常强大的东西,我想能够用WindowsGUI创建应用程序。
堆栈溢出社区会推荐什么?在潜入这些语言之前,我应该有什么知识吗?
编辑:
一个Web程序员想创建Windows应用程序,你推荐C?你们怎么了?!
编辑
很明显,C。C将更容易进入并允许您使用WinForms或WPF以及.NET中所有新的微软玩具构建Windows应用程序。如果您熟悉PHP,那么您应该已经熟悉语法、面向对象的概念、异常处理等。
我建议你不要用C来复杂化你的生活,如果你想创建Windows GUI的话,绝对不要用C++。它们确实提供了良好的教育经验,对于更高级的东西(例如使用其他工具包的跨平台开发)很有用,但代价是学习曲线更陡,生产力降低。
此外,如果您是一个Web开发人员,C是您可以(实际上是,heh)用于Web的3个选项中的唯一语言。ASP.NET是一个不错的框架,可能也值得研究。
先简单地看一下C,到编写一些教程程序的程度。C语言很小,定义很好,而且明确的语言定义(kernighan&ritchie——C编程语言)只有几百页长。虽然让你的头围绕指针和递归可能是一个挑战,语言本身是足够小,它有可能完全了解语言。编写C的一个乐趣是,要达到这样的水平并不太难,即不必不断地参考文档就可以编写代码,以了解如何使用不太熟悉的特性X或库函数Y。将学习C视为基础。
然而,要实际编写有用的应用程序,您需要使用C++或C语言。这取决于你想写什么。由于垃圾收集和一般易用性,C++可能会在大多数面向业务的情况下得分,但是C++会为高性能、低级别或游戏领域评分。也有大量的C++库代码可用,它们可以相对容易地被利用(并且纯C代码也很容易适应)。如果你的目标是写一个有特定问题的东西,那么这样的可用性很可能抵消更高的开销C++在完成任务时所产生的影响。
通过这个例子,我对sourceforge上的"image"进行了筛选搜索,并返回了以下项目计数
C: 139C++:569
即使有一些更为商业化的东西,C++的得分也更高——"金融"
C: 12C++:32
无论是数学还是技术,分数都是以C-"分形"为权重的。
C: 4C++:44C:24<(C++明确排除)
当然,这是一个非常粗略的分析,但是,例如,如果我的目标是编写一个桌面分形生成器程序,那么我会选择C++上的C++,因为在C++中处理UI的额外努力将很容易被C++中可用的大量代码所抵消。如果我写的是一个业务应用程序,其中没有太大的优势来处理示例代码和大量的用户界面,那么我会选择C。
事后诸葛亮:至少先熟悉C的另一个原因是,在Mac和iPhone上,还有Objective-C作为主要的开发环境。Objul-C是一个非常薄的包装器,它实际上是C++的第一个表兄弟,所以如果你设想你可能曾经处于你想将代码移植到MAC或直接在MAC上开发的位置,那么我认为如果你至少对C(+或C)在C上如何构建而不是必须"侧向"AcROS,你会发现它不那么混乱。这棵树。
"我需要非常强大的功能,我希望能够用Windows GUI创建应用程序。"
对于丰富的Windows GUI,我很想看看"xaml"的变体:wpf(全桌面)和silverlight(如flash)-这将为您提供最新的工具等,以及大量的样式功能。
为此,C将是主要的选择。托管C++是一种选择,但它更多的工作。
C与其他人相比,确实解决了很多不同的问题,但是考虑到您的网络背景和它的快速开发方法,我肯定会选择C#
我的建议是学习C++。C很好,但它会阻止您编写可移植代码。如果你学习C++,你会有很多选择。在Windows中,可以将Windows窗体应用程序或WPF与.NET框架一起使用。MFC是另一个不错的选择。Qt是在多个平台上工作的另一种选择。因此,通过学习一种语言,您可以为多个平台编写代码,并获得各种各样的GUI tookits。学习C++后,学习C语言是微不足道的。
万事如意
一定要先学习基础知识:学习C。
然后去你真正的目标。如果你想要任何机会去多平台C被丢弃。你想用C++和Qt或者WxWindows进行。
C是这些语言中最高级别的语言,这意味着它是最容易实现您想要的语言。
Windows GUI当然可以用C++和C语言制作,但是比较难。
在我看来,你应该开始学习C,对诸如内存、文件访问等方面有基本的了解。C是一种低级语言,这意味着您将对访问操作系统的方式有更多的控制,但要创建Windows应用程序,您必须编写大量代码行。因此,在使用C做了一些事情之后,我应该从使用Visual Studio 2008的C开始。.NET框架附带了大量的类,使您的生活更轻松。
希望它有帮助。亲切的问候。Josema。
C/C++都允许低层编程。这意味着一切皆有可能,但即使是简单的事情也很难做到。如果你说你想要强大的东西,那你应该从C++开始。它至少为您提供了一些不错的GUI库(GTK+和GTKMM或Qt),而使用C进行GUI编程是一件痛苦的事情。
另一方面,如果您希望快速开发应用程序(这就是您所说的强大的意思),那么C可能是一种可行的方法。
通过语言出现,首先在UNIX上,然后是C++,然后是MFC,然后是C(从1开始)。我认为,回到语言的早期化身有点像学习拉丁语。哦,可能是从保罗·格雷厄姆那里偷了东西,但我同意。
如果你必须有一个最小的对象代码大小,C是非常好的,对于嵌入的东西非常好,因为它是汇编语言的一个进步。我在想一些事情,比如微型芯片等,你可能只有1K字的程序空间。
C++是非常好的,如果你可以有更大的对象大小,但仍然需要能够锤打金属直接-所以像设备驱动程序,网络栈等。
一个操作系统最终可能会出现在这两种情况中的任何一种——或者更可能是两者的混合,这取决于程序员、代码的年代、它需要接口的内容、外部积雪的深度(再运行一次,然后我将编写该方法!)
C非常擅长更高级别的以业务为中心的用户层应用程序。它们可以是基于网络的,基于客户机的,二者的混合——这并不重要。关于.NET家族的好处在于,您有一个丰富的库,对于这一层来说,这一点很重要,而且它正被大量开发,以便一直变得更加丰富。
随着计算机功能的增强,开发人员的成本超过了处理器或内存的成本。
以C为例,忽略C和C++。当你对C满意时,你就不需要用较低级别的语言编程来提高速度了。
我建议C。它并不像其他两个那样强大,但为了你的需要,我相信C将是最不痛苦的。C和C++是低级语言,所以我认为它们会为GUI和其他东西提供大量的工作。
把C保存下来。对于那些建议学习C的人,请给出理由。我声称学习C而不是C++完全没有益处。与他们不同的是,我有理由支持这一主张。
简而言之,C已经是C++的一个子集,用于所有的意图和目的,但是它离最有趣的子集很远。它只提供了一个非常有限的洞察新的计划自相矛盾。另一方面,C++定义了一些非常有趣的新范式,此外,它是C必须提供的所有的泛化(即指针的泛化的迭代器)。
重申:如果选择在C和C++之间,选择C++。
同样,对C和C的另一个投票。从技术角度来说,C是有趣的,它会教你所有的细节,但事实是,你不需要知道所有的细节就可以申请。如果你的目标是让某件事奏效,听起来是这样的,那就是"放下手"。C是这三种语言中最高的一种,这意味着更少的时间与语言斗争,更多的时间使语言发挥作用。
在我看来,大多数人都在建议你学习C,这样你最终可以制作出更好的C程序。为什么等一下,直走到C学习。我确实认为C++是一种绝对优秀的语言,有一天你应该学会它,但是没有理由,如果你从来没有学会C语言或C++语言,那么你就不可能制造出一种优质的C语言——很多人每天都这么做。
尽管我同意C是"有用的",但它对于大多数程序员来说已经不再是必不可少的了。对我来说,这几天的主要功能是让我了解底层硬件是如何影响程序性能和行为的,但这就是它的结尾。在过去的9年里,我一直没有在开发工作中使用它。
在掌握面向对象开发方面,我觉得C++和C++都会给你一个坚实的基础,但是C++更灵活(更难正确使用),而C是更一致的,如果你要进入.NET开发的话,就要走下去。因此,我建议学习C语言和一种新的.NET呈现技术,如Windows演示文稿基金会或Silverlight。或者,先学习Windows窗体,但在表示方面有点欠缺。
我建议C的唯一情况是,如果你正在进入相当低级别的东西,比如设备驱动程序、嵌入式控制器或类似设备,但在大多数情况下,你仍然可以使用C++。
如果你想开发桌面应用程序,学习c。
我建议:
首先进入C。花点时间适应它(但不要太多)
然后进入C。这就是您可以更轻松地处理GUI的方法。像VisualStudio这样的IDE可以帮助您处理GUI。
如果你想成为一个真正优秀的C/C+++C程序员,那么它可能不是好方法,但我认为你不感兴趣成为一个大师或诸如此类的东西:
我要去C。
我花了很多时间(很多时间)和另外两个人一起,找到了"清洁工"。您还可以获得包含在.NET中的各种函数的丰富库。我假设您不感兴趣开发其他非Windows平台,这些平台可能是C或C++的一个论据。我还假设您不需要压缩系统的最后一点性能,因为C可能会给您带来一点优势。
对于那些说你应该学习C以了解编程是如何真正工作的人,我会说你应该学习汇编程序以了解C是如何工作的。我做了,它确实有帮助,但它真的值得痛苦吗?要成为一名程序员,你必须开动脑筋。想想你在做什么,了解你的工具!
我的投票:C
学习C语言。
从基础开始很好,但比从C开始更好,我从C的基础开始。这将为你提供一个坚实的基础,包括C语言基础知识和你可以学到更高级的主题。
例如,您可以在这里查看charles petzold".net book zero"。
你从哪种语言开始并不重要,但如果我是你,我会这样做:
从C中的基础知识开始(可能很难理解)移动到C++最后,C
C语言中开发Windows应用程序的工作比C或C++要多。学习C语言。
C是一个很好的起点。您可以免费获得它,也可以使用XNA Studio(也是免费的)制作一些有趣的图形。
如果你有特殊的理由,我只会学习C++。
如果你在做Windows编程,我建议你做Petzold的编程Windows书籍的前几章。它将给你一个基本的了解C和窗口如何在裸金属水平工作。你真的不需要学习C.CharlesPetzold握着你的手,让你在一个基本的C Windows程序中运行。
我建议你从C语言开始,但是很快就进入C++,因为一旦你学会了如何通用代码,你就应该回到你的根。我现在在学电子学,因为我要回去的更远。你对如何以及为什么知道得越多,你就越了解如何最好地到达你需要去的地方。我认为一个不懂任何低级语言的C程序员会写一些次优的代码,但是一个学习C的低级程序员会对所有管理的东西过于谨慎。所以,无论你选择什么,从长远来看,你都应该考虑两者兼顾。
I need something pretty powerful and I would like to be able to create apps with Windows GUI's.
好吧,C非常强大,所以它可以处理这些标准,但是像C和WPF这样的东西会使生活变得如此简单,如果你的目标是GUI应用程序的话。
使用适当的库库,标准C++中的内存可以变得与托管(智能指针)一样简单。一些C++窗口小部件库很容易用作C.*.NET。但是,由于有几个抽象层,它的性能可能比C差。而C++则需要学习非标准库。对于.NET,您需要的大多数组件都是标准的。
C很古老,没有STL。它要求你聪明,但我怀疑它的优点。
没有C/C++/C的经验,从C.Edg:OK开始,直接用C或C++启动,不要浪费时间。你不能再用C来认真地编写Windows桌面应用程序了,这真是太痛苦了。
然后转向面向对象的语言以获得更强大的功能。
如果你不想呆在离Windows平台很远的地方,C不是更好的选择,或者去看看单板。
IMO,C是比C和C++更先进的,你会更快地建立大的应用程序。WPF库将为您提供没有Windows样式的漂亮用户界面(但仅限于Windows系统…)
你打算为Windows开发基于GUI的应用程序吗?取决于什么,我推荐vb。但是,考虑到你的选择,我会选择C。