Python是一門(mén)啰嗦的語(yǔ)言

Python是一門(mén)啰嗦渊涝、雜而不精慎璧、沒(méi)有個(gè)性的平庸語(yǔ)言。
所謂平庸的語(yǔ)言跨释,即平庸的人喜歡的語(yǔ)言胸私。
當(dāng)然你一定不相信這句話,如果我們可以找出100個(gè)日常使用Python鳖谈、Ruby岁疼、Haskell、Perl6缆娃、PHP等語(yǔ)言開(kāi)發(fā)者捷绒,基本上可以排一下智商:
Haskell >>> Perl6 > Ruby >>> Python >>>>>>>>>>>>> PHP
作為宇宙最牛叉的語(yǔ)言瑰排,PHP擁有龐大的粉絲,當(dāng)然魚(yú)龍混雜暖侨。
AI跟Python一點(diǎn)關(guān)系都沒(méi)有椭住,所有能用python實(shí)現(xiàn)的,必會(huì)配備其他語(yǔ)言實(shí)現(xiàn)的
如果你能同時(shí)學(xué)會(huì)Python字逗、Perl6京郑、Ruby、Haskell 你一定不會(huì)喜歡上Python扳肛,如果你喜歡Python多半是沒(méi)學(xué)過(guò)傻挂、或?qū)W不會(huì)Ruby、Perl6挖息、Haskell罷了金拒。

Python的哲學(xué):人生苦短,我用Python套腹。
Ruby的哲學(xué):感受編程的快樂(lè)绪抛。

你一定看出兩者的差別了,Python讓你抓緊時(shí)間干活(別跟我說(shuō)你干的快不快樂(lè))电禀,而Ruby是讓你享受編程的幢码,所以最終,能讓你在編程的時(shí)候感覺(jué)到快樂(lè)尖飞,一定是最具有創(chuàng)造力症副!想想看,人們是不是在最快樂(lè)的時(shí)候政基,創(chuàng)造了下一代贞铣?
Ruby的發(fā)明者松本行弘提倡機(jī)器不是主人,是工具沮明,而真正的主人應(yīng)該是"人"辕坝,于是他打算開(kāi)發(fā)一種更人性化的編程語(yǔ)言,讓機(jī)器為人服務(wù)荐健,你在使用Ruby的時(shí)候一定能感覺(jué)出來(lái)酱畅,Ruby提供了愉悅的編程體驗(yàn)。
Python的這種哲學(xué)江场,也使我非常反感Python纺酸,我總感覺(jué)推廣Python者,有一種苦大仇深的樣子址否,寫(xiě)代碼對(duì)他們來(lái)說(shuō)似乎是一種折磨吁峻,抓緊寫(xiě)完了事。而玩Ruby、Haskell的用含,多半充滿了樂(lè)趣矮慕,悠閑的寫(xiě)著美妙的代碼,享受生活啄骇、享受編程痴鳄。

臺(tái)灣的唐鳳mm(曾經(jīng)的唐宗漢GG),說(shuō):“Ruby 就是沒(méi)有到處打廣告的Perl 6”缸夹,唐mm一人率先用Haskell實(shí)現(xiàn)了Perl6的解析器pugs痪寻,Perl6,一門(mén)神奇的語(yǔ)言虽惭,開(kāi)發(fā)歷時(shí)10多年橡类,堪稱歷史上最精妙的腳本語(yǔ)言,融合百家之長(zhǎng)芽唇,所以到最后幾乎沒(méi)開(kāi)發(fā)出來(lái)顾画。

你可以不相信本文所寫(xiě),因我資歷淺薄匆笤,但你需要跟隨高手的選擇研侣,比如高手都在練易筋經(jīng),你卻跟了丁春秋學(xué)化功大法炮捧,還以為這種才是獨(dú)步天下的武功庶诡,豈不可笑?

對(duì)比選用: python 3.6.4咆课,ruby: 2.4.2末誓,perl6

1.函數(shù)調(diào)用,不可省略括號(hào):
python

print("hello")

ruby

puts "hello"

perl

say "hello"

2.if/else語(yǔ)句书蚪,if不能后置喇澡,冒號(hào)顯得多余
python

if True:
    print("True")

ruby

puts "hello" if true

perl

say "hello" if True

3.沒(méi)有所謂的語(yǔ)句皆為表達(dá)式特性,即必須手動(dòng)return返回值善炫!另外python這個(gè)類(lèi)定義,非得搞個(gè)self傳遞進(jìn)去
python

class Hello:
    def hello(self):
        return "hello"

ruby

class Hello
    def hello
        "hello"
    end
end

perl

    class Hello{
        method hello {
            "hello"
        }
    }

4.字符串內(nèi)插值:
python不支持库继,只能用format!
python

"name:%s,age:%d" % ("python", 18)
=>'name:python,age:18'

ruby

#內(nèi)插:
2.4.0 :014 > name, age = "ruby", 20
 => ["ruby", 20] 
2.4.0 :014 > "name:#{name},age:#{age}"
 => "name:ruby,age:20" 

#格式化:
2.4.0 :012 > "name:%s,age:%d" % ["ruby", 20]
 => "name:ruby,age:20" 

perl

#內(nèi)插:
> my ($name, $age) = "perl6", 30
(perl6 30)
> "name:$name,age:{$age}"
name:perl6,age:30
#格式化:
> "name:%s,age:%d".sprintf("perl6", 30)
name:perl6,age:30

字符串不支持變量?jī)?nèi)插箩艺,非常不方便,% 來(lái)格式化字符串宪萄,這一點(diǎn)與ruby相同艺谆。

5.構(gòu)造list:
python

>>> ['east', 'west', 'south', 'north']
['east', 'west', 'south', 'north']

ruby

2.4.0 :016 > %w(east west south north)
 => ["east", "west", "south", "north"] 

perl

> <east west south north>
(east west south north)
# 5版本
qw(east west south north);

ruby、perl都支持裸詞形式直接轉(zhuǎn)化成List拜英,python則必須手動(dòng)構(gòu)造静汤。

6.列表處理:
python

>>> from functools import reduce
>>> reduce(lambda x,y: x+y, map(lambda x: x**2, filter(lambda x: x%2 == 0, [1,2,3,4,5,6,7,8,9])))
120

# 從haskell抄來(lái)的List comprehension
>>> sum([x**2 for x in range(1,9) if x % 2 ==0 ])
120

ruby

2.4.0 :026 > (1..9).select(&:even?).map{|x| x**2 }.reduce(&:+)
 => 120 
2.4.0 :027 > (1..9).select(&:even?).map{|x| x**2 }.sum
 => 120 

perl

> (1..9).grep({ $_ % 2 ==0 }).map({$_ ** 2}).reduce({$^a + $^b})
120
# 或者
> (1..9).grep(* %2==0).map(* **2).reduce: &[+]
120
#或
> (1..9).grep(* %2==0).map(* **2).sum

haskell

-- haskell的幾種寫(xiě)法:
Prelude> sum $ map (\x -> x^2) $ filter ((==0) . (`mod` 2)) [1..9]
120
Prelude> sum $ map (^2) $ filter ((==0) . (`mod` 2)) [1..9]
120
Prelude> sum $ map (^2) $ filter even [1..9]
120
Prelude> sum [x^2| x <- [1..9], even x]
120

-- & ( |> 管道流函數(shù)為 flip $)或者自己定義一個(gè) let (|>) x f = f x  
Prelude> :m +Data.Function
Prelude Data.Function> [1..9] & filter even & map (^2) & sum 
120

這里能明顯看出來(lái),python不使用 list comprehension 的列表處理,函數(shù)不斷堆括號(hào)調(diào)用虫给,非常繁瑣藤抡。
ruby、perl都能支持.method這樣的鏈?zhǔn)秸{(diào)用下去抹估,即便julia也提供 |> 這樣的管道形式來(lái)簡(jiǎn)化鏈?zhǔn)秸{(diào)用缠黍。
haskell盡管沒(méi)有如ocaml的 |> 函數(shù)(有類(lèi)似的 & ),但 組合 $ . 函數(shù)药蜻,依然能打造出最簡(jiǎn)潔的鏈?zhǔn)秸{(diào)用瓷式。

7.lambda
python

>>> (lambda x,y: x+y)(2,3)
5

ruby

2.4.0 :045 > ->x,y {x + y} [2,3]
 => 5 

haskell

Prelude> (\x y -> x+y) 1 2
3

perl

> (-> $x, $y { $x + $y })(2,3)
5
# 地球最強(qiáng)黑魔法的perl6,可以簡(jiǎn)寫(xiě)成這樣语泽,有沒(méi)有激動(dòng)贸典?
> (* + * )(2, 3)
5

ruby和perl簡(jiǎn)直一樣,都是 -> p {} 形式踱卵,區(qū)別在于ruby使用[]來(lái)調(diào)用(也可使用call)
雖然ruby也有 lambda {}形式聲明廊驼,但 -> {} 形式更簡(jiǎn)潔,而python無(wú)法去掉lambda這幾個(gè)字

8.Hash
python

>>> {'a': 1, 'b': 2}
{'a': 1, 'b': 2}

ruby

2.4.0 :048 > {a: 1, b: 2}
 => {:a=>1, :b=>2} 

perl

> a => 1, b => 2
(a => 1 b => 2)

ruby構(gòu)造出來(lái)的是symbol的key颊埃,區(qū)別于字符串蔬充,perl6甚至于可以省略大括號(hào)。

9.正則表達(dá)式:
python的正則是殘廢的班利,需要導(dǎo)入re包饥漫!
python

>>> import re
>>> re.match(r'.*tel:(\d+)', 'I am jesse, tel:13812345678').group(1)
'13812345678'

ruby

2.4.0 :058 > 'I am jesse, tel:13812345678'.scan(/tel:(\d+)/)
 => [["13812345678"]] 

perl

> 'I am jesse, tel:13812345678' ~~ /tel\:(\d+)/
?tel:13812345678?
 0 => ?13812345678?

python的正則差太多,不僅要導(dǎo)入包罗标,而且是字符串形式庸队,并且不能部分匹配,前面需要寫(xiě)*不然不能匹配闯割,ruby彻消,perl語(yǔ)言層面提供正則支持。

10.目錄處理:
python

>>> import os
>>> list(sorted(filter(lambda x: x[0] !='.', os.listdir('.'))))[0:5]
['Applications', 'Calibre Library', 'Desktop', 'Documents', 'Downloads']

ruby

2.4.0 :069 > Dir['*'].sort.take(5)
 => ["Applications", "Calibre Library", "Desktop", "Documents", "Downloads"] 

perl

> dir.map(*.Str).sort.grep(* !~~ /^\./ )[^5]
(Applications Calibre Library Desktop Documents Downloads)
#或者用.perl.say來(lái)查看有空格的目錄
> dir.map(*.Str).sort.grep(* !~~ /^\./ )[^5].perl.say
("Applications", "Calibre Library", "Desktop", "Documents", "Downloads")

python需要導(dǎo)入os宙拉,ruby宾尚、perl內(nèi)置支持,ruby谢澈、perl省略括號(hào)可以看到非常簡(jiǎn)潔煌贴。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市锥忿,隨后出現(xiàn)的幾起案子牛郑,更是在濱河造成了極大的恐慌,老刑警劉巖敬鬓,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淹朋,死亡現(xiàn)場(chǎng)離奇詭異笙各,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)础芍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)杈抢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人者甲,你說(shuō)我怎么就攤上這事春感。” “怎么了虏缸?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵鲫懒,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我刽辙,道長(zhǎng)窥岩,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任宰缤,我火速辦了婚禮颂翼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘慨灭。我一直安慰自己朦乏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布氧骤。 她就那樣靜靜地躺著呻疹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪筹陵。 梳的紋絲不亂的頭發(fā)上刽锤,一...
    開(kāi)封第一講書(shū)人閱讀 52,682評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音朦佩,去河邊找鬼并思。 笑死,一個(gè)胖子當(dāng)著我的面吹牛语稠,可吹牛的內(nèi)容都是我干的宋彼。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼仙畦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼输涕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起议泵,我...
    開(kāi)封第一講書(shū)人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤占贫,失蹤者是張志新(化名)和其女友劉穎桃熄,沒(méi)想到半個(gè)月后先口,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體型奥,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年碉京,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了厢汹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谐宙,死狀恐怖烫葬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情凡蜻,我是刑警寧澤搭综,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站划栓,受9級(jí)特大地震影響兑巾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜忠荞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一蒋歌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧委煤,春花似錦堂油、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至头遭,卻和暖如春寓免,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背计维。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工袜香, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鲫惶。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓蜈首,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親欠母。 傳聞我的和親對(duì)象是個(gè)殘疾皇子欢策,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Perl 6 from Ruby - Nutshell 基本語(yǔ)法 語(yǔ)句結(jié)束分號(hào) Ruby 使用換行(有幾個(gè)例外)來(lái)...
    焉知非魚(yú)閱讀 763評(píng)論 0 1
  • 一、異同對(duì)比選擇1赏淌、Python和ruby的相同點(diǎn): * 都強(qiáng)調(diào)語(yǔ)法簡(jiǎn)單踩寇,都具有更一般的表達(dá)方式。python是縮...
    沃倫蓋茨閱讀 4,151評(píng)論 2 24
  • 前言 Python的創(chuàng)始人為Guido van Rossum六水。1989年圣誕節(jié)期間俺孙,在阿姆斯特丹辣卒,Guido為了打...
    依依玖玥閱讀 3,573評(píng)論 6 37
  • 有時(shí)候我會(huì)想我做手帳是為了什么,是為了規(guī)劃我的時(shí)間睛榄,還是為了記錄生活荣茫? 我發(fā)現(xiàn)其實(shí)都不是,手帳之于我场靴,就好像硬要穿...
    南柯柯兒閱讀 186評(píng)論 1 1
  • 春暖花開(kāi)旨剥,適合舔屏圍觀滿是粉紅泡泡的人獸戀大戲咧欣。 近幾年俄羅斯除了不斷輸出美少女、美少年外轨帜,也拍了不少好電影该押,比如...
    仙貝君閱讀 914評(píng)論 0 1