linux环境下C开发者需要什么样的IDE,或者说工具链

难易 发布于 2012/04/14 12:16
阅读 4K+
收藏 4
目前的IDE,设计出来都是给商业软件或者j2ee等开发者用的,并不适合内核开发,也不适合linux下C开发,这是两个完全不同的逻辑,两个完全不同的用户群体。 
  
另外来说,ide的一大特点是有很多个窗口,而问题在于,一流的程序员需要同时只关心一件事情,其他的事情在他脑子的swap区里面,完全没必要拿到屏幕上来,拿上来反而干扰思考。 
  
  
那适合linux下C开发的ide,或者说工具链应该有什么特性呢?一条条来说 
  
1.关键字补全,对于商业软件这种函数名字取得很冗长的,类库很复杂的非常必要,但在linux下基本无用。 
     更多的时候我关心我调用别人库函数的用法是否正确,一些边界条件有没有问题,vi里面直接按K看manpage非常有必要。也就是说,其实更加需要的是让类库的提供者能够简单发布manpage的功能。从这个意义上来说,linux的info是一种冗余的格式,从易操作易获取性来说不如manpage,从格式丰富内容详尽来说不如html或者wiki。 
     至于我自己写函数,我还需要文档么?我直接用ctags跳转到函数本身看实现,高手写的代码是自描述的,代码本身就够了。 
  
2.断点、单步跟踪。最大的问题在于,就是gdb这种命令行,或者eclipse这种显示变量值的并不直观,两者都不够直观,完全不能反映程序运行的实际情况,其实firefox还有chrome出的啥,能把html一层层用立体图像展现出来的,才能真正有用。也就是说,需要能把整个堆栈和所有变量的运行情况以图形的方式表现出来才是好的。可惜目前还没有这样的调试器,也许图形不能描述代码。 
  
3.构建和依赖管理系统,linux下至今没有好的,auto tools基本就是一堆方言的集合。或者说,gcc有无数的选项,但光通过makefile和shell命令行来调用不能发挥gcc的威力。应该发明一种ddl,特殊的语言来做编译和依赖管理 
    在linux生态系统下,一个开发者需要花太多精力在工具链上 auto tools, libtool, pkgconfig, gcc, makefile, 大量不必要的时间花在在整合这些完全哲学不一致的东西上。 
  
4.静态代码检查,涉及到更聪明的编译器,据说clang做得很好,这个不是很懂。对于c而言,valgrind+kcachegrind就是神器了,但遗憾的是这是独立的工具,需要运行时候才能发挥作用。 
  
5.版本管理。。git已经做得非常好了,这点是linux下开发大大领先其他的地方。也许需要一个单机服务器端网页版的类似github这样的工具,让开发者们能直观的交流进度。 
  
unix之所以成功,我觉得根本原因就在于这个系统足够简单正交。所以高手只需要vi就行。 
市面上的ide大多是"要你命3000",把一堆功能堆在一起,未能提供内在一致的东西。 
加载中
0
Jeky
Jeky

哈 我也试试

召唤 @中山野鬼

0
Shawphy
Shawphy
个人觉得vim和emacs已经很好了
0
solookin
solookin
我来说,eclipse
0
Appcrashes
Appcrashes
code::blocks
0
匿名人士
匿名人士
編輯器(vim/emacs),編譯器(gcc),調試器(gdb),項目管理(make),這就是全部
0
Yisen
Yisen

最近试了试Qt creator,蛮不错的,把valgrind整合了进去

现在很多ide都把cscope集成进去了,查看函数定义,调用是真好用

新版的cmake也是挺好用的,但我还是倾向于写好一次makefile模板,新项目做点简单修改就好了

f
fireco007
支持Qt creator
难易
难易
cmake和cscope,有空一定要试试
0
Jackarain
Jackarain
@中山野鬼  快来, 不然又来晚了...
0
中山野鬼
中山野鬼

来啦,来啦。楼主的言论我大部分都非常赞同。IDE对于不同层级的开发是要求不一样的。比如如果APP的UI开发你非要他用命令行,就是否猥琐了。就我个人目前的态度,基本是通过C代码本身通过内嵌代码的方式完成DEBUG。至于什么人性化功能,我真的很郁闷,比如 { ([ 会自动加上右边对应的字符。 我打这么多年键盘,习惯两个手指同时把左右括号敲进去,所以对我个人而言这种人性化非常多余。

工具和衣服有点像,选择合适自己的,就是最好的。我属于那种基本穿内裤就到处跑的人。。。哈。

0
醉眠湘云
醉眠湘云
哪个顺手用哪个
0
xunxun
xunxun

那不是调试器做的

而是调试器前端

能做到那种程度的曾经只有DDD

可惜DDD开发暂停了,与现今流行的gcc/gdb版本不太契合,不过有些情况也是可用的(大部份C,gdb可以选择archer分支,以支持变长数组)

返回顶部
顶部