最近Python又火了一把,一是我大山東省小學(xué)六年級的教材中加入了Python的內(nèi)容;二是從2018年起,Python也將成為浙江高考的內(nèi)容之一;三是計算機(jī)二級考試加入了Python科目。
早先常常看到新聞,國外4-5歲的小孩開發(fā)APP,給MM開發(fā)游戲之類的。可以看到,國外對小孩編程的教育還是比較早的,通常也會使用python來編程,因為它簡潔易用。亞馬遜上早早的就有了Python for kids和Python Bytes: An ABC Introduction to Programming for Toddlers系列面向小孩編程的叢書。Andrew Ng9月14在Quora上對問題(I have a toddler. How should she prepare herself for the job market 15 years from now in the world of AI? Should I teach her Python as soon as she is willing to learn?)回答到"Yes, do teach her to code. More importantly, cultivate in her the ability to keep learning.",后面說"I think almost everyone should learn to code in the same way that almost everyone should learn to read/write." 不過在這個回答里面,并沒看到ANdrew Ng說的自己小孩一旦會說話就要學(xué)編程。不過會加減運算應(yīng)該就可以編程了。
Python是Guido van Rossum在1989年為了打發(fā)無聊的圣誕節(jié) (假期少,也是我們?nèi)鄙賱?chuàng)造力的一個原因)時開始編寫的,到1991年第一個版本正式釋放,其設(shè)計正是順應(yīng)了計算機(jī)的快速發(fā)展,希望能有更易于編寫的語言。名字來源于英國肥皂劇《Monty python and the Flying Circus》。標(biāo)志物是大蟒蛇,雖然有些嚇人,但也慢慢越來越可愛。而且因為這個名字還受到同名成人網(wǎng)站的混淆,導(dǎo)致其主頁會間斷性打不開。
2017年,也是Python排名又上一個新臺階的一年,在ranked.com的排名中,Python是2017年最受歡迎人工智能編程語言(第二是C++)。根據(jù)Stack Overflow流量統(tǒng)計,2017年6月,Python第一次成為高收入國家Stack Overflow訪問量最大的標(biāo)簽,照此發(fā)展,到了2018年,Python肯定會成為最受歡迎的標(biāo)簽。在GitHub 2017年度報告中,Python超越Java成第二受歡迎語言。
這些排名,跟它強(qiáng)大的功能是分不開的。小到數(shù)據(jù)格式轉(zhuǎn)換,大到人工智能,都有Python的一席之地。幾大公司, Google, NASA, Facebook, Yahoo, Youtube, Quora, Dropbox, BitTorrent等等都在大量使用。著名的包有:
- 科學(xué)計算
Numpy,SciPy(也是安裝python包的攔路虎直到有了conda - 類比于R的數(shù)據(jù)框操作包 Pandas
- 可視化工具
Seaborn(配合pandas),matplotlib(類比MATLAB),plotly(交互式繪圖),ggplot(類比ggplot2) - 網(wǎng)站開發(fā)
web.py,Django,Flask - 任務(wù)調(diào)度和流程管理
Airflow(pipeline首選) - 機(jī)器學(xué)習(xí)
scikit-learn(經(jīng)典),PyML,Tensorflow(谷歌釋放),pylearn2,Orange(圖形界面的機(jī)器學(xué)習(xí)包) - 網(wǎng)頁抓取
Beautiful Soup,requests, - 可重復(fù)編程
Jupyter - 正則表達(dá)式
re
簡潔的特性和豐富的包,既可以快速上手,又可以使用更多高階功能解決問題。所以,ANSI C++ Committee member Bruce Eckel說 Life is short (You need Python)。
另外相傳:Guido van Rossum去谷歌面試,帶一份簡歷,上輸三個字I wrote Python,就不需要面試了。想不想也給自己的簡歷加點料呢。
如何學(xué)習(xí)編程
編程就像拼樂高,需要我們知道每個組分的特征以便在需要時可以使用,也需要腦袋中有個藍(lán)圖知道每一步要做什么,二者結(jié)合,就可以拼出你想要的世界。
第一步就是讀一本書,反復(fù)多讀幾遍,后面提到的簡明Python教程就適合多讀幾遍,看的懂的記住,看不懂的多看幾遍,還看不懂的就忽略。然后就可以了。生信方面可以參考生信寶典出品的Python簡明教程,經(jīng)過了培訓(xùn)的檢測。
第二步就是做題,12個生信練習(xí)題,三個維度的訓(xùn)練,作出來就會了。
如何快速學(xué)習(xí)編程
之前提到的教程是關(guān)于Python2.X系列的,到2020年P(guān)ython社區(qū)全面轉(zhuǎn)向Python 3系列 (2和3的比較見后面資源列表的帖子)。在2018年即將到來之際,也沒什么糾結(jié)的了,果斷選擇Python 3。之前的教程就不合適了,生信寶典聯(lián)合北大計算機(jī)系本科畢業(yè)后轉(zhuǎn)生信的中科院博士和301醫(yī)院臨床博士推出應(yīng)用Python處理生物信息數(shù)據(jù)和作圖培訓(xùn)班,全面升級Python 3,定位于生信入門的編程基礎(chǔ)課。不管你有沒有基礎(chǔ),都可以報名參加。
培訓(xùn)的意義在于幫你跨越從概念到行動這一步。基本的Python編程語法是了解樂高積木的每個元件,拼出什么形狀是對生信問題的分析,銜接這兩段的是如何去實踐。初學(xué)者,最困難的是轉(zhuǎn)化想法為代碼;進(jìn)階后,最困難的是有更好的想法。這些我們都涵蓋,如何入門,如何體味Python的強(qiáng)大,如何特異地應(yīng)用于生信分析。
相比于自己閱讀,培訓(xùn)提供專業(yè)的人士指導(dǎo)、集中的學(xué)習(xí)氛圍,讓你遠(yuǎn)離紛擾,靜下心來體會編程的樂趣。一旦集中精力邁進(jìn)了這個門,以后任何環(huán)境、任何碎片時間都可以利用起來提高編程能力了。所以,長按二維碼塑造一個更好的自己吧。
資源列表
- Guido van Rossum 個人主頁,查看大牛的博客和訪談 https://gvanrossum.github.io//index.html
- Beginner's guide for python https://wiki.python.org/moin/BeginnersGuide
- Python2 or 3 https://wiki.python.org/moin/Python2orPython3
- Quick and Dirty python scripts http://sebsauvage.net/python/programs.html
- ActiveState收錄的流行Python代碼段 http://code.activestate.com/recipes/langs/python/ 此鏈接可下載打包版本 http://sebsauvage.net/python/recipes.zip
- XKCD plot http://nbviewer.jupyter.org/url/jakevdp.github.com/downloads/notebooks/XKCD_plots.ipynb
- 以色列特拉維夫大學(xué)python教程 Tel-Aviv https://github.com/yoavram/CS1001.py
- 一篇pandas使用notebook http://nbviewer.jupyter.org/github/phelps-sg/python-bigdata/blob/master/src/main/ipynb/pandas.ipynb
- 有趣的Jupyter notebook ,涉及多個領(lǐng)域、包(代碼、解釋、圖形、表格都在一起,數(shù)百份教程,快速學(xué)習(xí)的首選) https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks
- 另一個詳細(xì)的教程 http://nbviewer.jupyter.org/github/lijin-THU/notes-python/blob/master/index.ipynb
- 小抄大全 http://blog.csdn.net/qazplm12_3/article/details/78782797
- Python從新手到專家 http://www.kuqin.com/docs/diveintopythonzh-cn-5.4b/html/toc/
- 哈佛大學(xué)的算法課 (前面主要是python基本使用,回答問題,老教授會給發(fā)糖,現(xiàn)在好像找不到了,不過這個鏈接給了很多好的課) https://github.com/prakhar1989/awesome-courses
- Python MOOC集錦 http://coursegraph.com/search_results/python
- 簡明python教程 (翻看3遍即可) http://www.kuqin.com/abyteofpython_cn/
- Google的Python課 https://blog.hartleybrody.com/google-python/
- 廖雪峰的Python教程 https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
- 父與子的編程 (上到88歲,下到8歲,都可以閱讀本書。它不僅以一種有趣的方式介紹了Python編程的知識,其中的最佳實踐還適用于其他編程語言的學(xué)習(xí)。) http://www.ituring.com.cn/book/1353
- 哈佛計算機(jī)基礎(chǔ)課 (基礎(chǔ)概念,加深理解) http://open.163.com/special/opencourse/cs50.html