從2014年暑假開(kāi)始學(xué)習(xí)iOS開(kāi)發(fā),11月份找到第一份iOS開(kāi)發(fā)的工作桐智,至今也有近三年的時(shí)間了末早,對(duì)iOS開(kāi)發(fā)也算是比較熟悉了,雖然還有很多缺漏的地方说庭,但是最近一段時(shí)間特別想自己做一個(gè)包括前端和后臺(tái)的完整的APP然磷,所以就開(kāi)始選擇后端開(kāi)發(fā)的語(yǔ)言。
C/C++
在學(xué)校里上過(guò)這方面的課程刊驴,不過(guò)自認(rèn)為是一個(gè)學(xué)渣所以并沒(méi)有很好的基礎(chǔ)姿搜,加上這兩門(mén)語(yǔ)言相對(duì)于“現(xiàn)在化”的語(yǔ)言還是比較“笨拙的”,上手項(xiàng)目困難比較大捆憎,所以不予考慮舅柜。
JAVA
從很久以前就在TIOBE排行榜里居高不下,而且市面上崗位需求量也是非常大躲惰,各種類(lèi)庫(kù)非常健全致份,在服務(wù)端開(kāi)發(fā)、大數(shù)據(jù)等方面都是當(dāng)仁不讓的础拨。但是氮块,根據(jù)我的了解,想要用Java做一套系統(tǒng)需要用到各種框架(spring+struct+hibernate+...)诡宗,而且在我的印象里滔蝉,Java一直和各種的設(shè)計(jì)模式什么的分不開(kāi),而且這個(gè)語(yǔ)言也缺少一些高級(jí)的特性(可能有塔沃,只是我不知道锰提,比如參數(shù)默認(rèn)值)。而且在了解Java的時(shí)候芳悲,我想明白了我并不是想要從事服務(wù)端開(kāi)發(fā)立肘,更不是想從前端轉(zhuǎn)到后臺(tái),只是想了解“另一個(gè)世界”名扛,所以谅年,我只需要一個(gè)比較“機(jī)智”“簡(jiǎn)練”的語(yǔ)言。
GO
其實(shí)了解golang是在JAVA之前肮韧,因?yàn)槲覀児镜暮笈_(tái)有一部分使用golang開(kāi)發(fā)的融蹂,跟那些同事交流的時(shí)候,聽(tīng)到過(guò)他們談?wù)撨@門(mén)語(yǔ)言弄企,所以在剛開(kāi)始打算選擇語(yǔ)言的時(shí)候就首先了解了超燃,而且還讀完了七牛團(tuán)隊(duì)著作的《Go語(yǔ)言編程》。初讀這本書(shū)拘领,我驚艷到了意乓,golang真的好精煉、好強(qiáng)大约素,開(kāi)一個(gè)協(xié)程(輕量級(jí)的線程)只需要簡(jiǎn)單的go func()
届良,這要比OC中的GCD笆凌、Java中的Thread啥的精煉太多了,還有它的多返回值(曾幾何時(shí)我是多么的希望OC可以支持多返回值笆亢)乞而,而且據(jù)說(shuō)因?yàn)槭褂昧藚f(xié)程,它對(duì)大并發(fā)的支持是與生俱來(lái)的慢显,更別說(shuō)golang的部署真的是傻瓜式的爪模。這些優(yōu)點(diǎn)確實(shí)是非常的突出,一度讓我覺(jué)得這就是我想要的荚藻,后來(lái)屋灌,當(dāng)我真正的上手寫(xiě)代碼的時(shí)候,我發(fā)現(xiàn)了一些不大適應(yīng)的地方鞋喇,比如類(lèi)型放在變量名的后面(比如age int
)声滥,還有多返回值在某些場(chǎng)景也不大好用眉撵,而且它也不支持默認(rèn)參數(shù)侦香,這其中,最讓我感覺(jué)“不合理”的一點(diǎn)就是:GO使用組合的方式來(lái)實(shí)現(xiàn)了繼承和接口纽疟,雖然GO說(shuō)這么做很利于解耦(我也不否認(rèn))罐韩,但是就可閱讀性而言,自認(rèn)為確實(shí)有諸多的不利污朽。還有就是在我發(fā)現(xiàn)了接觸了Python以后散吵,突然想到了既然我想要了解一個(gè)新的東西,為什么不直接去了解一門(mén)解釋型語(yǔ)言呢蟆肆,或許可以了解到更多的東西矾睦。因此我就放棄了golang轉(zhuǎn)投Python。
Python
首先Python在TIOBE排行榜上位列前十炎功,其次Python是一個(gè)解釋型語(yǔ)言枚冗,第三Python可以使用一個(gè)django來(lái)構(gòu)建整個(gè)完整的系統(tǒng)(據(jù)我了解),第四Python的語(yǔ)法簡(jiǎn)練蛇损、開(kāi)發(fā)速度很快赁温,第五,Python還可以寫(xiě)爬蟲(chóng)淤齐,或許以后我會(huì)想做一個(gè)用到其他互聯(lián)網(wǎng)資源的APP股囊,那時(shí)候爬蟲(chóng)可能就有用武之地了。另外更啄,雖然Python作為一個(gè)解釋型語(yǔ)言稚疹,可能無(wú)法在寫(xiě)代碼階段發(fā)現(xiàn)更多的問(wèn)題,而導(dǎo)致生產(chǎn)環(huán)境出現(xiàn)更多的問(wèn)題祭务,據(jù)說(shuō)Python在大并發(fā)的支持方面也有一些與生俱來(lái)的弊端贫堰,但是對(duì)于我的需求來(lái)說(shuō)穆壕,這些問(wèn)題都無(wú)所謂。那么其屏,我為什么沒(méi)有選擇PHP或者Ruby呢喇勋,在我的印象里,Ruby是一個(gè)比較小眾的語(yǔ)言偎行,感覺(jué)社區(qū)資源的支持可能不大完備川背,至于PHP,我之前是了解過(guò)的蛤袒,它在我的印象里是一個(gè)比較擅長(zhǎng)做網(wǎng)頁(yè)開(kāi)發(fā)的語(yǔ)言熄云,對(duì)于APP的接口好像不大擅長(zhǎng),而且聽(tīng)說(shuō)PHP已經(jīng)在走下坡路了妙真。
以上純屬個(gè)人粗陋之見(jiàn)缴允。
總結(jié)
寫(xiě)下這篇文章的主要目的是讓自己能在學(xué)習(xí)Python的道路上堅(jiān)持下去,希望能早日完成自己的第一個(gè)項(xiàng)目珍德。
另外练般,這兩天學(xué)習(xí)了在阿里云的centos服務(wù)器上部署Python、Django锈候、nginx薄料,計(jì)劃這兩天把總結(jié)分享出來(lái)。
Life is short, I use Python.