- A+
【菜鸟学Python导读】已经没有什么能够阻挡Python了。根据最近火爆朋友圈的一则消息,Python已经进入山东省小学教材。Python这几年的火热,离不开人工智能和机器学习。根据国务院《新一代人工智能发展规划的通知》,可以想见人工智能教育往低幼渗透的例子只会越来越多。小学生学Python是培养编程兴趣和思维,为了你自己的百万年薪和发展前景,或许你才是最该学Python的人。
如果说2017年有一门最火“外语”,那一定是Python。现在,Python的这把火已经烧到了程序员的圈子外。
Python进入山东小学教材,小学生开始学Python
据“海码爸爸”公号爆料,从2018年起,浙江省信息技术教材将启用Python,放弃VB。同时,这一改动也意味着Python将成为浙江高考内容之一。
不仅如此,据说北京和山东也确定要把Python编程基础纳入信息技术课程和高考的内容体系。
更有前瞻性的是,山东省最新出版的小学信息技术教材,在六年级课本中也加入了Python相关内容——终于,小学生也开始学Python!
如此前卫,这是要引领全球初等教育的节奏?!
在小学开设Python编程课,更多是培养兴趣和编程思维
估计很多人的疑问是,要不要这么夸张,C、C++、Java、Python的编程,都是以前大学才开的专业课程,小学生乃至婴幼儿能懂吗?
这个你放心,不是还有专门给婴儿讲解量子力学的书籍吗?
深圳大学副研究员陈飞在接受新智元采访时表示,在小学开设Python编程课,更多是培养兴趣,培养孩子的编程思维。“Python适合在小学五年级以后开设,那时候学生已经掌握了加减乘除混合运算,”陈飞说:“Python课程可以让学生觉得计算机很神奇,引发他们的兴趣。”
因此,与其说学编程语言,不如说培养孩子发现问题、思考问题、解决问题的能力,小到做数学应用题,大到职业生涯规划,都涉及到编程思维。
针对小学Python编程课程,陈飞的建议是,可以看学生对什么问题感兴趣,然后用简单的程序语言来实现,以动手和乐趣为主。
吴恩达:写代码就跟识字一样,将来人机交流越来越重要,人人都该会编程
实际上,关于学不学Python,吴恩达早有先见之明——在今年9月份回答Quora提问时,有网友问:“我女儿刚刚学会走路……我是否该在她会识字后就立马教她Python?”
吴恩达的回答非常肯定:是的,一定要教她写代码(code)!更重要的是,教会她持续学习的能力。
吴恩达说,他认为(差不多)每个人都应该学习编码。曾经我们以为不需要每个人都会读书写字,但随着人们读写能力的提高,人与人之间的沟通变得更好。如今,我们也处于一个只有很少人能编码的时代。但随着人工智能的发展,人机交流变得越来越重要,编码能力将成为可以预见的未来最深层次的人机交流的基础。所以,吴恩达认为,几乎每个人都应该学习编程,就像几乎每个人都该学习读写一样。
所以,学习Python,做数据分析,跟语文、数学、游泳、开车一样,是通用技能,现在打好基础,以后学什么都轻松。
在美国,连婴幼儿都有Python编程书
回想一下,微软创始人比尔·盖茨13岁学习编程,Facebook创始人扎克伯格11岁开始学习编程……
时代发展日新月异,小学生学编程早已不是新鲜事。现在,很多北京上海的家长开始给孩子做编程启蒙,各种编程培训机构也如火如荼。在美国,就连婴幼儿也有专门的编程童书。
在去年美国一次计算机科学教育周开幕日活动中,时任美国总统的奥巴马亲自上阵,给中小学生示范计算机编程。白宫认为,计算机科学普及教育是美国未来几十年保持创新优势的关键举措之一。
Python究竟是一门怎样的语言?
说了这么多,可能有读者不太了解Python。Python是一种广泛使用的高级编程语言,属于通用型编程语言,由Guido van Rossum 创造。实际上Python也不年轻了,它的第一版发布于1991年。由于可扩展性,适应性和易于学习,Python成为近年来增长最快的编程语言之一。
作为一种解释型语言,Python 的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词)。因此也有一说,认为Python是世界上最美的语言。
相比 C++或Java,Python让开发者能够用更少的代码表达想法。不管是小型还是大型程序,该语言都试图让程序的结构清晰明了。
Python虚拟机本身几乎可以在所有的操作系统中运行。Python可以用于Web程序、GUI开发和操作系统、科学建模。YouTube、Google、Yahoo!、NASA都在内部大量地使用Python。
Python的另一个优势是快速原型设计。在Python中,几乎所有的想法都可以通过30-40行代码快速验证。
Python这几年火,离不开人工智能和机器学习:总结5大爆红原因
在ranked.com的排名中,Python是2017年最受欢迎人工智能编程语言(第二是C++,R并未上榜)。
根据Stack Overflow流量统计,2017年6月,Python第一次成为高收入国家Stack Overflow访问量最大的标签,照此发展,到了2018年,Python肯定会成为最受欢迎的标签。
在GitHub 2017年度报告中,Python超越Java成第二受欢迎语言。
所有这些“刷榜”,都离不开最近人工智能尤其是机器学习的火热。Python被誉为最好人工智能的语言,因为:
-
在数据科学和AI中占据主导地位;
-
拥有优质的文档和丰富的库,对于科学用途的广泛编程任务都很有用;
-
设计非常好,快速,坚固,可移植,可扩展;
-
开源,而且拥有一个健康、活跃、支持度高的社区
-
有一些很棒的公司赞助商,YouTube、谷歌、Yahoo!、NASA都在内部大量地使用Python,尤其是谷歌;Facebook开源PyTorch后也更有利于Python的推广
Python的哲学——你别说,这门语言真的很不错
Python的设计哲学是“优雅”、“明确”、“简单”。Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”,也因此它和拥有明显个人风格的其他语言很不一样。下面这些准则被称为“Python格言”。
美比丑要好。
显式比隐式好。
简单比复杂好(complex)。
复杂比繁复好(complicated)。
平面比嵌套好。
稀疏比密集好。
可读性很重要。
特例不足以打破规则。
但实用胜过一味追求统一(purity)。
错误一定要通报。
除非故意不出声。
有歧义的时候,一定不要猜。
应该有一个——而且最好只有一个——明显的方法来实现。
尽管这种方式一开始可能不明显。
现在比永远不做要好。
但永远不做往往比现在正确要好。
如果做起来很难解释,那么这个想法不好。
如果做起来很容易解释,这个想法可能不错。
命名空间很好,让我们做更多的命名空间!
编程语言有很多,但并非每种的需求或工资都相同:人生苦短,快学Python
2017年7月,国务院印发《新一代人工智能发展规划》,指出在中小学设置人工智能相关课程,逐步推广编程教育。诸如机器人、数据挖掘、计算机视觉、无人驾驶等“人工智能 +”相关各类课程在人大附中蓬勃开展,看了人大附中高中生学习Python赢得全国数据挖掘竞赛一等奖的例子,实在激动人心。
教育要这么搞,继续不要停。
最后,关心孩子前,关心你自己——教育部考试中心最新发布的全国计算机等级考试(NCRE)体系调整通知,新增“Python 语言程序设计”科目(代码:66),注意,版本是Python 3.5.2。
编程语言有很多,但并非每一种的需求或工资都相同。
文章后面给大家分享一个一般Python开发面试中可能会问到的大部分问题
python语法以及其他基础部分
可变与不可变类型;
浅拷贝与深拷贝的实现方式、区别;deepcopy如果你来设计,如何实现;
__new__() 与 __init__()
的区别;
你知道几种设计模式;
编码和解码你了解过么;
列表推导list comprehension和生成器的优劣;
什么是装饰器;如果想在函数之后进行装饰,应该怎么做;
手写个使用装饰器实现的单例模式;
使用装饰器的单例和使用其他方法的单例,在后续使用中,有何区别;
手写:正则邮箱地址;
介绍下垃圾回收:引用计数/分代回收/孤立引用环;
多进程与多线程的区别;CPU密集型适合用什么;
进程通信的方式有几种;
介绍下协程,为何比线程还快;
range和xrange的区别(他妹的我学的py3…);
由于我有C/C++背景,因此要求用C来手写:将IP地址字符串(比如“172.0.0.1”)转为32位二进制数的函数。
算法排序部分
手写快排;堆排;几种常用排序的算法复杂度是多少;快排平均复杂度多少,最坏情况如何优化;
手写:已知一个长度n的无序列表,元素均是数字,要求把所有间隔为d的组合找出来,你写的解法算法复杂度多少;
手写:一个列表A=[A1,A2,…,An],要求把列表中所有的组合情况打印出来;
手写:用一行python写出1+2+3+…+10**8 ;
手写python:用递归的方式判断字符串是否为回文;
单向链表长度未知,如何判断其中是否有环;
单向链表如何使用快速排序算法进行排序;
手写:一个长度n的无序数字元素列表,如何求中位数,如何尽快的估算中位数,你的算法复杂度是多少;
如何遍历一个内部未知的文件夹(两种树的优先遍历方式)
网络基础部分
TCP/IP分别在模型的哪一层;
socket长连接是什么意思;
select和epoll你了解么,区别在哪;
TCP UDP区别;三次握手四次挥手讲一下;
TIME_WAIT过多是因为什么;
http一次连接的全过程:你来说下从用户发起request——到用户接收到response;
http连接方式。get和post的区别,你还了解其他的方式么;
restful你知道么;
状态码你知道多少,比如200/403/404/504等等;
数据库部分
MySQL锁有几种;死锁是怎么产生的;
为何,以及如何分区、分表;
MySQL的char varchar text的区别;
了解join么,有几种,有何区别,A LEFT JOIN B,查询的结果中,B没有的那部分是如何显示的(NULL);
索引类型有几种,BTree索引和hash索引的区别(我没答上来这俩在磁盘结构上的区别);
手写:如何对查询命令进行优化;
NoSQL了解么,和关系数据库的区别;redis有几种常用存储类型;
Linux部分
讲一下你常用的Linux/git命令和作用;
查看当前进程是用什么命令,除了文件相关的操作外,你平时还有什么操作命令;
(因为我本人Linux本身就很水,只会基本的操作,所以这部分面试官也基本没怎么问。。反正问了就大眼瞪小眼呗)
关注菜鸟学Python头条号,私信:笔记。领取入门教程和系统学习框架图!