开始前的准备

什么是python

一句话解释就是:Python是一门面向对象、动态解释的高级编程语言。

面向对象指的就是万物皆“对象”,这个在高级语言代码封装中广泛应用,如果对arduino熟悉的同学常用的各种Class类也是面向对象的封装。例如一个苹果可以理解为一个对象,它的属性包括尺寸、重量和色泽等等;它的方法有从树上摘下来(生产一个苹果),方法也可以是吃掉或者拿来砸别人。当然砸人的时候你需要给这个方法输入一个参数就是目标人物,这时候的目标人物又是一个对象。

动态解释指的是没有编译过程,你可以像跟一个机器人说活一样使用python语言。熟悉Arduino的同学肯定被各种编译报错,库找不到参数对不上等问题困扰过;而且Arduino每次写完程序都需要重新编译和重新烧录到目标,这个过程从几十秒到几分钟不等。

Python最大特点就是其简洁性,素有“人生苦短,我用python”之称。Python目前广泛用于各种服务器和科学计算场合,特别是近期人工智能的两大阵营(Google的TensorFlow和Facebook的Caffe)都使用python作为开发语言,使得Python热度继续升温。大家可以从github的语言活跃度看到python已经稳稳站住第二的位置。

../_images/c1_01.png

为什么要学习python

一个非常现实的问题就是,未来机器人和人工智能的时代如果最简单的程序思维都没有则无疑跟文盲一样,也基本没办法跟机器人和AI做交流。以目前的技术水平来看,如果要让机器人跟一个仆人一样智能短期内不可能实现。但是如果人能懂一点点机器人的思考方式或者程序执行方法,那个会极大地降低人类繁复的重复劳动,并且未来大部分繁复劳作极大可能被机器人或AI取代。另外一个非常现实的问题就是以作者接近10年的研发工程师经验,研发工程师在普遍企业内都享受着极高的待遇和尊重,当然加班严重是目前人才严重短缺的副作用,后面机器越来越智能会改善的。

可能还有同学看了第一名是JavaScript额,为啥不从js开始呢?的确现在前端技术火的一塌糊涂,小喵家的kittenblock、app还有网站都是拿js写的。但是js对初学者并不如python友好,而且js深入到某一个阶段会有一个极大的技术瓶颈(各种js框架和异步调用陷阱)。而且现在复杂的js程序都存在打包这个流程,动态解析基本名存实亡。而经过我们实际的调研和测试,python的简洁特性完全可以让一个8~10岁的小朋友上手,并且也不存在学到半年后提高碰到一些他们当前知识面无法理解和跨域的瓶颈。当他到上大学的时候已经有了接近10年的python开发经验,而其他同学才刚刚将对电脑的认识从一台游戏机转变为一个工具。

为什么使用Kittenblock学习python

Kittenblock有着友好的用户环境,内置了python3.6的执行环境,安装完软件就配置完成。

Kittenblock可以使用python操作舞台上所有元素,你甚至可以完全使用python编写出跟scratch一样或者更加炫酷的项目。并且同类软件中第一个实现了从图形化方块转译成python代码的功能。

python最开始为面向服务器开发,即使到现在为止都没有比较简单的图形化解决方案。比较常用的有tkinter和pyqt,但是这两者都需要复杂的配置和后编译处理流程,初学者很可能踩到坑里面。实际研发就是各种花式踩坑,如果经验不足的初学者很可能就会踩到坑里面再也爬不出来了,但是每一次从坑里面爬出来都是对你技术的一次极大提高。

Kittenblock支持Micropython

Micropython是运行在微处理器上的python语言。学习过Arduino的同学可能会乐于制作各种有趣的小项目,这些项目使用micropython也基本能实现,毕竟兴趣是最好的老师,一旦失去兴趣则编程会变成异常痛苦的过程。目前kittenblock目前支持microbit,并可以将完整的scratch图形化程序翻译成micropython代码并烧录到microbit上。同时也支持‘动态解释’的玩法,也就是不经过烧录执行scratch图形化方块。

下载和安装Kittenblock

Kittenblock最新版本可以在我们的社区论坛下载:

小喵家社区 Kittenblock最新版本

安装完成后界面如下

../_images/c1_02.png

从下一章我们从Micropython和Microbit开始介绍python的玩法,如果手头还没有microbit欢迎光临我们网店多多支持

小喵家@Taobao

如果在后续教程中碰到任何问题都可以加我们的qq群(568084773)求助。