第 0 章已经被删除了,如果需要的话请参考《WebAssembly 标准入门》: https://github.com/chai2010/awesome-wasm-zh/blob/master/webassembly-primer.md
感谢大家的支持。准备抽奖送 3 本图书。
需要有 github 账号,然后到抽奖链接的 issue 回复,给出自己的幸运号即可。 截止时间暂定为 12.31 号。
另外,我们针对 C/C++ 用户提供了一个开源的教程《C/C++ 面向 WebAssembly 编程》: https://github.com/3dgen/cppwasm-book
欢迎关注
70000 行是哪里来的 -__-
- include 的问题可以用 stdafx/pch 解决,现在很多 C++ 编译器已经优化过 include 了,还拿好多年前的状况来说事...
- 与其说 Go 减少 pkg 的依赖,不如说 Go 的 pkg 比 C++ 少太多,当引入的 pkg 达到相同数量级的时候问题还是会出现。
- C++ 在未定义的处理上更人性化,打开 -Werror=unused 同样可以禁止定义未使用变量 (不止是变量,还有很细粒度的控制). 最终集成 build 打开就可以,开发时那种限制就是恶心人。C++ 编译速度和链接速度是可以自己做主的,如果想忽略掉链接期优化,关闭编译器开关即可,链接就快多了。但是 Go 的设计决定就把需要链接期优化的人都一竿子打死了。
- C++ parser 的二义问题都已经解决了。Go 的语法哪里便于优化?
70000+ 是 VC2010 的结果,VC2012 已经是 80000+ 了:
cat helloworld.cc #include
int main() { std::cout << "Hello, World!" << std::endl; return 0; }
cl /E helloworld.cc >helloworld-cc.txt 用于 x86 的 Microsoft (R) C/C++ 优化编译器 17.00.60610.1 版版权所有 (C) Microsoft Corporation。保留所有权利。
helloworld.cc
wc -l helloworld-cc.txt 84316 helloworld-cc.txt
stdafx/pch
已经说明了 include
的问题,只是在补救而已。再说如果代码在不同模块之间,你愿意每个源文件被 stdafx/pch
fuck 一次吗?go 比 c 慢 10 倍的场景并不少见,比如二叉树测试:
你知道这个测试为什么 Go 比 C 慢 10 倍吗?你看过 2 个语言的测试代码没有? 我是看过的。C 语言是基于 apr 的 pool 实现,而已还开启了 openmp 优化 (这是标准 C 语言吗?). Go 语言是基于 GC(不可否认 Go 语言的 GC 性能确实还有优化的余地), 如果也改用 pool 实现 Go 的测试就和 C 持平 (17 和 15 的差异).
各种实现的对比在: http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=binarytrees
Pool 的实现代码在: http://benchmarksgame.alioth.debian.org/u64q/program.php?test=binarytrees&lang=go&id=6
这个测试的性能很不公平,因为 C 使用了 apr_pool 和 openmp. 那如果用 Go 写个汇编或 opencl 的版本是不是也可以呢?
#6 楼 @gaicitadie 不要混淆编程语言和网络服务的概念。使用 Go 语言又不需要 Google 的服务器支持. 代码就在那里,难道 Google 关闭 golang.org 网站就会导致语言消失吗?
楼主这样想,只能说明楼主根本不了解 Go 语言的背景. 在 2009 年 Go 语言刚刚发布时,确实吸引了很多不明真相的用户和很多脑残记者,并且还获得 TIOBE 的年度语言,排名最高 13 名。
在 2009 年,除了因为 Google 而关注 Go 语言的用户外,还有很多是因为 Ken Thompson/Dennis M. Ritchie/Rob Pike 而关注 Go 语言. 因为 UNIX 文化而关注 Go 语言的人不在少数,而且觉得不是光靠 Google 光环就能忽悠得了的, 我想因为 UNIX 而关于 Go 语言的人很多已经在使用了。
Go 语言的哲学和 C 语言一样 (和 UNIX/C 是一脉相承的), 都是短小精悍. 这类语言并不是要像Java/C#那种要庞大团队支撑的. Rob Pike 他们的 Bell 小组就足够了。
而且,Go 本身确实是在尽量回避 Google 的光环。golang.org 没有 Google 的字样. Go 语言完全是 BSD 的协议,即使 Google 完全开除了 Go 的开发团队了, 难道 Ken Thompson/Rob Pike 他们还会真的失业吗?
PS:
C 语言之父 Dennis M. Ritchie 也是 Limbo 的粉丝,具体看他写的 Limbo 语言规范: http://doc.cat-v.org/inferno/4th_edition/limbo_language/limbo
Limbo 是语言的亲爹,但是 Go 的并发背景却是有久远的历史的. 最早从 UNIX 的管道 (其实在 UNIX 之前就有类似的思想), 到 CSP 的理论, 到 Newsqueak(Rob Pike 1989), 到 Alef(Phil Winterbottom 1993), 然后就是 Limbo 和 Go. 其中,只有 Alef 和 Go 是 C-like 的,但是 Alef 只有 Plan9 短暂支持. 我觉得 Go 语言是这类语言的真正回归 (我比较喜欢 Go 中和 Alef 类似的并发思路).