分享

不听老人言,吃亏在将来

 天葬之下于星空 2017-07-21

程序代码是未来世界的通用语! 

学习编程是时代的趋势! 

目前,已有16个欧美国家将编程纳入了公立学校的日常课程。在美国,奥巴马总统明确提出“编程应当与ABC字母表和颜色一样同时教学”;英国最新的教育大纲规定,5~16岁儿童将开始学习编程;而早在上世纪90年代中期,以色列教育部部长就明确表示,计算机科学应该同其他科学学科一样受到重视,编程应成为中小学必修课程。 

编程语言是人类和计算机对话的一种语言,和人们用于沟通的汉语、英语等语言一样,有着相似的习得过程,越早接触,越能更好地掌握。同时,学习编程更像是一把钥匙,能够为大家打开一扇全新世界的大门,培养多方面的能力: 

【1】逻辑思维 

【2】设计思维 

【3】解决问题能力 

【4】团队协作能力 

【5】持续学习能力 

通过编程, 你们可以从一个dreamer变为一个doer! 



回忆一下你从小学到高中毕业,有没有按照自已的兴趣在这方面学习一下呢?小学学习office,初中学习office,高中还是学习office。你的计算机技能有增长吗? 如果你马上要去大学求学,还有一个月的时间(One Month Left),可以试试放心手中的游戏(王者荣耀),看看你这方面是否有天赋?




《道德经》有说:道生一,一生二,二生三,三生万物如果把它套用到数字化的世界:道生成的一即是二进制,一生二中的二是它的两个数码:0和1,二生三中的三就是0和1的组合,这个组合是无限的即数字化时代的万物。


我们在进一步阐述一下:0和1是二进制的数码,估计大家都能够理解。那0和1的组合就代表数字化的存储(Storage),在计算机世界中,数字化的存储的信息有两类:

  • 指令(Instruction)

  • 数据(Data)


打个比方:00 代表 四个方位的东面,01 代表 四个方位的西面,10 代表 四个方位的南面,11 代表 四个方位的北面。这时两位的二进制编码的组合代表或存储的就是数据(Data)。这里又衍生出两个问题,为什么00偏要东(East),代表西,南或者北不行吗?这个其实就是编码的标准问题




举个例子

Example1

大家都知道ASCII吧?ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。请注意,ASCII是American Standard Code for Information Interchange缩写,而不是ASCⅡ(罗马数字2),有很多人在这个地方产生误解。其实就是对我们的键盘上的按键的编码。

看下图(也就是字符编码),打印字符和控制字符,想像一下你在Word输入文档时,有些是显示的,有些是功能的(换行,换页什么的)


再给一个:

注:Dec是十进制,Hex是十六进制,Oct是八进制,Chr代表字符。

注意: 进制是可以相互转化的,就像汉语,英语,日语可以翻译一样,其核心是表征语言背后的意义。


十进制与二进制转换(四位二进制为例)


比如 十进制27 ( Hex为 1B,  Oct 为033) 就是代表键盘上的ESC键(功能键)。那你可能有要说,我非得要把ESC键编码成 十进制99,当然可以但你的键盘输入的字符和地球上其他的人就不一样了。你没有用国际标准组织ISO(the International Organization for Standardization )制定的标准,你就成了外星人了,呵呵! 所以标准很重要。


收住话题,刚才讲到二进制表征数据(Data),接下去讲二进制的指令(Instruction)。指令打个比方,你在水里游泳,你的每个动作(打退,拨水,吸气吐气)都是受你的大脑指令控制的。


看例子

Example2



假如你设计了一个计算机控制家里的灯泡(Bulb),我们设计一套指令如上图, 0000 0000指令是结束程序,0000 0001是开灯,0000 0100减少亮度10%, 0000 1000增加亮度10%

你可能说 5 条指令我3位二进制就可以搞定,完全正确!

但是指令长度越长,可以扩展更多指令啊!


再给个图,我们可以设计8条指令。



8位二进制可以编码成 2^8= 256 条指令。

现在想想Windows 7 32位 与 Windows 7 64位的区别了吧


既然开头,把这个例子讲完!

指令是放在计算机的存贮器(Memory)中,执行在CPU中。

指令也是放着存储器中,它有对应地址(Address),地址的编码肯定也是二进制。



关于为什么数据世界(计算机)用二进制,二进制有何好处,以后再讲。关于编码我们也以后再展开。

下面我们模拟一下上面12条指令的执行效果。

视频:






再来讲讲计算机编程

编程语言可分为:

  • 机器语言

  • 汇编语言

  • 高级语言


前面我们介绍的就相当于机器语言(Machine Language)。其上有汇编语言(Assembly Language)高级语言(Advanced Language)。我们现在绝大多数人用的是高级语言。高级语言有衍生出:Basic系列,C语言系列,Java系列,Pascal系列。包括现在热门的智能手机编程(Android 和  iOS )。

大家看到现在的很多名词,都有云里雾里的感觉!如人工智能、无人驾驶、大数据、云计算……。其实如果你懂得计算机原理,这些无非是三生万物的东西,只要计算机的体系结构不变,我们就可以说:万变不离其宗。

那么计算机的系统机构是?(下次再讲)


下面来说说Jobs的话:Everyone should learn how to code,because it can teach you how to think.  他老人家说的Think应该指在数字化时代的问题思考模式,即如何解决问题(Problem-Solving)。Code这里指编写程序(Programming ), 指用高级语言来编写计算可以识别的指令代码。


下面我们来揭开编程的神秘面纱,编程其实就三种结构(三生万物,呵呵):


  • 顺序结构(Sequence)

  • 循环结构 ( Loop )

  • 条件结构 (Selection )


顺序机构


循环结构


条件结构


我们来个视频Demo吧,以大家数据的Excel为例,他后台是VBA( Visual Basic for Application )  是VB程序的子集或者看成Office的应用。




 视频中的代码:


  Sub sequence()

  

  Range('a1') = 2

  Range('a2') = 4

  Range('a3') = 6

  Range('a4') = 8

  Range('a5') = 10

  

  End Sub




 Sub loops()

  

  For i = 5 To 30

    MsgBox 'wait'

    Range('b' & i) = 2 * i

  

  Next i

  

 

 End Sub

 

 



 Sub condition()

 

 For i = 1 To 5

    

    If Range('a' & i) < 5="">

        Range('c' & i) = 'good'

    Else

    

       Range('c' & i) = 'bad'

    End If

  

  Next i



编程不再仅仅是写代码,更是在培养计算思维!编码是当今世界的必要技能。其实,编程不再仅仅是写代码,更是在培养计算思维!学习编程,不仅仅能学会如何处理一般问题,还能灵活应用数学计算机方法,利用计算思维来解决日常生活中的各种问题。


“计算思维”这个词最先由 Seymour Papert 提出,后由周以真教授 (Jeannette Wing) 推广。她将计算思维定义为:


以有效处理信息的方式思考问题、构思并呈现解决方案的一系列思维活动。(Wing, 2011)  


计算思维可用于各种领域,也可以在日常生活中使用。科学(Sceince)、工程(Engineering)和数学(Math) 领域都涉及计算思维。这种思维包括以下几个方面:

1. 分解:

分解(Decompose)是指把问题分成较小的部分,从而简化问题的能力。通过分解,问题会变得更易于向别人解释,或分成具体的任务。分解之后通常需要进行概括。

例如:去旅游时,可以将准备行程(或是实验)分成几个子任务:预订机票、预订 酒店、打包行李等等。

2. 概括(发现规律)

概括(Generalization)能力是指发现任务中已知的部分,或是在其他地方已经了解过的部分。这通常可以使设计算法变得更加简单。

例如: 交通灯的工作模式就是不断重复一系列相同的操作。


3. 算法思维 


算法(Algorithm Thinking ) 思维是指设计一系列有序的步骤来解决问题的能力。

示例一:当我们按照菜谱做菜时,需要遵循一系列步骤。

示例二:使用计算机时,我们可以通过编程来设计一系列操作,告诉计算机要做什么。


关于算法和计算思维 ,我们以后可以在深入讲解!



4. 评估或纠错 

评估(Evaluate)与纠错(Debug)是指检验原型是否能按预期运行的能力,或发现不足的能力。计算机编程人员也借此来发现和更正程序中的错误。

示例一:做菜时,我们会不时尝尝味道,看看口味如何。

示例二:查找书面作业的拼写错误和丢失的标点,进行修改,使文字和标点正确。



5. 抽象化


抽象化(Abstract)是指在解释问题或解决方案时去掉次要细节的能力。也就是说,将想法概念化的能力。

例如:描述一台自行车时,我们会着重描述它的其中一些细节。我们可能会描述它的型号和颜色,如果对方确实对自行车感兴趣,我们再进行更细致地描述。 

 



暑假我们团队推出一个创意编程项目

适用人群

  • 小学三级年级以上(初高中生,大学生,文科类研究生均可)




课程概述


  • Scratch2.0是麻省理工学院Media Lab为8-20岁孩子量身定制的编程启蒙软件。

  • 此课程教授是计算机编程的最佳入门课程

  • 通过案例讲解分析,会自己动手编写程序,21个精典案例呈现,让学习者融会贯通所有知识点。

  • Scratch适合任何想学习编程的朋友的最基础的入门级语言

  • 此课程只要安装几个免费的软件,无任何费用,唯一需要投入的是你的时间与精力

  • 需要你自己动手操练;动手构建脚本与写程序,把知识真正应用起来。


推荐理由


  • 编程技能是唯一不需要完成大学学业,就可以取得高薪的工作

  • 很多商业领域需要多年的实践经验,而不是一大堆文凭但动手能力很差的高材生;像比尔盖茨、乔布斯从小就擅长编程,大学辍学出来创业,就是凭借其优秀编程等能力

  • 编程技能训练的第一步,我们课程是不二的选择。





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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多