c 和 c++同时学合适吗

2023-10-14 21:17:38 +08:00
 vah970

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

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

4287 次点击
所在节点    C++
51 条回复
z1645444
2023-10-14 23:31:22 +08:00
如果 CPP 或者 C 就是你的母语,我也比较认可先选一门(顺着学校正在教的 CPP ),再去学另一门( C )的思路。如果之前已经有其他比较现代的语言作为母语,都学不太影响👉
smallboy19991231
2023-10-14 23:36:36 +08:00
首先看 C++程序设计原理与实践! C++之父推荐
vah970
2023-10-14 23:38:33 +08:00
@z1645444 有些 Python 基础
高中信息课教的 Python ,暑假里又跟着 cs61a 学了下(虽然还没学完)
weidaizi
2023-10-15 00:03:17 +08:00
我想每个人学的时候都只会走一条路线,无法直接对比同时学和先后学哪个更好,属于小马过河了;不过条条大路通罗马,只要对技术有兴趣,定下目标,持续推进,最后应该能殊途同归,融会贯通吧

至于有网友说到不如学其他语言,或者学什么工资高之类的,请直接忽略这些说法;连后天(毕竟明天周天不开盘)股市涨跌都很难预测,怎么能确定等楼主四年后毕业时啥语言工资高,好找工作?语言只是工具而已,就像拿勺子喝汤,用锤子锤钉子一样,不同的场景用不同的工具这是很自然的道理,而编程语言也是一样
如果只学一门语言,很容易就加入这个语言相关的讨论环境中,每个语言都有自己的狂热分字,初学者更容易由于缺乏经验盲目陷入这个语言的井中,坐进观天,得出某某语言更牛逼的结论(现代的说法是信息茧房),比如下面就是我遇到过的一些趣事
* 很早之前看过杂志的一篇文章,叫"学好 .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
2023-10-15 01:16:08 +08:00
反正你们学校教的 C++(从教材推断)多半也是一股 C 味(我记得当年谭浩强的 Cpp 书对模板一个字都没提),所以学完也只会对 C++的语法有个基本印象。建议从这个基础上再深化一下 C 的细节( C 的语法本身没什么好说的,主要是一些惯用法和诸如内存对齐等和具体平台深深关联的内容),然后再去理解现代 C++(因为前面那些东西对 C++也适用),否则连很多地方为什么要这么设计都弄不清楚
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
2023-10-15 09:38:16 +08:00
c primer plus 这本可不是经典教材,别弄混了
vah970
2023-10-15 10:28:58 +08:00
@vvhy 你说的 c++ primer plus 还是 c primer plus
感觉网上推荐 c primer plus 的还是挺多的
mightybruce
2023-10-15 10:33:31 +08:00
C++ 和 C 是两个不同的语言,不要以为学了 C, 就懂 C++或者学了 C++ 就懂 C, 两者有交集。
科班建议还是一定要学好 C++, C 写好要求功底更高, 基础设施一部分代码都是 C
C++ 偏应用和中间件开发,打好基础,选择一个 C++ 特定的领域发展就好。
Java 现在都是搬砖的, 走基础设施路线,虽然开始艰难,至少你以后不会出现吃不到饭的问题,
C++ 代码仓库很多都 20 多年还在维护,其他有些语言过个几年连吃饭都成问题。
leimao
2023-10-15 11:13:53 +08:00
不合适
vvhy
2023-10-15 11:17:21 +08:00
@vah970 #28 坏了,我也搞混了,说的是 c++ primer plus 😢
zxCoder
2023-10-15 11:28:17 +08:00
C++ 开发最大的问题是没有统一的风格,你可能在这个领域很厉害,但是在另一个领域,另一个仓库的 C++ 代码你可以看都看不懂
wtsamuel
2023-10-15 11:43:21 +08:00
你的课程是 c++,就学 c++
最主要学的是编程思维,而不是语言。尤其是 c++和 java 为代表的主流,以对象为编程,还有 c 和 go 可以实现的另类对象编程。以及如何设计一个项目,如何模块化等等。
每个语言特性你可以在后续项目中慢慢学习。如果针对之后找工作,那就死记硬背语言特性,应付过去就行。
ZztGqk
2023-10-15 12:21:56 +08:00
这两者对于有些东西的实现理念不一样,我觉得你可以不用太纠结于学哪一门,其实都可以,然后去了解一下常用的编程方法,比如 OOP 还有函数式编程在二者上的实现,然后选择你喜欢的思维模式就行了。另外 C++ 推荐 C++ Primer 不带 Plus 。
thinkershare
2023-10-15 12:39:00 +08:00
先学 C 语言,然后直接去学习 Rust/Golang ,抛弃 C++.
thinkershare
2023-10-15 12:45:06 +08:00
每次使用 C++我都感觉自己在被编程语言使用,而不是我在使用编程语言,对这个什么乱步八糟模式都支持的语言实在没有任何好感。不同人/不同团队写出来的代码有时候完全是不同的风格,如果你喜欢 All in One 那就直接上 C++也行。如果你喜欢自己彻底掌握一个工具后再使用它,建议尽早离开,这个语言实在太难掌握透彻了。如果只是使用 C-with Class 的 C++那会好一点。
impl
2023-10-15 13:55:23 +08:00
看你想做什么
嵌入式开发 -> C
服务器端开发 -> C++
Austin2035
2023-10-15 16:42:35 +08:00
都 2023 年了,还有人说 C 艹是 C 的超集。。。。
bao3
2023-10-15 16:46:06 +08:00
我是直接 C++ 学完后 C 语言自动就算入门了,Java 也算入门了,属于自动解锁。但如果是学 C ,那可能思维切换上还是会有一点区别
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++,等着被内部制裁吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/982016

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX