分享

算法是数学?编程是算法?未来的孩子必学编程?不如看看这部纪录片。

 Monteil 2017-11-18


我们的现代生活已经被各种科技数字化24小时无缝包围,编程现在育儿领域都成了热词。但我想很多人会跟我有差不多的困惑——孩子是不是非得学编程?If yes,then从哪学起?什么时候学?


我不是啥IT人士,题目和上段里的问号我都没找到准确答案,注意,是没找到准确答案。但是,顺藤摸瓜的藤,还是抓了一些的。


今天周末,大家轻松点来看个纪录片吧。喜欢这个纪录片是因为它浅显的告诉我们一些答案,也带来一些思考,后面我会边贴图边分享我的思考。




这个片子叫做《现代生活的秘密法则:算法》


你以为它是一部涉及计算机和程序员的纪录片?并不是。

它给恐惧科技的人带来更深的恐惧感,因为算法无孔不入;给拥抱科技的人带来更多的安全感,因为算法无处不在。


这时候你可能会问,算法就是数学么?是,也不全是。


我想可以这么理解:数学是一个分支浩瀚的基础学科,而算法是应用数学的一个分支,它跟概率、序列、最优解、检索等等数学问题密切相关,但其实是一套解决方案,一种模型,一串计算机可以识别的方法论,它的任务是解决的一个具体问题。它可以应用在计算机科学上,也可以应用在其他学科里。如今社会,计算机科技已经渗透到任何一个领域,所以去分清它们谁是谁并不容易,知道它们能做什么事就好了。

上面这段我自己理解的非专业的枯燥的不严谨的不科学的解释,姑且一看。


总之 算法是“漂亮地运用数学规律去印象深刻地解决问题”


纪录片主持人Marcus,本身也是牛津大学的老师,在节目一开始就跑去找自己的学霸学生们做试验。桌子上是一大罐巧克力和一根辣椒,每人在罐子里可以选择拿一个或者两个或者三个巧克力,谁最后拿到辣椒谁就吃掉。


Marcus总是获胜的那个,原因就在于他有自己的算法。↓


用↓这个策略,他得以总是刨坑给学生。


这个故事告诉我们,最好的算法,就是能发现隐蔽在问题中的数学结构。



程序界有个公式:程序=算法+数据结构。

(数据data结构并不是数学mathematics结构,前者是研究怎么高效存储的。)


那我们可以理解“编程”这个词了:编程也就是编写程序,是运用合适的算法和合适的数据结构去解题。用什么来写呢,即计算机能识别的语言,#就是C语言啊Java啊Python啊那些我看不懂的玩意#。


那么,涉及到儿童编程,特别是针对“学习编程越早越好的”的说法来讲,你让一个学龄前儿童去学代码么?字都不认识,抽象思维都没形成,怎么可能?让他们去学数据结构怎么高效存储么?等他们长大了技术不知道迭代几百轮了。


能让孩子接触的,只有自古以来就有且在现代社会焕发了新生命的算法了。


看到这里程序员弟弟们都笑了,某些程度来说,算法在他们的领域是很理论的。是不接地气的,是既成模型(算法)的应用,而选择不同的算法在特定情境中懂得怎么敲代码才是编程。还有,现在计算机的数据处理能力越来越强,有些程序是不停试错不停调试之后出来的结果,至于内在算法逻辑是怎么样的,也许程序员自己都晕特了。


然而我认为,在“计算机领域”之外的人群,需要会的并不是编程本身,不是用哪门语言去写代码,而是用算法理论去理解世界,这才是我们需要给孩子打开的那扇大门




下面我们继续体会算法给我们世界带来的变化。

算法能让善于找最大公约数的欧几里得当瓦工的时候发大财~


算法是你不再需要每次都重新发明轮子,因为它让某类事情有了通用解决方案,你只需要运用它就好 #比如怎么算出最大公约数来铺砖#。


算法才是计算机领域最能体现创造力的一环。一旦创造出来了,用技术实现它们,反而不是那么难了。


而算法领域中,最首先和最重要的课题是如何排序(Sorting)




如果只有一点点数据,排序是一个简单并且容易选择出最优方法的问题。但如果数据海量,那么如何从已经被发掘出来的20多种排序方法中选出最适合的排序方法来保证让某个具体问题运作地正确且高效呢?


片中用好几种有趣的方式,把主流的排序方法讲解了一遍。有多浅显呢?至少我都看懂了。


世界是复杂的,所以用算法来解决问题也是复杂的。因此,没有最好的方法,只有最适合具体问题的那个。↓





除了排序,匹配也是一个重要的概念。↓



匹配的方法论可以给约会网站带来更精准的配对↓



当我们给四个Queen和四个King配对时,并不一定会得到最优解,但可能得到大家都高兴的解,这就是匹配的意义。





匹配在实际应用中还能做什么呢?



在英国,NHS用匹配法来为肾病病人寻找捐献者↓


当需要解决的事情越关系重大,越要求算法的正确性,当然保证了正确之后还要求高效。我们人类还要知道,有些问题算法能解决,有些问题暂时难以解决。能分辨出来这些,本身就是一门博大的逻辑课题。


比如,我们感觉计算机可以轻松胜任的西洋棋,其实它能做的只有苦干↓


数独也是↓

这也是为什么人工智能通过自我学习横扫了围棋界这件事(晚于这个纪录片),会让很多人恐慌,因为这个困难的事情,它们也做到了。




更典型的是推销员问题,计算机如何计算出一个推销员要走遍他要去的城市,最短的路线是什么?


当走三个城市的时候,计算机很容易计算出最优解也就是最短路线↓



但如果变成了五个城市,这种排列组合就成倍数的增加↓



6个城市、10个城市的时候,计算机的计算量就指数增加,计算就不再有效率了,等它算出结果来,推销员可能已经跑了十个城市回来了↓


同样的问题在电路板,在送货路线,在机场,都天天面临。




由于技术越来越成熟,机器学习也越来越有所作为,比如决策树算法。↓




人类的智慧用来设计系统,而编程这个活也外包给了机器(妈妈们,发现人类不被AI替代的小奥秘之一了么?)


人工智能已经渗透到我们生活方方面面,比如它了解我们的喜好↓



最令人震惊以及赞叹的是,英国Ocado超市的自动化系统↓

这已经不能用图片来说明了,必须上视频↓


其实Ocado这也还好了,因为我大中国的快递分拣系统也已经如此智能了↓





看完纪录片,相信你不会再迷信一些编程的传说了。


首先,学好数学的方方面面才是基础;

其次,即使未来的孩子人人都需要编程思维,那也是要拥有一套算法思维;

如何拥有算法思维呢?我也不知道,但至少不是先去学具体哪一门语言。


我知道的是,只有在创造力的领域不断练习,才能永远不落后于这个飞速发展的世界。管它AI来临还是再一次工业革命,都不需要焦虑和惧怕。




小剧场:

我已经开始脑补跟一些编程培训机构的对话了。

他可能会告诉你学编程练习逻辑→那其实很多事情都可以练习逻辑的,咱不说桌游啊扑克牌啊麻将啊的了,就是日常对话,就都是逻辑的战场;

他们又说编程锻炼判断能力→那可以去玩扫雷游戏啊;

他们又吹编程可以学习序列与条件→那我建议孩子去玩任何优秀的塔防游戏比如保卫萝卜啊;

哎编程还可以锻炼空间思维能力呢→那可以去玩纪念碑谷啊;

编程还可以提高观察力→其实天天爱消除玩得好就可以……

我已经满意的看到了机构人员的不屑脸了:

“你不提前赢在起跑线,错过了敏感期,会耽误你的孩子的。” 

哎?这话好像在英语机构听到过。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多