这并不意味着是煽动性的或类似的东西,但我正在学习C,并且(想)我对大多数基础知识都有很好的处理.我已经完成了所有各种书籍练习:素数生成器,斐波纳契生成器,字符串操作,yadda yadda,但这些都不是很酷.
什么是命令行程序和某些东西之间的"桥梁"-cool-?我听说各种游戏都是用C语写的,但是怎么样?
请原谅我的愤怒,但感觉就像我一直在学习很多,但仍然可以做的相对较少.感谢您对如何处理C的任何见解.
相关信息:OS X leopard,PHP和Web开发经验(这非常棒,因为项目立即处于您认识到它们如何强大的环境中)
有一段时间,几乎所有东西都是用C语写的,或者是更糟糕的东西.
目前,许多高级语言和系统实际上是用C或C++实现的,然后这些东西实现了更多的系统.正如表达所说,它站在巨人的肩膀上.几乎每个操作系统内核,浏览器和重型Web服务器都是用C/C++编写的.
当然,您不会看到高层建筑中的钢材,您会看到漂亮的室内装饰和时尚的玻璃窗.你不需要钢架或混凝土桌子,如果你这样做,那么为你建造它太昂贵了.
回到GUI问题:你的第一个C图形程序应该直接使用原始的X Window系统.不要在那里花太多时间,而是继续使用更高级的Widget工具包,如GTK +或(C++)Qt.一定要调查你的OS X系统,因为它有一个最先进的系统.
我最近尝试用Ruby写东西,但我碰巧知道有超过100,000个 200,000行的C代码实现了那个很酷的Ruby语言系统.:-)
摘要
好的,这篇文章真的很大,所以这里有一个快速的总结,在你阅读它之前:为了编程GUI,有许多好的C/C++库(例如,QT).至少在Windows系统上,大多数人所做的是在需要GUI时使用.NET语言(如C#),在需要更多控制/速度时使用C/C++.将两者组合使用也很常见,即在C#中制作GUI并在C中制作速度关键部分.
我仍然鼓励你阅读更长的答案,它包含更多关于你的选择的信息.
更长的答案
我将从这个大问题开始,然后回答(尽我所能)关于创建GUI的具体问题.我认为你很容易受到C用于教授编程这一事实的困扰,而且只使用命令行程序这样做更容易(毕竟,编写起来要简单得多).这并不意味着C不能完成你想要的所有东西,比如GUI.确实如此.我不认为有任何类型的软件在C中没有完成,通常在用其他语言完成之前.
好吧,一些答案:
C有用吗?
C及其非常接近的C++,负责世界上很大一部分代码.我不知道用C语言编写的代码是否比其他任何语言都多,但我猜它并不遥远.
您使用的大多数非常重要的程序实际上都是用C/C++编写的.仅举一个例子,Windows.
今天用的C在哪里?
C/C++仍然使用很多.它们对于开发低级别的东西特别有用(比如像操作系统这样的东西,它需要很多速度,很多能够准确控制你的代码所做的事情等等).
但是不要认为这对C程序员来说都是低级别的.即使在今天,随着许多其他语言的出现(可以说它们更好,当然也更容易编程),C仍然被用来创造几乎所有东西.您明确询问的GUI应用程序通常是用C语言编写的,尽管现在很多人都在转换到其他语言.注意我说切换:C曾经是写作的标准语言,好吧,一切,真的.
如何使用C开发GUI
好吧,你特别想知道如何用C创建一个GUI(我希望C++也可以).
首先,它取决于许多因素:
你在为什么操作系统写作?(Windows,Mac和Linux是最常见的).
您是否希望GUI也可以在其他系统上运行?
最常见的情况是编写软件以在Windows上工作.在这种情况下,"自然"解决方案是编写与Win32 API一起使用的东西.这基本上就是"来"Windows的库,让你可以做你想做的任何GUI工作.
这个问题的一大问题是,它有点困难.就像在,很难.这就是大多数人不再做那种工作的原因.
那你有什么其他选择呢?
最自然的是使用所谓的.NET语言.这些是Microsoft创建的一堆语言和库.它们可能是在Windows上获取GUI的最简单方法.问题是,你不能真正从C中使用它们(因为它不是.NET语言).
假设您希望留在C/C++中,您可以使用某种类型的库,这样可以更轻松地使用Windows API(因为它隐藏了所有丑陋的细节):
其中最常见的是所谓的MFC(Microsoft基础类),它是一堆C++类,使得创建Windows内容变得"更容易".不幸的是,这个库很老了,并不是那么容易使用.
如果你想用C++编程,另一种方法是使用某种第三方库.这是一个Microsoft以外的人创建的库,这使得创建GUI变得更加容易.
另一个选择是只用.NET语言创建软件的GUI部分,并使用C/C++代替其他部分(或者使用.NET语言来做几乎所有事情,只有在真正需要时才使用C/C++) ,例如当你需要快速前进的时候).这是一个非常受欢迎的选择.
第三方库的优点是,如果选择正确的库,您可以使用相同的代码同时为所有操作系统创建GUI.
我认为这些库中最着名的是QT,还有WxWidgets,但还有很多其他库.我个人会选择QT因为它似乎获得了最大的声誉,但我也没有合作过.
每个主要的操作系统都有用C语言实现的所有低级库.Mac OS X是一个类Unix系统,如果你是一名C程序员,这是一个很棒的世界.
查看Unix编程的艺术,了解一些好主意.
至于GUI的东西,你可能想要使用X11.有很多好的文档 - 大多数Unix编程的东西和大多数深层系统级的东西只是假设你在C中工作,因为这是每个人都使用它.
嗯,这取决于.如果要构建桌面应用程序,主要语言为C的多平台GUI库是GTK +:
http://www.gtk.org/
对于游戏,请查看SDL:
http://www.libsdl.org/
这为你提供了从键盘,2D图形,一些音频甚至线程和类似东西的直接输入.如果你想进入3D世界,它也可以打开OpenGL上下文(但是在原始的OpenGl中很难做到).我是否提到SDL是多平台的?
然而,C的真正优势在于系统编程.对于桌面应用程序/游戏,您最适合使用C++.现在您已经掌握了C语言,学习基本的C++应该很容易;).