楼主: checai1217
跳转到指定楼层
上一主题 下一主题
收起左侧

C++值得花时间学吗

   
🔗
Mr_DwZ 2020-7-27 15:32:20 | 只看该作者
全局:
C++是一门远比java,python,rust古老的预言。C++ 的特点是提供代价很低(贴近硬件)的抽象,给程序员充足的语义表达自由和而且包容所有的设计哲学,更重要的是和C(somehow)兼容,而C本身也就比汇编指令高一级(某种程度上来说就是指令集的宏)。
这就是为什么要用C++而不用java/python/rust。现代C++的复杂性不仅来源于程序语言本身,也来自委员会的一些决策,这些这些设计单独看都很有意义,但是整合到一起反而让人很难学习。
我建议楼主不要被复杂性吓到,一个比较好的实践是无视这种复杂性,在面临选择(引用 vs unique_ptr)到时候直接搜索为什么用A不用B,如果看不懂可以把一个点拎出来
比如move semantic,去搜每年CppCon上的技术讲座,看看设计这个特性或者熟悉这个特性的人是怎么理解的,为什么要这样设计。
Linus有句话,Cheerleading any kind of inanimate object is silly. 有需求有兴趣就学,没有需求没有兴趣就换。
CS有趣的话题那么多,C++只是一个表达语义的工具和一堆库,不构成任何其他知识的blocker。
希望有所帮助。

评分

参与人数 1大米 +1 收起 理由
checai1217 + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
HW312 2020-7-27 16:12:29 | 只看该作者
全局:
checai1217 发表于 2020-7-27 13:46
谢谢,不知道推荐Accelerated C++不?
我看公司内网上推荐这本书,不知道在这个阅读序列中是什么位置

我没有看过这本书,但看着是2000年出版的。那时候的C++和现在的C++是2个C++。你要是入门的话没有比A tour of C++更好的了。
当然也取决于你的编程背景,如果你没有写过C,写的一直都是带gc的高级语言,那你肯定是要先学内存管理的。你不用知道malloc是怎么实现的,也不用知道传参的时候是把参数放在栈上还是寄存器里,但得知道dangling pointer,use after free, stack use after return,  memory leak, double free, pass by reference/value到底发生了什么。然后你再来学C++,看他的inheritance实现,virtual function 实现,copy constructor/assignment, destructor, RAII, ownership, move semantics。更加不要纠结于template, template C++是另一门语言。

但其实为了以后有可能要用就学真没必要,地球上写Java的程序员比C++程序员多多了,Java岗位比C++岗位多多了。
回复

使用道具 举报

🔗
 楼主| checai1217 2020-7-27 16:51:29 | 只看该作者
全局:
023张教授 发表于 2020-7-27 15:25
先谈一谈自己对C++粗浅的理解。
C++大概可以分为这三大编程范式:【面向对象编程】,【泛型编程】和【模板 ...

谢谢这么详细的回答,记下来了您推荐的资源。想听听您对未来20年c++在计算机行业,业界中的位置的看法。我目前没有对哪一项计算机技术特别感兴趣,但还是有兴趣学习各方面,兴趣的主要动力来自于职业的发展。
回复

使用道具 举报

🔗
 楼主| checai1217 2020-7-27 16:53:48 | 只看该作者
全局:
pandami 发表于 2020-7-27 14:33
java web develop架构成熟
golang有狗家保驾护航 容易学 用起来褒贬不一吧
其实jvm调优也够你学得一壶的

您提到的这个jvm调优我确实还没有接触过,刚搜索一下,感觉如果对c++等相对底层的语言有比较好的理解会对jvm调优有很大的帮助?
回复

使用道具 举报

🔗
macca01 2020-7-27 17:17:47 | 只看该作者
全局:
HW312 发表于 2020-7-27 13:03
segfault 难debug,gdb/valgrind/asan 永远是你的好朋友

pass by value/reference其实挺值得说的,取决 ...
反对另一个评论说的时间不够看effective c++/effective modern c++.你看不懂的

对于像楼主这样有其他编程语言经验的人,我觉得可以试试直接跳到effective c++/effective modern c++.这两本书写得挺浅显易懂的。
回复

使用道具 举报

🔗
songx706 2020-7-27 18:38:12 | 只看该作者
全局:
最近也遇到这个问题,需要同时学c++ 和 scala, 精力感觉跟不太上,本科java 研究生就基本只有python了 mark下看回答
回复

使用道具 举报

🔗
多看书 2020-7-27 20:12:38 | 只看该作者
全局:
checai1217 发表于 2020-7-27 14:10
谢谢,

能具体说下这这些领域以及为什么c++把持他们吗?

抢答一波,据我所知,CPP在CV,CG还有游戏领域非常重要,算是必须的基本技能。
回复

使用道具 举报

🔗
nicolaschan 2020-7-27 20:40:41 | 只看该作者
全局:
做infra,可以转go 吧
回复

使用道具 举报

🔗
zhast460 2020-7-27 21:50:47 | 只看该作者
全局:
mark下看回答
回复

使用道具 举报

🔗
toughcharlie 2020-7-27 22:46:22 | 只看该作者
全局:
为什么那么多泼冷水的呀?楼主所需要的这些特性,都是C++11的基本的Modern C++的特性呀。C++ Primer看三周肯定能用的熟练的。

另外,同意楼上的看法,只要不提template,都好说...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表