从2014年暑假开始学习iOS开发,11月份找到第一份iOS开发的工作,至今也有近三年的时间了,对iOS开发也算是比较熟悉了,虽然还有很多缺漏的地方,但是最近一段时间特别想自己做一个包括前端和后台的完整的APP,所以就开始选择后端开发的语言。
C/C++
在学校里上过这方面的课程,不过自认为是一个学渣所以并没有很好的基础,加上这两门语言相对于“现在化”的语言还是比较“笨拙的”,上手项目困难比较大,所以不予考虑。
JAVA
从很久以前就在TIOBE排行榜里居高不下,而且市面上岗位需求量也是非常大,各种类库非常健全,在服务端开发、大数据等方面都是当仁不让的。但是,根据我的了解,想要用Java做一套系统需要用到各种框架(spring+struct+hibernate+...),而且在我的印象里,Java一直和各种的设计模式什么的分不开,而且这个语言也缺少一些高级的特性(可能有,只是我不知道,比如参数默认值)。而且在了解Java的时候,我想明白了我并不是想要从事服务端开发,更不是想从前端转到后台,只是想了解“另一个世界”,所以,我只需要一个比较“机智”“简练”的语言。
GO
其实了解golang是在JAVA之前,因为我们公司的后台有一部分使用golang开发的,跟那些同事交流的时候,听到过他们谈论这门语言,所以在刚开始打算选择语言的时候就首先了解了,而且还读完了七牛团队著作的《Go语言编程》。初读这本书,我惊艳到了,golang真的好精炼、好强大,开一个协程(轻量级的线程)只需要简单的go func()
,这要比OC中的GCD、Java中的Thread啥的精炼太多了,还有它的多返回值(曾几何时我是多么的希望OC可以支持多返回值啊),而且据说因为使用了协程,它对大并发的支持是与生俱来的,更别说golang的部署真的是傻瓜式的。这些优点确实是非常的突出,一度让我觉得这就是我想要的,后来,当我真正的上手写代码的时候,我发现了一些不大适应的地方,比如类型放在变量名的后面(比如age int
),还有多返回值在某些场景也不大好用,而且它也不支持默认参数,这其中,最让我感觉“不合理”的一点就是:GO使用组合的方式来实现了继承和接口,虽然GO说这么做很利于解耦(我也不否认),但是就可阅读性而言,自认为确实有诸多的不利。还有就是在我发现了接触了Python以后,突然想到了既然我想要了解一个新的东西,为什么不直接去了解一门解释型语言呢,或许可以了解到更多的东西。因此我就放弃了golang转投Python。
Python
首先Python在TIOBE排行榜上位列前十,其次Python是一个解释型语言,第三Python可以使用一个django来构建整个完整的系统(据我了解),第四Python的语法简练、开发速度很快,第五,Python还可以写爬虫,或许以后我会想做一个用到其他互联网资源的APP,那时候爬虫可能就有用武之地了。另外,虽然Python作为一个解释型语言,可能无法在写代码阶段发现更多的问题,而导致生产环境出现更多的问题,据说Python在大并发的支持方面也有一些与生俱来的弊端,但是对于我的需求来说,这些问题都无所谓。那么,我为什么没有选择PHP或者Ruby呢,在我的印象里,Ruby是一个比较小众的语言,感觉社区资源的支持可能不大完备,至于PHP,我之前是了解过的,它在我的印象里是一个比较擅长做网页开发的语言,对于APP的接口好像不大擅长,而且听说PHP已经在走下坡路了。
以上纯属个人粗陋之见。
总结
写下这篇文章的主要目的是让自己能在学习Python的道路上坚持下去,希望能早日完成自己的第一个项目。
另外,这两天学习了在阿里云的centos服务器上部署Python、Django、nginx,计划这两天把总结分享出来。
Life is short, I use Python.