Golang VS Node.js
在学习Go的过程中,接触到了两个比较流行的Go web框架,Beego和Gin。
给我的第一感觉是Beego更像阿里的egg框架,而Gin更像express和koa。Beego是国人开发的一个优秀的开发框架,提供了很多能力,各方面的规范也比较完善,如同egg(官方称之为node.js企业级框架);反观Gin框架,给我的感觉就如同express一般灵活。
这好像反映出来一些技术之外的东西,暂且称之为技术人的理念。我更愿意把Beego和egg称为重量级框架,开箱即用,什么基本配置啊目录什么的都安排的明明白白的,能让使用者更快的投入到业务开发中,但不可否认的,这种封装程度很高的框架有很多能力是我们不需要的,但是又是项目中不可缺少的一部分。我个人而言不太喜欢使用这类封装程度很高的框架,因为这更像是在学习框架而逐渐忽略语言本身的锤炼。也就是工具人,按部就班去写业务。
Gin框架和node.js的express框架很像,基本结构很灵活,性能也不错,当然弊端也是有的,那就是容易写出垃圾代码和混乱的项目结构,怎么取舍呢,对于公司级业务开发,优先选择beego这类框架去做开发,因为可以很快进入到正常的开发节奏;但是如果公司有架构师的角色,我更愿意接受gin上层封装的这种做法,在上层建设的过程中,结合自身需要的业务进行拓展,接触过很多所谓的企业级框架的锤炼后,东施效颦也能造出很不错的轮子,而且依赖越少,扩展性和定制性也就更强,遇到问题也更容易分析并优化,这对个人的能力要求比较高,如果不行的话还是用beego吧,毕竟国人框架的社区还是可以的。
前段时间在知乎看到一个有意思的问题,为什么像Go、Python、Ruby、Rust等语言都是国外开发的,而国内却没有什么上台面的语言。其实我认为一个语言的设计者,需要有很深厚的技术沉淀,熟悉其他语言的实现原理及优缺点,并能实际处理这些问题从而诞生一种解决开发者痛点、或是更契合现代互联网业务需求的语言。gayhub上有很多高星轮子,很多都是借鉴了其他语言相同功能的优质库,这就意味着技术的发展与迭代升级是一个各种语言相互借鉴和优化的过程。如果只掌握一门语言的话,其实不管从对代码的理解上还是造轮子的能力上,又是有点闭门造车的感觉的,当然不排除也有些天纵奇才吃透一门语言的开发者,但毕竟是过于稀有的。这里只从技术方向思考,不考虑市场对技术发展的能动作用。
思维发散到市场需求,技术的发展进步是市场需求促进的,归根结底,一种是用户自身的体验要求,一种是作为企业想为用户提供的更好体验,实际就是技术变现。商业经济推动市场发展,从而使人的需求不断提高,从而需要更多更好的技术方案提供支撑,这就是技术发展的本质。技术与市场的关系应该是一种相辅相成的关系。任何有价值的产品都逃不开两个特征,一种是解决了用户的某些痛点,二是给了用户更强的愉悦感。举个例子,比如通信相关的产品,本质上是解决了人们沟通不便的痛点;而类似某些短视频类产品实际上是没有解决用户痛点的,更多的是提供一种愉悦感,也就是俗称的奶头乐。
从两种语言中带来的思考,国内技术风向更像是工厂流水线的感觉,不免扼杀了很多创造力,而我想继续保持自己的创造力。
最后更新于