c 和 c++同时学合适吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vah970
V2EX    C++

c 和 c++同时学合适吗

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

    目前大一软工专业,学校课程开的是 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 项目时并没有什么问题。
    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   6
    我想每个人学的时候都只会走一条路线,无法直接对比同时学和先后学哪个更好,属于小马过河了;不过条条大路通罗马,只要对技术有兴趣,定下目标,持续推进,最后应该能殊途同归,融会贯通吧

    至于有网友说到不如学其他语言,或者学什么工资高之类的,请直接忽略这些说法;连后天(毕竟明天周天不开盘)股市涨跌都很难预测,怎么能确定等楼主四年后毕业时啥语言工资高,好找工作?语言只是工具而已,就像拿勺子喝汤,用锤子锤钉子一样,不同的场景用不同的工具这是很自然的道理,而编程语言也是一样
    如果只学一门语言,很容易就加入这个语言相关的讨论环境中,每个语言都有自己的狂热分字,初学者更容易由于缺乏经验盲目陷入这个语言的井中,坐进观天,得出某某语言更牛逼的结论(现代的说法是信息茧房),比如下面就是我遇到过的一些趣事
    * 很早之前看过杂志的一篇文章,叫"学好 .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
       2024-01-13 11:20:34 +08:00 via Android
    @scorpion91 上机考试的,选择题和代码填空题
    vah970
        51
    vah970  
    OP
       2024-01-13 11:30:11 +08:00 via Android
    @gitrebase 学校的课确实是很奇怪。用 c++的书,考试考的是 c 语言,后面代码填空的文件都是.c 的。
    虽然考应该是 c 和 c++语法相同的部分吧
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1200 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 17:29 PVG 01:29 LAX 10:29 JFK 13:29
    Do have faith in what you're doing.
    ubao 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