大家都这么关心王垠做编程语言,怎么没人关心另一个华人搞的语言ATS呢?性能还堪比C/C++呢

2013-11-13 00:14:48 +08:00
 ShiningRay
主页 http://www.ats-lang.org/

发明人主页 http://www.cs.bu.edu/~hwxi/
9988 次点击
所在节点    程序员
41 条回复
heganj
2013-11-13 17:23:35 +08:00
如果我没记错的话,王垠好像说打算将ylang, yos 和 ydb 融为一体。说实话,我挺期待的 XD
ShiningRay
2013-11-13 17:33:46 +08:00
@heganj squeak no os
momo5269
2013-11-13 17:43:09 +08:00
@hooluupog 这类东西很容易让人联想起joel spolsky和paul graham...
文中有些内容是老生常谈了,以前关注的几个计算机博客(博文聚合类)一年下来最少有四分之一是有同类观点的内容...
yangff
2013-11-13 20:54:48 +08:00
@tabris17 汇编效率不高的。。
txlty
2013-11-13 21:23:25 +08:00
ShiningRay
2013-11-13 21:31:29 +08:00
@txlty 呵呵
tabris17
2013-11-14 09:09:16 +08:00
@yangff 执行效率
yangff
2013-11-14 09:30:27 +08:00
@tabris17 是啊……哪怕是最熟练汇编语言的人,要制造出效率超过现代编译器的汇编码,也几乎是不可能的……
tabris17
2013-11-14 09:56:04 +08:00
@yangff 我们说的前提根本不一致
yangff
2013-11-14 10:43:13 +08:00
@tabris17 不信你用汇编写线段树,我用C++写,我的代码跑得肯定比你快。
tabris17
2013-11-14 12:52:54 +08:00
@yangff 要不你用C++写个helloworld,我用汇编写一个,我保证运行速度比你快
luikore
2013-11-14 14:24:44 +08:00
@yangff 熟练汇编的人不用全部自己写, 只要改改现代编译器的汇编输出就行了...
最简单的一种就是调分支代码块的顺序(人知道哪段代码是常态, 哪段是异常态, 但C++不知道). 而你在C++层面上调的顺序还有可能被编译器的优化改掉.
yangff
2013-11-14 15:30:47 +08:00
@luikore 请使用__builtin_expect,这样编译器能更好的帮你优化,而不是手改汇编码……
为什么都到了2013年,还有人相信手写汇编码的效率会高过编译器生成代码……
yangff
2013-11-14 15:35:34 +08:00
如果是在Windows下用MSVC的话,用 Profile-Guided Optimizations 会更好些……
standin000
2013-11-14 16:01:58 +08:00
@yangff 这位同学没做过底层程序吧,某些时候汇编是必须的。一般来说来说效率最高的语言总是DSL,没有通吃的语言。
yangff
2013-11-14 18:11:25 +08:00
@standin000 ……算了……请允许我做一个悲伤的表情。
standin000
2013-11-14 21:19:48 +08:00
@yangff 晕,那也允许我叹口气吧。DSL啊!
yangff
2013-11-14 21:43:09 +08:00
@hooluupog ……这文章神炸鱼……
ShiningRay
2013-11-14 21:47:25 +08:00
楼上讨论的非常热烈,鼓掌,啪啪啪
luikore
2013-11-15 14:54:01 +08:00
@yangff

手写汇编一个原因是兼容不同的编译器, 例如我想用 AVX2 指令但有些用户硬件支持而编译器不支持, 这时就要用汇编, 或者直接把机器码放到 .text 段中. 又例如写解释器, 但很多编译器不支持 __attribute__((__noinline__,__noclone__)), 其实写个脚本调整汇编输出的顺序就可以了. 很多解释器的核心部分都是简单粗暴的手写汇编, C/C++ 改 flag 的方式太迂回曲折了.

PGO 作用真的很微弱. 很多情况都是只需要优化一两个点, 用 PGO 还要设计把分支跑热的样例, 最后还要检查生成的代码是否真的优化了那里... (其他不是瓶颈的部分, 是否 PGO 我管你啊!).

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/89072

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX