Board logo

标题: [数码手机] 华为的这个方舟编译器水很深啊 [打印本页]

作者: masterfish    时间: 2019-4-13 11:50     标题: 华为的这个方舟编译器水很深啊

微博上一位专业人士叫北京塞冬的文章:

劳伦斯利弗莫尔国家实验室(LLNL)是美国以核武器研发为主的两个国家实验室之一(另一个是洛斯阿拉莫斯)。提到核武器,就离不开超级计算机,LLNL目前拥有全球排名第二的超级计算机“红杉”(图1,http://top500.org,2018年11月),用于核试验模拟(图2,LLNL官网)。40多年前,LLNL启动了一个名叫“S-1"的超级计算机项目,该项目有许多斯坦福学生/毕业生参与。这是斯坦福计算机系的相关记录:http://t.cn/EXvhylm

S-1项目产生了一系列影响,包括:
1、商业化EDA工具诞生:项目的两位前期主力设计了自动化工具用于研发流程,几年后创立了世界上最早的(之一)商业EDA公司——Valid Logic Systems。

2、在体系结构上:对DEC、MIPS等公司的RISC指令集产生影响,引入了“分支预测”和基于目录的缓存一致性技术等。

3、S-1项目还对编译器产生了重要影响:GNU之父Richard Stallman最初就是基于该项目配套的编译器来编写C语言前端,后来由于性能原因又重写了一个编译器——GCC由此诞生。

在参与S-1项目的斯坦福学生中,有一位叫周志德的华人,他于1977-1983年在斯坦福读博,是该项目编译器的主力研发之一。毕业后,周志德去了Daisy Systems,该公司和上面提到的Valid Logic Systems齐名,是当时最知名的EDA创业公司之一。在Daisy Systems,周开发了DABL(一个类似VHDL的硬件设计语言)配套的编译器。

周后来陆续在MIPS和SGI任职,在SGI期间领衔开发了Pro64编译器,后来演化为著名的Open64编译器,周因此树立了全球编译器顶级权威的地位。此后,周又加入过Cognigine(一家网络处理器公司),参与创立了PathScale和ICube(图4,周的LinkeIn)。PathScale公司的首位CTO,就是上面提到的S-1项目的两位前期主力之一,也是上面提到过两次的Valid Logic Systems的创始人。PathScale的7位创始人中,有4位是S-1项目的参与者。

到21世纪,编译器已经是计算机产业链中相对成熟的领域,CPU体系结构从百花齐放走向高度垄断,编译优化的价值也不再显著,除国际头部大厂外,其余公司很少再有大的投入。作为一个诞生于21世纪的编译器创业公司,PathScale的结局就是被反复卖了好几轮。我的本科毕设就是编译器相关。在5-10年前,对中国学生而言,如果研究方向是编译器、甚至整个偏底层的系统软件方向,那么完全对口的工作可能就只有国际头部大厂,或者体制内的几家“中国芯"研究单位。由于当时国内信息产业在基础投入上的不足,相关领域毕业生只有转方向做搜索、做推荐、做游戏、做机器学习,做应用、做上层,才有广泛的就业机会。

作为编译器领域的顶级大佬,周志德在离开PathScale后,和英伟达出身的Simon Moy一起,创立了一家处理器设计公司ICube,他们提出了融合了CPU和GPU的新概念——UPU。在这个年代,决定一款处理器生死的,更多是生态。想要开创一款新处理器(不一定是全新架构),要么有全新的应用(比如与AI相伴而生的NPU、TPU),要么体量大到能自建生态(消费电子巨头)。这几年,随着国内信息产业规模的壮大,国内巨头在基础领域的投入不断增加,除上层应用以外,偏底层、偏系统方向的机会也越来越多。

四年多前,周志德(Fred Chow)加入华为,成为华为编译器技术首席科学家。周志德曾短暂呆过的Cognigine公司也早已被华为收购。昨天的华为发布会,让我感到惊喜的是,在如今这个年代,会有一家国内消费电子公司把编译器作为一大亮点来介绍——从组装到整合,再到核心元器件逐渐自主化、系统深度优化/自研,自己曾经放弃和退缩的道路,如今正在成为现实。

华为在基础研发上的持续高投入,加上手机终端市占率向全球第一迈进,使得“自建生态”的梦想,对一家中国公司而言首次成为可能——哪怕在商业上并无必要,但至少在技术上已不再遥不可及——从OS到底层系统软件到SoC,技术储备增加了华为战略战术打法的可能性。对于相关方向的毕业生而言,机会也比前几年增加了。我在读书时很崇拜的几位编译器和OS大牛师兄,前几年还都在惠普、英特尔、英伟达、vmware,现在则要么在头部芯片创业公司,要么在华为,从物质回报来看也不错,算是熬出来了。所以,“产业升级”、“基础研发”,这些都是和个人命运息息相关的。我还是期待华为能做得更大更强,同时也期待能诞生更多的华为,能有更多的中国巨头企业能利用自己的市场优势从应用向基础进军。
作者: 狂奔的牛牛    时间: 2019-4-13 12:16

其实稍微接触到IT业的都知道华为研发能力有多强,产品能打出来绝非易事,宣传口LOW是没错,但比华为更LOW的海了去了,也没打出来个名堂啊.
现在论坛风气是华为就是靠吹出来的.但是基本盘不够,有些你吹都没货可吹啊.

===========
非洗地,非引战,纯粹个人有感而发
作者: nai    时间: 2019-4-13 12:21

posted by wap, platform: iPhone
引用:
原帖由 @狂奔的牛牛  于 2019-4-13 12:16 发表
其实稍微接触到IT业的都知道华为研发能力有多强,产品能打出来绝非易事,宣传口LOW是没错,但比华为更LOW的海了去了,也没打出来个名堂啊.
现在论坛风气是华为就是靠吹出来的.但是基本盘不够,有些你吹都没货可吹啊.

===========
非洗地,非引战,纯粹个人有感而发
比尔盖茨会吹他有钱?但凡真正有底气的不需要做事这么low的,用实力说话就行。有好点的选择不会去做xj也是这个道理。
接下来,你明白这道理没?
作者: hmilychen    时间: 2019-4-13 12:21

posted by wap, platform: Samsung
这算不算软文
作者: 分分钟叫你做人    时间: 2019-4-13 12:21

posted by wap, platform: 小米5
想说啥?一个打包编译也能吹上天?
作者: StarForcePro    时间: 2019-4-13 12:22

posted by wap, platform: Chrome
说白了泥潭是小众中的小众而已

low不low,最终看市场占有率
作者: 原始恶魔    时间: 2019-4-13 12:24

我也觉得华为肯定比百度联想这两单纯骗钱的强多了。好歹是把血腥的资本积累给用在发展上,而不是啥也不干甚至还把压榨老百姓的血汗钱倒贴给美国佬。(当然华为肯定也有压榨,毕竟资本的原始积累一定是充满血腥的,不可避免)
作者: nai    时间: 2019-4-13 12:25

posted by wap, platform: iPhone
引用:
原帖由 @StarForcePro  于 2019-4-13 12:22 发表
说白了泥潭是小众中的小众而已

low不low,最终看市场占有率
你们小粉红辛苦发帖赚的一点钱,都去买华为手机,很好嘛,一定要把华为份额顶到全球第一,这样土狗才不会崩溃。
作者: 睡睡平安    时间: 2019-4-13 12:30

posted by wap, platform: 小米
引用:
原帖由 @StarForcePro  于 2019-4-13 12:22 发表
说白了泥潭是小众中的小众而已

low不low,最终看市场占有率
呵呵 华为爱好者的逻辑
作者: 藕是张力    时间: 2019-4-13 12:31

posted by wap, platform: iPhone
说到底还是LOW啊
作者: 狂奔的牛牛    时间: 2019-4-13 12:36

引用:
原帖由 nai 于 2019-4-13 12:21 发表
posted by wap, platform: iPhone
比尔盖茨会吹他有钱?但凡真正有底气的不需要做事这么low的,用实力说话就行。有好点的选择不会去做xj也是这个道理。
接下来,你明白这道理没?
没错, 我上来就直接肯定了宣传LOW,但这个跟研发强并不冲突.

至于要不要这么LOW的去做,这个跟个人/企业的性格有关,并不是每个有实力的人都会愿意低调的直接拿实力说话,有些人会觉得酒香也怕巷子深,宁愿走点邪道先把市场占到手.
作者: 冰醋酸    时间: 2019-4-13 12:38

posted by wap, platform: Samsung
lz是出名的低智商粉蛆

你们别浪费时间讨论了
作者: StarForcePro    时间: 2019-4-13 12:40

posted by wap, platform: Chrome
你们说宣传low,我也觉得low,但是效果好啊,效果不就是销量么。

天天喷那不就是无能狂怒么。。

所以等菊花终端增长率上不去的时候,才能甩锅到宣传太low上

本帖最后由 StarForcePro 于 2019-4-13 12:42 通过手机版编辑
作者: 狂奔的牛牛    时间: 2019-4-13 12:43

引用:
原帖由 藕是张力 于 2019-4-13 12:31 发表
posted by wap, platform: iPhone
说到底还是LOW啊
别浪,你东家LOW事也不少
作者: masterfish    时间: 2019-4-13 12:48

个人猜测的方舟的机制:
【1】各个app厂商还是只开发和维护java版本,不会产生分裂;
【2】app上传到各个手机大厂的软件商店,由软件商店内部根据自家手机硬件来编译为so的机器码;
【3】用户从本家软件商店下载后得到最优化的版本运行。当然,也可以从外部源下载通用版本,可能效率会差一点。
作者: 一只纯猪头    时间: 2019-4-13 13:01

posted by wap, platform: iPhone
又一本正经讨论起来了??
吓死人的GPU TUBRO后来怎么了?
作者: u571    时间: 2019-4-13 13:15

引用:
原帖由 masterfish 于 2019-4-13 12:48 发表
个人猜测的方舟的机制:
【1】各个app厂商还是只开发和维护java版本,不会产生分裂;
【2】app上传到各个手机大厂的软件商店,由软件商店内部根据自家手机硬件来编译为so的机器码;
【3】用户从本家软件商店下载后 ...
那应用商店维护起来成本不是高的吓人,你重新编译之后还得要测试,我不信菊花会自己弄这些事

估计还是跟“吓人的”技术一样,需要开发商自己编译打包,反正微信支付宝这些APP是肯定不会用这玩意的
作者: 李鬼    时间: 2019-4-13 13:31

引用:
原帖由 一只纯猪头 于 2019-4-13 13:01 发表
posted by wap, platform: iPhone
又一本正经讨论起来了??
吓死人的GPU TUBRO后来怎么了?
其实就是动态调整cpu/gpu的频率
作者: elia    时间: 2019-4-13 13:54

引用:
原帖由 一只纯猪头 于 2019-4-13 13:01 发表
posted by wap, platform: iPhone
又一本正经讨论起来了??
吓死人的GPU TUBRO后来怎么了?
Posted by Vivo NEX S
由不能玩到勉强能玩,进步还是可以的  TGFC·NG
作者: 卖哥    时间: 2019-4-13 14:03

posted by wap, platform: Meizu M9
引用:
原帖由 @u571  于 2019-4-13 13:15 发表
那应用商店维护起来成本不是高的吓人,你重新编译之后还得要测试,我不信菊花会自己弄这些事

估计还是跟“吓人的”技术一样,需要开发商自己编译打包,反正微信支付宝这些APP是肯定不会用这玩意的
不是新编译的不允许上架官方市场,然后第三方安装默认是关的,大部分人也不知道怎么开。
再过一年,第三方安装关掉,彻底垄断应用发行。

本帖最后由 卖哥 于 2019-4-13 14:08 通过手机版编辑
作者: masterfish    时间: 2019-4-13 14:31

posted by wap, platform: Android
引用:
原帖由 @u571  于 2019-4-13 13:15 发表
那应用商店维护起来成本不是高的吓人,你重新编译之后还得要测试,我不信菊花会自己弄这些事

估计还是跟“吓人的”技术一样,需要开发商自己编译打包,反正微信支付宝这些APP是肯定不会用这玩意的
想不通有什么高成本的,事实上你的手机也能做,现在只是搬到软件商店的服务器而已。
作者: masterfish    时间: 2019-4-13 14:43

posted by wap, platform: Android
引用:
原帖由 @卖哥  于 2019-4-13 14:03 发表
不是新编译的不允许上架官方市场,然后第三方安装默认是关的,大部分人也不知道怎么开。
再过一年,第三方安装关掉,彻底垄断应用发行。

本帖最后由 卖哥 于 2019413 14:08 通过手机版编辑
完全不给从外源下app不可能,华为海外销量比国内都高了,但是外源下载的运行效率没有store的高,这是很有可能的,真的如我想象的那样,那么华为并不会真的得罪app厂商,因为你不需要专门为华为开发一套,只需要上传华为商店由它编译为自己需要的版本就能得到利好了,安卓并不会就此碎片化,从而得到ios的专有系统的好处
作者: MacPhisto    时间: 2019-4-13 14:59

posted by wap, platform: Chrome
都出编译器了,那还用Java干嘛。像苹果那样自己搞一套语言不是更好。
到时候一个语言编译出三个版本,ios安卓都能跑。干死谷歌苹果。
作者: 李鬼    时间: 2019-4-13 15:02

引用:
原帖由 masterfish 于 2019-4-13 14:43 发表
posted by wap, platform: Android
完全不给从外源下app不可能,华为海外销量比国内都高了,但是外源下载的运行效率没有store的高,这是很有可能的,真的如我想象的那样,那么华为并不会真的得罪app厂商,因为你不需 ...
Android App Bundle了解一下
作者: masterfish    时间: 2019-4-13 15:03

posted by wap, platform: Android
引用:
原帖由 @MacPhisto  于 2019-4-13 14:59 发表
都出编译器了,那还用Java干嘛。像苹果那样自己搞一套语言不是更好。
到时候一个语言编译出三个版本,ios安卓都能跑。干死谷歌苹果。
我最不喜欢的语言就是Java,但是我觉得华为还是会挺Java的,毕竟各级别的编程人员都好找。
作者: MacPhisto    时间: 2019-4-13 15:06

posted by wap, platform: Chrome
引用:
原帖由 @masterfish  于 2019-4-13 15:03 发表
我最不喜欢的语言就是Java,但是我觉得华为还是会挺Java的,毕竟各级别的编程人员都好找。
挺Java干嘛。接口是你的?类库是你的?还是虚拟机是你的?
能出编译器那就是直接兜底端了。上层还用别人家的东西?想想谷歌为什么要搞Kotlin出来。
作者: masterfish    时间: 2019-4-13 15:21

posted by wap, platform: Android
引用:
原帖由 @李鬼  于 2019-4-13 15:02 发表
Android App Bundle了解一下
我知道app bundle,但是Google play的bundle有很大缺陷:
1,bundle里各个版本还是要各个app厂商来自己编译,这会造成app版本爆炸,因为Google play是面向所有手机商的,你不知道硬件信息,所以各种组合就会导致必须编译几十种版本;
2,由于每一个版本还是app厂商进行编译,所以对于具体手机商来说,会不会针对某台手机进行优化,就是未定之数,比如华为就一直深受其害,腾讯的大型游戏以前一直不给华为优化。现在通过上传Java版本给商店,商店在具体编译时,就有可能会有针对性的优化,特别像华为这样有自己的CPU,gpu甚至npu的厂商。
作者: masterfish    时间: 2019-4-13 15:23

posted by wap, platform: Android
引用:
原帖由 @MacPhisto  于 2019-4-13 15:06 发表
挺Java干嘛。接口是你的?类库是你的?还是虚拟机是你的?
能出编译器那就是直接兜底端了。上层还用别人家的东西?想想谷歌为什么要搞Kotlin出来。
都说得很清楚了,Java各种级别的程序员都好找,你华为技术再先进,也要不断有人来研发吧。
作者: 李鬼    时间: 2019-4-13 15:27

引用:
原帖由 masterfish 于 2019-4-13 15:21 发表
posted by wap, platform: Android
我知道app bundle,但是Google play的bundle有很大缺陷:
1,bundle里各个版本还是要各个app厂商来自己编译,这会造成app版本爆炸,因为Google play是面向所有手机商的,你不知道 ...
你真的知道?
引用:
App Bundle可以针对不同用户的设备生成并提供优化过的APK。从而用户可以仅仅下载他们运行此App需要用到的代码和资源。开发者不再需要针对多种设备去编译,签名,管理不同的APK(Multi-APK机制),用户可以下载体积更小的,优化过的APK。

作者: masterfish    时间: 2019-4-13 15:30

引用:
原帖由 李鬼 于 2019-4-13 15:27 发表


你真的知道?
不要看定义,你自己搞过app就知道了,大部分都还是要自己编译的。
作者: 李鬼    时间: 2019-4-13 15:33

引用:
原帖由 masterfish 于 2019-4-13 15:30 发表
不要看定义,你自己搞过app就知道了,大部分都还是要自己编译的。
喷了
这是Google I/O 2018上新推出的功能
作者: MacPhisto    时间: 2019-4-13 15:54

posted by wap, platform: 红米Note3
引用:
原帖由 @masterfish  于 2019-4-13 15:23 发表
都说得很清楚了,Java各种级别的程序员都好找,你华为技术再先进,也要不断有人来研发吧。
程序员换语言很容易。没听说哪个程序员只会一门语言吃饭的。否则苹果谷歌推新语言都是吃饱了撑的么。
作者: masterfish    时间: 2019-4-13 16:02

引用:
原帖由 李鬼 于 2019-4-13 15:33 发表


喷了
这是Google I/O 2018上新推出的功能
我知道,这个技术一出来我就和公司的程序员讨论过了,但是可以看到,你一样要把各种环境什么的配置好,比如高分辨率、低分辨率,各种语言,arm64还是mips等,都要自己配置好,然后google play会给在具体用户下载的时候进行裁剪。

这个技术我觉得和方舟肯定还是有不同的,最主要,google和开发者可能都没有足够的人力和精力去具体实现每种特殊设备的独有特性,这些是具体设备厂家才有的。还是以腾讯为例,它的大型游戏以前很久都没有针对华为的麒麟芯片和mali gpu做优化,那么google会做这个优化吗?不可能的。

那么如果腾讯把游戏的java字节码上传到华为的商店,在具体转换为机器码的时候,华为就可以针对性的把对高通Adreno gpu的特殊指令转换为对自己mali gpu的对应指令(甚至部分转由npu来辅助),从而得到类似的性能优化。

当然这只是我猜测了。但是如果真的是这样的化,实际上对app厂商是利好的,它们可以事实上不会再针对具体设备进行优化,而是把这些交给不同厂家的商店来进行,这就像光纤的最后100米入户一样,具体的性能优化可以由手机大厂来进行了。

所以华为有信心把这个技术公开,这个基本上对各个app开发员来说没什么用,对像华为这样的自己设计cpu、gpu、npu的厂家,利好更多。
作者: masterfish    时间: 2019-4-13 16:06

引用:
原帖由 MacPhisto 于 2019-4-13 15:54 发表
posted by wap, platform: 红米Note3
程序员换语言很容易。没听说哪个程序员只会一门语言吃饭的。否则苹果谷歌推新语言都是吃饱了撑的么。
程序员转语言容易,框架转语言就问题大了。

我见过一开始找大牛定了用python搞整个框架,然后基本是很难招到程序员的,最后大牛跑了,老板找了一个新的大牛来,又重新用java整个个新的。
作者: 原始恶魔    时间: 2019-4-13 16:16

引用:
原帖由 masterfish 于 2019-4-13 15:03 发表
posted by wap, platform: Android
我最不喜欢的语言就是Java,但是我觉得华为还是会挺Java的,毕竟各级别的编程人员都好找。
甲骨文在一天java就不可能翻身。大家都在想着怎么彻底甩脱呢。
作者: cynic0522    时间: 2019-4-13 16:19

posted by edfc, platform: iPhone Xr
[quote]原帖由 @masterfish 于 2019-4-13 16:06 发表

作者: masterfish    时间: 2019-4-13 16:28

posted by wap, platform: Android
引用:
原帖由 @原始恶魔  于 2019-4-13 16:16 发表
甲骨文在一天java就不可能翻身。大家都在想着怎么彻底甩脱呢。
不是有openjdk了?现在应该天塌不下来,Google和IBM挡在前面呢。
作者: MacPhisto    时间: 2019-4-13 16:31

posted by wap, platform: 红米Note3
引用:
原帖由 @masterfish  于 2019-4-13 16:06 发表
程序员转语言容易,框架转语言就问题大了。

我见过一开始找大牛定了用python搞整个框架,然后基本是很难招到程序员的,最后大牛跑了,老板找了一个新的大牛来,又重新用java整个个新的。
框架是设计思路,跟语言关系不大。没听说过哪个框架只能用某个语言写的。语言最多只是提供语法糖。

毕竟框架是上层的东西。编译器和语言才是基础设施。
作者: 极品三红    时间: 2019-4-13 16:35

水不深,海军怎么出港
作者: masterfish    时间: 2019-4-13 16:42

posted by wap, platform: Android
引用:
原帖由 @MacPhisto  于 2019-4-13 16:31 发表
框架是设计思路,跟语言关系不大。没听说过哪个框架只能用某个语言写的。语言最多只是提供语法糖。

毕竟框架是上层的东西。编译器和语言才是基础设施。
瞎扯,语言和框架关系太大了,Python做框架以模块为主,各种对象和功能都以函数和嵌入对象为主,Java则要做对象树,各个对象要类继承,这两个差太远了。
作者: masterfish    时间: 2019-4-13 16:50

posted by wap, platform: Android
引用:
原帖由 @MacPhisto  于 2019-4-13 16:31 发表
框架是设计思路,跟语言关系不大。没听说过哪个框架只能用某个语言写的。语言最多只是提供语法糖。

毕竟框架是上层的东西。编译器和语言才是基础设施。
语言和框架绑定至深,很多框架换了语言基本废掉了,比如c++的特点是静态类型检查和泛型,所以stl框架出来了,其他语言都做不出stl的高效和简洁。
而UI系统框架天然要求面向对象和类型反射,所以c++几乎没有好的UI库,搞个qt都是用了不少对c++进行扩充的非法手段,反而Java的UI库非常好。unity为什么以c#为开发,tensorflow为什么主要以python为主,docker为什么以go进行开发,都是如此。
作者: MacPhisto    时间: 2019-4-13 17:09

posted by wap, platform: iPad
引用:
原帖由 @masterfish  于 2019-4-13 16:50 发表
语言和框架绑定至深,很多框架换了语言基本废掉了,比如c++的特点是静态类型检查和泛型,所以stl框架出来了,其他语言都做不出stl的高效和简洁。
而UI系统框架天然要求面向对象和类型反射,所以c++几乎没有好的UI库,搞个qt都是用了不少对c++进行扩充的非法手段,反而Java的UI库非常好。unity为什么以c#为开发,tensorflow为什么主要以python为主,docker为什么以go进行开发,都是如此。
你说的这些是语法糖。写起来方便点,不代表别的语言不能写。

框架说白了是设计模式的集合。数据流,代码流。这些都是抽象概念,和具体的语言特性没关系。
作者: masterfish    时间: 2019-4-13 17:36

引用:
原帖由 MacPhisto 于 2019-4-13 17:09 发表
posted by wap, platform: iPad
你说的这些是语法糖。写起来方便点,不代表别的语言不能写。

框架说白了是设计模式的集合。数据流,代码流。这些都是抽象概念,和具体的语言特性没关系。
樵夫砍柴之前还要磨刀呢,具体框架很多特性都是和语言有关的,换个语言,这些特性都没了,那个框架就废掉了,我还没看见一个框架换了语言还存在的,上面举了一堆框架依赖语言的例子,要不你举个例子?
作者: 卖哥    时间: 2019-4-13 17:49

posted by wap, platform: Meizu M9
虽然华为的开源代码经过了处理,基本看不出逻辑。但我大胆猜测就是ndk,可能补全了一部分api简化了移植。
作者: manmanwan1    时间: 2019-4-13 22:51

几个穷逼跳来跳去烦得很
作者: MacPhisto    时间: 2019-4-13 23:42

引用:
原帖由 masterfish 于 2019-4-13 17:36 发表
樵夫砍柴之前还要磨刀呢,具体框架很多特性都是和语言有关的,换个语言,这些特性都没了,那个框架就废掉了,我还没看见一个框架换了语言还存在的,上面举了一堆框架依赖语言的例子,要不你举个例子?
比如unity还支持javascript和python呢。c#对它来说不过是个插件。
比如苹果的框架同时支持obj-c和swift。
比如facebook用JavaScript写React是因为这个语言是默认全平台支持,并不是因为JavaScript有什么独有的特性是其他语言没有的。你以为React之类的框架就不能用其他语言写么。

语言特性和语言有关不假。但没人规定某个特性只能某个语言才有。
所谓语言特性说到底不过是编译器和运行时这些基础设施暴露给程序员的语法糖而已。
作者: masterfish    时间: 2019-4-14 11:36







作者: cc0128    时间: 2019-4-14 19:04

posted by wap, platform: iPhone
引用:
原帖由 @MacPhisto  于 2019-4-13 23:42 发表
比如unity还支持javascript和python呢。c#对它来说不过是个插件。
比如苹果的框架同时支持objc和swift。
比如facebook用JavaScript写React是因为这个语言是默认全平台支持,并不是因为JavaScript有什么独有的特性是其他语言没有的。你以为React之类的框架就不能用其他语言写么。

语言特性和语言有关不假。但没人规定某个特性只能某个语言才有。
所谓语言特性说到底不过是编译器和运行时这些基础设施暴露给程序员的语法糖而已。
unity实际上只完整支持c#。
JavaScript是unity自制的unity script
python支持更是shit一样。
当然对于一个游戏引擎来说,支持任何语言问题都不大。
问题还是在于框架有没有利用语言的特有特性,比如unity的框架肯定就没有大量运用JavaScript的异步和prototype chain 特性。


react的例子更好了,新版本里的hooks根本没法子直接套用到其他语言上。换语言API不知道得改多少。API基本全换了还能算同样的框架么?

编程语言本就会影响设计模式,思想。
作者: XI-NIAN    时间: 2019-4-14 19:16

posted by wap, platform: 红米Note3
引用:
原帖由 @masterfish  于 2019-4-14 11:36 发表
https://i.loli.net/2019/04/14/5cb2aa17dedfe.jpg
https://i.loli.net/2019/04/14/5cb2aa56ce0e4.jpg

https://i.loli.net/2019/04/14/5cb2aa9f4ac52.jpg

https://i.loli.net/2019/04/14/5cb2aac305fa4.jpg
牛批,泥潭人怎么都消失了?
作者: cuda    时间: 2019-4-14 21:50

posted by wap, platform: Chrome
引用:
原帖由 @cc0128  于 2019-4-14 19:04 发表
unity实际上只完整支持c#。
JavaScript是unity自制的unity script
python支持更是shit一样。
当然对于一个游戏引擎来说,支持任何语言问题都不大。
问题还是在于框架有没有利用语言的特有特性,比如unity的框架肯定就没有大量运用JavaScript的异步和prototype chain 特性。


react的例子更好了,新版本里的hooks根本没法子直接套用到其他语言上。换语言API不知道得改多少。API基本全换了还能算同样的框架么?

编程语言本就会影响设计模式,思想。
Unity里你想写点什么都要用到Coroutine,全都是异步
这个和JavsScript里的co或者redux-saga的实现是一模一样的

react里的hooks是特别纯的语法糖
你写了就知道,有时候因为要用state必须要把函数型组件改成class型组件
要写很多句,新的这个不用改了,还是换汤不换药的东西

Scala都能在JVM和JavaScript上跑,真的有哪个功能是某个语言独占的么?
作者: cc0128    时间: 2019-4-14 22:36

posted by wap, platform: iPhone
引用:
原帖由 @cuda  于 2019-4-14 21:50 发表
Unity里你想写点什么都要用到Coroutine,全都是异步
这个和JavsScript里的co或者reduxsaga的实现是一模一样的

react里的hooks是特别纯的语法糖
你写了就知道,有时候因为要用state必须要把函数型组件改成class型组件
要写很多句,新的这个不用改了,还是换汤不换药的东西

Scala都能在JVM和JavaScript上跑,真的有哪个功能是某个语言独占的么?
好吧,既然一样,我能在unity里用redux saga么?

hooks和class内部实现完全不一样。。。。

编程语言本身基本上没有什么功能是独占的,你怎么样都能hack去玩。
但是你会去用JavaScript玩多线程么?
但是你会用Java去玩指针么?
但是你会用haskell去玩oop么?

来一个类比,
等于是你通过学阿拉伯语,看阿拉伯语版日本动漫/影视来了解日本文化。这是绝对可行的。也是有病的
作者: cc0128    时间: 2019-4-14 22:44

posted by wap, platform: iPhone
引用:
原帖由 @XI-NIAN  于 2019-4-14 19:16 发表
牛批,泥潭人怎么都消失了?
内容实在太无脑怎么评价。
说编译器能提高开发效率。
等于说高速打印机能提高作者码字速度。
作者: cuda    时间: 2019-4-14 23:21

posted by wap, platform: Android
引用:
原帖由 @cc0128  于 2019-4-14 22:36 发表
好吧,既然一样,我能在unity里用redux saga么?

hooks和class内部实现完全不一样。。。。

编程语言本身基本上没有什么功能是独占的,你怎么样都能hack去玩。
但是你会去用JavaScript玩多线程么?
但是你会用Java去玩指针么?
但是你会用haskell去玩oop么?

来一个类比,
等于是你通过学阿拉伯语,看阿拉伯语版日本动漫/影视来了解日本文化。这是绝对可行的。也是有病的
hooks是框架提供给你的功能
而不是语言提供给框架的功能

它的底层只需要闭包就能实现
不管这个闭包是原型链提供的 还是匿名内部类提供的
你都能搞出来这个功能


在我心里 语言由两个角度分类
动态和静态 oop和fp
对于后者来说java和scala, C#和F#都是共用平台的
据我对scala浅薄的理解,底层都是靠满地的implicit来实现的
对于前者来说绝大多数概念都是有对应的
比如原型链能模拟类
我是真的没见过有哪些功能那么特别
作者: fatehe    时间: 2019-4-14 23:37

Posted by: HUAWEI HMA-AL00
我把我爸的Mate10升级了体验版,应该是方舟,升级了很久,启动之后,麒麟970竟然不卡了,以前看APP拖动会卡的。相册里一千多张照片,拖动和视频里一样,飞一样,瞬间显示。
作者: 流浪的枪骑兵    时间: 2019-4-15 09:40

知乎上看到一个最合乎逻辑的分析,现在源码看不到,只有那个“加载图片非常快”的视频。
从逻辑上讲,如果真的如这个分析所说,本质上是runtime重写的话,确实能完成那个视频的效果。
还是我以前说过的,凡事皆有代价。为什么华为“加载图片非常快“而google却没做到,难道是google比华为技术差吗?必然不是。华为一定在技术选型时付出了一些代价,而这些代价是否值得,在看到源码之前无从判断。

=====================================================
私下得到的消息,这事其实和编译器真没多大关系,实际是华为自己写了一套runtime,用方舟(其实不应该叫编译器,应该是一整套toolchain了,类似xcode)编译之后,不是安卓打包格式了,就是binary,然后链接华为自己的runtime这就很容易解释为啥S10和P30p在图片那里差距这么大了,安卓本身的图片view的策略就是少缓存,华为修改之后的就和ios一样提前都缓存好,那自然吊打了所以华为把toolchain都开源了其实也没啥,反正runtime在我自己这里,你拿到toolchain也只能给华为手机开发,除非你自己写一套runtime。如果你有这个实力自己开发一套runtime(其实主要是敢不敢),自己搞一套toolchain也很轻松反正现在开源的东西一大堆。不过呢,这已经是摆明了在分裂安卓了,看google的态度吧。如果google忍了,可能华为再过渡个几年换自己的os。如果google直接翻脸,我觉得华为的算盘可能是打官司怎么也能拖个两年,只要暂时不在海外禁售,争取在这之前换到自己的os,就彻底和安卓还有google拜拜了

作者:张铎
链接:https://www.zhihu.com/question/319688949/answer/648628733
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
作者: cc0128    时间: 2019-4-15 14:12

posted by wap, platform: MAC OS X
引用:
原帖由 @cuda  于 2019-4-14 23:21 发表
hooks是框架提供给你的功能
而不是语言提供给框架的功能

它的底层只需要闭包就能实现
不管这个闭包是原型链提供的 还是匿名内部类提供的
你都能搞出来这个功能


在我心里 语言由两个角度分类
动态和静态 oop和fp
对于后者来说java和scala, C#和F#都是共用平台的
据我对scala浅薄的理解,底层都是靠满地的implicit来实现的
对于前者来说绝大多数概念都是有对应的
比如原型链能模拟类
我是真的没见过有哪些功能那么特别
当然最后都能实现。
我拿拼音标英文发音一样凑合能用。
期待你用java写react app放在ios上跑。

本帖最后由 cc0128 于 2019-4-15 14:22 通过手机版编辑
作者: catxing    时间: 2019-4-15 14:29

posted by wap, platform: Chrome
引用:
原帖由 @XI-NIAN  于 2019-4-14 19:16 发表
牛批,泥潭人怎么都消失了?
因为@nai等一批泥潭用户前排晾完屁股,各个手机牌子死忠粉再死妈一番,这么偏后又技术向的发言谁会看啊
作者: mting    时间: 2019-4-15 15:38

引用:
原帖由 masterfish 于 2019-4-14 11:36 发表





这么弄他完全绕开 runtime app安全性怎么保证?
这样又回到牛虻软件可以为所欲为的 情况了吧




欢迎光临 TGFC Lifestyle (http://bbs.tgfcer.com/) Powered by Discuz! 6.0.0