Skip to content

Latest commit

 

History

History
103 lines (68 loc) · 4.03 KB

File metadata and controls

103 lines (68 loc) · 4.03 KB

语言选型的愿望

作为任何一家公司,在语言选型上都有几个期望。

  1. 易学
  2. 开发效率高
  3. 执行效率高
  4. 完备的社区
  5. 用户众多
  6. 可维护性好

不幸的是,大部分语言在上述目标中互相冲突。

  • C语言用户众多,可维护性好,执行效率高,而且社区完备。但是难学,而且开发效率差到死。
  • java语言用户众多,执行效率高,社区完备。可是可维护性差,开发效率也没高多少。
  • C++的用户和执行效率都不错,社区完备。可是学起来超级难,维护性差到死,开发效率不好说。

初创企业的选型要点

  1. 最重要的是活下来。
  2. 不要考虑维护性,活不下来的产品不需要维护。
  3. 用户数是个问题,不过足够易学就可以弥补。两者至少有一个。
  4. 开发和执行效率是永恒的矛盾。两者只能选一个。
  5. 社区一定要完备。

初创企业的估算误差来由:

  • 不靠谱的团队。人员离职比例和试用期接近,大量的时间消耗在培训和沟通上。
  • 还没彻底搞明白自己想做什么。出一样东西三个月,又扔了。

因此,初创企业最重要的是,开发效率足够高。尽快做出原型,尽快推出产品。


综合一下,初创企业选型的要点:

  1. 尽量用自己熟悉的技术,或者有现成的解决方案。
  2. 语言开发效率高。
  3. 易学,或者用户数量大。
  4. 社区完备。

由于最后一个,我们只要检查一下所有社区完备的开发语言,然后挑选一种合适的就好。

  • BASIC,开发效率高,易学
  • bash,开发效率高,不易学,不易维护
  • C,不要谈开发效率
  • php,开发效率高,用户多,不易维护
  • .net,恶心
  • java,开发效率不高
  • python,开发效率高,易学易维护
  • ruby,开发效率高,易学易维护

所以,最后看下来最佳选择是python和ruby,如果可以用basic也可以考虑。次之考虑bash和php。最后考虑java和net。

python和ruby的选择上。如果你的业务大部分和网页有关,用ruby,反之,用python。因为ruby的社区积累在页面开发上,而且有数种很好用的框架,用户群也是以极限的开发速度为导向的。在这点上用python没什么太大好处。

初创企业的一大误区是过高考虑了维护性和效率。除非你非常非常确定自己需要的是维护性和效率,否则不要想太多。

混编是个坑,跳不跳的过去各凭本事

我们新产品上使用的语言:

  • C
  • lua
  • python
  • scheme
  • go

各种语言执行自己合适的功能,无论从效率还是开发效率上都显得非常完美。


问题:

  1. 初创企业哪里来个人会这么多语言。C是肯定会的,python不难学。可是要找个人玩的好lua, scheme和go就不是很容易了。
  2. 就算有几个人能搞定,后面进人维护怎么办?招不到人啊。所以以后无论工作量膨胀到多大,都是他们干?而且他们不能辞职不能生病连休假都要看情况?
  3. 万一出了问题,这几个人能搞定么?搞不定怎么办?

所以,混编听起来很美,其实是个大坑。跳不跳的过去,各自凭本事。如果没把握,尽量少用几种语言。


推荐的混编模式:

  • python搞定大部分问题
  • C提升效率和嵌入

一种易学,一种大部分程序员都会。维护的困难性大大降低。

python效率一定低么

  • 大部分时候,效率只和模型有关。用错假定,想的太多,算法错误,代码粗糙是效率低下的四大理由。和语言基本没什么关系。
  • 有些效率问题不要着急解决。先算一下,目前解决这个效率问题要扔多少人工进去。如果人工比机器还贵,就买好的机器或者升级服务拖延。
  • 有大规模数据运算?把这部分代码单独拆个模块,用cython写,然后编译。效率和C相差无几。
  • 瓶颈在哪里?有的时候慢的不是python,而是某个库。换一个就好了。