困惑:用像VIM,Notepad++这样的文本编译器而不用IDE写大型程序,真的能行么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Mr_Vangogh
V2EX    问与答

困惑:用像VIM,Notepad++这样的文本编译器而不用IDE写大型程序,真的能行么?

  •  
  •   Mr_Vangogh 2011-09-10 22:29:39 +08:00 11963 次点击
    这是一个创建于 5221 天前的主题,其中的信息可能已经有所发展或是发生改变。
    怎么调试程序?怎么追踪代码?这种问题貌似总要引起大家的争论,别吵好么?这个问题困惑我好久了,大家给我个答案吧。。。
    33 条回复    1970-01-01 08:00:00 +08:00
    Quest
        1
    Quest  
       2011-09-10 22:32:09 +08:00
    选择你喜欢的,而不是听别人的。当然我觉得coding使用纯粹的编辑器而不是IDE让获得了更多乐趣和自由。
    Mr_Vangogh
        2
    Mr_Vangogh  
    OP
       2011-09-10 22:33:08 +08:00
    @Quest 不是,我是比较困惑文本编译器那些怎么调试,怎么追踪代码。并不是要选择什么:)
    vayn
        3
    vayn  
       2011-09-10 22:34:11 +08:00
    关于如何使用编辑器调试已经有太多的文章了,Google is your best friend, ever
    kaichen
        4
    kaichen  
    PRO
       2011-09-10 22:54:55 +08:00
    debug的话可以用gdb或者print,看过<coders at work>的话,你会发现大牛们几乎都用print。
    webgeekman
        5
    webgeekman  
       2011-09-10 23:00:37 +08:00
    @kaichen 能否详细说一下?
    roamlog
        7
    roamlog  
       2011-09-11 00:44:10 +08:00
    关于调试,我写 ruby 或 rails,从来不调试,都是写测试代码。。。
    chloerei
        8
    chloerei  
       2011-09-11 02:38:47 +08:00
    能行,因为大型程序不是靠人去调试的,而是机器自动调试的,生成调试逻辑的代码就叫做测试代码。
    Mr_Vangogh
        9
    Mr_Vangogh  
    OP
       2011-09-11 08:34:09 +08:00
    @chloerei 就是说在程序中加一些log一样的东西,然后分析log文件来找到代码中的问题?那追踪代码呢?比如一个地方用到了一个函数,然后你需要找到这个函数的定义,不能直接跳过去,万一文件多了怎么找呢?
    reaky
        10
    reaky  
       2011-09-11 09:09:59 +08:00 via Android
    不是有tag文件嘛
    holmesabc
        11
    holmesabc  
       2011-09-11 09:50:52 +08:00
    其实也应该 看你写什么吧。
    文本编辑器感觉写脚本,网页很不错。
    如果要写java之类的,估计会把人玩死。

    调试方面,我还没有看见周围的人怎么去调(主要是python,偶尔会有ruby),他们都是用的print类似的东西测试,看输出。
    断点,单步什么的,都没看他们用过,据说要用的话也是用eclipse去下断。
    这也主要是这些脚本语言测试起来方便,特别是web,写好了,F5一下就可以看到效果。
    bhuztez
        12
    bhuztez  
       2011-09-11 10:09:21 +08:00
    到底有多少会是大型程序
    lanisle
        13
    lanisle  
       2011-09-11 10:18:20 +08:00
    这真的是个人喜好,不同的工作场景用不同的工具。工具是提高效率的得力助手,但不要被工具套牢啦~
    qiao
        14
    qiao  
       2011-09-11 10:58:34 +08:00
    @Mr_Vangogh 一般写 C 或 C++ 程序都会使用 ctags,然后给 vim 装上 c.vim 插件,之后便可以非常方便的在函数内跳转。此外还有 tagbar 等插件用于显示函数列表。所以你的这个问题完全不必担心。
    Mr_Vangogh
        15
    Mr_Vangogh  
    OP
       2011-09-11 11:05:17 +08:00
    @qiao 嗯,我明白啦:)
    chloerei
        16
    chloerei  
       2011-09-11 13:33:45 +08:00
    @holmesabc 对测试还有误解,自动测试跟log是完全不同的。自动测试是写一套代码,去检测程序代码的逻辑。测试的地位在国内还是被低估的,推荐这本书 http://book.douban.com/subject/1230036/ 测试驱动开发(中文版)

    不过如何调试跟是否用IDE其实是两个话题,编辑器可以用命令行工具调试,IDE可以写自动测试。到最后决定性的还是看个人喜欢用单独的工具还是喜欢IDE打包。

    除了一个例外:Java,整个社区就是假设工作在IDE下的。

    “这里的语法设计是不是繁琐了点?”
    “没事,他们有IDE,让IDE的人写个代码生成工具”
    “XML不好读不好写啊”
    “没事,他们有IDE,让IDE的人写个图形编辑工具”

    结果出来的东西没有IDE根本玩不转。我的选择是远离这些东西。
    Droog
        17
    Droog  
       2011-09-11 13:51:59 +08:00
    原来也在这上面纠结过。
    感觉那种强烈推荐vim以及其他一些文本编辑器做IDE,是一种误区(当然VIM已经不能算作一个简单意义的文本编辑器了),常常也会有筒子举例,大牛们只用VIM,或者其他的编辑器,但,这里有几个大牛呢。
    “君子善假于物”,既然有方便的IDE,能提高效率,何乐而不为呢。
    至于所谓的,什么没有了IDE就吃不开,这个根本就不用担心。难道有公司说,IDE是禁止使用的,那不是天方夜谭吗。
    args
        18
    args  
       2011-09-11 14:16:00 +08:00
    这个真的是个人喜好问题。我用vim的原因就是方便简单,不用去理会其他编辑器那繁多的配置和复杂的操作,而这个可能恰恰是别人不用vim的原因。

    至于调试追踪,或许随着自己经验的增加会趋向于使用更简单的方式来完成,比如我刚入门写c程序的时候极喜好用gdb,但后来发现有时即使使用gdb一个简单的if中赋值的bug也会让我调试一天的时间。而现在大多靠经验和打印定位bug,以至于gdb的那些命令都全忘了。
    oldman
        19
    oldman  
       2011-09-11 16:05:04 +08:00
    我觉得这一方面是个人喜好问题,另一方面也是解决问题的思路问题。

    一般情况下你有可视化的调试器(比如说vs调试器)时,遇到问题的第一反应就是“咦,怎么会这样呢,我调试下看看”。于是就开了调试器,打上断点,跑一下。

    这样的话就是往往你会一头扎到实现里去,只见树木不见森林。其实应该先静下心来想想这样为啥会出问题,为啥出了这个问题我只是靠分析一点结果都拿不到(而一定要靠调试),如果需要调试的话再来调试,同时思考一下这种情况以后是不是可以不通过调试来解决。

    还有ide的问题,我觉得用vim和vs(原谅我,windows开发,没办法)最大的区别就是vim写代码让我思路更清晰(因为没有一堆的提示打扰),但是相反,如果我今天就想让它给个提示的时候,它有些时候提供的就不全了。反正各有利弊吧,看自己把握了。
    chuck911
        20
    chuck911  
       2011-09-11 23:11:38 +08:00
    不方便测试的程序不是好程序
    项目越是大型,越要注意松耦合、面向接口,也就是方便测试
    虽然我不是先写测试再写程序,但也深受TDD的思路影响
    rebolomo
        21
    rebolomo  
       2011-10-25 11:36:44 +08:00
    我用komodo调试rails,因为之前一直用komodo调试php,现在懒得学别的了
    调试方法参见:
    http://www.rebolomo.info/2011/10/komodorails
    WarWithinMe
        22
    WarWithinMe  
       2011-10-25 11:53:51 +08:00
    Vim和其他文本编辑器的初衷都只是用来编辑文本,所以IDE肯定是需要的。
    个人比较喜欢在VS下面安装一个VsVim的插件。Vim的基本功能有了,IDE也可以有了。
    bl0ck
        23
    bl0ck  
       2011-10-25 17:00:31 +08:00
    要看做什么平台了,ruby/python这种解释性的语言,确实没必要IDE,如果是java平台,cocoa平台的话,IDE还是有必要的
    AngusLiony
        24
    AngusLiony  
       2011-10-25 17:11:23 +08:00
    = = 表示一直用这些东西,除非必要非要用IDE,例如apple的开发者xcode基本是必备的吧。
    ultragtx
        25
    ultragtx  
       2011-10-25 18:44:38 +08:00
    有官配ide的肯定用ide啊
    tsuibin
        26
    tsuibin  
       2011-10-26 19:53:37 +08:00
    VIM配好了很好用的,可以设置很多快捷键,可以很方便的查文档,也有代码提示等;
    调试用GDB,IDE的调试只不过是给GDB加了个UI界面。
    rebolomo
        27
    rebolomo  
       2011-11-17 19:31:12 +08:00
    Ricepig
        28
    Ricepig  
       2011-11-17 20:15:27 +08:00
    其实IDE比VI,Emacs这些编辑器的优势除了调试之外,工程组织方面也是不可忽视啊,另外,还有代码提示和代码完成,这个还是很不错,可以减轻很多记忆负担。

    再另外,所谓VIM配置好了~~~Emacs配置好了~~~这些莫要再提了,举个例子:搞定Javascript的缩进和高亮,诸位可以列出“可用”的配置吗?据我所知,配置极其麻烦...

    最后,莫提神马ctags。请问,我如果新增加了几个类文件,ctags要进行怎样的操作才能识别呢?也莫提什么IDE调试只是给GDB加了个UI界面,请问哪个VIM或者Emacs的GDB调试能够看到模版容器里的内容?
    RainFlying
        29
    RainFlying  
       2011-11-17 20:32:07 +08:00
    为什么不行?在全屏幕编辑器出来之前程序员用的可是行编辑器,那是怎样的概念?你用用 ed 就知道了。
    poshboytl
        30
    poshboytl  
       2011-11-18 01:44:13 +08:00
    everybody loves GDB....
    poshboytl
        31
    poshboytl  
       2011-11-18 01:47:29 +08:00
    @roamlog 这是两回事.... 写了测试就不用调试了? TDD, BDD 通常是覆盖你预期(或者叫需求)的情况... 往往需要调试的时候是你遇到了非预期的情况...
    hq5261984
        32
    hq5261984  
       2011-11-18 01:48:33 +08:00
    notepad++有调试插件。
    poshboytl
        33
    poshboytl  
       2011-11-18 01:48:49 +08:00
    @kaichen 注定不能成为大牛了... 我一般都用 debugger..... LOL.. and you? :)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1180 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 17:36 PVG 01:36 LAX 09:36 JFK 12:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86