|

知乎有人提问:
Linus 直接喷 C++ 是垃圾,为啥不干一架?
这属于典型的看热闹不嫌事大的,看到一篇回到挺好的,转发出来,小伙伴权且图一乐。文中观点不代表小方观点。
以下是知友光追不上我的回答:
Thompson的反对,Stroustrup都没当回事,又怎么会把Torvalds当回事呢。
来看看Thompson是如何攻击Stroustrup的:
epjt2tfopnw640511934.jpg
[img][/img]
[img][/img]
[img][/img]
[img][/img]
[img][/img]
[img][/img]
[img][/img]
[img][/img]
[img][/img]
一个screaming,Stroustrup娘们的形象跃然纸上. 但你看到Stroustrup回应过吗?
你再仔细读读上图两处绿线部分, 感受下Thompson的人品。
有没有觉得Thompson、Rob Pike这些人关系更好?
对的,c++就是在贝尔实验室内部被c++团伙的攻击下发展壮大的。
Thompson,unix之父,b语言之父,1943年生,1966年进入贝尔实验室。
Stroustrup,c++之父,1950年生,1979年进入贝尔实验室。
Torvalds,Linux之父,1969年生。
Rob Pike,go语言之父,1956年生,1980年进入贝尔实验室。Stroustrup是他心里永远搬不去的石头。自视甚高的Rob Pike跟Stroustrup几乎前后脚进入贝尔实验室,还一度坐一个办公室。谦逊的Stroustrup早在八十年代中期就已名扬四海,Rob Pike却只有小圈子里的名声。看Rob Pike二十年后设计的golang,处处闪烁着c++ PSTD的光芒。一度扯着Thompson的虎皮,以c语言真正传人的身份自居,结果搞出来一个java的替代品。
现实世界的时间线是作为unix继承者的plan9并未取得成功,而c++却从unix走向更广阔的世界。
如果说小型机时代的代表技术是unix和c语言。那微型机时代的代表技术就是windows和c++。
网络时代的技术代表是java。没有操作系统入选,java自己就是平台。
web时代的技术代表是chrome和js。
那linux算啥?linux其实就是unix被生产资料私人所有制扼杀后的转世灵童。linux如今统治的服务器端,正是unix曾经统治的小型机化身。
windows没能从微型机市场攻入小型机市场,linux也没能从小型机市场攻入微型机市场。
至于手机上的android,我认为它是一个魔改版java都不会认为它是一个linux。
无论b语言还是c语言,语言都是作为操作系统实现者一种卑微的工具。c++却建立起了一种语言中心主义,让语言成为了程序员关注的焦点。这种转换是如此深刻,以至于一贯以来把编程语言视为卑微工具的操作系统实现者也不得不去抵抗采用新语言的压力(灵魂之问:你为什么不用c++?)。而这正是他们反感c++的根源。
当然,c++这个名字,更好的c,对于Thompson、Ritchie们就已经构成了一种冒犯。
然而我想,他们对于C++的敌意里也掺和着老手们对于MS,对于windows, 对于GUI, 对于OOP等一系列新事物的敌意. 而c++跟这一系列新事物都有数不清的关系.
Stroustrup并不是编译器专家,他创造c++是为了方便自己编程序。这就决定了c++的初衷是务实。
至于c++社区后来发展出来的泛型综合症、迭代器强迫症、模板元编程行为艺术,跟Stroustrup都无关系。尤其是模板元编程行为艺术,完全不是c++的设计用法。
hrhgbliwgra640512034.jpg
[img][/img]
[img][/img]
[img][/img]
[img][/img]
[img][/img]
[img][/img]
[img][/img]
[img][/img]
[img][/img]
看看《设计模式》一书,那里面的代码才是c++的古典用法。
至于所谓现代用法,看看大师们表演就行了,邯郸学步,在自己代码里写出来,删的时候会心疼。留之无用,弃之可惜。
我说Stroustrup人格高,除了不跟喷他的人互喷外,还有一点,你见过Stroustrup在标准化委员会之外的场合利用自己的影响力表达过“某个已在c++标准里的东西是我反对进入的,你们不要用”的观点吗?
用c++做过com组件没?那种如履薄冰使用被阉割过的c++的感觉,像不像在c++里搞模板元编程的感觉?
com是狗屁的better c++,直接换java/.net这种自成平台的语言做组件不香吗?
前两天给我们学生(双非)讲《构件技术》这个课,为给学生重现一下2000年左右用c++开发com组件的筚路蓝缕,我又翻出了二十年前看了一半的com书,结果,把我难哭了。注册表里的位置都变了,我在虚拟机里装了个xp回到二十年前才搞定,然后才在win10里复现出来。
3i25qigwm1l640512134.jpg
[img][/img]
[img][/img]
[img][/img]
[img][/img]
[img][/img]
[img][/img]
[img][/img]
[img][/img]
[img][/img]
我当年真金白银购置却没给我赚到一分钱就被历史车轮一波带走的书
同理,在那里强c++所难,不如专门搞种让c++编译器解释执行的小语言。
我一头扎到com里的那些年,自己c++掌握得还不牢固,被com这种阉割的c++用法一冲刷,被mfc那不走寻常路的c++用法一摇晃,我本来会的那点都没了。
今天的c++初学者,虽然少了com跟mfc的干扰,却又多了元编程的祸患,学飞四年,不知走路还会不会?
说了这么多c++,主要因为我自我认同上还是个c++程序员。
至于linux和unix,linux在我心里的地位一直没多神,一方面是因为有unix在先,一方面是因为Torvalds这个贼给自己掉价的c++黑。
但随着我对计算机操作系统的考古(我教操作系统这课),就连unix在我眼里也开始暗淡下来了。
文章来源: https://www.zhihu.com/question/554222296/answer/2680110248
转自:CppGuide
猜你喜欢:
嵌入式软件:函数式 VS 非函数式编程
嵌入式领域:Linux 与 RTOS 的巅峰对决!
嵌入式性能指标竟藏着这些秘密,你了解几个?
嵌入式软件进阶指南,一起来进阶!
嵌入式编程模型 | MVC模型
嵌入式编程模型 | 观察者模式
手把手教你搭建嵌入式容器化开发环境!一款优雅的嵌入式多功能调试器!
一个非常轻量的嵌入式日志库!
一个非常轻量的嵌入式线程池库!
Github上热门 C 语言项目汇总!
实用 | 10分钟教你通过网页点灯
嵌入式开发必备技能 | Git子模块
|
|