标签 开源 下的文章

TB一周萃选[第1期]

本文是首发于个人微信公众号的文章TB一周萃选[第1期]的归档(归档版增加了很多资料的索引)。

如果有一天,你不再寻找爱情,只是去爱;你不再渴望成功,只是去做;你不再追逐成长,只是去修行;一切才真正开始。 ——纪伯伦

时间飞逝,转眼间已是年终岁尾。祖国北方大地到处银装素裹,一场场充满诗意的白雪下又无处不透露的新的春的生机。

这里也介绍这个个人公众号的一些小变化。从本周开始,我会在一周所读到的或自创的文章中萃选出3-7篇文章,整理编辑,以文章形式推送给大家,类似一个周刊的形式,定名为“TB一周萃选”。口号:努力成为程序员周末生活中不可缺少的一部分

这些文章来自的领域包括:GoDockerKubernetes、区块链、智能硬件、无人驾驶、儿童编程、人工智能、开源活动等。这个“周刊”只是个人在工作之外时间的投入,没有团队,鉴于能力和精力有限,难免有错误,望谅解。

本期是第1期,万事开头难。

一、一周文章精粹

1. Go版密码学入门

密码学即便是在程序员中也属于小众领域。不过Go语言提供了丰富的有关密码的packages(在$GOROOT/src/crypto下面)。这篇文章是密码学入门基础,介绍了密码与密钥、哈希、数字签名、加密与解密等基础概念,并使用golang语言作为例子对这些概念的应用做了详尽的诠释。

原文链接:《Crypto 101: A Brief Tour of Practical Crypto in Golang》

2. 服务端I/O性能大比拼:Node vs. PHP vs. Java vs. Go

程序员这个行业属于“高危”行业,除了生理上收到“职业”特点的折磨外,还时不时会加入到一些“编程语言”的战争中。但这绝对不是这里我向大家推荐这篇文章的初衷,我崇尚:和平相处,不打嘴仗。编程语言领域几十年来都保持着相对活跃的态势,每隔几年甚至每年都会有新的编程语言进入大家视野。Go从诞生以来,受到了大家的极大关注,自然也就会成为被与其他语言比较的对象。这篇文章从I/O性能的角度横向对比了Go、Nodejs、Java和PHP等几门语言,所得到的数据建议大家做个参考而已。不代表原作者的思路就完全没有问题。

原文链接:《Server-side I/O Performance: Node vs. PHP vs. Java vs. Go》

img{512x368}

3. 怼:“从PHP到Go,又回到PHP”

“又来了”!haha。这里不多说了,个人感觉这篇文章的正反观点都值得去仔细体会。PHP是世界最好的语言,Go是新生代的代表之一,求轻虐。

原文链接:《RE: MOVING FROM PHP TO GO AND BACK AGAIN》

4.超炫酷Slide的“机器学习入门”

机器学习对于传统程序员来说还是有较高的学习门槛的,学习各种概念也较为枯燥。不过Google Senior Creative工程师Jason Mayes的这门“机器学习的入门课”至少从Slide的表现来看却很炫酷。

原文链接:《Machine Learning 101》

img{512x368}

二、一周资料分享

1.KubeCon 2017& CloudNativeCon2017 Austin大会Slides

KubeCon 2017&CloudNativeCon 2017大会在Austin隆重举行。这次大会的受关注程度也是历史空前。关于K8s和cncf基金会的最新进展都可以在这次大会上获得。其中不乏像Service Mesh这样的新技术热点。这里分享一下大会的Slides集合,欢迎自行下载阅读和理解。

下载链接:百度盘

三、一周工具推荐

1.Goland

Jetbrain公司的Go IDE工具goland正式release了。Goland凝聚了JetBrain公司在IDE领域的丰富经验,它为Go开发者提供了智能的自动补全、即时检查和快速修复、导航和自动化重构等功能。 正如IntelliJ IDEA为Java开发者提供的体验一样,相信GoLand同样会为Go开发者提供更好的开发体验。

JetBrains员工Andrey Cheptsov 的这篇《使用Goland进行Go开发》可以带你走进goland的世界。

img{512x368}

四、一周图书推荐

1.《Network Programming with Go》

Go语言十分擅长网络编程,但市面上关于Go网络编程的系统性资料非常少。在Go 1.0发布之后不久,一位位于澳大利亚的教师Jan Newmarch就在网上发布了自己的“Network programming with Go” 。若干年后,Jan Newmarch将自己的资料整理后,并结合最新的Go语言变化,出版了《Network Programming with Go》一书。纵观这本书,虽然质量谈不上很高,但内容相对系统全面,其有关Socket-level programming的章节内容很有参考价值。

免费版链接(内容可能不全):http://tumregels.github.io/Network-Programming-with-Go/
图书出版社链接:https://www.apress.com/gp/book/9781484226919

img{512x368}


我的联系方式:

微博:http://weibo.com/bigwhite20xx
微信公众号:iamtonybai
博客:tonybai.com
github: https://github.com/bigwhite

微信赞赏:
img{512x368}

商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。

Go语言:成长的十年

Go语言之父,Google大神Rob Pike代表Go语言的另外两位缔造者Robert GriesemerKen Thompson在自己的博客上发表了一篇名为《Go: Ten years and climbing》的文章,用以纪念Go语言从最初的设计idea起到目前的十年发展。笔者读完后,也是深有感触,因此在这里粗略翻译一下全文,希望能有更多的程序员加入到Gopher行列中来。

译文全文如下:

img{512x368}
Drawing Copyright ©2017 Renee French

本周是创建Go语言十周年的纪念日。

记得第一次关于这门语言设计的讨论是在2007年9月20日,一个周四的下午。进而在第二天的下午两点,我、Robert Griesemer以及Ken Thompson在谷歌山景城总部43#楼的一间名为Yaounde的会议室里又组织进行了一场有关这门语言设计的会议。这门语言的名字诞生于9月25日,在第一封有关语言设计的mail中可以看到一些关于命名的设计考量:

    Subject: Re: prog lang discussion
    From: Rob 'Commander' Pike
    Date: Tue, Sep 25, 2007 at 3:12 PM
    To: Robert Griesemer, Ken Thompson

    i had a couple of thoughts on the drive home.

    1. name

    'go'. you can invent reasons for this name but it has nice properties.
    it's short, easy to type. tools: goc, gol, goa. if there's an interactive
    debugger/interpreter it could just be called 'go'. the suffix is .go
    ...

(将语言命名为Go这事儿值得一提;“golang”来自于这门语言的web站点地址(因为go.com当时已经是迪斯尼的一个web站点了),但却不是语言的恰当名字。)

Go项目将2009年11月10日,即Go项目正式开源的那天作为其官方生日。最初Go项目托管在code.google.com上,几年后迁移至GitHub。不过,现在我们要回到最初的语言概念构建阶段,即那之前的两年,这可以让我们做更进一步地回顾,以更久远的视角,见证一些语言早期的历史事件。

Go开发过程中的第一个惊喜是收到下面这封mail信息:

    Subject: A gcc frontend for Go
    From: Ian Lance Taylor
    Date: Sat, Jun 7, 2008 at 7:06 PM
    To: Robert Griesemer, Rob Pike, Ken Thompson

    One of my office-mates pointed me at http://.../go_lang.html .  It
    seems like an interesting language, and I threw together a gcc
    frontend for it.  It's missing a lot of features, of course, but it
    does compile the prime sieve code on the web page.

Ian Lance Taylor的加入以及第二个编译器实现(gccgo)在带来震惊的同时,也伴随着喜悦。这对Go项目来说不仅仅是鼓励,更是一种对可行性的证明。有了语言的第二个实现对确定语言规范和标准库的过程是至关重要的,同时也有助于Go保证其高可移植性的承诺

虽然Ian的办公室离我们不远,但在看到这封mail之前我们从未谋面。不过,从那之后,Ian Lance Taylor便成为了Go语言及工具设计和实现的核心人物。

Russ Cox也是在2008年加入到刚成立不久的Go语言开发团队的。随着他的加入,他的一些天赋也随即在语言设计和实现中展现出来。Russ发现Go method的通用性意味着一个函数也可以拥有自己的方法,这直接导致了http.HandlerFunc的出现,这是一个我们所有人都未曾想到的结果。Russ还在当时设计的基础上提出了一些更泛化的想法,比如io.Readerio.Writer接口,奠定了所有I/O库的整体结构。

Jini Kim是我们最初的产品经理,他招来了安全专家Adam Langley来帮助我们将Go推向Google外面的世界。Adam为我们做了许多不为外人所知的事情,包括创建最初golang.org站点的web页面以及build dashboard。不过他最大的贡献当然要属cryptographic库了。起先,对于我们中的一部分人来说,这个库无论是规模还是复杂度,和其他库比起来都不成比例。但是就是这个库在后期成为了很多重要的网络和安全软件的基础,并且成为了Go语言开发历史的关键组成部分。像Cloudflare这样的网络基础设施提供商就重度依赖Adam在Go项目中的工作,Internet也因此变得更好。因此,我们由衷感谢他的工作。

事实上,许多公司在早期使用Go进行开发,尤其是初创公司。其中一些公司成为了云计算的巨头,其中就有一家这样的公司,它现在叫Docker。这家公司使用Go语言,并催化出计算领域的容器行业,进而导致了像Kubernetes这样的项目出现。今天我们可以说Go是容器语言,这是另一个我们完全没有预料到的结果。

不过,Go语言在云计算领域起到作用更大。2015年3月,Donnie Berkholz在为RedMonk撰写的一篇文章中宣称:Go是“云计算基础设施新兴语言”。几乎与此同时,Apcera的Derek Collison说:Go已经是云计算语言了。在那个时候,这也许还不是事实。但Berkholz所使用的“新兴”一词却恰如其分的表明了Go在当时的地位。

今天,Go已经成为云计算语言。想象一下:一个只有10岁的年轻编程语言已经成为这样一个规模庞大且不断发展的行业的主导者,这样的成功以前只是存在于在想象中。如果你觉得“主导”这个词太过强势的话,让我们来看看中国互联网行业。一段时间以来,Go在中国地区大量使用的数据一度让我们误认为Google趋势图出现了某些错误,但是凡是去过中国,参加过中国区Go语言大会的人都可以证实:Google趋势图的数据是真的,Go在中国的使用非常火爆!

简而言之,Go语言的十年发展为我们带来了许多里程碑。 最令人惊讶的是我们现在的位置:保守估计表明至少有50万Go程序员。 当前面那封为Go命名的邮件发送时,憧憬能有有五十万gopher的想法听起来会感觉很荒唐。 但就在此时此刻这里,我们不仅有了50w gopher,并且数量还在持续增长。

说到gophers,很高兴看到来自Renee French想法的吉祥物Go Gopher(地鼠),不仅成为了一个非常受人喜爱的作品,而且也是世界各地Go程序员的象征。许多各个地区顶级的Go大会都被称为GopherCons,因为他们聚集了来自世界各地的gophers。

Gopher大会正在迅速发展。第一次大会的举办只不过是三年前的事情,但今天在全世界各地有很多这样的Go大会。并且还有无数小的本地“聚会(meetups)”。在任何某一天,世界上某个地方都会有不止一个gopher群体在进行有关Go的分享。

回顾过去十年的Go设计和开发,Go社区的发展是惊人的。会议和聚会的数量、长长的且不断增加的Go项目贡献者名单、大量用Go实现的开放源代码存储库、使用Go的公司数量等等,细思恐(吃惊)极!

对于我们三个人,Robert, Rob和Ken,当初只是想让我们的编程生活更轻松一些,而如今,我们难以置信地、欣慰地看到我们的工作已经开始起作用了。

未来十年会带来什么呢?

- Rob Pike, with Robert Griesemer and Ken Thompson


微博:@tonybai_cn
微信公众号:iamtonybai
github.com: https://github.com/bigwhite

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言进阶课 Go语言精进之路1 Go语言精进之路2 Go语言第一课 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com

欢迎使用邮件订阅我的博客

输入邮箱订阅本站,只要有新文章发布,就会第一时间发送邮件通知你哦!

这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats