最近Python又火了一把,一是我大山东省小学六年级的教材中加入了Python的内容;二是从2018年起,Python也将成为浙江高考的内容之一;三是计算机二级考试加入了Python科目。
早先常常看到新闻,国外4-5岁的小孩开发APP,给MM开发游戏之类的。可以看到,国外对小孩编程的教育还是比较早的,通常也会使用python来编程,因为它简洁易用。亚马逊上早早的就有了Python for kids
和Python Bytes: An ABC Introduction to Programming for Toddlers
系列面向小孩编程的丛书。Andrew Ng**9月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说的自己小孩一旦会说话就要学编程。不过会加减运算应该就可以编程了。
Python是Guido van Rossum在1989年为了打发无聊的圣诞节 (假期少,也是我们缺少创造力的一个原因)时开始编写的,到1991年第一个版本正式释放,其设计正是顺应了计算机的快速发展,希望能有更易于编写的语言。名字来源于英国肥皂剧《Monty python and the Flying Circus》。标志物是大蟒蛇,虽然有些吓人,但也慢慢越来越可爱。而且因为这个名字还受到同名成人网站的混淆,导致其主页会间断性打不开。
2017年,也是Python排名又上一个新台阶的一年,在ranked.com的排名中,Python是2017年最受欢迎人工智能编程语言(第二是C++)。根据Stack Overflow流量统计,2017年6月,Python第一次成为高收入国家Stack Overflow访问量最大的标签,照此发展,到了2018年,Python肯定会成为最受欢迎的标签。在GitHub 2017年度报告中,Python超越Java成第二受欢迎语言。
这些排名,跟它强大的功能是分不开的。小到数据格式转换,大到人工智能,都有Python的一席之地。几大公司, Google, NASA, Facebook, Yahoo, Youtube, Quora, Dropbox, BitTorrent等等都在大量使用。著名的包有:
- 科学计算
Numpy
,SciPy
(也是安装python包的拦路虎直到有了conda - 类比于R的数据框操作包 Pandas
- 可视化工具
Seaborn
(配合pandas),matplotlib
(类比MATLAB),plotly
(交互式绘图),ggplot
(类比ggplot2) - 网站开发
web.py
,Django
,Flask
- 任务调度和流程管理
Airflow
(pipeline首选) - 机器学习
scikit-learn
(经典),PyML
,Tensorflow
(谷歌释放),pylearn2
,Orange
(图形界面的机器学习包) - 网页抓取
Beautiful Soup
,requests
, - 可重复编程
Jupyter
- 正则表达式
re
简洁的特性和丰富的包,既可以快速上手,又可以使用更多高阶功能解决问题。所以,ANSI C++ Committee member Bruce Eckel说 Life is short (You need Python)。
另外相传:Guido van Rossum去谷歌面试,带一份简历,上输三个字I wrote Python
,就不需要面试了。想不想也给自己的简历加点料呢。
如何学习编程
编程就像拼乐高,需要我们知道每个组分的特征以便在需要时可以使用,也需要脑袋中有个蓝图知道每一步要做什么,二者结合,就可以拼出你想要的世界。
第一步就是读一本书,反复多读几遍,后面提到的简明Python教程就适合多读几遍,看的懂的记住,看不懂的多看几遍,还看不懂的就忽略。然后就可以了。生信方面可以参考生信宝典出品的Python简明教程,经过了培训的检测。
第二步就是做题,12个生信练习题,三个维度的训练,作出来就会了。
如何快速学习编程
之前提到的教程是关于Python2.X系列的,到2020年Python社区全面转向Python 3系列 (2和3的比较见后面资源列表的帖子)。在2018年即将到来之际,也没什么纠结的了,果断选择Python 3。之前的教程就不合适了,生信宝典联合北大计算机系本科毕业后转生信的中科院博士和301医院临床博士推出应用Python处理生物信息数据和作图培训班,全面升级Python 3,定位于生信入门的编程基础课。不管你有没有基础,都可以报名参加。
培训的意义在于帮你跨越从概念到行动这一步。基本的Python编程语法是了解乐高积木的每个元件,拼出什么形状是对生信问题的分析,衔接这两段的是如何去实践。初学者,最困难的是转化想法为代码;进阶后,最困难的是有更好的想法。这些我们都涵盖,如何入门,如何体味Python的强大,如何特异地应用于生信分析。
相比于自己阅读,培训提供专业的人士指导、集中的学习氛围,让你远离纷扰,静下心来体会编程的乐趣。一旦集中精力迈进了这个门,以后任何环境、任何碎片时间都可以利用起来提高编程能力了。所以,长按二维码塑造一个更好的自己吧。
资源列表
- 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
- 以色列特拉维夫大学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 ,涉及多个领域、包(代码、解释、图形、表格都在一起,数百份教程,快速学习的首选) https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks
- 另一个详细的教程 http://nbviewer.jupyter.org/github/lijin-THU/notes-python/blob/master/index.ipynb
- 小抄大全
- Python从新手到专家 http://www.kuqin.com/docs/diveintopythonzh-cn-5.4b/html/toc/
- 哈佛大学的算法课 (前面主要是python基本使用,回答问题,老教授会给发糖,现在好像找不到了,不过这个链接给了很多好的课) 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编程的知识,其中的最佳实践还适用于其他编程语言的学习。) http://www.ituring.com.cn/book/1353
- 哈佛计算机基础课 (基础概念,加深理解) http://open.163.com/special/opencourse/cs50.html