欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

Python比java牛在哪里

Python比java牛在哪里?

在進(jìn)入主題之前,小智先分享幾條大神的人生警句、醒世明言:

初學(xué)者才爭(zhēng)論語(yǔ)言,我們只看心情。

還有:

選擇入門語(yǔ)言最重要的是

“三觀”相似 “臭味”相投

以及大家都應(yīng)該銘記于心的(我覺得這條是說給他自己的):

人作的程度

不要超過自己的顏值

以上都是重點(diǎn),一定要做好筆記。下面科普時(shí)間正式開始:

Python

人生苦短,我用Python

優(yōu)點(diǎn) :

語(yǔ)法簡(jiǎn)潔優(yōu)美, 功能強(qiáng)大, 標(biāo)準(zhǔn)庫(kù)跟第三方庫(kù)灰常強(qiáng)大, 應(yīng)用領(lǐng)域非常廣,跟PHP形成了鮮明的對(duì)比!

語(yǔ)法方面, 舉幾個(gè)例子:

1、一切都是對(duì)象

類(class本身)/函數(shù)/類方法是callable的對(duì)象

因?yàn)槭菍?duì)象,所以你當(dāng)然可以傳來傳去啦。

比如:

2、List表達(dá)式(其他好多語(yǔ)言也有,但是python的寫法最招人待見):

把"1023"變成 [1, 2, 3]

(當(dāng)前你可以用Lisp風(fēng)格的: map(int, filter(lambda x: x != "0", "1024")))

對(duì)dict也是類似:

3、yield關(guān)鍵字

當(dāng)你需要返回很多東西然后一個(gè)一個(gè)用的時(shí)候, 你可以一次返回一個(gè)

4、裝飾器@

把something_heavy()返回的結(jié)果緩存起來(以函數(shù)名+args為緩存的鍵值,只緩存最近使用的10條)

5、運(yùn)算符重載

試試numpy, 你會(huì)驚呆的, 操作向量/矩陣跟基本類型一樣方便

缺點(diǎn):

目測(cè)python是最慢的腳本語(yǔ)言,比V8上的JS還慢不少。 (研究一下描述符,你會(huì)發(fā)現(xiàn)python調(diào)用對(duì)象方法的開銷好大!)

但是python創(chuàng)始人說了, 一般程序的瓶頸在于20%的代碼, 所以你可以把那20%的代碼用C重寫(因?yàn)閜ython是膠水語(yǔ)言,顧名思義,在多個(gè)語(yǔ)言之間左右逢源,游刃有余,用C重寫部分代碼當(dāng)然很easy啦)

同時(shí),你可以試試PyPy, 引入了JIT技術(shù)。

動(dòng)態(tài)類型

有人說: 動(dòng)態(tài)類型寫時(shí)爽, 重構(gòu)起來是災(zāi)難。

對(duì)于不寫unittest,不做代碼覆蓋率測(cè)試的人來說,動(dòng)態(tài)語(yǔ)言當(dāng)然是危險(xiǎn)的,拼寫錯(cuò)誤都可能被隱藏,重構(gòu)?別搗亂!

python創(chuàng)始人有話說: "如果你認(rèn)為編譯器可以幫你解決所有問題,那你一定干編程沒多久,不管什么程序,都需要寫testcase, 既然要寫testcase, 那么動(dòng)態(tài)類型不是問題!"

Java

編程人員最多的編程語(yǔ)言

優(yōu)點(diǎn):

用幾個(gè)詞形容一下Java語(yǔ)言:優(yōu)美,嚴(yán)謹(jǐn),健壯,不易出錯(cuò)。

當(dāng)然,使用也非常的廣泛: 常年盤踞編程人員數(shù)量排行榜第一名!

各種庫(kù)也灰常多: akullpp/awesome-java · GitHub

BUG少:同樣的代碼,相比C++(甚至python), Java代碼出BUG的概率要小點(diǎn)(當(dāng)然,寫的時(shí)候一般會(huì)比python長(zhǎng))

Java從語(yǔ)言設(shè)計(jì)上盡量避免了程序員犯錯(cuò),比如自動(dòng)垃圾回收、拋棄無符號(hào)類型、安全的枚舉、編譯期泛型檢查(Java1.5之后加入的泛型,但是只是用來做編譯器檢查,運(yùn)行時(shí)跟以前一樣)、強(qiáng)制的異常處理(遇到異常必須catch或者申明throws) 等(當(dāng)然,某些特性python也有)。

Java標(biāo)準(zhǔn)庫(kù)和好多第三方代碼都充斥著濃濃的設(shè)計(jì)感!!! 各種設(shè)計(jì)模式到處可見。 從下面的語(yǔ)句可以看出一點(diǎn)來:

好多字, 看它們的:

C:

Python:

Java代碼多,但是API可復(fù)用行更強(qiáng),選擇更多(想一次讀完文件,不要buffer呢?)

因?yàn)榻寻踩訨ava成了企業(yè)級(jí)后臺(tái)的標(biāo)準(zhǔn)。想想銀行后臺(tái), 關(guān)鍵地方出點(diǎn)bug可不得了。

缺點(diǎn):

要敲好多代碼

(參考上面的例子)

沒有Python那些奇葩特性,靈活性不足,怎么寫你還是Java, 而Python可以寫的像Javascript/Lisp/Matlab.....

簡(jiǎn)單來說, Python是給人設(shè)計(jì)的(人生苦短,請(qǐng)用Python), C/C++更像是為機(jī)器設(shè)計(jì)的,而Java則介于兩者之間。

那么問題來了,

Java和Python哪個(gè)好呢?應(yīng)該怎么選呢?

大神說了(敲黑板,劃重點(diǎn)啦):

如果你是高手,寫出的代碼沒什么bug,也不用怎么調(diào)試, 那推薦你用python(前提是他的慢你能忍受。 當(dāng)然,高手眼里, 他會(huì)的就是最好的....)

如果你寫的代碼bug多,大部分時(shí)間在調(diào)試代碼,你可能需要了解一下Java, 或者寫足夠多的testcase。

————我是小智嘚吧嘚的分割線————

其實(shí),大神雖然說話很欠揍,但有一點(diǎn)是對(duì)的,“沒有好的語(yǔ)言,只有合適的語(yǔ)言。”

猴子開核桃用石頭,砸別的猴子也用石頭。而我們?nèi)祟愰_核桃用核桃夾,打別的人用槍。

每一門語(yǔ)言都有自己的設(shè)計(jì)思想,一個(gè)合格的程序員應(yīng)該多學(xué)幾門語(yǔ)言,了解怎樣用不同的方法和思維去解決同一個(gè)問題。

php復(fù)用代碼,Python比java牛在哪里