西西河

主题:随便说说c++的这次吵架 -- 透明

共:💬71 🌺370
全看树展主题 · 分页首页 上页
/ 5
下页 末页
家园 随便说说c++的这次吵架

C++社区好久没有现象级的吵架了。上次是十多年前因为 Linus 爆出口。

青年才俊埃里克(Eric Niebler)经过多年的努力终于完工是std::range(),在twitter上庆贺一把,用它写个栗子生成毕达哥拉斯三元数,就是满足勾三股四弦五规律,能构成直角三角形三边的三个数组合结果。

埃里克在微软工作的时候,写了一个当时最快的regex C++解析器。后来加入Boost跟大卫混,为boost贡献了很多代码,其中静态解析库Xpress激发了神奇的基于PEG规则的解析库Spirit。曾经用Spirit实现过一组注塑机之间的二进制实时通信协议,方便得不要不要的。后来Apple要废掉object-C, 另起炉灶Swift,大卫被请去负责写swift的标准库, 他开的boost咨询公司就关门了。埃里克决定搞个大的,把安德烈那次iterator must go演讲点燃的火苗养大,扔到C++标准库里去,实现从iterator到range的现代化。

自己负责的这块C++ 2020工程现在终于完工了,地球上效率国的2025如果还继续的话,可以用上5年,埃里克很嗨森。写了博客,对蓝色小鸟宣布了一把。

另一个青年阿拉斯(Aras Pranckevi?ius)不爽埃里克的例子风格,以写了多年游戏,在自己公司也算大拿的底气,从这儿开始点了冬天里的一把火,一篇檄文,拳打modern C++,脚踢标准委员会。于是大家都不冷了,参与者的热情把Eric的个人网站崩了,他都没法从后台登进去升级系统配置。

待续。

通宝推:PCB,笑不拾,文化体制,
家园

难得在西西河看到C++的帖子

家园 现在c++太太太复杂了

C++最大的问题不是缺少哪些feature,是太多了,应该简化一下,把那些乌七八糟的都去掉。当然,这很不现实。所有工程都是越来越复杂,直到难以为继,推倒重来。

家园 不明觉厉,师母已呆
家园 大家有没有看看GOOGLE的GO语言?

非常简洁高效

家园 确实不错

刚刚试着用go开发了一个小系统,非常赞

家园 有限接触过

修改过一个开源软件在公司内部用过,叫websocketd。很不错的工具,有需求的推荐使用。

有两点golang特点我喜欢。

一是编译型语言,native code,即使自带虚拟机,也不像java,c#那样有中间代码。

二是,全静态编译,一个文件搞定。

至于它最著名的异步channel反而不是太有感。

七牛的老总很喜欢,在国内主推。

go的创立者以前跟C语言之父混,写早期C语言编译器。对C++语言有公开的满满的蔑视和恶意,认为c++一直在偷C的光环,设计很烂。在被Google招募去发明新语言Go时还不能释怀,把这视为一个证明自己,能再造当初C语言辉煌的机会。好像是他散步说C语言之父不爽C++之父,但bjarne说他们关系不错,前几年R去世,bjarne还在CPPCon的主旨演讲首页PPT跟大家一怀念致敬。

几乎所有以替代c++为目标的语言都会失败,过去是将来也非常可能是。说这句话我试图做一个现象判断,而不是价值判断。而且这方面的失败不代表其他方面的失败,更不是语言本身的失败

家园 简化有两种

一种是删除。C++这种使用广度和深度的语言,实际上是超出想象的,有一种说法,这世界是建立在软件之上。如果你认同这种说法,大概率你会认同一种变体表达方式,这世界是建立在软件之上。删除任何一个特性,从而破坏兼容性,后果很难预料。我知道的一个最大的删除,是template export,这还是因为98年标准化以来,只有一个小众编译器实现了这个功能,并且是这家编译器基于自己掌握的被使用情况而提出删除申请的。

另一种是简化已有的功能的表达方式,为他们提供更现代化的替代方案。这是C++11以来一直采用的主要方式,比如auto之类。

但这其实是以增加的方式来实现简化,要配套正确的教学方式才能完成目标,否则反而加重了学习量和复杂度。

比如教汉语,假设人类活得够久,夏商的人还健在,他们教语文先从甲骨文起教到现代汉语,我估计小学都得60年。这几乎是现在的C++教育方式,,从C++98开始。更极端的是只教甲骨文,我被拉进一个微信C++找工作群,好多人还是vc++6.0/MFC,我有一种强烈的非现实感。

家园 这种恐龙时代的c++程序员会被鄙视的

本人就是

去年有个工作相当合适,code test的时候被废了。理由是代码风格太古老,恐怕和现在的成员很难沟通。

灰心找了几本C++17的书来看,发现与其搞懂这东西,还不如去弄python之类的算了。

虽然个人仍然喜欢C++,或者是喜欢那种侏罗纪时代的C++, 不过现在相关的职位确实很少, 而且薪水也不咋滴。 除了情怀, 真的不太有理由坚持这玩意儿。

家园 俺只编过计算用的

最早用的fortran,编的我想骂娘,世界上怎么会有这种反人类的语言。

后来换了matlab,基本什么函数都有,调用就行,感到了世界深深的善意。

我觉得cpp和java,python对比大概就是就是这个感觉吧。

家园 这可能是C++社区的最大特点之一

各种原因造成有一种价值判断先于工程实用性的倾向。

C++与程序员的能力挂钩,一段C++代码,首先的判断是好不好,能不能更好,那样更好,进而对判断写代码的人牛不牛。

而别的语言写的代码,首要标准是能不能用,功能实现了没有。能用就用呗,扯那么多臭氧层干哈。

家园 FORTRAN恰恰是最早的高级语言。

(数学)公式翻译语言嘛,用于工程计算。强项是数值计算,有些效率据说现在C语言都追不上。

最早版的matlab好像就是FORTRAN写的(不确定),后来C流行了才重写(这我确定),算是为了维护和通用,牺牲了效率。

我上大学时候学的第一门语言。因为不是计算机系,所以学校安排FORTRAN 77。从来没有实战过,除了独一无二I-N规则,和经典的面向过程概念,几乎忘完了,但对一些基本概念打下了很好的基础,后来对比学习新的语言很有帮助。

家园 随便说说c++的这次吵架(2)

阿拉斯揭竿为旗,天下云集响应,赢粮而景从。

经历80年代10年的野蛮生长,Bjarne 墙裂希望把C++语言标准化,万事俱备后,亚历山大一把拽住他的手臂,来,给你看个东西。这一看,Bjarne说,我等,我们等。这是熟人的力量,更是数学的力量。

亚历山大终于写完STL,等米下锅的标准委员会立马在98年发布了第一版C++的ISO标准。STL的核心配方是template,方法是generic, 亚历山大取的名字。

Java和 c# 城里旌旗飘扬,上书我也要,我也要。

Java 在2004年满足了他的子民。

C# 2005年开仓放粮。有人反映味道不对,C#说,runtime, runtime,你的,明白。 期间他爹微软,图天下,修文德以来之, 准备用C#写一个STL.NET,昭告天下后,奋笔疾书,不久一声长叹,撕掉稿子,付之一炬。

在C++国,走出标准委员会投票会场的大卫,街边扯了3尺红布,上书boost.org,占山为王,招纳天下英雄,任何人可兴致而来,兴尽而归。这种free style也叫open source。2011年c++标准更新,boost 出没的英雄占领库议席大半。

那时还不知道自己神秘力量的安德烈,2001年出了一本书晦涩的经典书 Modern C++ Design -- Generic Programming and Design Patterns Applied,详述了手握template的十八般最帅姿势,从此 Modern C++变成了专有名词。

阿拉斯对着mordern C++唾了一口,抬手手把子弹射向STL。自古英雄出少年,诚哉斯言。

家园 channel是精华之一

channel配合协程,改变了编程方式。我看好给go,可惜出现的有些晚。

家园 语言作为一种工具,掌握不了自己的生命

后面的支持力量比语言自身的特点更重要。

golang是google推出,但不是自身依赖的语言。它的新系统?Fuchsia 也没用golang。

Google刚20岁,它的表现也像20岁,有偶像气质,有激情,有精力,有鲜明观点,冲动没耐心。

作为一个以广告收入为主的公司,缺乏企业级客户基础架构支持产品的经验,再加上创始人价值观立场太强,产品说砍就砍(每年春季大扫除),市场说退就退(中国)。GCP卖不出去是有道理的。

比较一下40岁的微软,每一个正式发布的产品都会长久支持,给钱就行,直到真的没人用了。

win7 宣布死刑,又从靶场拉回几次,它目标大,可以理解。

说个亲身经历,十多年前年微软搞了个Silverlight,我的团队基于它开发了一个SCADA系统,然后他们不玩了。但是他们把这个技术支持到2022年还是2019年。就是说客户有10来年的时间迁移。

企业级客户追求稳定,产品不是最好没关系,你能提供多久支持是关键。要不我的人辞职了,你也不支持,我的生意还做不做?

微软这种有钱就赚,陪你走到底的商业态度才是企业用户最看重的最放心的。

我个人不觉得golang能走很远,就跟Andy走了,google就不搞android了一样。这帮golang创始人散了,golang估计就自生自灭了。

通宝推:宏寺,
全看树展主题 · 分页首页 上页
/ 5
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河