V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vah970
V2EX  ›  C++

c 和 c++同时学合适吗

  •  
  •   vah970 · 2023-10-14 21:17:38 +08:00 via Android · 4263 次点击
    这是一个创建于 398 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前大一软工专业,学校课程开的是 c++(用的谭浩强的 c++程序设计第四版这本教材),自己在同时学 c ,打算只是先跟着 c primer plus 这本书学一遍。但有个同学(他之前打过 c++的竞赛)建议我不要同时学这两门语言,说比较相似,容易混淆。

    我对原先的计划产生了一些动摇,所以来寻求各位的建议。

    第 1 条附言  ·  2023-10-15 10:42:31 +08:00
    感谢各位的建议

    我现在还是按原来的计划来。c primer plus 应该能在学校 c++课程结束前看完。
    等看完 c primer plus 后再看 c++程序设计原理与实践 或者 c++ primer
    51 条回复    2024-01-13 11:30:11 +08:00
    willoong
        1
    willoong  
       2023-10-14 21:30:28 +08:00 via Android   ❤️ 1
    先学 C ,培养编程思维。最后你也未必需要学 C++。
    nightwitch
        2
    nightwitch  
       2023-10-14 21:30:40 +08:00
    cpp 是 c89 的超集,会 cpp 自然等于会 c..至少说 c 的语法部分不可能成为障碍
    ETiV
        3
    ETiV  
       2023-10-14 21:39:38 +08:00
    超集( superset )+1

    主要你的课程是 C++,考试考的也都是 C++,如果你学的不好,试卷上 C++ 的术语都看不懂怎么考试…😂

    你时间真多的话,不如学个 PHP 、Golang 、Rust 什么的、别的语言
    vah970
        4
    vah970  
    OP
       2023-10-14 21:49:20 +08:00 via Android
    @willoong 如果要先学其中一个的话,我肯定是选 c++了,得先跟上学校的课程
    tyzandhr
        5
    tyzandhr  
       2023-10-14 21:54:02 +08:00 via Android
    看来你同学竞赛成绩不怎么样。他应该会劝你放弃 C ,一门心思学 cpp
    willoong
        6
    willoong  
       2023-10-14 21:54:04 +08:00 via Android
    @vah970 什么考试语法本身并不难,应付考试甚至高分不需要啃那本书。
    vah970
        7
    vah970  
    OP
       2023-10-14 21:55:19 +08:00 via Android
    @ETiV 可能因为刚开学,空的时间还比较多
    如果后面没时间就得放弃自学这些课外的东西了😭
    vah970
        8
    vah970  
    OP
       2023-10-14 21:58:10 +08:00 via Android
    @tyzandhr 可能是的 他只是初中的时候参加了竞赛
    icy37785
        9
    icy37785  
       2023-10-14 22:03:32 +08:00 via iPhone
    说实话,主要是因为你才大一,所以会想很多,后面会发现,如果只是为了考试 c++不用怎么学就够应付考试了,学自己感兴趣的 c 就行了,如果对 c++也感兴趣,那么就会发现学了 c++之后 c 几乎不用学。如果不是为了兴趣,而是为了未来的发展,会发现直接都不学,自学 java ,golang 或者 rust 对未来从业更有帮助,你未来的工作大概率用不上 c 或者 c++。
    zzzkkk
        10
    zzzkkk  
       2023-10-14 22:07:30 +08:00 via Android
    @icy37785
    c++高频交易 美国 30 万刀至 70 万刀一年 学什么 java go 农民工
    areyoucrazytom
        11
    areyoucrazytom  
       2023-10-14 22:15:03 +08:00
    国内学 rust 找不到班上, 别听楼上瞎喷.
    willoong
        12
    willoong  
       2023-10-14 22:22:02 +08:00 via Android   ❤️ 2
    @areyoucrazytom 这两年学啥都不好找工作
    cmdOptionKana
        13
    cmdOptionKana  
       2023-10-14 22:27:01 +08:00
    你自己学起来感觉没问题就行,虽然一般会有干扰,但兴趣也很重要,也许你两个一起学的时候感觉非常有趣,越学越精神,如果你只学一个可能会觉得很无聊,泄了一口气就再也提不起兴趣了,那反而更坏。
    FanyFull
        14
    FanyFull  
       2023-10-14 22:30:14 +08:00 via Android
    合适,非常合适,其实 C++ 你现在学了估计也是大部分时候用的 C 的语法。如果你想对整个大学阶段有一个大概的概念,可以看下我今年六月份给大一现在是大二的同学作的分享: https://fanlumaster.github.io/2023/06/14/personal-sharing/
    ysc3839
        15
    ysc3839  
       2023-10-14 22:54:16 +08:00 via Android
    个人觉得没必要,知道两者的区别即可。分别学感觉浪费时间。另外不建议看谭浩强的书。
    icyalala
        16
    icyalala  
       2023-10-14 23:15:49 +08:00   ❤️ 1
    二三楼是怎么回事。。首先要明确 C++ 不是 C 的超集,两者编程习惯也有很多不同。
    如果你主要在学习 C++,那就先尽量只学这一个。等相对熟练后再去看看 C/C++ 的差异,更容易理解。
    vah970
        17
    vah970  
    OP
       2023-10-14 23:21:05 +08:00 via Android
    @ysc3839 这两者我都是打算学的,现在只是考虑先学 c++或者同时学的问题。
    学了 c 之后可以学底层点的东西,操作系统之类的,还能玩下单片机;学了 c++后可以学图形学,这些都是想学的
    关于谭浩强的问题,学校用的他的书,没办法😔,我应该还会看些别的书和教程的
    gitrebase
        18
    gitrebase  
       2023-10-14 23:22:59 +08:00
    按照我对国内高校的了解,如果仅针对于「同时学 C 和 C++ 会不会对考试造成影响」,个人认为「不会」

    因为一般来说,国内大一的 C++ 考核内容中 80% ~ 95% 都是和 C 语言语法一模一样的,C 和 C++ 很多不一样的东西你的老师可能都不知道,即使知道也不会怎么教你们,因为这只是一个入门课,老师只带你了解编程语言并且教会你如何写一个能运行的 program ,C 和 C++ 的高阶语法与工程细节都是课下自己去看书去钻研的

    说极端点,你就是只学 C ,然后在考前刷一刷往年的试题题库,完完全全用 C 语言去实现大题要求的 C++ 程序都行,只要你 C 学得还可以,拿满分都是有希望的(可以简单的理解为 C++ 的语法包含了 C 的语法,虽然这句话有点瑕疵,但意思到了就行)
    vah970
        19
    vah970  
    OP
       2023-10-14 23:26:12 +08:00 via Android
    @icyalala 目前 c 比 c++学的多
    因为国庆放假,课被冲掉一些,c++到现在只上了一节课
    ysc3839
        20
    ysc3839  
       2023-10-14 23:28:37 +08:00 via Android
    @vah970 个人认为学 C++同时了解 C 与 C++的区别,实际写 C 项目时并没有什么问题。
    z1645444
        21
    z1645444  
       2023-10-14 23:31:22 +08:00
    如果 CPP 或者 C 就是你的母语,我也比较认可先选一门(顺着学校正在教的 CPP ),再去学另一门( C )的思路。如果之前已经有其他比较现代的语言作为母语,都学不太影响👉
    smallboy19991231
        22
    smallboy19991231  
       2023-10-14 23:36:36 +08:00 via Android
    首先看 C++程序设计原理与实践! C++之父推荐
    vah970
        23
    vah970  
    OP
       2023-10-14 23:38:33 +08:00 via Android
    @z1645444 有些 Python 基础
    高中信息课教的 Python ,暑假里又跟着 cs61a 学了下(虽然还没学完)
    weidaizi
        24
    weidaizi  
       2023-10-15 00:03:17 +08:00   ❤️ 5
    我想每个人学的时候都只会走一条路线,无法直接对比同时学和先后学哪个更好,属于小马过河了;不过条条大路通罗马,只要对技术有兴趣,定下目标,持续推进,最后应该能殊途同归,融会贯通吧

    至于有网友说到不如学其他语言,或者学什么工资高之类的,请直接忽略这些说法;连后天(毕竟明天周天不开盘)股市涨跌都很难预测,怎么能确定等楼主四年后毕业时啥语言工资高,好找工作?语言只是工具而已,就像拿勺子喝汤,用锤子锤钉子一样,不同的场景用不同的工具这是很自然的道理,而编程语言也是一样
    如果只学一门语言,很容易就加入这个语言相关的讨论环境中,每个语言都有自己的狂热分字,初学者更容易由于缺乏经验盲目陷入这个语言的井中,坐进观天,得出某某语言更牛逼的结论(现代的说法是信息茧房),比如下面就是我遇到过的一些趣事
    * 很早之前看过杂志的一篇文章,叫"学好 .net ,让你可以早下班"
    * 十几年前,做游戏的同事表示:"国内用 Java 的人应该不是很多吧,估计也就写写网站后端会用到吧,后端用 c++ 很方便呀" (他们 MMORPG 从引擎到客户端,再到后端全是 c++,最多再加一点 lua)
    * 前几年互联网行业的朋友对我说: "什么?现在还有人用 c/c++,疯了吧!后端 Java, 前端 js 一把梭不就好了吗"
    * golang 大火的那几年,铺天盖地的说要全面替代 Java
    * 去年有人发邮件用 Rust 教 Linus 做人,最后如愿被喷(参考: https://lkml.org/lkml/2022/9/19/1105)

    我直接在工作中使用过 c++, lua, c#, java, go, python, 平时自己还爱用 c 写一些小玩意,就我的体验来说,每个语言都会有一些独特的东西,学习只后也能促进你对其余语言的认识,明白各个语言优劣势

    而且你才大一,你有大把的时间可以尝试不同的东西,打下基础,多实践,等到大三下学期再决定未来是面向工资编程,还是更愿意为了兴趣而选择某个语言也不迟!

    ------
    最后要说,其实更有趣的事情是:学好数学,学好数学,学好数学! : )
    agagega
        25
    agagega  
       2023-10-15 01:16:08 +08:00
    反正你们学校教的 C++(从教材推断)多半也是一股 C 味(我记得当年谭浩强的 Cpp 书对模板一个字都没提),所以学完也只会对 C++的语法有个基本印象。建议从这个基础上再深化一下 C 的细节( C 的语法本身没什么好说的,主要是一些惯用法和诸如内存对齐等和具体平台深深关联的内容),然后再去理解现代 C++(因为前面那些东西对 C++也适用),否则连很多地方为什么要这么设计都弄不清楚
    Yvette
        26
    Yvette  
       2023-10-15 05:02:32 +08:00
    另外,一般会建议看 C++ Primer 而不是 C++ Primer Plus
    https://www.reddit.com/r/cpp/comments/13g6s1/which_c_primer_book_is_better/c73qwk3/
    vvhy
        27
    vvhy  
       2023-10-15 09:38:16 +08:00 via Android
    c primer plus 这本可不是经典教材,别弄混了
    vah970
        28
    vah970  
    OP
       2023-10-15 10:28:58 +08:00 via Android
    @vvhy 你说的 c++ primer plus 还是 c primer plus
    感觉网上推荐 c primer plus 的还是挺多的
    mightybruce
        29
    mightybruce  
       2023-10-15 10:33:31 +08:00
    C++ 和 C 是两个不同的语言,不要以为学了 C, 就懂 C++或者学了 C++ 就懂 C, 两者有交集。
    科班建议还是一定要学好 C++, C 写好要求功底更高, 基础设施一部分代码都是 C
    C++ 偏应用和中间件开发,打好基础,选择一个 C++ 特定的领域发展就好。
    Java 现在都是搬砖的, 走基础设施路线,虽然开始艰难,至少你以后不会出现吃不到饭的问题,
    C++ 代码仓库很多都 20 多年还在维护,其他有些语言过个几年连吃饭都成问题。
    leimao
        30
    leimao  
       2023-10-15 11:13:53 +08:00
    不合适
    vvhy
        31
    vvhy  
       2023-10-15 11:17:21 +08:00
    @vah970 #28 坏了,我也搞混了,说的是 c++ primer plus 😢
    zxCoder
        32
    zxCoder  
       2023-10-15 11:28:17 +08:00
    C++ 开发最大的问题是没有统一的风格,你可能在这个领域很厉害,但是在另一个领域,另一个仓库的 C++ 代码你可以看都看不懂
    wtsamuel
        33
    wtsamuel  
       2023-10-15 11:43:21 +08:00
    你的课程是 c++,就学 c++
    最主要学的是编程思维,而不是语言。尤其是 c++和 java 为代表的主流,以对象为编程,还有 c 和 go 可以实现的另类对象编程。以及如何设计一个项目,如何模块化等等。
    每个语言特性你可以在后续项目中慢慢学习。如果针对之后找工作,那就死记硬背语言特性,应付过去就行。
    ZztGqk
        34
    ZztGqk  
       2023-10-15 12:21:56 +08:00 via iPhone
    这两者对于有些东西的实现理念不一样,我觉得你可以不用太纠结于学哪一门,其实都可以,然后去了解一下常用的编程方法,比如 OOP 还有函数式编程在二者上的实现,然后选择你喜欢的思维模式就行了。另外 C++ 推荐 C++ Primer 不带 Plus 。
    thinkershare
        35
    thinkershare  
       2023-10-15 12:39:00 +08:00
    先学 C 语言,然后直接去学习 Rust/Golang ,抛弃 C++.
    thinkershare
        36
    thinkershare  
       2023-10-15 12:45:06 +08:00
    每次使用 C++我都感觉自己在被编程语言使用,而不是我在使用编程语言,对这个什么乱步八糟模式都支持的语言实在没有任何好感。不同人/不同团队写出来的代码有时候完全是不同的风格,如果你喜欢 All in One 那就直接上 C++也行。如果你喜欢自己彻底掌握一个工具后再使用它,建议尽早离开,这个语言实在太难掌握透彻了。如果只是使用 C-with Class 的 C++那会好一点。
    impl
        37
    impl  
       2023-10-15 13:55:23 +08:00
    看你想做什么
    嵌入式开发 -> C
    服务器端开发 -> C++
    Austin2035
        38
    Austin2035  
       2023-10-15 16:42:35 +08:00
    都 2023 年了,还有人说 C 艹是 C 的超集。。。。
    bao3
        39
    bao3  
       2023-10-15 16:46:06 +08:00
    我是直接 C++ 学完后 C 语言自动就算入门了,Java 也算入门了,属于自动解锁。但如果是学 C ,那可能思维切换上还是会有一点区别
    cnbatch
        40
    cnbatch  
       2023-10-15 16:59:27 +08:00
    对于学校教学来说,即使抛开谭浩强那种误人子弟的教材,他们教的都只是基础中的基础,不会教太多内容。
    C 语言一般都是 C89 打转,顶天了也就 C99 。像 C11 、C23 虽然新增的东西并不多,但各学校基本上提都不提。
    C++一般都是 C++98 打转,把 C++当成 C 超集来教。所以不用指望他们(指学校和教职员工)能触碰到 Morden C++。
    就算有教职员工真的能理解新版 C 、新版 C++,考试时照样还是旧教材的旧内容。
    ( PS:我个人反感 C++98 及之前的 C++,当初入门就自动劝退了)

    在这种前提下,当然可以同时学。
    只不过,考完试之后就应该抛弃他们教过的内容(主要是一团麻乱的谭浩强教材),重新拥抱正常习惯。
    正常商业、工业领域,要是有谁敢写谭浩强式 C/C++,等着被内部制裁吧。
    jackmod
        41
    jackmod  
       2023-10-15 17:27:06 +08:00
    阅读 C++ Primer 打底,保证不会被谭书带偏。考完试之后应抛尽抛错误知识。
    顺便 C 语言也可以 OOP ,比如 linux 内核。不过这就是以后的事情了,现在还是优先培养正确的编程思路。
    kirory
        42
    kirory  
       2023-10-15 22:12:49 +08:00
    学 Ru! 不对,C 的内容很少,你只要学习少量的内容就能掌握大部分,所以你不需要太大代价就能学完,但你在学书的时候最好跳过各种库函数和相关的部分工具 。
    ivvei
        43
    ivvei  
       2023-10-15 23:57:04 +08:00
    不合适。
    araraloren
        44
    araraloren  
       2023-10-16 09:02:23 +08:00
    Don't fall for c++, it's unworthy.
    seeyourface
        45
    seeyourface  
       2023-10-16 10:17:50 +08:00
    @ETiV JAVA 怎么你了🙂
    snylonue
        46
    snylonue  
       2023-10-16 13:01:05 +08:00
    你们的考试是什么形式的
    scorpion91
        47
    scorpion91  
       2023-10-16 15:34:53 +08:00
    只推荐 c++和 python
    vah970
        48
    vah970  
    OP
       2023-10-16 20:13:04 +08:00 via Android
    @snylonue 现在还不确定,但估计就是纸笔考试(选择题,填空题之类的)
    gdgoldlion
        49
    gdgoldlion  
       2023-10-30 20:56:08 +08:00
    没听说过可以这么学
    一般先 c 大概三四周就能入门
    再 c++大概三四个月
    普通人就是这个速度
    vah970
        50
    vah970  
    OP
       307 天前 via Android
    @scorpion91 上机考试的,选择题和代码填空题
    vah970
        51
    vah970  
    OP
       307 天前 via Android
    @gitrebase 学校的课确实是很奇怪。用 c++的书,考试考的是 c 语言,后面代码填空的文件都是.c 的。
    虽然考应该是 c 和 c++语法相同的部分吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1082 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 19:19 · PVG 03:19 · LAX 11:19 · JFK 14:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.