V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
gzxultra
V2EX  ›  Linux

关于 Linux 系统下编程的一些疑惑

  •  2
     
  •   gzxultra · 2015-03-25 19:22:24 +08:00 · 7072 次点击
    这是一个创建于 3318 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本科计算机在读,原来感觉平平,现在倒是越来越有兴趣了~
    看到许多人说以后去公司,程序开发在linux环境比较多,vim/emacs是主流。
    于是搭建了一个centOS的虚拟机,努力学习vim...(还在所谓的“活下来”的阶段挣扎。。。)

    学归学,但其实不是很理解,为什么不老老实实用dev c++,eclipse,intelij甚至是VS这类的IDE环境呢?他们的代码补全,调试之类的功能已经很完善了不是么(vim我还不会调试。。。)

    有没有大大愿意跟我们这些后辈分享一下,你们是怎么接触到linux,vim这类环境并学习的呢?

    还有个问题,如果我暂时只写acm的题目,在linux下我应该用哪些开发工具呢?

    能说说经验,给出经典教程最好了,
    万分感谢。

    第 1 条附言  ·  2015-03-25 23:01:26 +08:00
    另外有个问题,原谅我的设备多且杂,跨平台。。。
    Macintosh适合写ACM算法的代码么,主要用c/c++,
    因为觉得Xcode太大太笨重了,而且暂时不做mac开发。

    你们是不是推荐用一个类似notepad/vim的文本编辑器+gcc编译呢?
    62 条回复    2015-03-27 09:00:04 +08:00
    DIYgod
        1
    DIYgod  
       2015-03-25 20:34:29 +08:00
    vim前期不会配置可以用一些别人封装好的 比如: https://github.com/spf13/spf13-vim
    bigeagle
        2
    bigeagle  
       2015-03-25 21:43:45 +08:00
    装个 code::blocks 写就行了,大家用 vim/emacs 是因为适用范围广,如果你 **只是** 为了写 acm 题的话,用 code::blocks 乃至 eclipse 都好。
    lusyoe
        3
    lusyoe  
       2015-03-25 21:45:47 +08:00
    你一般的编程当然可以用IDE啦,但是在Linux下你很难不修改各种配置文件等,这是因为Linux下有句:一切皆文件。。。而且大牛们一般都是玩终端的,没有图形界面,你IDE怎么吊?
    jokester
        4
    jokester  
       2015-03-25 21:46:59 +08:00
    vim和emacs确实可以扩展得很牛逼
    然后linux软件往往是好用的要钱, 不要钱的没那么好用
    devc++很久没更新了, eclipse cdt也就那样

    acm规模的我觉得有个语法高亮就行了...
    jokester
        5
    jokester  
       2015-03-25 21:47:57 +08:00
    接上一条
    我错了 devc++还很活跃
    shippo7
        6
    shippo7  
       2015-03-25 21:52:27 +08:00
    说说我的理解

    linux是个系统内核,各种IDE需要跑在桌面环境上,并不是所有linux发行版都带有图形桌面。vim,emacs这样的基于命令行的编辑器并不需要装载桌面环境,熟练之后更为轻巧。

    其实用什么编辑器都是个人喜好,IDE也是个带有更多辅助功能的编辑器。如果你需要语法检查和更多的辅助功能,就用IDE。如果你已经是个熟练的程序员,语法检查对你没什么意义了,在linux上自然就不想装载桌面然后使用沉重的IDE了。
    fds
        7
    fds  
       2015-03-25 22:02:51 +08:00
    没人说写代码一定要用vim。只是如果你经常跟服务器打交道的话,熟练掌握vim是水到渠成的。因为很多情况下没有图形界面,又要改各种配置、脚本……

    如果你只是开发应用的话,windows上用VS,mac上用Xcode,没见有人在vim里写的。
    popu111
        8
    popu111  
       2015-03-25 22:04:47 +08:00
    同上。。。从来不用vim写代码,只是改改小文件罢了
    em70
        9
    em70  
       2015-03-25 22:06:30 +08:00
    莫把一些人的个人喜好当必备技能!

    linux是程序员的玩具,如果对linux有兴趣爱折腾,自己就能精通vim.但世界需要多元化,不是非要爱好linux才能当程序员,mac,win都是很好的系统,你喜欢哪个,觉得有兴趣就专研哪个,不用模仿别人.
    reeco
        10
    reeco  
       2015-03-25 22:09:03 +08:00
    新手还是推荐IDE吧,能少走很多弯路。
    Linux下图形编辑器我推荐geany,不折腾
    sunsol
        11
    sunsol  
       2015-03-25 22:19:04 +08:00   ❤️ 1
    用IDE方便是方便,但不利于理解一些底层的概念,而且关键是IDE约束很大,
    而命令行像make脚本的灵活性是IDE很难做到的,在掌握之后就会觉得其方便性远超IDE.
    编程是用计算机来做一些事情,而命令行是用计算机来控制计算机的一种方式,
    由于其由文本构成,而且在linux有许多辅助工具来构成脚本实现自动化,
    所以同时就是最简单的控制计算机方式,学会之后对编程自然就有很大帮助。
    毕竟编程的一大部分就是在管理程序文件、文档文件、数据文件
    或者自动编译、自动测试、自动XXX等等,写程序只是编程的一部分。
    lvvj
        12
    lvvj  
       2015-03-25 22:36:07 +08:00   ❤️ 1
    本人的情况跟楼主基本一样,ACMer,CS大一在读。
    至于LZ提到的问题,这是我的观点:
    1.不管你打算以后做怎么,Linux都是必须的。运维就是Linux打主力;就算做开发,你也不要想着写好程序就直接扔给运维。
    2.对于VIM嘛,这些就见仁见智了。毕竟我们是利用这些工具来提升我们的效率,如果你能熟练地使用其他软件达到同样的效果,也没有必要换。我就喜欢在WIN下用Notepad++,在Linux用Sublime Text。
    3.至于IDE,我觉得这是好东西,能不切终端就能编写、调试好代码,ICPC不是也用code::blocks吗?所以毫无疑问是对效率有正作用的。不过gcc、gdb...之类的工具还是需要熟悉的。所以还是建议你在熟悉的情况下再使用IDE。就像我高中的时候选发行版,在CSDN上看到的回复:用Ubuntu的不是菜鸟,就是大神。

    纯手打,希望对你有些帮助。
    frankzeng
        13
    frankzeng  
       2015-03-25 22:57:28 +08:00
    服务器上没有xwindow,你说的那些没有办法运行的,只好用vim了,习惯了命令更高效。
    手打的代码不是更有味道吗,纯手工的哦,价格更贵。
    nicai000
        14
    nicai000  
       2015-03-25 23:02:01 +08:00
    "写代码"必须推荐IDE, 虽然我是用Vim, 因为实在是"编辑"得太爽快了
    Monad
        15
    Monad  
       2015-03-25 23:07:59 +08:00 via iPhone
    vim+youcompleteme虽然没有vs给力但是也很酸爽了
    另外提醒楼主不要变成工具党
    lingxi27
        16
    lingxi27  
       2015-03-25 23:28:13 +08:00   ❤️ 1
    你可以试试从qtcreator的fakevim开始
    20015jjw
        17
    20015jjw  
       2015-03-25 23:39:27 +08:00 via Android
    学校里所有CS Lab里电脑都是ubuntu
    sublime我觉得好蠢
    所以就vim了xd
    加上自己的vps也要维护 总不能x tunnel过去sublime把xd
    sleeperqp
        18
    sleeperqp  
       2015-03-25 23:43:42 +08:00
    作为一个退役的acmer, 你还在刷水题的阶段 用codeblocks
    已经开始有实力过中等题 用vim+gcc吧
    再往高就不用人推荐了 对什么感兴趣就用它的ide吧
    bigzhu
        19
    bigzhu  
       2015-03-25 23:59:20 +08:00
    楼主可以参看这篇 : 为什么要学 vim http://www.jianshu.com/p/cdab0f6a2e5b
    noli
        20
    noli  
       2015-03-26 00:10:15 +08:00
    为什么要会 vim emacs 之类?
    很简单,都是 ssh过去,远程写代码,远程跑测试的。
    有些生产环境你的机器就别指望模拟什么的了。

    不光vim,什么GDB, PDB 最好都会,理由同上,ssh过去哪有那么多选择?
    billlee
        21
    billlee  
       2015-03-26 00:14:09 +08:00
    如果是写 Java, 还是要 IDE 的,不然那么多包根本记不住。
    但是写 C 的时候就感觉 IDE 带来的便利不如直接在 shell 下工作方便
    yxzblue
        22
    yxzblue  
       2015-03-26 00:17:28 +08:00
    月经
    vjnjc
        23
    vjnjc  
       2015-03-26 00:20:31 +08:00
    个人感觉存活下来的阶段已经够用了,主要用在登陆服务器(别人的机器)看log或者简单操作。
    我已经投奔sublime了。
    JAVA还是要IDE,比如Intellij idea
    9hills
        24
    9hills  
       2015-03-26 00:39:49 +08:00 via iPhone
    见过不会用GDB的rd 也是谁都敢招……

    IDE 开发无所谓,但是命令行还是要熟的
    twl007
        25
    twl007  
       2015-03-26 02:08:29 +08:00 via iPhone
    就像latex 问教授用这东西写论文么 教授说早就改word了 只有在很早的时候才用过…… vim额可以看作是Linux底下没有好的IDE大家就去用vim了 实际上要是有更好的选择完全可以不用vim

    其实IDE说白了只是工具 你爱用什么就用什么 又不是说你换了IDE然后ACM水平立马飞涨 完全两码事……

    感觉题主的意思就是请问我买了一个500多的游戏鼠标适合拿来办公么 打cs的话可以有效提升水平么
    xhacker
        26
    xhacker  
       2015-03-26 02:15:48 +08:00
    Linux 下同推荐 Geany。
    ericls
        27
    ericls  
       2015-03-26 02:45:26 +08:00
    楼主 我希望你坚持下来
    本人不是学计算机的 所以很多东西也不是很懂

    本人用vim 刚开始的时候 说实话感觉不如一些文本编辑器 更别说IDE了

    后来就越来越爽 其实最爽的 还是navigation和selection 相当方便 yyp ddp 神码的

    现在基本上写点小东西 还是vim方便

    大点的东西 尽量用支持vim键位的插件的IDE

    不要管别人怎么说 自己用起来就是快 就是爽 就行了

    另外 sublime的vintage 不错
    ericls
        28
    ericls  
       2015-03-26 02:46:35 +08:00
    还有一个原因 你想 你坐在沙发上 笔记本放腿上

    如果用 IDE 会很不方便 但是vim emacs 就会很合适
    Andiry
        29
    Andiry  
       2015-03-26 05:39:40 +08:00   ❤️ 1
    @twl007 写论文从Latex转向Word,你们教授是来搞笑的吗
    canautumn
        30
    canautumn  
       2015-03-26 06:14:36 +08:00   ❤️ 2
    @Andiry 这个看个人习惯了,反正一般编辑都提供两种模板。我就遇见过有教授公开表示对现在有些学生居然『倒退』到用他们几十年前用的latex的『鄙视』,他们很熟练的应用word和excel完成学生们用latex和matlab完成的工作。

    有的人天生对代码有感觉,有的人则对图形界面更能接受。比如我可以记下10个latex命令,但也无法记住一个word命令在某个对话框的某个位置。而有的人思维和我相反。另外latex可以精确、精准的实现很多操作,word不是不能实现,而是很麻烦,可能需要多个步骤。还有就是很多『设置』是隐藏在图形界面下的,你可能永远不会想到某页的页边距被不小心改了0.1in,而肉眼很难发现。latex则给我掌控全局的感觉。但我不否认有人用word可以轻易避免这些问题——因为word太容易上手,反而给很多人一种会用的假象,而实际上能用好的人不多。
    lxdestiny
        31
    lxdestiny  
       2015-03-26 07:21:08 +08:00 via iPhone
    @twl007 很负责任的告诉你、我系里的所有教授写论文都还在用latex,我有几门作业也是要用latex写的。
    comicfans44
        32
    comicfans44  
       2015-03-26 07:36:01 +08:00
    本人现在日常使用vim,之前也曾参加ACM,个人的建议是,如果你主攻的是ACM的算法编程,那最好不要急着学习vim,原因很简单,vim的学习曲线比IDE陡,只有配上插件,再加上很多自定义才能达到很高的使用效率,但是ACM参赛环境一般都是断网封usb的,难道比赛前先配一遍vim? 要是你现在用vim用习惯了,在比赛使用还得用IDE,结果反而觉得束手束脚,那不是很崩溃...
    patrickstar
        33
    patrickstar  
       2015-03-26 08:02:53 +08:00
    现在好多应用都要求跨平台,而linux是必须的之一,特别是高性能计算、服务等方面。
    本人主要在大控制系统软件方向,平台主要就是linux和win,语言主要是c/c++,现在编辑器主力是sublime text,少量也用Qt这个IDE,把编辑器和编译器分离一是解决多平台问题,第二就是一般IDE都太大,第三就是可以逐步了解掌握make过程及项目相关工程控制等等相对底层的一些知识。

    如果只是在win平台下工作,我绝对选择VS IDE,效率和学习曲线也是很重要的。
    linux40
        34
    linux40  
       2015-03-26 08:05:22 +08:00 via Android
    寒假折腾了一下vim,然后滚回了code::blocks。。。
    znoodl
        35
    znoodl  
       2015-03-26 08:20:19 +08:00 via iPad
    如果接触Linux编程的话,IDE不是必须的,但vim,gcc,gdb是必须的
    wangyunok
        36
    wangyunok  
       2015-03-26 08:38:28 +08:00
    linux属于生产环境,熟悉是必须得,但开发不一定非要在linux上做,利用ssh、git等工具完全可以交互。目前的开发模式基本上都是云服务器,所以,一个远程终端足以。

    不过若是真的对linux很感兴趣,喜欢玩,那是很好的,linux这个东西总是了解越多越好,因为其是现在一个计算机技术的来源。

    再说说平台区别。主要在于系统调用,这是linux下的概念,从用户态到内核态。不同平台所提供的系统接口是不一样的,所以,若你用C或者C++做系统级编程,就是有平台差异的。但若做java以及现在流行的各种脚本语言,都是平台无关的(但平台无关这件事情也是相对的,每种语言了解到一定程度以后,都会有关于平台的各种坑,当被坑了很多次之后,你就会自动远离windows向unix系系统靠近)
    Panic
        37
    Panic  
       2015-03-26 08:42:02 +08:00
    linux 本身的桌面性能太弱, 没办法, 只好将就着用 vim 之流了。其他 IDE 加上vim 插件比使用vim然后加上一堆扩展强多了,真不知道在 youcompleteme 之前vimer是怎么代码补全的。而且 youcompleteme 使用的是 clang 而不是传说中的 gcc。。。

    牛逼的程序员不是因为用的工具nb, 而是因为他写出来的代码 nb。
    reeco
        38
    reeco  
       2015-03-26 08:43:19 +08:00 via iPhone
    我很少见到有人是ssh到远程服务器,然后开个Vim在那写的。难道不是本地写好再提交上去的吗?生产服务器有一条基本原则,不必要的东西都不要装,难道你们每回都要把自己的Vim配置传到服务器上?
    zhouzm
        39
    zhouzm  
       2015-03-26 08:48:55 +08:00   ❤️ 1
    其实就是一个熟练度的问题,当你熟练度一般的时候,使用 IDE 会感觉非常爽,大大提高你的学习工作效率,但当你熟练度达到一定程度的时候,你会发现这些通用的 IDE 已经没法再提供你更大的效率的提高了,你就会有自己的特定需求,这时候 vim/emacs 的强大之处就体现出来了,它们还能为你提供进一步提升的空间。
    jianghu52
        40
    jianghu52  
       2015-03-26 08:53:53 +08:00
    作为一个半路出家入行的人,我给楼主的建议是,如果你最开始想熟悉程序,那么就用IDE开始。现在的IDE非常的智能,能帮你简化很多的东西,使你真正的只关注程序思想本身,而不用在乎什么缩进啦,变量类型啦。(IDE会自动辨别)
    什么情况下使用VIM。我的理解是,当你需要快速的修改某个东西,或者突然有了灵感需要写某些代码的后死后,那个时候你再打开慢吞吞的IDE当然是不现实的了。
    另外,当你远程操作某些服务器的时候,里面当然不会装IDE,这个时候vim是标配,自然需要学习了。
    王垠的这篇文章我觉得写的很好 [http://www.yinwang.org/blog-cn/2013/04/20/editor-ide/]
    vim甚至emacs 的学习曲线相当陡峭,但是老实说,你把他们玩得再溜,如果写出来的程序本身像一坨屎,那又有什么用呢。所以你的首要精力应该是学习好程序。
    happywowwow
        41
    happywowwow  
       2015-03-26 09:09:44 +08:00
    我只知道sublime编辑器+ssh虚拟机 做acm的话应该够了
    irrienberith
        42
    irrienberith  
       2015-03-26 09:17:26 +08:00
    linux作为主力系统也有五年了,vim/emacs基本不用。
    开发安卓应用为主,一直是IntelliJ为主。
    文本编辑我宁愿用 Retext,sublime,甚至kate。
    tabris17
        43
    tabris17  
       2015-03-26 09:23:21 +08:00
    windows下写代码,然后交叉编译
    limbo0
        44
    limbo0  
       2015-03-26 10:09:54 +08:00
    其实总在vim下开发 慢慢就习惯了 , 离不开了
    twl007
        45
    twl007  
       2015-03-26 10:10:27 +08:00
    @Andiry
    @lxdestiny

    我这是燃起圣战么 10年前如果说Latex排版强于word我信 但是现在Word的排版早就不输Latex了
    northisland
        46
    northisland  
       2015-03-26 10:18:10 +08:00
    语言都不是问题,更别说编译器了=_=
    ChiangDi
        47
    ChiangDi  
       2015-03-26 10:24:43 +08:00
    做个 acm 题目随便挑个编辑器都能用啊,不要太挑剔。以后代码量大了,发现用的编辑器不够好了再换个好用的。虚拟机真是太难受了,装双系统吧。或者 win 或 linux 单系统也行啊,虚拟机又卡又不方便。
    Andiry
        48
    Andiry  
       2015-03-26 10:29:07 +08:00
    @twl007 我所见过的所有计算机顶级会议,只有提供Tex模版的,没有见过提供Word模板的。
    sudoz
        49
    sudoz  
       2015-03-26 10:46:33 +08:00
    适合自己的就是最好的

    编程我用IDE,文本编辑我用vim
    zongwan
        50
    zongwan  
       2015-03-26 10:52:40 +08:00
    eclipse IDE太久,维护project麻烦(升级/编译/换系统).适合做应用/产品,使用需要编译语言
    sublime 新潮 自己选择插件/主题 适合做(嵌入式)开发/运维. 使用脚本语言 (最佳平台mac/window,但虚拟机opensuse里的sublime体验很差)

    VIM 反人类,但linux底层自带,普及率高.不少成熟但一直要打补丁的轮子.没有非常健全的网站管理.要自己找合适的.学习曲线长

    (我个人脱了VIM的坑,使用mac book.触摸板的功能代替了鼠标,这样的选择我个人觉得比VIM全键盘操作方便.当然还有一台dell notebook window系统 还是一直用鼠标)
    FastMem
        51
    FastMem  
       2015-03-26 11:09:33 +08:00
    Linux和Win 我一般都用Sublime Text。如果是命令行的话,一般用VIM, 以为命令行下VIM用起来着实很方便。
    @zongwan VIM 不是自带,部分系统并没有,自带的是vi.
    twl007
        52
    twl007  
       2015-03-26 11:10:56 +08:00
    @Andiry

    For more details on the submission process, and for templates
    to use with LaTeX, Word, etc., authors should consult the detailed
    submission requirements linked from the Call for Papers Web site.

    https://www.usenix.org/sites/default/files/osdi14cfp_012814.pdf

    这算顶级会议么
    Andiry
        53
    Andiry  
       2015-03-26 11:16:08 +08:00
    @twl007 原来OSDI有Word模板,这是我孤陋寡闻了。
    jswh
        54
    jswh  
       2015-03-26 11:21:45 +08:00
    所有的ide有vim模式都会装的,当习惯了vim的基本操作之后,感觉在用鼠标和方向键,手移来移去得实在是太别扭了。
    twl007
        55
    twl007  
       2015-03-26 11:22:38 +08:00
    @Andiry

    - - ||||||

    现在也不是高德纳大神那个命令行的年代了呃……
    viator42
        56
    viator42  
       2015-03-26 11:38:03 +08:00
    vim只用来改配置文件.主力编辑器用sublime,加上语法检查写php,Python这种脚本语言足够了.不算插件的话gedit是最好用的编辑器.
    android,ios这类的开发就必须得上IDE了.
    karloku
        57
    karloku  
       2015-03-26 11:57:12 +08:00
    vim和emacs都是学习配置成本很高的editor, lz可以先试着用一个礼拜, 就知道是不是适合了.
    另外作为一个非query用户, 远程服务器的时候也用不了vim, emacs又太笨重, 只能用nano...
    xylophone21
        58
    xylophone21  
       2015-03-26 13:12:27 +08:00
    有人告诉过你其实大多数在Linux环境开发的工程师实际上是从windows samba到Linux环境下,然后用Source Insight看代码,然后ssh到Linux命令行环境编译,调试的吗?

    当然,基本的vi修改一下配置文件确实是常规手段,但这跟看代码差别还是很大的.

    再当然,确实有人用vim搭建类ide环境还用的很好的,但绝对是少数. sublime+ctags+cscope已经算异类了.
    sammo
        59
    sammo  
       2015-03-26 13:14:32 +08:00
    Vico.app , 可视化的 vim
    外加各种快捷键的小提示
    Vico uses vi key bindings to let you keep your fingers on the home row and work effectively with your text.
    surefire
        60
    surefire  
       2015-03-26 14:02:57 +08:00
    @bigeagle 还能看到code:blocks,好亲切,2007年的时候搞过一段时间
    lxdestiny
        61
    lxdestiny  
       2015-03-27 06:57:05 +08:00
    @twl007 我大概有2,3年没有好好用过word了所以不是很清楚,现在word的公式编辑功能比得上latex么?
    twl007
        62
    twl007  
       2015-03-27 09:00:04 +08:00
    @lxdestiny 好多人用Latex生成公式插入到Word中 效果和Latex一样 其他的还有付费的Mathtype 效果都不比Latex差 周边不少人都是搭配用的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4750 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 09:59 · PVG 17:59 · LAX 02:59 · JFK 05:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.