学C++越学越有味是怎么回事

里面的一段心理学很有意思啊:

为什么啰嗦这么一大通呢?

就是因为,一直以来泛滥于程序员社群的“语言之争”,背后真正的原因其实并不在于语言实质上的优劣,而在于观察者的眼睛。

在观察者的眼睛里面,语言并非一门工具,而是自己花了N多时间(其中尤数C++为最)来“修炼”的技能,对于这样的技能,被否定无疑等同于自己被否定。

所以,从心理学上讲,语言并不是工具(尽管一直有这么一种呼吁),而是信仰。

这样的信仰在越是花得时间久的语言上越是激烈。

有趣的是,几乎所有的“热闹”的社群都有这样的现象,Java、Python、Ruby…莫不如是;
因为就算语言本身不复杂,程序员仍然还是要投入大量的精力去学习各种各样的框架类库
(想想Java的那些框架?)。因此这些语言社区的信仰未必不比C++社群的强烈。

我觉得把语言换成编辑器也一样。

1 个赞

确实,可能换成任何容易误把过程(当然是在过程不是目的本身的情况下)当作结果或者目的的事物都有类似的情况吧,这篇文章我总是在想起它的时候重读一遍,很有意思。

果然这个论坛才是我的归宿,我日常就是个 oop 黑粉 + void * 脑残粉,这几楼简直说到我心缝儿里了。。

1 个赞

感谢分享这篇文章。

不管是 C++ 还是别的语言,学习它是为了解决问题的,掌握一定的基础之后,直接找个项目实践就行,边用边积累。学一堆八辈子用不着的高级技巧真的是浪费时间。

2 个赞

还是要多看书多了解一些东西,可以不用掌握。如果都不知道有哪些东西,怎么知道去用它呢

1 个赞

在业界有两种C++程序员角色:一种是应用程序员,另一种是库程序员。这两者的界限不是绝对的,同一个人可以戴上应用程序员的帽子,写应用逻辑代码,也可以换上库程序员的帽子,开发程序库给前一类程序员用。

作为应用程序员不需要各种高级技巧,代码越朴实易懂越好。一个公司里的大部分C++程序员都是作为应用程序员在工作。

作为库程序员,则需要对C++语言有更深入全面的了解,这样才能写出既容易使用,又不容易误用,还拥有极高效能的程序库。

C++语言的很多高级特性,是为库程序员服务的,应用程序员并不需要掌握,也不提倡使用。这是因为我们不希望把一个大型程序本身固有的复杂度散布在代码的各个角落里。我们希望把大部分的复杂度集中在少量关键的程序库组件里,由具有高度技巧的库程序员,经过千锤百炼,打造出高效,健壮,可复用的组件。从而可以在大部分的代码里消除掉这些复杂度。

(鄙人在Snapchat的C++语言平台团队负责编写和维护公用库,撰写代码规范和最佳实践指导)

20 个赞

第一次听说,涨见识了。 不过Snapchat各种语言角色是什么样的? 好奇

博客作者写的书看过吗?觉得怎么样。

我看到过一个很有意思的观点(非本人观点). 大致就是说 cpp 这种什么都包办的定位,越来越不适合现代的开发.

“对于底层的代码, 如底层的网络库, 或者对性能有要求的模块, 不用去考虑通用的实现, 用 c 就可以写的非常简洁. 而对于上层频繁变动的业务代码, 即使有stl,boost 加持 cpp, 开发效率也远远比不上 go, Py 等语言. ”

我信了,所以我现在正在研究怎么用c语言去实现一些容器。 :joy:

1 个赞

开源出来了吗?

C, C++, Java, JS, Python,Go, Rust,一个都不能少,真不是开玩笑:主流 top 5 你得能玩吧,脚本你得有一个吧,潮流你得跟两个吧,我还没提各个范式的装逼专用小众语言~

看看这个😄

Smalltalk 很好玩的,Java 工程典范,Ada 超级牛逼,OCaml吊炸天,应用极广,Delphi/C++ 虽然辉煌过去了,也还是牛逼的过去。

IT 界喜欢跟风,啥潮就使劲吹啥,其实从朴素哲学意义讲,没有十全十美,只有适合与否。

https://pharo.org/

如果你只能学一种语言,那么一定不要去学 C 和 C++😄

1 个赞

这观点似乎不对,大量存在这么一种情况,比如一个人平时工作用 A 语言,但业余用 B 语言,然后这个人觉得 C 语言(一个没学过或不用的)很棒,B 语言很强大,A 语言很垃圾。

但是实际投入 A 语言最多,B 语言很少,而 C 只是看了一眼。

6 个赞

足够深入地学习任何一门语言(工具)都要消耗很长的时间,它会影响你的职业生涯(至少,它会侵占你学习其他东西的机会)。

啊刘未鹏,太情怀了~~

我现在越来越觉得这些关于 C++ 开发效率低的说法很扯淡,比如说 Python 开发效率高,无非就是因为库比较全工具链比较方便。这些玩意都是人写的,它有,只是说明别人给你写好了,而已。你需要的话自己写个就好⋯⋯反正这些基础设施只需要写一次。

当然 C++ build 和 deploy 麻烦点,但是也没有差到需要用 Python⋯⋯

大团队合作 + 全流程开发确实 oop 比较好,但是很多时候不需要,Rust 没 oop 也不错~~

学习一门语言不用耗费等多长时间吧!需要耗费时间的是对于库的熟悉(初级),某些框架的掌握(中级),对算法的了解(语言无关),深入实践(高级)

读一本书的时候,到底是应该深阅读呢?还是应该浅阅读呢?

我觉得应该是由书的内容决定的!

编程的时候应该用什么语言 呢? 他应该是由你要解决的问题决定的。

1 个赞

你说rust没有oop,rust会答应吗?