程序语言在软件开发界,好比武侠小说的门派。如果被程序员听到他所擅长的语言被各种诟病,他可能觉得师门受辱,说不定会上来争论几句。如果在科兴科学园这种程序员高度集中的地方大喊一句“PHP是世界上最好的语言,不服来辩!”,可以很容引起群殴事件。

笔者认为程序语言仅仅只是工具,笔者本人没有特定语言情节。每一门语言都有其擅长的领域,笔者使用过的语言估计快超过10种,虽然每一门都没有精通,但是却解决了问题,足矣。最近工作中,笔者会直接或间接接触一些语言,下面简单列举出其擅长地方,

  • Javascript Html页面交互逻辑
  • PHP Web服务器编程
  • SQL/HIVE 数据统计
  • Scala 可扩展分布式系统,大数据处理
  • Python 万金油,可做数据挖掘,可以编写web程序,可写后台服务。开发效率高,执行性能存在问题。
  • R 数据统计,机器学习和数据挖掘,第三方库丰富。
  • C/C++ 高性能后台服务器,门槛高,
  • Go 高性能后台服务器,门槛低
  • Lua 胶水语言,特别擅长嵌入C++框架内,开发变化多样的业务逻辑。

笔者的工作是使用机器学习和统计分析技术,解决游戏精细化化运营问题。常用的语言是SQL,Python,Scala和R。使用这么多语言,绝对不是在炫耀技术!因为正如前面提到,每一门语言有其特长,就像王者荣耀的英雄职业,分为刺客,战士,坦克,法师,辅助和射手。笔者使用SQL,Python解决数据分析和ETL。使用R和Scala解决机器学习相关的问题。当然分工也不绝对,有些ETL逻辑特别复杂,会使用Scala解决,有些分析数据量小,可以使用R。

温故而知新,可以为师矣。以上总结了对语言的理解,借此以一种全新的视角学习Go语言。最近,由于工作需要,未来一段时间很有可能需要使用Go。提前准备,总没有什么坏处。

Go语言是一种编译语言,但是其语法接口非常类似脚本语言。说明其学习门槛低,但是却有编译语言的性能。Go语言是为编写高性能后台服务而诞生,用他编写后台服务门槛非常低,但是又不会太牺牲性能。

Go使用指导可以参考官方文档How to Write Go Code。笔者按照这个指引操作,基本对安装,编译,部署,以及项目结构有大致了解,具体总结如下

  • 安装 编译器跨平台,核心功能仅需安装编译器。安装后需要配置GOPATH和GOBIN环境变量,前者是Go的工作空间,后者是可执行程序或库的部署目录。
  • 工作空间 官方文档建议所有Go项目使用一个工作空间,这一点和其他主流语言完全相反。同一个空间下,使用git等版本工具管理不同项目。所以,项目命名空间一定要结构化,避免混淆。
  • 单元测试 Go编译器集成单元测试框架,可以非常方便编写单元测试。
  • 编译和部署 Go可以编译成可执行文件,静态库和动态库,并且可以非常方便的部署。

从目前的体验来看,感觉Go语言还是非常轻量和简洁。后面开始体验Go的语法,以及其最擅长的后台服务开发,期待Go的表现。