语言与生态
许多年前,软件开发都处在单打独斗的时期,那时候没有github,各个公司都各自玩自己的。语言也仅仅是一种语言。但,随着开发工具的演进、软件开发的环境有了很大的改善。github平台的出现,给共享软件开发提供了可能,技术人员越来越多地分享自己的代码。这个时期,软件的开发已经进化到一个生态。
当语言还不是生态的时候
这几年,语言的发展越来越快,出现了很多新的计算机语言,比如go、elixir、rust。有些是领域相关的,有些是通用的。都各自有各自的市场。如果一种语言单单是一种语言,那它的发展必然是缓慢的。每种语言都有其特定的优势,能解决待定的问题,所以才有生存的空间。早期的C语言,后来的C++语言。这种系统级别的语言,一方面发展的缓慢,不是因为难学。
生态为什么那么重要?
一种编程语言就应该有其相应的生态,具体表现在以下几个方面:
- 对用户友好的语言特性(语法);
- 完善的构建工具链(工具);
- 强大的包管理及依赖处理(包);
- 优秀的框架(框架);
- 高质量的库(库);
- 活跃的生态体系(文化);
一种语言没有好的语言特性,它就很难吸引开发者对其关注。但仅有这些还不够。对于,语言创始人来说。他如果想让他的创造的语言有生命力,能大量运行在生产环境。他应该服务好技术开发人员,为他们提供好的构建工具。像Java有maven,elixir有mix,这些都是好的构建工具。有了这些还不够,用户怎样快速集成别人的模块,怎样发布自己的模块。这有赖于包管理的平台,像java有maven仓库,elixir有hex这样的仓库。不得不说,当拥有了这前三荐优势后,那已经很具有吸引力了。javascript的出现有二十多年了,但为什么这近几年它火起来了。不仅仅是v8虚拟机的性能,同时,有了像npm这种方便的包管理工具,同时再加上ts的加持。
合作者模式
软件开发模式进化到当前这种阶段,依赖于互联网的发展。以前,尽管你想把自己做的开源代码共享给其他人用,但没有好的发布渠道,那也是白搭。互联网的发展,使得这种模式成为可能。当然,之前公司基于自己版权和商业利益的考虑,软件的发布都是二进制模。使用都看不到源代码,发现问题,只能通过官方的渠道报告给软件开发者。这使得一个问题的问题周期过长。
当前,github的出现,越来越多的软件都开发源代码。当技术使用都采用了某个代码框架,如果发现问题。可以查看源代码找到问题的来源,并且fork原作者的工程,并对其进行修改。最后直接给原作者提交pull/request,问题的发现和解决周期大大缩短。同时,越来越多的人参与到这种模式中来。一个技术人员,不仅仅可以提交bug的PR,同时也可以提交feature的PR。这会带来以下好处:
- 软件质量会越来越高,(发现bug和解决bug的速度越来越快)
- 软件的迭代周期会缩短,(这已经不是一个单打独斗的时代,这是一个虚拟团队的时代)