Web Analytics

编程语言进入“拼爹”时代

近期看到一则新闻,说是Microsoft推出了一门开源的编程语言叫TypeScript,该Project的主要负责人是大名鼎鼎的Anders Hejlsberg,就是那个Turbo Pascal 、Delphi以及C#之父。结合近几年来出现的颇受关注的其他几门编程语言,如Go、Rust、Dart等,让我感觉到编程语言似乎进入了"拼爹"时代。 我们来列举一下这几门新兴语言的“老爹”(设计者): * Go语言 – Robert Griesemer、Rob Pike和Ken Thompson。 这里最著名也最NB的当属Ken Thompson,Unix之父,并与Dennis Ritchie一起创造了最伟大的工业编程语言C,图灵奖得主。Rob Pike也是Bell Labs元老,Unix和Plan 9计划的参与者,Limbo语言的设计者之一。至于Robert Griesemer名气似乎小一些,我也不甚熟悉。不过有了前两位,想必Golang就会有足够的号召力了。 ...

October 8, 2012 · 4 min · Tony Bai

Go与C语言的互操作

Go有强烈的C背景,除了语法具有继承性外,其设计者以及其设计目标都与C语言有着千丝万缕的联系。在Go与C语言互操作(Interoperability)方面,Go更是提供了强大的支持。尤其是在Go中使用C,你甚至可以直接在Go源文件中编写C代码,这是其他语言所无法望其项背的。 在如下一些场景中,可能会涉及到Go与C的互操作: 1、提升局部代码性能时,用C替换一些Go代码。C之于Go,好比汇编之于C。 2、嫌Go内存GC性能不足,自己手动管理应用内存。 ...

September 26, 2012 · 9 min · Tony Bai

Go中的系统Signal处理

我们在生产环境下运行的系统要求优雅退出,即程序接收退出通知后,会有机会先执行一段清理代码,将收尾工作做完后再真正退出。我们采用系统Signal来 通知系统退出,即kill pragram-pid。我们在程序中针对一些系统信号设置了处理函数,当收到信号后,会执行相关清理程序或通知各个子进程做自清理。kill -9强制杀掉程序是不能被接受的,那样会导致某些处理过程被强制中断,留下无法恢复的现场,导致消息被破坏,影响下次系统启动运行。 ...

September 21, 2012 · 4 min · Tony Bai

Go语言标准库概览

本文翻译自Dr.Dobb’s的"A Brief Tour of the Go Standard Library“一文。 在Go语言五周系列教程的最后一部分中,我们将带领大家一起来浏览一下Go语言丰富的标准库。 Go标准库包含了大量包,提供了丰富广泛的功能特性。这里提供了概览仅仅是有选择性的且非常简单。本文发表后,标准库的内容还可能继续增加,因此 建议大家最好是通过在线查阅库API或使用godoc(包含在Go发布包中)来获取最新信息以及全面了解每个包所具备的功能。 ...

September 8, 2012 · 18 min · Tony Bai

Go程序设计语言(三)

本文译自Rob Pike的Go语言PPT教程 – “The Go Programming Language Part3(updated June 2011)"。由于该教程的最新更新时间早于Go 1版本发布,因此该PPT中的一些内容与Go 1语言规范略有差异,到时我会在相应的地方做上注解。 ...

August 28, 2012 · 11 min · Tony Bai

Go程序设计语言(二)

重写工作方式正如字段一样。 type NamedPoint struct { Point name string } func (n *NamedPoint) Abs() float64 { return n.Point.Abs() * 100. } n := &NamedPoint{Point{3, 4}, “Pythagoras”} fmt.Println(n.Abs()) // prints 500 当然,你可以有多个不同类型的匿名字段 – 一个简单版本的多继承。但冲突解决规则让事情保持简单。 ...

August 27, 2012 · 10 min · Tony Bai

Go程序设计语言(一)

int uint int8 uint8 = byte int16 uint16 int32 uint32 float32 complex64 int64 uint64 float64 complex128 还有uintptr,一个大小足够存储一个指针的数值。 这些都是互不相同的类型;int不等于是int32,即便是在一个32位的机器上。 ...

August 23, 2012 · 13 min · Tony Bai

也谈Go语言编程 – Hello,Go!

Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It’s a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language. – 摘自Go语言官方站点 ...

August 17, 2012 · 11 min · Tony Bai

开始学Go

本文翻译自Dr.Dobb’s的"Getting Going with Go"。 本文是有关Google新的系统原生语言的五周教程的第一部分,这里将先向大家展示如何建立Go语言开发环境以及构建程序,然后带领大家浏览 一些代码范例来着重了解一下这门语言的一些有趣的特性。 ...

August 14, 2012 · 19 min · Tony Bai

buildc 0.1.9版本发布

随着buildc使用的深入,越来越多的新需求暴露了出来。为了满足这些需求,我们组的小兄弟又对buildc进行了一些改造,这些变化如下: 1、支持将多个子工程打包到一个安装包中 最初buildc的设计思想是为每个子工程单独制作安装包,这样具有很强的灵活性。但在对现有N个工程进行构建脚本改造的过程中发现,有些工程间存在严重 依赖,比如工程A是一个业务级公共库工程,工程B和工程C都依赖工程A构建后生成的静态共享库。而工程A又无法被当成第三方库处理,这给我们的安装包构建 制造了难题。我们的解决方法就是改造安装包工程的setup.cfg文件,让其支持多source。从正规语义上来讲,我们这么做将使得buildc支持 将多个子工程打包到一个安装包中,而间接的作用则是解决了上述有依赖关系的工程安装包制作的问题,虽然看起来不那么美。 ...

July 19, 2012 · 3 min · Tony Bai