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

C++值得花时间学吗

   
全局:
你如果做后端 我觉得去学java和go前途好一点吧。。。
C加加一般是老一些公司在用,有legacy code比如狗家。nginx也是c写得。
其它web tool不知道还有哪个。

java go这些有gc的语言多少都有一些损耗。
回复

使用道具 举报

🔗
xiaomajia001 2020-7-27 14:18:21 | 只看该作者
全局:
速度快和latency没有什么关系吧。low latency主要是靠kernel bypass, 其次才是语言层面上的东西,比如deterministic destruction
回复

使用道具 举报

🔗
 楼主| checai1217 2020-7-27 14:18:36 | 只看该作者
全局:
pandami 发表于 2020-7-27 14:16
你如果做后端 我觉得去学java和go前途好一点吧。。。
C加加一般是老一些公司在用,有legacy code比如狗家。 ...

谢谢大神回复,能否具体说说java和go为什么前途会好一些?
回复

使用道具 举报

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

pass by value/reference其实挺值得说的,取决 ...

非常感谢分享哦。
回复

使用道具 举报

🔗
kinkin13 2020-7-27 14:26:46 | 只看该作者
全局:
本帖最后由 kinkin13 于 2020-7-27 14:28 编辑
checai1217 发表于 2020-7-27 14:11
谢谢,能具体说说好处吗?

教授这么说,C++应用广泛,难度虽然大,
但正因为我们这些新手什么都不会,如认真学习
严格按照书本上的例题完成作业,即使很多还是不会,
起码养成了写代码的好习惯,打下了
良好基础,后面课程学的语言其实比C++容易,
对学习其它课程有很大帮助。教授非常
强调做题,讲课也是在教如何做题,虽然枯燥,
但如认真听下来,作业其实就都完成大半了,很实用,
我看已经做着CS工作的同学都很高兴,认为直接
解决了他们工作中的问题。我们是水校,大家都以找到工作,解决实际问题为目标,可能要求和标准
和大家名校出身的不太一样,😄
回复

使用道具 举报

全局:
checai1217 发表于 2020-07-26 23:18:36
谢谢大神回复,能否具体说说java和go为什么前途会好一些?
java web develop架构成熟
golang有狗家保驾护航 容易学 用起来褒贬不一吧
其实jvm调优也够你学得一壶的
你可以看看现在的火热startup还不都是java和go?
无人车大部分是c++
回复

使用道具 举报

🔗
ourgit 2020-7-27 14:47:55 | 只看该作者
全局:
在计算机行业,难度高却应用广泛的,就一定要学,并且精通。

比如C++

补充内容 (2020-7-29 22:02):
看完llvm源码和g++源码,你就差不多学完C++了,当然最好自己重新写一个STL和boost那就完美了
回复

使用道具 举报

🔗
yongzhao15 2020-7-27 14:59:31 | 只看该作者
全局:
浪费时间。
了解C++得先懂C。了解debug得懂Compiler + Assembly + OS。
楼主这个C++问题会变成很多问题
1 C值得花时间学吗?
2 Compiler值得花时间学吗?
3 Assembly/OS值得花时间学吗?
学懂的结果就是发现语言就两个C和Java(C# 是个copycat),Compiler就两个C compiler 和Java compiler, OS就两个Linux和Windows。
建议是,用Java+Python做application挣钱到四十岁。四十以后再考虑有什么真的值得花时间探索,了解和学习。
回复

使用道具 举报

全局:
tinlittle 发表于 2020-07-27 13:23:18
C++值得花时间学吗?
==》C++是一个十分独特的语言,一些特殊领域被C++独占把持,不会C++进不去,值不值得学,要问进这些领域的动力有多大
C++要花多少时间学?
麻烦解释一下哪些领域是c++ only吗?
回复

使用道具 举报

🔗
023张教授 2020-7-27 15:25:52 | 只看该作者
全局:
本帖最后由 023张教授 于 2020-7-27 15:27 编辑

先谈一谈自己对C++粗浅的理解。
C++大概可以分为这三大编程范式:【面向对象编程】,【泛型编程】和【模板元编程】。
通常在业务逻辑代码中主要是涉及大量的【面向对象编程】和少量的【泛型编程】,当然,同时也会涉及到大量和C语言以及底层的内容。比如令大家感到头疼的指针,函数指针等。
除开业务逻辑代码,我们可能还会涉及到一些库开发(当然做这个人可能比较少),在这其中,除开上述两种,还可能涉及相对较多的【模板元编程】。
在神作《Modern C++ Design》及相对应的Loki库出来之前,通常我们认为C++是一个完全的【命令式】编程语言,在这个层面上,完全和【Java,Python】等一众主流语言是一致的,与命令式编程语言所对应的是【函数式】编程语言,代表【Lisp,Haskell】。在2001年之后,得益于‎Andrei的推广,模板元编程在C++社区中开始占有一席之地,而元编程这一概念却很好地符合了函数式编程的理念(具体就不展开了),因此元编程对应的开发更像是在进行函数式编程。
——————————————————————————————————————————————————————————————————————————————————————
看楼主在infra组,并且是写C++的infra组工作,其实这是一个非常好的练习C++的契机,如果你可以潜下心来,在上述3种C++的编程范式都会得到非常多的锻炼,并且有机会学习到最新的标准(据我所知,一般C++ infra会要求至少C++14)。

接下来回答一下你的这几个问题【比如segfault很难debug. code review的时候也会因为各种例如pass by reference/pass by value, 使用unique pointer 还是reference被提。改了之后也不是完全理解为什么,下次还是会再犯同样的问题。】

1. segfault直接无脑address sanitizer,非常方便,只用在cmake的命令后面加上【address=sanitizer】,常见的core dump的调用栈就会在运行程序的terminal打印出来。
    当然,掌握gdb也是需要的,通常而言,gdb+适当的print可以非常高效地debug问题。
    比较麻烦的core dump可能和多线程有关,这个可能就更需要经验了。

2. pass by reference/pass by value 这个是一个非常深入的话题,关于它,甚至有很多常见的【粗浅认识导致的误区】。想在这里一下子说清楚比较困难,但是推荐楼主去查阅一些词条,我一下子能想到的有【move sematic】,【rvalue reference】,【forwarding/universal reference】,【rvo/nrvo/copy elision】,【copy-and-swap idiom】等等,甚至【noexcept】这个关键字和和性能也有莫大的关系。另外,推荐直接去youtube搜索【C++ performance】,有一些CppCon的视频很值得一看。

3. 关于unique_ptr,shared_ptr,raw pointer,reference的问题,他们更多的需要看你实际使用的语义,是要独占呢,还是要共享呢。当然,也可以一定程度地参考【google coding style】。在极端情况下,shared_ptr有着更高的开销(通常情况可以忽略)。shared_ptr造成的循环引用,链式引用也是一个可能遇到的问题。推荐看这个视频 关于smart pointer的

4. 关于看书的,我推荐你如果有空的话可以参考一下我在知乎的回答 C++书籍推荐
    时间紧迫的话,重点看【effective modern c++】,如果有机会,可以反复看【7E】。

5. 关于你说的过时的问题,建议看看这本书【C++语言的设计和演化】,祖师爷写的。看完之后就会明白,这么牛逼的语言,以后肯定还会继续有剩余价值可以榨取的。

当然,最重要的还是楼主的心态了,如果你决定在C++这条路上一直走下去,那就应该一路披荆斩棘。讲道理,会C++,在语言层面,你有什么还会怕呢。
我就是最开始学深入了C++,现在我自己大概能有6-7种语言可以几乎无压力写业务逻辑。

评分

参与人数 26大米 +41 收起 理由
Snowsir + 1 赞一个
小丸几 + 2 欢迎分享你知道的情况,会给更多积分奖励!
a_small_potato + 3 谢谢分享!
WKelvinson + 2 很有用的信息!
WillWang98 + 2 给你点个赞!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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