LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4193|回复: 30

说说C语言的现状把?

[复制链接]
发表于 2005-8-16 19:41:18 | 显示全部楼层 |阅读模式
两个问题
1、C++这两年发展很大的,出了什么模板元编成之类的技术(偶还没学)。C语言现在怎么样呢?

2、许多*nix程序都用C写成,是处于什么原因呢?历史原因?技术上的情结?还是某种深思熟虑的选择?看gtk的文档上说,使用C有一个好处是可以被很方便的针对其他语言封装。这算是一个原因么?
发表于 2005-8-16 19:54:43 | 显示全部楼层
将会成为水贴
鉴定完毕
回复 支持 反对

使用道具 举报

发表于 2005-8-16 22:08:18 | 显示全部楼层
鉴定完毕
确诊
回复 支持 反对

使用道具 举报

发表于 2005-8-16 22:16:05 | 显示全部楼层
楼上的两位瞎起哄,我也想听高手解释一下。
回复 支持 反对

使用道具 举报

发表于 2005-8-17 10:03:15 | 显示全部楼层
我觉得*nix用C一是为了跨平台(毕竟不是所有平台上都有C++编译器的),二是为了效率(毕竟C比C++的效率要来的高一些,C++的Template、try、catch可以让你的代码体积和运行效率发生不可预知的变化),在操作系统这种要求效率的场合,C还是更胜任一些的。而且用C一样可以实现OO的思想。
GTK+用C应该是为了更好的被其他工具封装,据我所知就有pyGtk、wxGtk等多种封装。QT好像没这么多吧。

顺便发句牢骚:C++变得越来越庞大复杂,搞不清楚这样倒底是给人带来方便还是让人越来越难用。至少调试C程序比调C++的方便一千倍。

不过STL是个好东西。
回复 支持 反对

使用道具 举报

发表于 2005-8-17 13:18:40 | 显示全部楼层
Post by gamedragon
我觉得*nix用C一是为了跨平台(毕竟不是所有平台上都有C++编译器的),二是为了效率(毕竟C比C++的效率要来的高一些,C++的Template、try、catch可以让你的代码体积和运行效率发生不可预知的变化),在操作系统这种要求效率的场合,C还是更胜任一些的。而且用C一样可以实现OO的思想。
GTK+用C应该是为了更好的被其他工具封装,据我所知就有pyGtk、wxGtk等多种封装。QT好像没这么多吧。

顺便发句牢骚:C++变得越来越庞大复杂,搞不清楚这样倒底是给人带来方便还是让人越来越难用。至少调试C程序比调C++的方便一千倍。

不过STL是个好东西。


对于C++和C来说, 效率取决于数据结构和算法以及编译器的实现, 往往C的初手写的
代码效率不怎样.

UNIX一系列一直都是C一统天下, 而且C++的标准出来比较晚, 而且语法比C复杂了不止一倍
两倍, 高手用C++能写出简洁高效漂亮的代码, 可惜绝大部分人都不是C++高手。

其实觉得大部分人也不是C高手。

C99增加了一些挺好玩的东西,估计现在学校里教学的C还是C89,常用的还是VC6,抑或元老级的TC2/3。。。。

这几天看到一段宏,挺好玩的:
extern int add(int x, int y);

#define add(...) (trace("add(%d, %d)\n", __VA_ARGS__), add(__VA_ARGS__))

#define trace(...) (fprintf(stderr, "[%s:%d:%s]", __FILE__, __LINE__, __func__), \
                fprintf(stderr, __VA_ARGS__), fflush(stderr))

这样在调用add(1, 2)时会打印出跟踪信息:
[hello.c:24:main]add(1, 2)

好处是不用修改.c文件就可以知道在什么地方调用了add,参数是什么。
回复 支持 反对

使用道具 举报

发表于 2005-8-17 13:29:07 | 显示全部楼层
LINUS 对于为什么没有用C++写内核的回答是:
1.C++内存使用有不明了的地方
2.C++异常处理不爽
3.C也一样能实现OO
回复 支持 反对

使用道具 举报

发表于 2005-8-17 13:39:04 | 显示全部楼层
听起来,原因1的前面少了“我对”两个字。  
其实,C的最大好处就是快(原因2就是其中一个因素),老人用得熟练。
回复 支持 反对

使用道具 举报

发表于 2005-8-17 14:34:08 | 显示全部楼层
前一时间泄漏出的win代码也多是用C的
回复 支持 反对

使用道具 举报

发表于 2005-8-17 14:39:21 | 显示全部楼层
一句话:语言只是工具,关键在于人。
linux内核没有采用c++也不能说明什么,顶多只是linus不喜欢c++而已。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表