翻了翻发现有不少人嘲讽华为“按揭开源”,还有人揪着贴错的zlibc协议不放,那我感觉我还是站出来说两句好了。以下内容仅代表我和同学、前辈吃酒听来的小道消息,事实如何请以官方口径为准。
首先,这段时间华为的开源项目确实搞得手忙脚乱。自己现搭平台不说,今早放出三分钟之后还撤回了一次。场面搞得这么狼狈,背后当然是有些苦衷的。方舟编译器和鸿蒙系统在美国制裁前都早有计划不假,但是原计划没有现在这么火急火燎。
比如方舟编译器,原计划应该是在 EMUI 9.1 上落地之后,再和 IDE 等组件一起小步推进,让开发者能尽早用上方舟。再比如鸿蒙系统,原计划可不是先空放一个 PPT OS 出来,但是上层可能是判断“再不放出消息就会在谈判中居于劣势”,所以选择先空放一堆胶片出来提振市场信心、稳定供应链和三方合作伙伴。
换句话说,现在华为完全是被舆论环境和政治局势倒逼,所有的时间节点都在玩命往前赶。包括这次“8月开源”搞成“8月31号开源”、“zlibc贴错开源协议”,都是极限赶工的产物。
而且,屋漏偏逢连阴雨,7月底 GitHub 还动手封禁了一批伊朗账户,表达了自己的政治立场,让方舟/鸿蒙开源在美国平台这件事一下充满了变数,凭空多出来了搭建开源平台的工作量。
目前方舟代码是发布在华为云自建的开源平台上的,gitee上也搭了一个官方镜像。但是我之前听到的官方消息是,华为要和国内几家头部厂商一起打造一个新的开源平台,把各家的顶尖项目迁移上去,做成一个对业界有强大影响力的中国开源平台。也就是说,现在赶出来的这个平台可能为了开源方舟临时搭建的,将来不出意外应该还要移籍到新平台上。
这个倒霉状况一方面是舆论倒逼的产物,临近8月底各大平台都有人在质问华为方舟是不是要放鸽子。另一方面也要怪之前估计太乐观,承诺了8月框架开源,现在八月底了发现活也干不完,联合开源平台也没协调好,只能996甚至007连轴施工。
总之,说了这么多是希望大家能够理解,工程师们已经在极限施工了,请不要太为难他们。在技术细节方面,当然还是请大家保持高压高标准的批评。但在“按揭开源”、“zlibc贴错协议”之类的非技术细节上,还请大家稍微放宽一点要求。大家应该都知道项目上线前连轴赶工是件压力多大的事情,彼此之间相互体谅一下好不好?感恩。
有些回答真是不懂装懂,为黑而黑
https://github.com/Himself65/...,海军里的技术大神们给我讲解一下,这个3000多行、没有任何注释、没有任何unit test、没有任何文档的黑科技parser到底是个啥原理?
我不是技术大神用的也是苹果全家桶,但这个parser只不过是一个标准的手写Recursive Descent Parser而已。用yacc之类的工具生成parser工作量要小很多,但是错误提示很难处理好。所以clang和gcc现在用的都是这种parser。
这种recursive descent parser说白了是体力活,language specification就是文档,没有多少技术含量可言。把这个当成黑科技只能说明 @立党 对编译原理的无知。
2. @酱紫君自称是搞编译器前端的,他说
上来一个 no type - void...迷惑行为...请问 sizeof(void) 应该是什么呢?
那么对于C语言里面没有返回值的函数,它们的Return Type是什么?没有void类型,你对这种代码
void my_func() {}; int my_var = my_func();
怎么做Type Checking? @酱紫君 怕是没写过C语言吧,连一个void类型都要大惊小怪一下。
至于sizeof(void),因为void不可以作为变量类型(尽管void*可以),所以sizeof(void)是undefined的,具体的处理取决于编译器。在gcc的非标准扩展里,sizeof(void)等于sizeof(char)。
就这水平,还要装作搞编译器前端的,对别人的IR设计指手画脚。@酱紫君还是不要搞笑了,我就没见过哪个C或者Java编译器前端不处理void类型的。
----------------
大概读了一下IR设计,这个Maple IR尽可能多的保留信息是有意义的。比如很多人好奇为什么要各种循环类型(for, foreach, dowhile之类的),这个是有一定道理的:foreach表明运行结果和迭代次序无关,也许可以直接并行化,但是for和while循环必须做更多dependency analysis才能并行;相比while循环,for循环容易做展开和tilting,这种操作在图像处理(比如halide语言)和矩阵运算(比如BLAS之类)中很常见。
很多人也问为什么maple ir要在vm上运行。这应该是一个类似于llvm里面lli的工具,真正deploy的时候并不是像java一样直接interpret bytecode。
但实话说这个开源的诚意怎么说呢?类似阿里开源oceanbase吧。Codegen和runtime都没有开源。如果方舟编译器已经应用于10多款手机,那么测例集应该非常非常大,可是看起来也不打算开源测例,甚至一个子集都没有......
利益相关:编译器爱好者,上过编译原理的课,写过几个玩具级编译器,用过llvm也略读过。
我觉得吧,但凡懂一点大公司内部流程的人看到这会儿应该都明白实际上发生了什么。
我估计事情是这样的。方舟编译器作为华为的软件部门的基建的一个产品,做到某些程度实际上希望的是有更高的“影响力”,不管是在内部的影响力也好在外部的影响力也好,都是和更上层boss negotiate的筹码。国内这种“为了影响力”而开源的产品很多很多,诸如阿里的anyproxy啊这种,开源完了之后就放在那边了,很少有继续活跃的开发的,原因很简单,就是影响力已经到手了,开源指标也满足了,那就完事了呗,为什么还要继续投入人时进去?所谓KPI导向,就是这样的。
很可能方舟的开源计划很早就提交给更上层了,但一直没有被通过。
但这次搞了个贸易战,华为顶层那几个,意识到“妈的,这次要被人在软件上卡脖子了啊”,这个时候最简单的就是“发布一些软件上的东西”,证明“离了你们的软件我也不虚”,所以这个开源计划被紧急通过,然后在发布会上被发布出来。
这解释了为什么在发布会上说了却一直没实际放出代码来,这个开源计划的申请书上的“通过”印章,还油迹未干呢,代码远没有做好可以开源的准备。
企业内部产品的开源,有个很大的阻碍,就是代码和内部环境集成得异常紧密,从类库、编译系统、环境补丁、依赖抓取,都是被高度定制化了的结果。不可能说发布方舟编译器,连自己的内部持续集成环境、wiki、硬件产品的spec、其他团队发给你的工单号也放出来吧?所以从发布会到现在,外面吵得火热,华为内部估计在那边删注释的删注释,改文档的改文档,删测试的删测试,移植编译环境的移植,只露出能露出的部分。
然后这个时候外面调笑“口头开源”的声音越来越大,上头就来问了“你们这个开源咋还没结果啊?”,方舟团队就只好“那我们先把改好了的放出来吧”,所以我们就只看到了这点,其他两部分还在修呢。
至于third-party/zlib的那个版权,太好理解了,你要是个SDE,你手上拿到几千个文件,老板跟你说,给他们都加上版权说明,第一反应当然就是写个一次性的python脚本,扫描下目录,反正加注释而已,没毛病。谁又想得到,目录下面还有third-party这种不该加注释的文档啊。
就这么个故事,我就这么一猜,你就这么一听,莫当真。
我预测一下发布的顺序,先发IR,然后发语言到IR,然后runtime
利益相关:在华为实习已三个月有余的软工。
说两句掏心窝子的实话,希望大家别骂我没良心好吧。
根据我在公司这几个月的观察,最明显的一件事是:软工在公司没有地位可言。而编译器方向是软工的硬本事。方舟编译器刚放出消息的时候我是很期待的,因为有高校的教授团队带队,我觉得是可以做出真东西的,比什么gpu turbo靠谱多了是不,想当初gputurbo刚出的时候也是一片沸腾,可是赚完吆喝就没人关注真技术本身了,仔细了解这个东西的应该知道这里面营销水分有多少。但是随着我在公司的时间越久,我越觉得不对劲。 还记得应该是六七月份的时候,公司搞了个软件能力测试。让软工测试自己的能力,实际上就是考你是不是人肉编译器,考一些冷门的code写法,让你选哪个是对的,竟然还有多选题,选少了还不得分…测试结果自然是哀鸿遍野,然后大佬就开始敲打软工啦。内网首页挂出敲打软工能力的长文,质疑公司软工能力,要求大家提升水平。我觉得,稍微懂点代码的都知道,软工的能力不是人肉编译,这种题你拿去给linus写他也错啊,这不欺负软工老实人么。果然评论区里有年轻的实习生怼了一波,说他拿五题原题给自己打acm拿金牌的同学做了做,人家也错了三题。摊手ㄟ( ▔, ▔ )ㄏ。
再后来我发现公司的发展方向也并没有把软件放在心上,前两天逛阮一峰的网络博客时,看见他写了一些采访renzhengfei的采访记录,可以看出来ren对软件是极其不感冒的,比如说软件无法衡量绩效啊之类的。当然那是很久以前的采访了,十年前吧。可是再仔细看看公司,我真的觉得这个方针是没有大的变动的。越来越多的代码被交给外包团队处理,代码的质量也……咳,唉你也不能怪人家外包兄弟吧,人家拿着那个工资,你指望他们给你写出个花来?我刚来公司的时候看有人在内网吹,公司代码有多少多少行,总量是美国某某公司的几倍几倍。哇这可太真实了。这么大一坨代码,怎么还优越起来了,不怕重复工作,重复造轮子,制造屎山嘛…回归话题,在hw软件至始至终只是为了核心业务服务的,说明白点,是垫脚石,是敲门砖,不是真正发展的方向。你一个方舟编译器,快,也只是为了终端部门提高收益的。公司不会为了一个编译器去发展开源,给别人做嫁衣。我觉得看到这里,hw之前的一系列举动应该也能理解了吧。无论说是要开源,到现在扭扭捏捏,还是一到美国那里出什么消息这里就用方舟的新闻对冲,都是为了把牌子弄响亮,讲到底是为了营销。
说到这里,还没有到技术层面,没有讨论这个东西到底有多少技术含量,有多硬核。当然code给的也十分有限,我们也没法讨论。
注意,就算我们讨论完发现这个编译器真的屌,效果明显,它也还没有成功。为什么这么厉害的东西别人不做呢?狗家做不出来这个嘛?它有存在的必要么?它的快是以什么为代价的呢?它的商业模式行的通嘛?开发者买账嘛?这些都是问题。
希望大家理智点吧。
-------------------------插播下gpu turbo的第三方评测------------------------------
以及阮一峰摘录的任正非讲话。
最后一次修改:被评论区挥斥方遒的big chess player辞退了好多遍,吓死我了,赶紧把评论区关了吧。。。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有