[翻译]反射的规则

第一次知道反射的时候还是许多年前在学校里玩 C# 的时候。那时总是弄不清楚这个复杂的玩意能有什么实际用途……然后发现 Java 有这个,后来发现 PHP 也有了,再后来 Objective-C、Python 什么的也都有……甚至连 Delphi 也有 TRttiContext……反射无处不在!!! Go 作为一个集大成的现代系统级语言,当然也需要有,必须的! 大牛 Rob Pike 的这篇文章相对全面的介绍了 Go 语言中的反射的机制已经使用。觉得值得研读,于是翻译于此。 ———-翻译分割线———- 反射的规则 在运行时反射是程序检查其所拥有的结构,尤其是类型的一种能力;这是元编程的一种形式。它同时也是造成混淆的重要来源。 在这篇文章中将试图明确解释在 Go 中的反射是如何工作的。每个语言的反射模型都不同(同时许多语言根本不支持反射)。不过这篇文章是关于 Go 的,因此接下来的内容“反射”这一词表示“在 Go 中的反射”。

《学习Go语言》0.4 中文版

鱼哥(https://twitter.com/#!/smallfishxy)上个月勒令我要完成 0.4 版的翻译。之前公司重组的时候,没顾上看英文版本的更新,结果这老外不声不响的做了如此之多的改动…… 于是只好人工 diff,一条一条的对比 commit 内容。 总算是跟进到了 0.4 这个 tag。 发布一个可看的中文版吧:http://www.mikespook.com/learning-go/ (20110904) 未校对,未调整,未优化。你们懂的!

[翻译]错误处理和Go

Golang 错误处理的 Panic – Recover 模型确实不太一样,Go 团队的博客上写了一篇相对完整的介绍这个模型使用的文章“Error handling and Go”。我觉得挺好,故翻译于此。本应早就完成这个翻译了,不过由于公司重组等等原因,一直留了首尾没能处理完整。所以拖到了今天,真是不应该啊! ————————翻译分割线————————– 错误处理和Go 如果你已经编写过 Go 代码,可能已经遇到过 os.Error 类型了。Go 代码使用 os.Error 值来标示异常状态。例如,当 os.Open 函数打开文件失败时,返回一个非 nil 的 os.Error 值。 下面的函数使用 os.Open 打开一个文件。如果产生了错误,它会调用 log.Fatal 打印错误信息并且中断运行。

[翻译]Go编程语言,或者:为什么除了它,其他类C语言都是垃圾(3)

继续前文的翻译。更进一步的对 Go 进行了介绍。一个德国人,用英文写了如此的长篇大论,这是一种什么样的国际主义精神…… ———————–翻译分割线———————– Go编程语言,或者:为什么除了它,其他类C语言都是垃圾 [翻译]Go编程语言,或者:为什么除了它,其他类C语言都是垃圾(1) [翻译]Go编程语言,或者:为什么除了它,其他类C语言都是垃圾(2) 扩展 Go 真正强大的在于到现在为止,那些无法在 C、C++或者其他上面提到的任何语言中找到对应的地方。这些才是真正让 Go 光彩夺目的:

[翻译]Go编程语言,或者:为什么除了它,其他类C语言都是垃圾(2)

继续昨天的:[翻译]Go编程语言,或者:为什么除了它,其他类C语言都是垃圾(1)。 总算切入正题,开始说 Go 了。 ———————–翻译分割线———————– Go编程语言,或者:为什么除了它,其他类C语言都是垃圾 (译注:续[翻译]Go编程语言,或者:为什么除了它,其他类C语言都是垃圾(1)) 进入 Go 的世界

[翻译]Go编程语言,或者:为什么除了它,其他类C语言都是垃圾(1)

原文在这里:http://www.syntax-k.de/projekte/go-review。作者是 Jörg Walter,是个德国人。 根据 Rob Pike 在推上的说法,文章有一些错误,但看起来值得阅读。 “Why all C-like languages except one suck”: http://www.syntax-k.de/projekte/go-review Some errors in there but a positive response.

【翻译】Go 在 Heroku

最近看到许多朋友都在问类似的问题:Go 能做什么?Go 有实际应用吗?敢不敢在实际项目中使用 Go 呢…… 正好,golang 的博客刊登了 Heroku 的两个系统工程师关于 Go 语言在他们的分布式系统中的应用的文章。 大家还记得 Doozer 吗?对,我之前有过翻译高速数据同步服务器——Doozer。貌似就是这群优秀的工程师搞出来的杰作。他们作为 go 语言应用的先行者,的确值得我们关注他们的工作,学习他们的经验,并向这群优秀的工程师致敬! 原文在此:http://blog.golang.org/2011/04/go-at-heroku.html ——————————-用于致敬的翻译分割线——————————- 本周的博客内容是由 Heroku 的系统工程师 Keith Rarick 和 Blake Mizerany 撰写的。用他们自己的话说,他们“吃、喝、睡在分布式系统上”。这里讨论了一些他们应用 Go 的经验。 构建分布式系统的一个巨大的问题是物理服务器之间的协作。每个服务器需要知道关于系统整体上的各种情况。这些关键数据包括锁、配置数据等等,而即便是在数据存储异常的情况下,这些也必须是一致并且可用的。因此,需要一个有着绝对一致保障的数据存储。对于这个问题的解决方案是 Doozer,一个用 Go 编写的、新的、一致性的、高可用的数据存储。

【翻译】gofix 介绍

对于一个不稳定的语言,删删改改什么的都是常事。即便是稳定的语言,也逃不过隔三差五整修一下的命运。于是 Golang 大修是个麻烦。 用 Golang 的好处是你正在使用世界上最聪明的一群科学家和工程师的杰作。于是,升级这些麻烦事变得不那么麻烦了,因为有了 gofix。 原文在此:http://blog.golang.org/2011/04/introducing-gofix.html ——————————-翻译分割线——————————- gofix介绍 下一个 Go 的发布版将会包含多个官方 Go 包 API 的重大变化。实现 HTTP 服务器处理、调用 net.Dial、调用 os.Open,或者使用反射的代码如果不使用新的 API 升级,将无法编译。现在的发布已经相当稳定并且不那么频繁了,这将会成为一个常态。每次的 API 变化发生在每周的快照版本之间,并且可控;总之,无论如何,这带来了大量需要手工更新的已有代码。

Learning Go 中文版本《学习Go语言》

是的,你没看错,这就是 Learning Go 的中文版本。在我踌躇许久之后,终于决定将这个坑挖下去了。 项目页面在这里:《学习Go 语言》 现在的翻译进度大约10%,也就是完成了第一章和部分第二章内容。 我对 LaTeX 知之甚少,所以排版还没时间去调整。 第一阶段目标是同步翻译英文版本,并跟进英文版本的后续修改。 第二阶段目标待 Go 语言相对稳定后,根据中文表达习惯重新调整内容和表达方式。 大体如此吧……

[翻译]飞翔的 gob

这个题目的原文叫做《Gobs on the wire》,作者巧妙的用了“gob”这个词。gob本来是Golang的一个关于网络通信协议的包。而在这里,我感觉标题也可以翻译为《关于线上的那一大陀……》。好吧,我得承认,这么翻译实在不雅。 ————翻译分割线———— 飞翔的 gob 这周,我想跟大家谈谈如何用 Go 编写基于同步请求和异步事件通知的 Client/Server 系统。 为了帮助学习 Go,我克隆了一个Conserver 命令行服务。当然,现在对于世界来说没必要有另外一个命令行服务。然而由于Go语言带给开发者的特性,非常适合用来做命令行服务,所以这将会是一次非常有趣的体验。命令行服务的任务是从一个或者多个串口上汇总输出(或者说各种系统上的一个或者多个实现了使用TCP连接的Rtelnet协议的终端服务)。 它将输出记录到文件,同时让输出可以被别人实时的看到。它仅允许唯一一个用户进行读写,用于实际控制设备。