V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Mr_Vangogh
V2EX  ›  问与答

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

  •  
  •   Mr_Vangogh · 2011-09-10 22:29:39 +08:00 · 11169 次点击
    这是一个创建于 4605 天前的主题,其中的信息可能已经有所发展或是发生改变。
    怎么调试程序?怎么追踪代码?这种问题貌似总要引起大家的争论,别吵好么?这个问题困惑我好久了,大家给我个答案吧。。。
    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  
       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   ·   我们的愿景   ·   实用小工具   ·   2657 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:20 · PVG 19:20 · LAX 04:20 · JFK 07:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.