在編程領(lǐng)域。Python語言已經(jīng)被吹得神乎其神盯蝴。很多人已經(jīng)產(chǎn)生了一種錯(cuò)覺:仿佛當(dāng)今編程世界毅哗,唯Python莫屬,其它語言皆為渣渣捧挺。
就連地產(chǎn)大佬潘石屹也發(fā)微博為Python背書虑绵,不愧兩者都姓“潘”。媒體也經(jīng)常爆料小學(xué)生學(xué)Python的例子闽烙,搞的再不學(xué)Python就被世界OUT了一樣翅睛。
一、Python為什么這么火黑竞?
Python這門語言其實(shí)1982年就已經(jīng)誕生了捕发。誕生的初衷就是成為一種功能全面,易學(xué)易用很魂,可拓展的語言扎酷。之所以到現(xiàn)在才火起來。其實(shí)也是時(shí)代所造就的遏匆。
編程語言的發(fā)展經(jīng)歷了幾個(gè)時(shí)代:機(jī)器碼時(shí)代法挨。匯編語言時(shí)代,面向過程的語言時(shí)代幅聘、面向?qū)ο蟮恼Z言時(shí)代
在機(jī)器碼和匯編語言時(shí)代坷剧,要想寫出一個(gè)程序,需要用0和1給計(jì)算機(jī)下達(dá)命令喊暖,或者語言掌握復(fù)雜的匯編指令,還需要學(xué)習(xí)計(jì)算機(jī)的底層原理撕瞧,甚至那時(shí)候計(jì)算機(jī)的內(nèi)存都是以kb為單位的陵叽,一個(gè)大的數(shù)組就能占滿內(nèi)存,編程的時(shí)候還需要考慮內(nèi)存的溢出這些問題丛版。這種方式編程效率低巩掺,而且費(fèi)腦子,所以那個(gè)時(shí)候的程序員是一個(gè)非常專業(yè)的工種页畦,門檻極高胖替。
隨著計(jì)算機(jī)硬件性能的提升,出現(xiàn)了以C語言為代表的面向過程語言。C語言可以用編程語句編寫程序独令,在編譯執(zhí)行時(shí)再由編譯器轉(zhuǎn)為匯編語言給計(jì)算機(jī)執(zhí)行端朵。這樣更符合人的思考邏輯,而且免去了記憶大量匯編語句的煩惱燃箭。
但是C語言這種面向過程的編程語言就算一個(gè)最簡單的排序算法都要自己親手實(shí)現(xiàn)冲呢。而隨著計(jì)算機(jī)科學(xué)發(fā)展的成熟,出現(xiàn)了java等面向?qū)ο蟮恼Z言招狸,將常用的算法封裝敬拓,用的時(shí)候直接調(diào)用,讓編程大大簡化裙戏。我們現(xiàn)在用的很多大型程序的后臺就是用java寫的乘凸。但是,java因?yàn)樾枰紤]系統(tǒng)的安全性和效率累榜,對程序員還是做了不少的規(guī)范营勤,雖然相對于匯編和C語言已經(jīng)大大提高了寫代碼的效率,但是依然加上了很多限制信柿。
但python不一樣冀偶,他出現(xiàn)的初衷就是快速實(shí)現(xiàn)各種功能,是最放飛自我的語言渔嚷。再加上設(shè)計(jì)了很好的包的調(diào)用機(jī)制进鸠。可以說在寫程序的過程中怎么簡單怎么來形病。所以能夠快速實(shí)現(xiàn)自己的想法客年,再加上包管理機(jī)制做的非常好,可以隨時(shí)從網(wǎng)上下載開源的Python包來復(fù)用他人的能力漠吻。
犧牲程序運(yùn)行效率換區(qū)編程效率為什么現(xiàn)在會有市場呢量瓜?一是計(jì)算機(jī)性能越來越高,大多數(shù)人普通的小程序還沒有到榨干計(jì)算機(jī)性能的時(shí)候途乃,二是新一波人工智能潮來臨绍傲,人工智能需要快速調(diào)參驗(yàn)證。就像做數(shù)學(xué)題之前需要打草稿一樣耍共,大家需要一門可以快速實(shí)現(xiàn)自己算法思路的草稿烫饼,再敏捷調(diào)整,Python完美地符合了這些要求试读。三是各路大神們迅速基于python開發(fā)了成熟的機(jī)器學(xué)習(xí)包供大家調(diào)用杠纵,迅速構(gòu)建了整個(gè)生態(tài)」澈В基于以上比藻,python的流行也是大勢所趨铝量。
二、Python真的有這么神嗎银亲?
Python雖然簡單易用慢叨、功能強(qiáng)大,但確實(shí)被捧得太高了群凶,它和其他編程語言一樣插爹,本質(zhì)上就是一個(gè)工具。工具的意思是:你可以用它來更好地放大你的能力请梢,而不是有了這個(gè)工具你就擁有了相應(yīng)的能力赠尾。同樣的一根筆,畢加索拿在手里就可以畫出世界名畫毅弧,而你拿在手里可能就只能歪歪扭扭寫幾個(gè)字气嫁;同樣的一架鋼琴,放在貝多芬面前可以彈奏出世界名曲够坐,放在你面前只能彈彈棉花寸宵。
這個(gè)工具的特點(diǎn)有兩個(gè):
1、相對其他語言來說編程時(shí)沒有那么多的限制元咙,所以入門比較容易梯影,是非專業(yè)人士與計(jì)算機(jī)交流最便捷的方式。
2庶香、幾乎各個(gè)領(lǐng)域都有現(xiàn)成的包甲棍,可以快速復(fù)用他人代碼。
然而缺點(diǎn)也很明顯:正因?yàn)閷τ诰帉懭藛T比較友好赶掖,計(jì)算機(jī)就要花更多的算力去解析感猛、編譯程序,所以運(yùn)行效率注定不會太高奢赂。
既然是工具陪白,就是為了解決問題而服務(wù)的,如果你工作生活中并不能用到它膳灶,那他對你來說就沒什么用咱士,沒必要浪費(fèi)時(shí)間去學(xué),非要讓游泳冠軍去練長跑那不就是在浪費(fèi)時(shí)間嗎轧钓?
三司致、Python能用來干什么?
目前來說聋迎,Python的主要用途有以下幾個(gè):
1、機(jī)器學(xué)習(xí)/深度學(xué)習(xí)枣耀。前面已經(jīng)說過霉晕,這也是Python的主要應(yīng)用領(lǐng)域庭再,值得一提的是,Python更像是對模型打草稿的工具牺堰,很多工業(yè)界需要落地的機(jī)器學(xué)習(xí)模型拄轻,還是需要用c++或者java重新實(shí)現(xiàn)一遍的。而且雖然Python是人工智能的必備語言伟葫,但是絕不是把大量精力投入到這門語言的學(xué)習(xí)恨搓。機(jī)器學(xué)習(xí)的基礎(chǔ)知識才是你未來最核心的競爭力。
2筏养、爬蟲斧抱。現(xiàn)在Python已經(jīng)封裝好了非常完善的爬蟲包,只需要調(diào)用這些函數(shù)就可以了渐溶,所以這條技術(shù)路線的天花板也是顯而易見的辉浦。Python爬蟲只是幫助你更方便地從互聯(lián)網(wǎng)獲取數(shù)據(jù),有了爬下來的數(shù)據(jù)之后茎辐,他們有什么意義宪郊,是否能夠產(chǎn)生業(yè)務(wù)價(jià)值才是一個(gè)公司真正關(guān)心的事情。所以這條路最終的歸屬還是要轉(zhuǎn)到數(shù)據(jù)分析或者機(jī)器學(xué)習(xí)拖陆。
3弛槐、后端開發(fā)。國內(nèi)大一點(diǎn)的互聯(lián)網(wǎng)企業(yè)依啰,只有知乎和豆瓣兩個(gè)后端完全用Python開發(fā)的乎串。其他大廠大多數(shù)都是用Java來開發(fā)后端的,最多是嵌入一些Python的腳本來輔助孔飒。所以市場上招聘Python開發(fā)程序員的崗位并沒有Java程序員多灌闺,再加上目前學(xué)的人還多,所以Python后端開發(fā)程序員找工作難度遠(yuǎn)遠(yuǎn)大于Java后端程序員坏瞄。
4桂对、軟件測試。簡單來說就是程序員開發(fā)好程序鸠匀,你來通過不同角度檢查程序有沒有毛病蕉斜。因?yàn)镻ython可以模擬人鼠標(biāo)鍵盤的各種操作,而且也可以快速生成隨機(jī)數(shù)據(jù)缀棍,所以是極好的自動(dòng)化測試工具宅此。不過這個(gè)工作難度也不是很高,天花板較低爬范。
5父腕、編寫自動(dòng)化腳本。這個(gè)方面涉及的東西就很多了青瀑,如果Python應(yīng)用得當(dāng)璧亮,會顯著提高你的工作效率萧诫。比如自動(dòng)化處理excel報(bào)表(相當(dāng)于實(shí)現(xiàn)很多excel的函數(shù)功能,但是比excel函數(shù)更靈活)枝嘶、開發(fā)一些有趣的小程序帘饶、小插件等。知乎上搜索“Python可以用來干什么”群扶,往往會看到各路大神給出的各種小應(yīng)用及刻。但是這方面的應(yīng)用一般給公司產(chǎn)出不了很多明顯的價(jià)值,更多是極客們的自娛自樂竞阐,企業(yè)級項(xiàng)目還是用java用得居多缴饭。
四、是否需要學(xué)習(xí)Python
明確了這個(gè)工具能做什么馁菜,是否需要學(xué)習(xí)Python茴扁,也許你心里已經(jīng)有了答案:
如果你有數(shù)學(xué)/統(tǒng)計(jì)學(xué)或者其他工科背景。沒有編程經(jīng)驗(yàn)汪疮,而又有意向進(jìn)入人工智能領(lǐng)域峭火,那么學(xué)Pyhon來放大你的數(shù)學(xué)能力是完全沒有問題的。
如果你是個(gè)需要經(jīng)常處理excel的表哥表姐智嚷,而且有些需求用excel的函數(shù)還沒有辦法實(shí)現(xiàn)卖丸,可以考慮用Python提高你的數(shù)據(jù)處理效率。
如果你是個(gè)非常有創(chuàng)意的人盏道,借助于Python的力量稍浆,你可以將自己的創(chuàng)意變成程序在計(jì)算機(jī)上實(shí)現(xiàn),放在市場上看看猜嘱,運(yùn)氣好了衅枫,說不定就誕生個(gè)價(jià)值千萬的項(xiàng)目呢。
如果你是剛進(jìn)入計(jì)算機(jī)專業(yè)的學(xué)生朗伶,還是建議主要學(xué)java(當(dāng)然也可以先用Python來入門)弦撩,一方面,精通java之后论皆,python順帶就學(xué)會了益楼。另一方面,要想真正成為一名合格的程序員点晴,還需要學(xué)算法感凤,數(shù)據(jù)結(jié)構(gòu),計(jì)算機(jī)系統(tǒng)等知識粒督,很多相關(guān)領(lǐng)域經(jīng)典書籍都是用java或者c寫的陪竿,用相同的語言便于照著書上自己實(shí)踐。先打好基礎(chǔ)屠橄,以后轉(zhuǎn)型機(jī)器學(xué)習(xí)也會方便很多萨惑。
如果你已經(jīng)是一名專業(yè)的后端開發(fā)程序員捐康,而且也沒有隨大流轉(zhuǎn)行人工智能領(lǐng)域的意思,只需要在空閑時(shí)間去看看Python的特性庸蔼,說不定對自己的開發(fā)有所幫助。
如果你特別好奇編程這個(gè)神奇的世界贮匕〗憬觯或者是python這門神奇的語言,也可以沒事的時(shí)候去學(xué)習(xí)一下刻盐,說不定會開拓一個(gè)神奇的世界掏膏。
如果你沒有以上這些需求,就算python吹得再神敦锌,對你也是沒有用的馒疹。即使它是把屠龍寶刀,你拿著他去切菜也完全不如找一把普通的菜刀好使乙墙。
最后颖变,編程語言只是一門工具,它不代表你的能力听想,只代表你選擇的方向腥刹,而方向的選擇恰恰并沒有絕對的對和錯(cuò)。