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

第一次听说,涨见识了。 不过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会答应吗?

如果有人说emacs不好,你会反驳吗?如果你不会,那你的格局够大。

不会,因为

  1. 就和有人搞不定编程一样,有人搞不定 emacs 很正常,没法要求所有人都有很强的自学能力。

  2. emacs 确实有落后的地方,我用 emacs 基本是因为习惯,说白了就是沉没成本。

比如上次知乎有人骂 JavaScript 不行,结果点进去一看原来是在不同语言通行的浮点数行为都搞不定。这种问题就完全懒得反驳。

1 个赞

这个怎么说呢,一千个读者就有一千个哈姆雷特,好与不好都是仁者见仁,智者见智的事,没必要较真去反驳

然后遇到某些问题或者紧急情况,用B憋了半天,扭头发现还是A最顺手,不得不用。哈哈……

C++比Python开发效率低这个是事实吧。业界用C++的地方大抵不是因为C++是一门很优美的语言,而是因为没有什么更好的选择。譬如游戏引擎,以及性质类似的Snapchat的增强现实滤镜,达成可接受的性能要求需要对硬件的精细控制,能做到这一点的语言并不太多。在这类应用里,光是算法Big O复杂度对了是远远不够的,同样是O(N)的算法,高度优化的C++和没优化的C++性能可以相差十倍百倍。你需要考虑数据在内存里的布局,CPU缓存效率,函数调用开销,动态分派开销,多线程锁定开销,原子操作开销,以及指令级并行(SIMD)等等等等。C++允许你微调所有这些东西来把性能推到硬件能允许的上限,同时提供了比较强的抽象能力(当然比不上LISP,但是比Java要强得多)。

1 个赞

我建议你不要进行这种自虐行为。C++基本上是C的超集,并没有人禁止你在C++里写C,如果你不喜欢写class,完全可以不写,但是仍然可以利用C++的其他特性,例如更好的类型系统。

用C实现容器和泛型算法在性能上是不可能和C++竞争的。最明显的例子就是C++的std::sort吊打qsort。这是语言的本质决定的。如果要做容器,也是一样被吊打。这是因为C缺乏用模版表达类型的能力,所以动态的数据结构不得不依赖类型擦除的指针,但是大家知道一旦你malloc一回,性能就直降两个数量级,通过指针间接访问数据,性能又降一个数量级。

2 个赞

这倒是还没有,哈哈,不过他的博客文章除了C++,倒是还有其他有趣的东西,比如《瓦而登湖》,比如书写和思考的意义。