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

学 Linux 要学 C++吗

  •  
  •   MrLiao · 2015-05-10 08:31:31 +08:00 · 9244 次点击
    这是一个创建于 3520 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大一狗,正在教C++,对它很不感兴趣,完全不想学,我自己想学习linux,学运维,问问需不需要学C++?
    92 条回复    2015-05-27 08:54:05 +08:00
    Septembers
        1
    Septembers  
       2015-05-10 08:36:06 +08:00   ❤️ 1
    如果领域倾向是自动化运维的话Bash + Python是必须的

    但是C++还是需要了解 因为Linux大部分程序是C++写的
    极端情况下可能要能分析崩溃栈反馈给上游开发者
    MrLiao
        2
    MrLiao  
    OP
       2015-05-10 08:49:44 +08:00
    @Septembers 谢谢回答,了解是需要多了解?只要懂语法规则还是会使用c++开发一些小东西?
    msg7086
        3
    msg7086  
       2015-05-10 09:13:45 +08:00   ❤️ 1
    自动化运维不是Ruby么……Puppet Chef
    不过Python也有Ansible……

    C++是Unix的基石,而Linux是他亲戚,自然对C++依赖很大。
    如果你基本不会C++,那在Linux下简直寸步难行。
    zwzmzd
        4
    zwzmzd  
       2015-05-10 09:17:10 +08:00 via Android
    @msg7086 基石是C啊
    msg7086
        5
    msg7086  
       2015-05-10 09:19:40 +08:00
    @zwzmzd 抱歉我脑残了。应该是C……
    whatisnew
        6
    whatisnew  
       2015-05-10 09:24:19 +08:00
    LINUX 社区很不待见 c++ 楼主珍重
    stiekel
        7
    stiekel  
       2015-05-10 09:25:23 +08:00
    大一在教C++,那应该是计算机专业的吧?
    奉劝一句,不管你毕业以后准备做什么,编程这基本功不好好学,你会发现你这四年基本也干不了什么。

    离毕业还有那么久,何必这么早就把自己限定在一个较窄的领域之内呢?
    KexyBiscuit
        8
    KexyBiscuit  
       2015-05-10 09:30:51 +08:00 via Android
    学好 C 吧('・ω・')都入 Linux 坑了,会点编程没什么不好的
    learnshare
        9
    learnshare  
       2015-05-10 09:34:31 +08:00
    运维先上 Shell/Python,C/C++ 第二吧
    miaomiaomiaoa
        10
    miaomiaomiaoa  
       2015-05-10 09:46:16 +08:00
    "
    C++,金坷垃,如果后来用Java,一袋可顶3袋撒。。。。。
    小日本,真狡猾,不要让他学C++....
    "
    ---Dr. BiliBili From 上帝压狗
    mozartgho
        11
    mozartgho  
       2015-05-10 09:54:08 +08:00
    c/python/shell 就很好
    MrLiao
        12
    MrLiao  
    OP
       2015-05-10 10:01:14 +08:00 via Android
    @msg7086 c我会,学的还不错,c++让我很头痛
    MrLiao
        13
    MrLiao  
    OP
       2015-05-10 10:02:34 +08:00 via Android
    @stiekel 软件工程专业,编程蛮喜欢的,不然也不会报这专业,但是对c++毫无兴趣。。。
    MrLiao
        14
    MrLiao  
    OP
       2015-05-10 10:03:12 +08:00 via Android
    @mozartgho 这么说c++可以不用学吗
    nicai000
        15
    nicai000  
       2015-05-10 10:05:51 +08:00
    不用
    msg7086
        16
    msg7086  
       2015-05-10 10:08:58 +08:00
    @MrLiao 我觉得你可以把C++的一些标准库学一下,例如那些模板库容器之类的。
    毕竟写C代码的时候,有容器帮忙会轻松很多。
    oxyflour
        17
    oxyflour  
       2015-05-10 10:59:27 +08:00   ❤️ 1
    因为可能用不上就不学?作为年轻人,这种想法是很不可取的呢(个人看法
    palxex
        18
    palxex  
       2015-05-10 11:19:45 +08:00   ❤️ 1
    @oxyflour 同意你这个看法,虽然对大学拿C++入门这个简直……
    对LZ这么说吧,这就是你的编程入门课,如果你确定自己已经入门,这门课你怎么过去都行——但是你最好确定自己此时的决定不会成为以后抱怨的借口。如果不能确定以上所有两部分,这门课还是好好学吧。
    关于喜欢与否。如果不喜欢C++的原因是听了某些神仙言论(比如linus的,或者其他工业界大神的),我可以替你们老师担保你们课程里用到的代码只是用C++表述的一般程序逻辑,几乎不会涉及C++的任何奇技淫巧,也不大可能就此把你的思路绑定在C++战车上。
    niboy
        19
    niboy  
       2015-05-10 11:50:16 +08:00
    这是基本功,建议好好学!!
    wind3110991
        20
    wind3110991  
       2015-05-10 11:51:48 +08:00
    c++ ,引用《effective c++》书里Meyers大神的一句话来看,
    c++大致可以分为四个子模块:
    1.Template c++
    2. STL
    3. c
    4. 面向对象的c++

    而一般大学教材都是从第4点入门学习的,其他几点不论哪一方面我觉得要精通或是熟练都是需要十分漫长的练习和深入。
    unix和Linux基于c语言,Linux基于Unix,部分与底层硬件交互的地方用汇编直接编写,没有用到c++,Linux之父Linus说过“c++是糟糕程序员的语言”,其实我觉得大多数人曲解了他的含义。
    他大概是想说:时至今日,c++已经深深造福软件行业,但是它的发展方向逐渐细化,使得学习它的程序员容易太浅层次理解c++,写出了许多“糟糕的代码”,显然这是一门入门容易,但是写好很难的语言。

    PS:做Linux底层开发的话,学好c要好一些(不知道是不是大多数做linux环境开发的都受Linus影响不太待见c++)。
    做基于Linux的开发(例如服务器),学好c++和网络编程。
    做运维,学脚本shell编程,python之类
    建议楼主买一本读读,刚开始读时我简直不敢相信我居然学过c++.......我目前正在第1,3点的路上努力中
    canautumn
        21
    canautumn  
       2015-05-10 12:05:12 +08:00
    搞Linux不用学C。现代C++已经和C语言脱离的很远了,不过虽然国内还是那套从C教起的错误的方法。
    canautumn
        22
    canautumn  
       2015-05-10 12:05:34 +08:00
    @canautumn 写错了,搞Linux要学C,不用学C++……
    bugeye
        23
    bugeye  
       2015-05-10 12:08:59 +08:00
    我觉得楼主语文得好好学学。“正在教”的主语是“大一狗”弄得我以为楼主在教别人C++。

    大一学的C++也就是C++的语法而已(估计是带类的C),就算学会了,也不等于会了C++。linux运维会脚本语言比会编译语言要重要得多吧。
    clino
        24
    clino  
       2015-05-10 12:16:11 +08:00
    "Linux大部分程序是C++写的" ?
    Linus 是这么说的:
    "
    *YOU* are full of bullshit.

    C++ is a horrible language.
    "
    jyootai
        25
    jyootai  
       2015-05-10 12:27:51 +08:00
    Linux 作者Linus 说:

    *YOU* are full of bullshit.

    C++ is a horrible language

    http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918
    Neveroldmilk
        26
    Neveroldmilk  
       2015-05-10 12:35:50 +08:00
    Linux高手喜欢C,C++是两头不讨好。
    Andiry
        27
    Andiry  
       2015-05-10 12:50:23 +08:00
    Linux只是kernel层用C写而已,应用层大把程序还是用C++写的。你确定你要做底层?
    MrLiao
        28
    MrLiao  
    OP
       2015-05-10 13:20:29 +08:00 via Android
    @palxex 所以,还是多少学习点吗?
    MrLiao
        29
    MrLiao  
    OP
       2015-05-10 13:22:11 +08:00 via Android
    @wind3110991 刚开学的时候,也是想要学习的,也找过经典的书来读,后面觉得没趣,就放弃了,现在看来,还是学一点好
    MrLiao
        30
    MrLiao  
    OP
       2015-05-10 13:25:19 +08:00 via Android
    @bugeye 是的,正在学习c++。。。语文确实不太好。。。教的就是类对象,多态等等这些。
    MrLiao
        31
    MrLiao  
    OP
       2015-05-10 13:27:20 +08:00 via Android
    @Andiry 偏向服务器,运维
    VirgilMing
        32
    VirgilMing  
       2015-05-10 13:29:21 +08:00 via iPhone
    Learn the hard way.
    不要纠结于学什么,C++ 和 C 都该学。
    大一正是疯狂学习的好时候。只要不耽误谈恋爱就好。
    jy01264313
        33
    jy01264313  
       2015-05-10 13:57:53 +08:00
    我觉得学习 C 是必要的,但是 C 艹 还是算了
    xuwenmang
        34
    xuwenmang  
       2015-05-10 14:06:00 +08:00
    既然正在教,为什么索性不花点功夫?
    FrankFang128
        35
    FrankFang128  
       2015-05-10 14:52:01 +08:00
    即使难道不是汇编或者机器码么。呵呵
    FrankFang128
        36
    FrankFang128  
       2015-05-10 14:52:15 +08:00
    基石难道不是……
    wind3110991
        37
    wind3110991  
       2015-05-10 14:58:05 +08:00 via iPhone
    @MrLiao 不要受那些对某些语言有傲慢偏见的程序员的影响,能学好并契合某一门语言,更多是在于个人的性格与风格,能够多接触一些语言是极其好的,你可以对比自己更喜欢哪种编程风格。总比那些整天争论php和c++如何如何,自己连程序都没写过几行的人好。
    eightqueen
        38
    eightqueen  
       2015-05-10 14:59:15 +08:00
    已经有很多人给出了优秀的答案,我想发散一下.
    你现在才大一,以后肯定会遇到更多你不喜欢\暂时也没啥用的课程.
    我的建议是在本科阶段,老老实实做个书呆子挺好的.因为你懂的实在太少了.像C++这种被全世界的大学认可的课程,别跟它过不去.
    如果你有其他兴趣,那就课下研究.犯不着放弃C++,有趣的课程和必修课不冲突.
    MrLiao
        39
    MrLiao  
    OP
       2015-05-10 15:45:18 +08:00 via Android
    @wind3110991 谢谢,明白了,课会认真上,好好学习了
    MrLiao
        40
    MrLiao  
    OP
       2015-05-10 15:46:01 +08:00 via Android
    @eightqueen 说的很有道理,受教了,谢谢你这么中肯的回答
    Cbdy
        41
    Cbdy  
       2015-05-10 16:29:18 +08:00
    C++很难,我用了几年很多问题还搞不清楚。。。。
    MrLiao
        42
    MrLiao  
    OP
       2015-05-10 17:26:42 +08:00 via Android
    @Cbdy 是的,所以被弄得没兴趣了。。。可还是要学啊
    est
        43
    est  
       2015-05-10 17:28:18 +08:00
    @Andiry 应用层大把C++写的,我好奇除了桌面那一陀东西还有什么是C++写的?
    Andiry
        44
    Andiry  
       2015-05-10 17:58:31 +08:00 via Android
    @est chrome, Firefox, Thunderbird, OpenOffice, MySQL, MongoDB, VLC
    lidashuang
        45
    lidashuang  
       2015-05-10 18:08:35 +08:00
    感觉学c++和学linux没啥关系,用win也可以职
    lingxi27
        46
    lingxi27  
       2015-05-10 18:09:26 +08:00
    c++是个大坑,入坑需慎重,你才大一,试一试也没关系
    wizardoz
        47
    wizardoz  
       2015-05-10 18:28:34 +08:00
    Linux讨厌C++。
    Linux下一半以上应用程序是纯C写的,Linux内核也是纯C写的。
    不会C++也不会在Linux寸步难行的。
    wizardoz
        48
    wizardoz  
       2015-05-10 18:31:15 +08:00
    桌面比较大的有两坨,一坨是用C++写的,一坨是用纯C写的。
    MrLiao
        49
    MrLiao  
    OP
       2015-05-10 18:51:30 +08:00 via Android
    @lingxi27 我不想入。。。。
    MrLiao
        50
    MrLiao  
    OP
       2015-05-10 18:52:16 +08:00 via Android
    @wizardoz 看来多少还是学一点,总没错
    hooluupog
        51
    hooluupog  
       2015-05-10 18:56:39 +08:00
    不是必须的。学好shell倒是用处很大,需要的时候会帮大忙。
    p1n3
        52
    p1n3  
       2015-05-10 19:53:57 +08:00 via iPhone
    学吧,学了又不会怀孕!!
    est
        53
    est  
       2015-05-10 20:15:58 +08:00
    @Andiry 我就说嘛。。桌面用C++的多一点。db系的确C++用得也多,但是除了db引擎,游戏引擎,桌面程序,很多方面还是C为主。
    fluyy
        54
    fluyy  
       2015-05-10 20:37:48 +08:00
    有时间就学学吧。万一哪天你用到了呢。再说用不到,C++里面的一些东西在其他地方也可以借鉴嘛
    MrLiao
        55
    MrLiao  
    OP
       2015-05-10 20:41:08 +08:00
    @hooluupog shell是肯定要学的,听了大家意见,C++也多少学一点
    MrLiao
        56
    MrLiao  
    OP
       2015-05-10 20:41:30 +08:00
    @p1n3
    @fluyy 嗯,学!!!
    pagict
        57
    pagict  
       2015-05-10 20:58:55 +08:00
    小跑个题
    我倒是觉得不是要不要学cpp的问题 楼主才大一,大可不必把自己的未来就限定在运维方面
    我认为趁着年轻,什么都要学都要去接触。虽说不一定要去深入 但是应该做到能知道这门知识
    的大概轮廓。这样才能确保自己有足够的见识和机会去找到自己真正喜欢和合适的方面。
    MrLiao
        58
    MrLiao  
    OP
       2015-05-10 21:19:29 +08:00
    @pagict 感谢回答,说的很对,会去接触更多的东西,希望能走的更好
    F32
        59
    F32  
       2015-05-10 21:54:16 +08:00
    C++(这里特指面向对象的 C++ 编程模式)要能正确使用相当难,新手在一年内能正确使用几乎是不可能的(但是要写个用到了 C++ 类的程序不难)。关于这个方向有本不错的书:Bob 大叔的《敏捷软件开发:原则、模式和实践》,在基本语法概念学习完成之后可以去看看。
    jedihy
        60
    jedihy  
       2015-05-10 23:11:38 +08:00
    C/C++当然要学啊,不会C能说自己是搞it的吗?C通了,其他语言就是玩具而已。
    jedihy
        61
    jedihy  
       2015-05-10 23:14:33 +08:00
    C++一定要好好学,C++代表的不是一个语言,实际上还是一种面向对象的思想。
    Narcissu5
        62
    Narcissu5  
       2015-05-10 23:20:14 +08:00
    没错linux是c写的,windows也是c写的,但你得想清楚:你将来是要写OS么?linus用得爽的东西到你手上可能就完全是另外一回事了。c的开发效率有多低写过的人都知道,这是个讲快速迭代的时代,嵌入式之外留给纯c的空间还剩多少?
    omi4399
        63
    omi4399  
       2015-05-10 23:49:57 +08:00
    语言只是工具,悟出的是思想
    只要楼主注意别被个别坑货老师带沟里就行(例如用着C++讲MVC的那种)。
    qiuyi116
        64
    qiuyi116  
       2015-05-11 00:14:19 +08:00
    Linux/UNIX 不是C 的天下吗。。。当然也用到了不少C++
    RelativeLayout
        65
    RelativeLayout  
       2015-05-11 00:18:25 +08:00
    大一应该见啥学啥,因为你肯定学不深,即便学不深,请先学广,最后挑个自己喜欢的往深里研究,研究的时候你会发现,阿,原来以前那些狗屁玩意儿都有用,你也会感慨,阿,以前翘的那门课原来好有用...
    noli
        66
    noli  
       2015-05-11 00:30:57 +08:00
    GCC 现在准备用C++ 改写了,自己想吧。
    charlie21
        67
    charlie21  
       2015-05-11 01:51:22 +08:00
    难道只有我看出 lz 的需求是学 OOP 或 设计模式 ?
    j16ZgMV9cs6ZB23n
        68
    j16ZgMV9cs6ZB23n  
       2015-05-11 01:54:22 +08:00
    如果是为了了解偏底层的知识,精通C就够了。想想Linux内核吧,这个几乎没有可能用C++重写。

    还有其他的C代码如Glibc、Python源代码、Redis 源码、Nginx 源码,都是纯C写的,这些阅读是不用精通C++,所以不必提这么高的门槛。
    j16ZgMV9cs6ZB23n
        69
    j16ZgMV9cs6ZB23n  
       2015-05-11 01:55:35 +08:00
    哦,如果是Ruby,Ruby (官方那套)解释器也是C写的。
    MrLiao
        70
    MrLiao  
    OP
       2015-05-11 06:49:16 +08:00 via Android
    @F32 这本书没听过啊,倒是听过很多c++中的圣经类的书,这学期结束,暑假下个电子版看看
    MrLiao
        71
    MrLiao  
    OP
       2015-05-11 06:51:57 +08:00 via Android
    @jedihy
    @RelativeLayout
    @noli
    @omi4399
    @qiuyi116 会认真学习了,不翘课,即使在没兴趣,也会听,培养兴趣,大一疯狂学习的时候,没必要一条路走死,会去涉猎更多知识的!谢谢大家
    MrLiao
        72
    MrLiao  
    OP
       2015-05-11 06:53:05 +08:00 via Android
    @omi4399 我们老师人还是不错的,上的课也很有趣,蛮生动的,自己原因
    yuankui
        73
    yuankui  
       2015-05-11 09:24:23 +08:00
    高技术的如果你努力排斥某方面的技术,你是做不好了..
    MrLiao
        74
    MrLiao  
    OP
       2015-05-11 11:41:48 +08:00 via Android
    @yuankui 现在不排斥了
    likuku
        75
    likuku  
       2015-05-11 11:52:54 +08:00
    @yuankui 「高技术的如果你努力排斥某方面的技术,你是做不好了..」人的精力是很有限的资源,一定要有选择,优先选择自己最喜欢最有热情的方向。假若「不排斥」代表啥都要搞,那么就有浪费生命和时间的嫌疑了。
    pezy
        76
    pezy  
       2015-05-11 12:04:05 +08:00
    个人建议,如果现阶段对 C++ 无感,那就仅仅把它当成一门必修课学习(搞清楚基本概念,能读懂代码,知道些名词背后的含义),就可以了。没兴趣千万不要硬逼,最后把自己搞崩溃,反而影响精力。

    现在对什么感兴趣,就赶紧折腾什么。多数人的激情是比较短暂的,趁着有激情,学想弄的东西(如你说的 Linux ,运维相关)。但注意,其他的基础课不能全扔,还是上面的话,基础要搞扎实,概念要搞清楚,这是底线。以后觉得兴趣来了,或是非得用到了,回头不至于是一张白纸。
    MrLiao
        77
    MrLiao  
    OP
       2015-05-11 13:19:38 +08:00 via Android
    @pezy 嗯,现在我就是这么想的,多了解一些总没坏处,认真钻研我兴趣所在
    bellchu
        78
    bellchu  
       2015-05-11 14:10:43 +08:00
    我小时候念书的时候C++是必修课,数据结构也是讲C++版的,难道现在是选修课了吗?
    yuankui
        79
    yuankui  
       2015-05-11 15:17:41 +08:00
    @likuku 你说得极端了
    谁说不排斥,就是要搞了?

    说你不排斥某某某,就是说你爱上她了?

    不排斥的正确理解应该是: 如果我需要搞,那我就搞.
    MrLiao
        80
    MrLiao  
    OP
       2015-05-11 16:37:06 +08:00 via Android
    @bellchu 不是选修,还是必修,大一上学的c,下就学c++,同样都是专业必修课,只是我个人对这个不感兴趣
    skywinger
        81
    skywinger  
       2015-05-11 17:49:16 +08:00
    学linux,肯定要会c,然后学习linux的系统调用、进程间通信,网络编程,linux驱动编写,然后就没然后了。根本不用学c++,况且linux下c++执行效率也不大高。
    earnrepuNey
        82
    earnrepuNey  
       2015-05-11 18:36:42 +08:00
    会 C/C++ 和 Python + 其他计算机基础知识(计算机系统、算法、编译等),将来从事什么方向都无往不利。
    MrLiao
        83
    MrLiao  
    OP
       2015-05-11 19:12:20 +08:00 via Android
    @skywinger c我学的还不错。大家都说c++多少学点,我也觉得,多了解一些知识也是不错的
    MrLiao
        84
    MrLiao  
    OP
       2015-05-11 19:12:57 +08:00 via Android
    @earnrepuNey 真的吗?感觉好绝对。。。。
    Sunbread
        85
    Sunbread  
       2015-05-11 19:13:52 +08:00
    在应用项目中我帮不了你。但是如果你想用C++去写linux内核?林纳斯会喷死你(以他的性格)。
    MrLiao
        86
    MrLiao  
    OP
       2015-05-11 20:42:45 +08:00 via Android
    @Sunbread 应该不会。。。
    earnrepuNey
        87
    earnrepuNey  
       2015-05-12 08:54:58 +08:00
    @MrLiao 将来不管做什么,我说的都能为你打好基础
    MrLiao
        88
    MrLiao  
    OP
       2015-05-12 10:08:40 +08:00 via Android
    @earnrepuNey 嗯!谢谢拉!
    bingx86
        89
    bingx86  
       2015-05-15 12:15:39 +08:00
    运维的话,感觉 C++并不是必须得,到是 Shell + Python 会师利器。当然,工具一定要用好,puppet, salt, ansible 等自动化及配置管理,zabbix,nagios 等监控工具
    fuge
        90
    fuge  
       2015-05-16 20:50:38 +08:00 via iPhone
    @bingx86 有这些足以
    vjnjc
        91
    vjnjc  
       2015-05-18 21:45:48 +08:00
    1. linux很多工具是c写的,但仅仅是使用它的话不必改源码,也就不必学。
    2. 对于大一学c++,话说你不学的话以后的课还怎么上啊,数据结构,编译原理,算法。。。我感觉计算机的课都是默认为你会c++的
    yksoft1
        92
    yksoft1  
       2015-05-27 08:54:05 +08:00
    @miaomiaomiaoa 然后小日本发明了Ruby
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2773 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:26 · PVG 17:26 · LAX 01:26 · JFK 04:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.