-
少儿编程学习必须要先了解的编程思维!(二)
大脑中的知识是建立在我们的重要体验的基础上的,它代表了我们对这个世界的认识的抽象模型,可以帮助我们更好的理解我们所处的世界。 学习就是抽象建模的过程(学习是探索并建立各个领域的知识模型),编程也是抽象建模的过程(编程也是找到各个领域的知识模型并将其数字化,也就是说这个模型必须能够运行,还要被很多人使用来接受检验)。所以编程是在思考事物的本质。 并且上面我们通过算术模型和拼音模型大概体会到建模其实可以包含非常丰富的内容,比如如何完善我们的模型,对比较复杂的模型如何分层等等。我们将在后面的章节具体去学习这些内容。 下面我们以一个更常见的建模的例子来说明上面的道理。 大家看下面这张图里是什么? 火箭模型 如果你说是火箭。这并不是个真的火箭。 那为什么你要说这是火箭呢?是不是因为它满足了你大脑里的关于火箭的模型呢?比如有尖尖的头,圆柱形的身体,和几个作为支架的脚。这个可能是我们大脑里里关于火箭的模型。正是因为有这样一个模型,我们看到这种图片,我们可以识别出火箭。 这个例子说明,抽象建模在我们生活中是无处不在的。抽象建模就是我们俗称的“知识”。 编程这种建模是可被验证的,因为必须能够执行,并且要被很多人使用。 生命中心 这里我们引入“生命中心”的概念。简单的讲,我们能够识别出火箭这个模型,是因为上面这个模型里包含了几个构成火箭模型的生命中心,比如尖头,身体,支架。有了这几个生命中心,我们就可以识别出火箭这个生命体。 在算术模型里,自然数和加减乘除就是我们的生命中心。在拼音模型里,26个字母是最基本的生命中心,在其之上的声母韵母是更大的生命中心。 Paracraft3D动画编程界面 “生命中心”是克里斯多夫亚历山大在其著作“Nature of Order”里提出的概念。克里斯多夫亚历山大认为我们周遭的所有我们可以识别的东西都有生命,包含多个生命中心,其生命中心的组成结构决定了生命体的生命度。 当然克里斯多夫亚历山大主要是把这些概念用在建筑学上。克里斯多夫亚历山大深刻影响了软件业的发展,他在1960-1970年代提出模式语言,直接催生了对象化编程和设计模式的发展,包括后来的敏捷编程。 但当在一次公众演讲中被问及如何看待他自己在软件业的巨大影响时,他却说,软件从业者很大程度上并没能正确理解他所说的概念。简单的说,他认为软件业用他的概念确实有利于软件人士彼此的思想的沟通,但是目前的使用仅此而已,停留在简单的工具和方法学上,而缺少对生命本质的理解,从而无法从整体上去连接一切,在各个层面各个领域做整体系统的阐述与运用。 本书中使用的软件编程的抽象建模的分析方法,与软件行业使用的不少方法有类似或相通的地方,但又有不同。 我们希望通过本书的尝试,能够建立起软件业需要的对克里斯多夫亚历山大的理论正确的理解。如克里斯多夫亚历山大在”Nature of Order”里所说,传统西方科学自笛卡尔以来,刻意追求主客体的分离,不让主观去影响客观的观察。 帕拉卡3D动画编程 但主观其实也是客观的,客观本质也是主观的。科学的进一步发展,就是要突破这种机械的对立。这种对立在软件业的发展中也有很多的体现,简单的说,为什么编程对普罗大众来说这么难学难懂,就是这种机械对立的一个结果。而我们在本书里所介绍的方法,就是在生命体系的各个层次的建立上,有(创造性的)人的主动的参与,去感知在每个层面需要建立的生命中心,去构建一个富有生命的生命体。 软件编程里需要学习的方法,和其他各个行业,只要是面对复杂系统的,都是一样的。我们希望通过对“生命中心”概念的正确运用,我们能够把软件编程真正普及开来。 根据相似性原理,表面复杂的系统都是由最简单的基本单元组成的。比如生物体除了病毒,都是由细胞组成的,不管他们的形态和生命特征多么不同。再比如整个宇宙的组成其实就是一些基本粒子。 我们所看到的一切,就是来自于这些简单的基本单元的不断变化和组合。我们需要的是找到这些最基本的单元,以及它们是组合与变化的规律。而这些基本的单元以及其上的大的单元,就是我们要寻找的生命中心。 同样的基于相似性原理,所有的事物都是相连的,比如知识是广泛相连的。正是因为生命中心不停的变化组合成不同的事物,才形成了各种事物之间的相似性。 我们将在后面的章节里让大家逐渐掌握在抽象建模中如何一层层的识别出各层的生命中心,直至能够转化成指令代码的细节。 编程的抽象模型 编程作为我们建模的数字工具,其本身又有其抽象模型。那么编程又是怎样的抽象模型呢? 编程是在抽象建模。大家学习编程就是学习如何去给不同的事情去抽象建模。 下面我们结合Paracraft 这个3D世界里的编程来了解编程的抽象模型是什么样子的。 Paracraft3D动画编程 首先是指令。编程就是通过一些指令去操控一些东西。在Paracraft 的世界里,我们有指令可以让角色移动,向前走,旋转,说话等等。 有一类指令是跟事件相关的,用来响应外部或内部的事件,比如键盘被按下或者鼠标被按下等等。 在paracraft 里有一类事件是广播消息,发出的消息所有的角色都能接收到,需要响应该消息的角色可以去响应。 然后就是这些指令需要被一定顺序执行。最简单的就是顺序执行,即从上到下一条一条指令的执行。也可以循环执行甚至永远重复。也可以根据一定的条件选择执行,即如果那么语句。除了顺序执行,其他都有相应的控制语句。 好,差不多这就是最简单的编程模型了。
-
少儿编程学习必须要先了解的编程思维!(一)
编程与抽象建模 我们每天都在学习新的知识。知识就是我们大脑对这个世界的各种认识的抽象模型。 编程是对世界本质的思考,所以编程也可以看成是我们的大脑在抽象建模。 编程中的抽象建模是可被计算机检验的(因为必须能够在计算机上运行),并且可以在全世界被成千上万的人反复使用,所以可以说软件编程建立的抽象模型是经过了大量的检验的抽象模型。 正是因为这个原因,我们可以通过学习编程去更好的认识这个世界,以及各种软件在不断进入更多的领域和更深的层次,改变了我们的生活。 所以首先的我们要了解抽象建模。 抽象模型:算术 大家都学过算术。算术是我们对数字的认识的一个模型。比如自然数以及加减乘除就构成一个模型。 自然数是1,2,3,4,5,6这样的数,顾名思义,就是自然世界里有的数。我们可以对这些数进行加减乘除运算,在我们的生活中我们经常需要对这些数字进行这些运算。 但是当你用一个较小的数减去一个较大的数,比如 2 - 6,就不够减了。为了让我们的算术模型更加完善,我们可以引入负数,这样我们就有:2 - 6 = -4 负数可能就没有自然数这么自然了,它更像是我们头脑里的一个抽象概念。 当你用一个自然数除以另外一个自然数的时候,你很可能也得不到一个自然数。为了让算术模型更完善,我们引入分数或者小数这个更加抽象的概念。 引入负数和分数以后,我们看到我们的算术模型就比较完整了。 抽象模型:拼音 汉字拼音也是一个模型。你可以用26个字母拼出所有的汉字。 不过对于拼音模型,26个字母只是其最基本的单元,字母之上,还有更高层次的结构:声母,韵母。另外汉语拼音还有4个音调。 知识也是抽象模型 总结一下我们上面讲述的抽象模型: 知识是我们大脑里的模型,代表了我们对这个世界的认识。这个模型是建立在我们生活中经历过的其它重要的感官体验基础上的(我们称之为重要体验)。因此死记硬背是无法真正学会知识的,我们必须用双眼、双手去体验,找到事物间的相似之处,建立起抽象模型。
-
人工智能体验课走进晋安第二中心小学,感受人工智能别样风采!
2019年8月,《福建省教育厅办公室关于遴选推荐义务教育阶段人工智能教育实验区和试点学校的通知》中提出要组织各地开展人工智能教育试点,并取得初步成效,要加快推进人工智能知识普及教育。人工智能时代需要新的人才,而人工智能知识的学习需要“从娃娃抓起”。10月22日,人工智能体验课走进晋安第二中心小学,给同学们带来了一场精彩的人工智能体验课,让孩子们感受到科技带来的乐趣。 “人工智能”一词虽然不陌生,但对人工智能同学们还没有太深入的了解。以前只能在电影中看见的无人驾驶汽车、人工智能机器人已经开始应用到我们的日常生活中。 好学智慧的老师图文并茂的为同学们讲解了人工智能的基本原理、发展历程和应用领域。还分析了人工智能目前所应用的场景以及能够达到的水平。 随后,老师演示了阿尔法机器人和3D打印机的操作原理,通过编程指挥,机器人不仅可以跳舞还可以唱歌,使学生们产生了极大的兴趣。大白老师通过六足机器人引导在场的学生们思考了人机协同的理念。生动的教学方式让学生们人工智能有了初步的概念,为未来更深入的学习打下了基础。 短短一小时的体验公开课,让学生们深切地感受到了科技带来的无限魅力。通过学习人工智能项目课能够提升学生信息素养、丰富学生学习生活、激发创新精神、培养实践能力、培养具有国际竞争力的创新人才。借鉴学习创新应用,结合数学、空间、物理、美学、科技、信息技术等综合跨学科应用,提高思创水平,充分开发学生的智力,最终实现将创意灵感到实物具象呈现。
-
关于机器人编程教育这些你了解吗?
随着教育领域与人工智能技术的结合越来越紧密,儿童掌握一定的编程知识,对于未来的学习也会有一定的积极意义。孩子为什么要学习机器人编程? 机器人编程融入了数学、英语、科学、物理、艺术等多学科,孩子在学习的过程中提升的并不是单一的能力,而是综合能力的全面提升。 孩子如何学习机器人课程? 机器人编程课程的目的是让学生通过给定的零件,进行组装,搭建,然后通过编写程序,实现对机器人的控制。课程会涉及硬件和软件相关知识,而更偏重于硬件知识。 以咖搭姆机器人编程课程为例,以乐高为主打课程,从设计、搭建、编程到控制,让孩子从简单到复杂慢慢了解机器人的制作过程,在学习综合类学科知识的同时,锻炼孩子们逻辑思维能力,提升孩子的思维灵敏度、肢体协调性、语言表达能力、社会交往能力、主动学习能力。 通过不同主题的课程设置,培养孩子们不同的能力,在寓教于乐的学习氛围中,通过游戏化的课程场景营造和交互体验,提升孩子们的学习趣味性,用高效有趣的方式使孩子们的各种能力得到提升。 例如在齿轮转动的主题中,帮助孩子学习生活中常见的机器的工作原理,理解皮带传送、传动轮变向、连杆运动等原理,满足孩子对机械的好奇心,培养孩子在生活中可以运用其原理一一破解;在“空中交通”的主题中,通过生活中的细微观察,学习基础交通规则,在由已知到未知的探索过程中,学习场景的设计搭建以及评论性的词汇,提高其语言的表达能力、讲解能力。特别是帮助孩子发挥自己的创想,灵活运用,体现出作品的独特性。 咖搭姆拥有以上完整机器人编程课程体系的同时,还有特色开放挑战课程、数学思维课程、科技造物课程、比赛考级等。咖搭姆业内独家开放挑战课程,我们积木系列的课程以乐高系列课程为主,配合来自美国、日本、以色列等国家的国宝级积木类教具,为孩子构建了从2岁到18岁丰富的课程体系。该系列课程孩子会产出至少400种作品,课程主要以学会感知生活为主,孩子透过集成性较高的积木,能够创造出任何立体感强的作品,从而对自己接触到的事物有细致的观察、深入的了解,形成丰富深刻的印象,唤起孩子对构建物体的欲望。在孩子不断创造的过程中,其观察力和注意力等感性经验的积累和锻炼都不约而同的得到了提升。
-
瞧瞧,这样的代码才叫 Pythonic
Python由于语言的简洁性,让我们以人类思考的方式来写代码,新手更容易上手,老鸟更爱不释手。 变量交换 能用一行代码解决的(并且不影响可读性的),决不用三行代码。 下面是一个非常简单的 for 循环。 单行表达式 这并不意味着,代码行数越少,就越 Pythonic 。 建议还是按照如下的写法来 使用 for 循环时,如何取得对应的索引,初学者习惯使用 range + len 序列解包 字符串拼接 更推荐的做法是使用 join 函数 判断一个变量是否为真(假),新手习惯直接使用 == 与 True、False、None 进行对比 访问字典元素 更推荐的做法是使用get来取,如果没有该 key 会默认返回 None(当然你也可以设置默认返回值) 下面这段代码,会根据条件过滤过列表中的元素 除了 filter 之外,还有 map、reduce 这两个函数也很好用 文件读取是非常常用的操作,在使用完句柄后,是需要手动调用 close 函数来关闭句柄的 代码续行 稍等注重代码可读性的人,会使用三个引号来续写 导包的时候亦是如此 有时候出于需要,我们会使用一些特殊的魔法来使代码适应更多的场景不确定性。 使用占位符 链式比较 其实还有更好的写法 三目运算 其实是可以使用三目运算,一行搞定。