x****u 发帖数: 44466 | 1 clang/llvm主要是在架构上领先各种开源闭源的对手. |
|
d****n 发帖数: 1241 | 2 新东西,没有太多冗余在里边。
GCC发展了这么多年,有不少东西都在一定程度上阻碍了他的发展,
比如说,GCC支持的后端比LLVM多,前端还有gfortran一样的东西,
支持的东西多了,塞进代码里的包袱也就多。。。整体改动起来也
就更难了 |
|
n****1 发帖数: 1136 | 3 Seriously? Haskell on client side, you got to be kidding me.
And since when did embedding haskell into C become a good idea?
Technically, Haskell has Clang/LLVM backend. |
|
n****1 发帖数: 1136 | 4 我是用chromebook的, 里面的chrome app即使是用了native client, 安装也和普通
chrome web app安装过程没区别. 因为chrome是自带这个libc runtime的.
而且这个libc runtime是跨平台的, 因为是llvm技术, 可以一次编译到处运行, 包括
windows/mac/linux |
|
d****n 发帖数: 1241 | 5 * 首先,struct的大小依赖于两个因素,一是field的大小,二是field的alignment,
这两个都是由ABI决定的,比如在64位的机器上,如果编译器选择遵守gcc/llvm所支持
的x86_64 ABI标准,那么double是8byte对齐,如果在32位的机器上,linux下gcc支持
的x86 abi是4byte对齐. 大小的话,double类型都是8 bytes. 在缺省情况下,如果某
个field不符合对齐标准,那么编译器会插入padding bytes,让这个field符合对齐的
标准。比如:
struct S {
char f1; // size是1,对齐是1
int f2; // size是4,对齐也是4
};
sizeof(struct S)是8,因为编译器会在f1后,加入3个padding bytes, 让f2符合对齐
的规范。
* 如果在定义struct的时候,添加了类似packed的attribute, 那么编译器会忽略对齐
的要求。
* auto跟动态类型没有关系,在你的例子里,pointer类型是编译器在静态的时候,根
据一定的类型推导规... 阅读全帖 |
|
|
S*A 发帖数: 7142 | 7 如果有速度区别那个是很弱的编译器了。
在 LLVM 里面指针和数组的内部表示是一样的。
你做这样的编译测试还要加上 -O2 之类的。 |
|
S*A 发帖数: 7142 | 8 Lex 还行,但是Lex 很简单,自己手写也没有多少。
YACC 做编译器有很多限制,最大的问题是出错的恢复。
例如编程少打个‘;’, 然后编译器就彻底晕菜了。
很不容易跳过这个缺少的‘;’从下一句开始继续编译。
关键在于那个状态转换图是机器自动生成的,里面的过程
人是不参与的,恢复到上个可以继续的状态必须要手工
干预。这个状态图没有直观理解。这就是为什么老的 gcc
有时给出特别莫名其妙的错误信息。
LLVM 就完全没有用 YACC, gcc 以前用 YACC, 后来
也改用手动写了。
Perl 是用 YACC 的,当年我还仔细看过,得出的结论是
那个 YACC 完全是摆设。Perl 的隐含规则特别多,在不同
的 scope 里面可以干不同的事情。Perl 的YACC 里面最关键
的部分是对这些编译状态的维护,这些完全是在 YACC 以外
的。等到喂给 YACC 的时候已经完全确定下面可以发生什么。
YACC 就是走个过场而已,让你觉得 Perl 还有个语法树,其
实是没有的。这也是为什么只有 Perl 可以完全解释 Perl 的
语法。
YACC 基本上除了玩具编译项目不太值得严肃... 阅读全帖 |
|
S*A 发帖数: 7142 | 9
问题是现实中很多语言不是严格 LR(k) 的。如果有不是 LR(K)的扩展就
郁闷了
这个不一定,自动生成的都是间接跳转,这个在 Intel 体系上面会 flush
instruction pipeline。直接写的多数是直接调用,不会 flush instruction
pipeline。 YACC 真的是那末好用 gcc 和 LLVM 的人都是傻子不用?
特别是 gcc 还要放弃 YACC 从新写。人家是非常不情愿但是又是在没办法
了。 |
|
k**********g 发帖数: 989 | 10
C can be compiled to LLVM bytecode and then to Javascript via emscripten. |
|
k**********g 发帖数: 989 | 11
不能预计是什麽语言,但它的後端编译器很可能(仍)是 LLVM |
|
|
|
S*A 发帖数: 7142 | 14 对,CMake 是最接近可以解决这个问题的。
例如 llvm 也用 CMake。
但是很多 project 不是用 CMake 的。
你看看有多少开发 iphone, VS 的程序员用 CMake 来生成
proj 文件?
CMake 有自己的限制,基本上出了 CMake 自己的预先支持的
框架,东西就变很 messy 了。在 CMake 预先支持的框架里
还比较干净。
eclipse |
|
k**********g 发帖数: 989 | 15
在「运算业」(computation),凡功能固定,代码稳定,界面不变的运算功能,都可
用C/C++ 实现,再用高阶语言封装。(除非是要实现新的演算法。)因此,即使是在
「运算业」,也只会在必要时才会用C/C++ 。最新趋势是用数阵语言开发新的演算法
,用低阶代码产生器生成C/LLVM IR 。
现在连手机影像处理都用这种模式。 |
|
|
s****a 发帖数: 238 | 17 现在学llvm钱途怎么样,这东西还是很有意思的 |
|
|
w***g 发帖数: 5958 | 19 搞个modern的jvm backend,让我们搞C++的爽爽。
至于编译器,其实啥语言都能做。稍微有点志气的语言都兴的是bootstrap,用这种语
言本身实现这种语言的编译器。这样一遍下来语言和编译器都没太大bug了。 |
|
|
|
z****e 发帖数: 54598 | 22 用swift写server吧
人家dart已经有server side的东西了
node.js麻烦大了
v8祖师爷有自己的语言,node.js还需要去寄生在v8上面 |
|
|
g****t 发帖数: 31659 | 24 llvm是通用一个机器模型还是可以自己定义模型?
例如我的芯片现在是买的instruction set,也能优化吗?
另外我做描述的这些事,哪种语言或者IDE方便些呢? |
|
g****t 发帖数: 31659 | 25 我去看看llvm,thanks for the information.
(1)
小芯片很多都不是标准C。我们是特制的。
标准c为基础的芯片我预测会今后在美国很
难生存不下去。因为人人都会,利润很少。另外标准c在很多场合over kill太多了。
我关注的主要是代码的robustness with respect to different future C
compilers and hardware changes。这方面如果出事故,赔个几十M都有可能。
所以需求是有的。
之类的书里面有详细讲这些隐含在C的不同compiler实现的坑。
但感觉指望人力避坑不是个好办法。而且现在c写得好的人越来越少。
(2)
因为速度和鲁棒性通常是duality,所以我觉得CS的人肯定已经有了compiler
middleware做速度。所以想看看是不是可以借鉴下。 |
|
p***o 发帖数: 1252 | 26 定制的东西可以很鲁棒也可以很不鲁棒,关键是看做芯片的公司养不养得起做
编译器的队伍。你怕赔几十M,可是你一年愿意出多少钱呢?最终的结果要么
是编译器bug越来越多,要么是前端用开源的东西比如llvm来节省人力成本。 |
|
g****t 发帖数: 31659 | 27 我还以为是成名已久的大牛呢
太impressive了。 |
|
|
|
|
|
l***z 发帖数: 61 | 32 可以试试numba库,给函数加上@jit,把python自动编译成llvm,性能应该会提高不少。 |
|
D***n 发帖数: 6804 | 33 有啥搞笑的,经常发生的事情。
搞过的人都这么干过。生找10-20分钟,弄个简单脚本改进一下不超过1分钟。
用LLVM前端可以精确找。 |
|
g****t 发帖数: 31659 | 34 这个swift除了降低门槛之外。还有很多很牛x的非常新的特点。
generic programming, functional programming等等。
还有一些特点看上去照样可以让全局变量满天飞。
再加上llvm实际上是把swift翻译成object c。
我真不知道说什么好了。我感觉新特性有点过于多了。 |
|
m***r 发帖数: 359 | 35 日报主页
http://py.memect.com/
2015-01-24 星期六,完整版 20 条
Uliweb现在支持IPython notebook @limodou
Vim的Python编辑器详细配置过程 @视觉研究
入门:学习Python循环 @ML_Yuens
另一个Lambda表达式教程 @Python开发者
scikit-learn系列视频免翻墙版 @爱可可-爱生活
2015-01-23 星期五,完整版 36 条
Dpark源码剖析 @sumnous_t
使用Selenium Python API与元素交互 @python自动化测试
Python 在 Linux 系统运维中都有哪些应用? @fiona514
Medusa: 基于Google Dart虚拟机的超快Python实现版本 @网路冷眼
python编程速查表 @爱可可-爱生活
2015-01-22 星期四,完整版 17 条
专为Python打造LLVM @HackerNewsDaily
Python 3.4 中新的 asyncio @me坤子
地图上模拟疫情扩散 @Python开发者
Python可视化工具概述... 阅读全帖 |
|
a*****e 发帖数: 1700 | 36 你知道 SSA 吗?LLVM 编译 C/C++ 到 SSA form,里面的变量都是 immutable 的,只
有 heap 和 stack 是 mutable 的,完全不妨碍实现任何功能。
所以你说这些,用 mutable heap object 在 FP 里面都直接做,难度在哪里? |
|
m***r 发帖数: 359 | 37 http://py.memect.com/weekly/2015-02-28/
## 2015-02-28 星期六,完整版 12 条
多变量线性回归做房价预测的Python实例 @爱可可-爱生活
IPython 3.0版发布 @网路冷眼
Python下层次化聚类热图制作教程 @爱可可-爱生活
好用的Python机器学习库 @cvnote计算机视觉笔记
Pyston 0.3 发布,基于LLVM的Python JIT解释器 @好东西传送门
## 2015-02-27 星期五,完整版 10 条
Python下用MonkeyLearn API分析Twitter数据 @爱可可-爱生活
如何阅读程序代码(以wtfroms为例) @Linuxeden开源社区
scipy的数据处理工具Pandas @尹绪森
10款最受Python开发者欢迎的Python IDE @WEB开发家园
基于Python的行为驱动开发实战 @CSDN研发频道
## 2015-02-26 星期四,完整版 9 条
Python强化学习库 @爱可可-爱生活
用Python讲解算法和数据结构 @网路冷眼
iOS程序员如何使用pyth... 阅读全帖 |
|
m*********t 发帖数: 527 | 38 这帖子偏的。。前面就不说了。从 c++ physics engine 和 java 3d 游戏
performance 扯到赚不赚钱。
就事论事,physics engine 只是 3D 游戏的核心部分之一,一般来说都用 C/C++ 来写
。因为里面不管是粒子系统,软物体(有限元),流体,动力学,全都涉及到大量的矩
阵运算(而且一般还是 sparse 的)以及相关优化问题。这些矩阵运算不仅仅是做个加
法乘法的事情。比如 linear/nonlinear complementarity problem. 而且这种运算一般
都要求 real time。
在这上面你想要怎么 call opengl 渲染爱用啥用啥,js 也好 java 也好。。。然后大
型游戏你服务器那边底层构架 code 爱用啥用啥。。。
另外,ASM.js 其实本来就不是让人自己来读的。emscripten 编译出来的接近 llvm
byte code 一样。。还记得昨天 google 主页的 pony express 游戏吧,你可以看看那
段 js 代码,就是 emscripten 搞出来的。 |
|
|
z****e 发帖数: 54598 | 40 其它语言嘛,尤其是脚本,基本上不适合用来搞app
c类语言太底层,写起来太慢,而且ide支持也弱
java能搞定android和server,能够复用代码
但是搞不定ios,swift能搞定ios,但是一旦涉及网络啥的
就显得蛋疼,更谈不上server side了,但是如果swift能搞定android的话
那就太好了,不过还是搞不定server,其实本质上就是llvm和jvm两个虚拟机
用这个还是用那个的区别,swift和java其实差别很小
apple和google好好商量一下,这两个自己再搞一个语言出来
能够兼容cloud,android和ios平台,这事基本就定了
app主要考虑单线程,gui,java最弱的就是gui,android和java差异就是gui
server主要考虑多线程,网络,跨平台,数据存储,java这几点做得尤其powerful
其实google和apple只要联手,两个凑一起,搞一个新兴语言出来
一点问题都没有,根本不是啥难事,这些features都写在这里了
就是一层窗户纸,一捅就破,话说写swift真的是好开心啊
一天不写,我就浑身难受 |
|
g*********e 发帖数: 14401 | 41 flex bison llvm
如果可以用轮子的话 |
|
z****e 发帖数: 54598 | 42
html, css就是viewer的部分
js做controller
model就是data
这一套不要说脚本了,就是swift完全按照这个写
都有些吃力,我在ios上已经放弃mvc了
效率太低
units一多,马上拖慢效率,lag很厉害
还有就是我发现llvm不行
效率明显不行,我用一个n^2复杂度的计算
当n->100的时候,在33ms以内就无法完成一个循环
导致fps下降得厉害,不得不优化算法
android上jvm强太多 |
|
h*i 发帖数: 3446 | 43 和Clojure的实现方法类似,就是直接编译成虚拟机的byte code。 不过pixie的虚拟机
是自己实现的,用RPython写的,GC,JIT啥的都从这儿来。Async IO用的node的libuv
,C interop利用boost。挺clever的。
速度不知道,现在micro benchmark和LLVM byte code和Java差不多快,对一个GC,
dynamic typed, immutable data的语言来说,这是很可观了。以后优化了肯定可以更
快,C的2x以内不是不可能的吧。 |
|
l*****z 发帖数: 3022 | 44 果家自己是用clang+llvm 不用gcc 或 g++ |
|
d********g 发帖数: 10550 | 45 GNU不是啥行业标准,Linux才是BSD的小弟,Clang/LLVM相比GCC是长江后浪推前浪。
GCC爱怎么玩是它自己的事,就好像MS、Intel的编译器也一直夹带私货 |
|
l*****z 发帖数: 3022 | 46 果家自己是用clang+llvm 不用gcc 或 g++ |
|
d********g 发帖数: 10550 | 47 GNU不是啥行业标准,Linux才是BSD的小弟,Clang/LLVM相比GCC是长江后浪推前浪。
GCC爱怎么玩是它自己的事,就好像MS、Intel的编译器也一直夹带私货 |
|
z****e 发帖数: 54598 | 48 Python 2.7.10 (default, Aug 22 2015, 20:33:39)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> |
|
d******e 发帖数: 2265 | 49 gcc就是性能差的源头吧。换llvm swift优化10年应该可以秒杀C++, java. |
|
l*****z 发帖数: 3022 | 50 胡扯
Mac上native有Emacs,vim,gcc llvm 整套,瘟上除了软软的一套还有啥? |
|