小学生都学Python了,你还不知道怎么开始
最近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个生信练习题,三个维度的训练,做出来就会了。
如何快速学习编程
基本的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
- 小抄大全 http://blog.csdn.net/qazplm12_3/article/details/78782797
- 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
- Elasticsearch Cluster 安装与配置
- 数据库结构版本控制
- 【Golang语言社区】LollipopGo框架之商城项目--路由设置
- "LollipopGo/library/lollipop/common" 测试3
- "LollipopGo/library/lollipop/common" 测试2
- Golang语言并发技术详解
- Golang语言社区--Go基础课程第一节聊聊Go语言
- Spring boot with ELK(Elasticsearch + Logstash + Kibana)
- 数据库与缓存
- 通过 Proxy 汉化 restful 接口
- 学习笔记CB005:关键词、语料提取
- Eclipse油藏模型解析程序
- DBA生存警示:保护现场不要让事情更糟
- 爬虫快速入门
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- leetcode链表之回文链表
- Docsify 安装
- Docsify 初始化文件夹
- ELK 日志系统集成 Skywalking 调用链 ID
- ChartCenter ——为您的K8s之旅保驾护航v
- leetcode链表之删除链表的节点
- iOS打包的那一些事情
- 腾讯云服务器(CentOS 7、Tencent Linux)手动搭建LNMP环境(linux+Nginx+Mariadb+PHP)
- iOS技术面试题及答案
- 虽然现在有可以去码的软件了,可视频是如何自动跟踪打码的?
- 2020-09-12:手撕代码:最小公倍数,复杂度多少?
- Mac App推荐
- 美团面试问ThreadLocal,学妹一口气给他说了四种!
- BFE.dev前端刷题#108. 用队列(Queue)实现栈(Stack)
- Kafka消费过程关键源码解析