[翻译]在 Go 应用中使用简明架构(5)

原文在此,续前…… ——–翻译分隔线——– 在 Go 应用中使用简明架构(5) 基础层 就像上面提到的,我们的存储认为“数据库”是一个可以用 SQL 请求发送或接收数据行的抽象。它们不关心基础构建的问题,例如链接到数据库,或使用哪个数据库。这是在 src/infrastructure/sqlitehandler.go 中完成的,高层次的 DbHandler 接口是通过调用低层次的功能来实现的:

[翻译]我其实没办法学 Erlang,因为它不存在,所以我发明了它

这是 Joe Armstrong,Erlang 之父在昨天(2013-01-24)发表在 Erlang 邮件列表里的内容。详细解说了他自己从开始学习编码到发明 Erlang 的整个历史。并且,对如何学习编程;如何成为大牛等一系列热门问题提出了自己的看法。当然,文中槽点无数(包括坚定不移的黑我大PHP)。这也是我觉得有必要翻译出来的原因之一。 由于是发在邮件列表的,所以原文是没有正式的标题的。我从 HN 上抄了这个标题回来。 整体上,虽然是和 Erlang 相关的话题。但是读过之后,会突然领会到 Golang Team 一直以来坚持的一些东西的更深层次的含义。 ————翻译分隔线———— 回到过去…… 当我开始学习编程的时候(1967),我可以在 FORTRAN 和(传说中的)Algol 之间选择,不过没有任何人了解 Algol,所以我选择了 FORTRAN。 编程的一个周期是三个星期 第一周 在纸上的表格里编写代码,然后送到计算机中心将其转换为打孔卡 第二周 复查打孔卡,如果没问题就放到设备上执行 第三周 得到结果 编译器遇到第一个语法错误的时候会终止运行,这会将你带回第一周——因此,如果在你的程序中有十个错误,它会需要花费 30 周的时间让它运行起来。 这种氛围是非常好的——教会大家不要犯错,并且首先思考。

[翻译]在 Go 应用中使用简明架构(4)

原文在此,续前…… ——–翻译分隔线——– 在 Go 应用中使用简明架构(4) 接口层 关于这点,必须说,所有东西都得有编码智慧,不论是真实的商业还是我们的应用用例。让我们看看对于接口层的代码这意味着什么。不像在各个内部层次中,所有代码都属于一个逻辑,接口层是由若干独立的部分构建而成。因此,我们将这个层次的代码拆分为若干个文件。 由于我们的商店要通过 Web 访问,就从 Web 服务开始吧:

[翻译]在 Go 应用中使用简明架构(2)

原文在此,续前…… ——–翻译分隔线——– 在 Go 应用中使用简明架构(2) 架构实现 首先来实现领域层。之前已经说过,应用和其用例将完全可用,但是这不是一个完整的商城。因此,定义领域的代码应当足够短小,这样正好可以放在一个文件中:

[翻译]在 Go 应用中使用简明架构(1)

原文在此,很长,好文,不解释。不快点翻译,就翻译不完了。 —————-翻译分隔线—————- 在 Go 应用中使用简明架构(1) 关于这篇文章 我想通过展示如何将 Bob 大叔的简明架构使用到 Go 应用,来向这个概念做一些贡献。这里并未对 Bob 大叔的博文进行过多的修改,因此阅读他的文章是理解我的内容的先决条件。 其中,他主要描述了依赖原则,也就是软件的不同部分组织成环的形式一个套一个的应用到架构中。“……也就是说代码的依赖应当是内敛的。内环对外环的一切都一无所知。尤其是那些定义在外环的名字,不应当在内环的代码中出现。包括函数、类、变量或任何命名的软件模型。” 我认为,依赖原则是构建可对框架、UI或数据库进行局部测试并解藕的软件系统的最为重要的条件。当遵循这个条件时,将得到一个有着明确关注分离的低耦合系统。

为什么 PHPer 应当学习 Golang

熟悉我的朋友应当知道,近些年的大部分时间我的工作都会多少和 PHP 相关。随着 PHP 有着越来越深入的了解,以及遇到越来越多的不同业务时,使用 PHP 总会让我有一种莫名的无力感。当然,并不是我一个人在使用 PHP 的时候遇到了问题。事实上,每个略微有一些经验,接触过一些需求的人都会有同样的困惑。各种配合 LAMP(或者LNMP?)架构的后端技术也因此被发明或被发现,进而整合到 PHP 的开发的技术体系中。从简单的 Memcached作为数据中转,cron 后端定时处理;到 Gearman、RabbitMQ 这些队列神器;最近 Laruence 甚至封装了利用 libcurl 的异步特性实现并发 RPC 调用的 yar 扩展。几乎整个社区都在寻找 PHP 的摩西之路。 好吧,说了一大堆,回归主题。之前我写了一篇英文练笔《Why you PHP guys should learn Golang》,获得不少国际友人的关注。排除拼写和语法被他们诟病外,主要是有许多朋友觉得我没把事情说清楚。所以这里我用母语重新聊聊这个事情,只是这些国际友人什么时候能学会阅读中文呢?;) Go 或者 Golang,是由 Google 支持的快速、一致、稳定的,有活跃的社区支持的开源编程语言。越来越多的应用选择使用 Golang 进行构建。虽然 Rob Pike 说“… 我们希望 C++ 程序员来了解 Go 并作为一个可选的语言 …”,不过我真得认为:PHPer 应当学习 Golang! 接下来我们就来谈谈原因。

Why you PHP guys should learn Golang

Go or Golang, is a open source, community supported, fast, consistent, scalable, productive language, and conceived by Google. More and more applications were build with it. Although Rob Pike has said that “… we expected C++ programmers to see Go as an alternative …”, but I really think of that: You PHP guys should learn …

[翻译]无聊的 Golang

这篇文章虽然不长,但是很有趣。看到好几天了,一直都没空翻译。抽空翻译出来,这应当算是英文“标题党”和“高级黑”吧。 原文不好读,也没什么特别的;不过如果是为了强化学习 Golang 的信心,值得看看。 原文在此:http://aeronotix.pl/blog/go-is-boring —————-翻译分隔线—————- 无聊的 Golang Go 没什么新鲜的,也没什么特别的。你在看到 Go 之前都遇到过了。是的,我也是这么认为的。不过你所没见过的是所有这些都集中在一个语言中,产生了一个 TMD 超级有用的核心。

在 Golang 中用名字调用函数

上个星期,我写了篇《Function call by name in Golang》。由于是英文的,所以被人诟病(说谁,谁知道!)。好吧,现在用中文重新写一遍。 Golang 中的函数跟 C 的一样,是个代码块,不过它可以像其他类型那样赋值给一个变量。 如果你对函数不熟悉,《Codewalk: First-Class Functions in Go》应该是个不错的起点。已经有所了解?那么继续吧! 首先,来看看这段 PHP 代码: 它会输出: