有位C++的大神在講課時(shí)提到了Python, 聽(tīng)課的同學(xué)問(wèn)道: 我是不是需要學(xué)習(xí)一下Python?
大神說(shuō):“Python 這么簡(jiǎn)單還用學(xué)嗎? ”
在大神的眼中, 像Python這樣簡(jiǎn)單的語(yǔ)言, 看半天就應(yīng)該能上手編程了, 根本不用戰(zhàn)戰(zhàn)兢兢地抱著一本大厚書(shū)去啃。
大神是有資格這么說(shuō),畢竟C++是一門(mén)非常復(fù)雜的語(yǔ)言, 這么復(fù)雜的都能搞定, 其他的自然不在話(huà)下。
從純語(yǔ)言的角度來(lái)看,這么說(shuō)完全是沒(méi)有問(wèn)題的,我相信很多人,如果你學(xué)會(huì)了一門(mén)編程語(yǔ)言,開(kāi)始學(xué)第二門(mén)的時(shí)候,都會(huì)有類(lèi)似的感覺(jué)。
比如你學(xué)會(huì)了Java, 然后開(kāi)始看Python, 會(huì)發(fā)現(xiàn)有很多相似之處。
例如: 編程中最常用的一些數(shù)據(jù)結(jié)構(gòu)非常相像:
PythonJava
String
String
List List
ArrayList, LinkedList 等
DictionaryMap
HashMap, TreeMap,LinkedHashMap等
SetSet
HashSet, TreeSet, LinkedHashSet 等
流程控制語(yǔ)句也很像,無(wú)非都是if...else , for , while 等等。
面向?qū)ο蟮木幊潭家蓄?lèi)和對(duì)象,成員變量,成員方法,都要有封裝、繼承、多態(tài)。
文件IO也是如此,無(wú)非就是打開(kāi)一個(gè)文件,定位到某個(gè)地方進(jìn)行讀寫(xiě)操作,關(guān)閉文件。
每個(gè)高級(jí)語(yǔ)言都支持多線(xiàn)程編程, Python也不例外,可以輕松地創(chuàng)建線(xiàn)程,線(xiàn)程之間也有同步和互斥, 也使用ThreadLocal來(lái)保存每個(gè)線(xiàn)程獨(dú)有的數(shù)據(jù), 名稱(chēng)都和Java一樣。
網(wǎng)絡(luò)編程無(wú)非就是Socket, XML解析就是DOM和SAX, 郵件發(fā)送使用SMTP, POP3......
所以有了一門(mén)語(yǔ)言相對(duì)復(fù)雜的語(yǔ)言做基礎(chǔ)(如Java), 再去學(xué)習(xí)Python, 確實(shí)非常容易。 半天時(shí)間就能把Python看個(gè)差不多,然后直接就可以寫(xiě)程序了, 在寫(xiě)的過(guò)程中如果哪個(gè)地方不清楚了, API接口名稱(chēng)忘記了(尤其是那些細(xì)微差別的地方),去翻參考書(shū)、去網(wǎng)上搜,很快搞定。
剛開(kāi)始編程的時(shí)候比較慢, 等你熟練了以后,會(huì)越來(lái)越快。
一門(mén)高級(jí)語(yǔ)言的基礎(chǔ)概念其實(shí)就那么多:數(shù)據(jù)類(lèi)型、集合、流程控制、面向?qū)ο?、文件、Socket、XML、JSON 等, 你從某一門(mén)語(yǔ)言中學(xué)會(huì)了,切換到另外一門(mén),所要變換的無(wú)非就是基本的語(yǔ)法、API接口、慣用法和最佳實(shí)踐。
可能有人要說(shuō)了,這些都是基礎(chǔ)的東西,只能讓我寫(xiě)點(diǎn)小程序,做不了什么大事啊。
沒(méi)錯(cuò),這些東西都是基礎(chǔ),想做出有用的程序,還必須得學(xué)會(huì)使用類(lèi)庫(kù)和框架。但是不同類(lèi)庫(kù)和框架所依賴(lài)的基礎(chǔ)知識(shí)和概念也是相通的。
就拿Web編程來(lái)說(shuō),必須要掌握幾個(gè)基礎(chǔ)知識(shí)是一樣的:HTTP協(xié)議,HTML, Javascript, CSS,SQL。 然后不同語(yǔ)言,不同框架要解決的問(wèn)題也是一樣的:
URL 和 代碼的映射
數(shù)據(jù)的驗(yàn)證、轉(zhuǎn)換和綁定
Web安全
數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn), O/R Mapping
用什么技術(shù)來(lái)生成Web頁(yè)面?
如何把對(duì)象變成XML或者JSON字符串?
通過(guò)一門(mén)語(yǔ)言,把這些基本原理掌握了,換到另外一個(gè)語(yǔ)言和框架,真的不難 。
如果再向上走,進(jìn)入設(shè)計(jì)層面,把業(yè)務(wù)需求抽象成各種概念,設(shè)計(jì)高內(nèi)聚、低耦合的模塊,那和具體的語(yǔ)言關(guān)聯(lián)度就更小了。
回到文章最初的話(huà)題,我其實(shí)想表達(dá)的是:不用著急去追逐那些熱門(mén)的編程語(yǔ)言,只要把一門(mén)語(yǔ)言學(xué)精了,把一些基礎(chǔ)概念和基礎(chǔ)知識(shí)掌握了,再去學(xué)別的,真的不難, 就是一個(gè)知不知道,熟不熟練的問(wèn)題。
特別要注意一些無(wú)良的機(jī)構(gòu),掛羊頭賣(mài)狗肉,什么火熱就培訓(xùn)什么,人工智能, VR, 物聯(lián)網(wǎng),云計(jì)算, 吸引人交錢(qián)入坑,真的開(kāi)始學(xué)了發(fā)現(xiàn)只是學(xué)習(xí)一下Python而已。當(dāng)然了高薪就業(yè)是每個(gè)人的夢(mèng)想,
傳智播客的python培訓(xùn)課程結(jié)合時(shí)下熱門(mén)的人工智能技術(shù),讓每個(gè)人成為實(shí)戰(zhàn)程序員。自然高薪。