当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 22 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : 问一个也许不该问的问题
帖子发表于 : 2006-08-06 21:53 

注册: 2006-07-23 15:02
帖子: 200
送出感谢: 0 次
接收感谢: 0 次
刚转到linux环境编程

问一个问题,既然linux下有不少不错的IDE,为什么还要花很多精力研究gcc,gdb?

想code:blocks或者别的ide,都有很好的编辑功能,然后直接compile,build,调试也是图形化。

问题换一个角度 ,就是,学习gcc,g++,gdb,makefile能给我门带来别的什么好处?

除了不用新建project以外。


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2006-08-06 22:08 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
历史原因也有。linux下的编程方式太多(有上百吧),而且都比win那边简单些(普通的bash就搞定了),简单程序就简单处理。linux也没多少很大的软件。ide也都是架构在这些简单的软件上面的。你看anjuta的搜索是使用grep,自动完成是使用tags。因为以前的unix遗留过来的小软件已经很强了。都可以利用。


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2006-08-06 23:04 

注册: 2006-07-23 15:02
帖子: 200
送出感谢: 0 次
接收感谢: 0 次
也就是说,实际上,如果不是编译原理爱好者,是没有必要搞这些的?


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2006-08-06 23:09 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
编译软件爱好者?

反正linux的小软件很强。用bash组合起来,几乎可以作任何事情(当然不能太复杂)。我用了很久,至今只是试过一个软件。用anjuta+glade作的。其他的都是bash就完成了。如果你要专门作开发,门类也很多。各种编程方式都不同。而且多数是解释语言。


_________________
● 鸣学


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2006-08-07 8:17 
头像

注册: 2006-05-23 13:35
帖子: 225
送出感谢: 0 次
接收感谢: 0 次
很简单,用 ide 只是屏蔽你直接使用 gcc, gdb, 等等的细节,Linux 的 c/c++ 编程罕得不使用 gcc 的。

*nix 并不鼓励直接使用 c/c++ 来处理问题,很多东西用脚本就能搞定的。真正能用到 c++ 的地方在 *nix 上算是非常高级的地方了。

makefile 的一个用处是:当你要构架针对不同目标的 3 个以上的版本时,你总不能把 ide 的设置改 3 次,然后分别编译。好吧,只有 3 个目标,如果 10 个 20 个,怎么办?makefile 的好处就是你打 make 它自己根据 makefile 构建 n 个目标,还有部署等等。


_________________
我的 BLOG 欢迎来踩!


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2006-08-07 9:54 

注册: 2006-07-23 15:02
帖子: 200
送出感谢: 0 次
接收感谢: 0 次
恩,正是因为目前的ide大多数都是基于gcc系列的编译器,我才对单独学习gcc的必要性有了问题

至于unix是否鼓励c/c++,这个可能不在我的考虑范围之列,很多人写程序不仅仅是为了解决系统问题的

楼上说的makefile这个问题确实比较方便,不过,我还是没看出来如此多程序员争先恐后学习gcc,gdb等的理由。

情愿谅我的抛根问底,因为在我学习一个东西之前,我希望直到它是否值得我花很多精力去学它。


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2006-08-07 10:04 
头像

注册: 2006-05-23 13:35
帖子: 225
送出感谢: 0 次
接收感谢: 0 次
你在学习之前会有机会考虑是因为你不需要参与别人的协作——换句话说,如果你是参与团队开发,是没有机会考虑的,团队是不可能因为你一个人的考虑而影响整个工作的。

争先恐后去学习 gcc, gdb,打比方说,如果你在一个别人铺满海绵的房间里工作好,还是在一个空空的房间由你自己来铺海绵好?差别是,别人铺好的,你不知道什么地方会疙脚;但是你自己弄的,你非常清楚这个房间是什么样的,海绵能掩盖房间实体的表面,但是无法掩盖其本质——那些硬伤。

自己搞,虽然累,但是要长期开发的时候,是值得的。要快速开发的除外,最好学习 Java,通常认为 C++ 的复杂度非常高,熟悉一个 C++ 的时间可以精通好几次 Java。

有个项目文件也是非常头疼的问题,我是用 VSS 管理并发开发,每次刷新一下项目文件都要丢掉好几个文件,VSS 没有合并项目文件的能力?!CVS 和 SVN 没有试过,我怀疑公司里面有人会架设 SVN 服务器不。


_________________
我的 BLOG 欢迎来踩!


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2006-08-07 11:47 

注册: 2006-07-23 15:02
帖子: 200
送出感谢: 0 次
接收感谢: 0 次
恩,也许我可以归纳成以下两点:
1 目前大多数linux环境程序员都用gcc,gdb,makefile,因此在你跨入这个行业的时候不得不学

2 在排除一些深层次问题的时候比较有用。

是不是这样?我想,后一点比较吸引人,至于前一点,应该算是历史遗留问题吧,前些年还没有顺手的IDE

呵呵,anyway,谢谢你的回复。


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2006-08-07 12:00 
头像

注册: 2006-05-23 13:35
帖子: 225
送出感谢: 0 次
接收感谢: 0 次
linux 上一直不缺顺手的 ide,当然你要不认为 vim emacs 是的话就没法了。

用 gcc, gdb, makefile(主要是 GNU Make) 的原因是因为它们基于 GPL,GNU 的大部分开发也因为此。你的第二点太抽象了,看不懂。

gcc 因为跨平台的特性,所以开发的时候非常上手。当然你也可以用 CodeWarrior,但 cw 因为不是 GPL 的,所以在商用的时候非常碍手。vc, bcc32, icc 等,因为跨平台性能不是很好(vc 是完全没有),所以很少用。谁都想一次投资多处使用,所以 gcc 就是首选了。

gdb 则是因为 *nix 最强大的调试器,当然你也可以用 ddd,但是我没有太多的调试器经验,没有发言权。

makefile 的缺点在于不能跨平台,而且现在也非常少有项目直接手写 makefile 了,都用 autoconf/automake 生成的。代替 makefile 的是 Jam 方案,可惜我还没有学会。Ant, NAnt 主要用于 java, .net 构建,用在 c++ 上很浪费,所以 C++ 用得更多的是 boost::build - BJam,但是我不会现在。


_________________
我的 BLOG 欢迎来踩!


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2006-08-07 12:53 
头像

注册: 2005-08-29 14:49
帖子: 1119
地址: 杭州
送出感谢: 0 次
接收感谢: 3
ddd DDD - The Data Display Debugger


只是能够图形化的显示调试时程序内的数据结构而已,建立在 gdb 之上,可以说只是一个 gdb 的“UI”而已。

makefile 应该说平台独立的,因为 肯定有可适用于 各个平台的 make 程序


_________________
用心×恒 | 豆瓣 | 门户 | Blog


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2006-08-07 13:16 
头像

注册: 2006-05-23 13:35
帖子: 225
送出感谢: 0 次
接收感谢: 0 次
make 是跨平台,但 makefile 中经常写一些 shell 相关的脚本,跨平台的性能不是很好,除非你写些不依赖于平台的命令。

我事先也说明了
引用:
但是我没有太多的调试器经验,没有发言权。
调试器我最喜欢 C++Builder 的 CodeGuard,但现在不用 Windows 了。


_________________
我的 BLOG 欢迎来踩!


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2006-08-07 14:17 

注册: 2006-07-23 15:02
帖子: 200
送出感谢: 0 次
接收感谢: 0 次
ddd的图形化不是很出色,个人认为还需要很大的提高。

我是正在学习,vim,早就听说学好了对程序员非常有用。不过我对vim编程方面的插件不是很了解,比如自动补齐之类的。楼上几位如果知道能否推荐以下,谢谢。

另外,linux下有code:clocks:http://www.codeblocks.org/,与vs很多东西都有相似之处,而且更快更小,我承认我比较喜欢vs2005这个IDE,虽然它很庞大。我没有用过anjuta,不过linux好象不少程序员用它。

因此我再附加提一个问题,用vim或者emacs写代码,能达到像这些IDE这样,格式美观,切换容易,智能补齐,自动统计symbor,class等?


页首
 用户资料  
 
13 楼 
 文章标题 :
帖子发表于 : 2006-08-07 14:21 
头像

注册: 2006-05-23 13:35
帖子: 225
送出感谢: 0 次
接收感谢: 0 次
Code::Blocks 但是还是 1rc* 而且 rc 了快 1 年了,还没 release 等得我都没耐心了。

vim 对集成调试功能不是很好,反正我还没看到一个很合理的。emacs 可以,但是我不会用 emacs,emacs 是号称除了不能冲咖啡的最强大编辑器,你说的那些功能应该都没问题,自己去试试看。


_________________
我的 BLOG 欢迎来踩!


页首
 用户资料  
 
14 楼 
 文章标题 :
帖子发表于 : 2006-08-07 15:00 

注册: 2006-07-23 15:02
帖子: 200
送出感谢: 0 次
接收感谢: 0 次
Code::Blocks 是1.0rc2.确实没有release,我在windows下都是用的one night版本。

对于vim,我不要求它集成调试功能,打开另一个终端输入gcc并不是什么麻烦事。而且我上面所举的似乎都是属于编辑器的功能吧?vim也不能达到么?


页首
 用户资料  
 
15 楼 
 文章标题 :
帖子发表于 : 2006-08-07 15:07 
头像

注册: 2006-05-23 13:35
帖子: 225
送出感谢: 0 次
接收感谢: 0 次
OmniCppComplete 可以做到 C++ 代码的自动完成,其它的工具我还没有去用,最近忙着换工作,没空。


_________________
我的 BLOG 欢迎来踩!


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 22 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译