追本溯源探寻编程教育的本质

来源 :中国科技教育 | 被引量 : 0次 | 上传用户:FSACN
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  2014年12月,时任美国总统奥巴马在“编程一小时”活动中写下自己人生第一行编程代码,从那时起,青少年编程教育就逐步成为公众关注的热点。2017年7月,我国国务院发布《新一代人工智能发展规划》,其中特别提到的“在中小学阶段设置人工智能相关课程,逐步推广编程教育”,给青少年编程教育的重要性一锤定音。提起编程教育,我们最先会想到如Scratch、Python等编程语言。是不是学会这些语言,就是学会了编程?到底学会多少语言,才算是学会了编程?想找到这些问题的答案,我们不妨从编程的发展历程中探寻。
  历史上的可编程发明
  如果被问到“什么是编程”,许多人的回答可能是“敲代码”。坐在电脑前,用键盘敲出一行行代码,这就是我们现在最常看到的别人编程的样子。然而,在20世纪80年代,计算机工程师编程并不是敲代码,而是写代码——真的在纸上写出程序代码。在纸上写好的代码也不能运行,工程师们还需要把程序制作成打孔纸带,把打孔纸带输入计算机,计算机才能读取程序并运行。从1943年第1台现代电子计算机发明开始,给计算机输入打孔纸带就是当时的编程方式。直到电子显示器发明并大规模应用后,纯数字化的代码输入得以实现,打孔纸带才退出了编程的舞台。
  但有趣的是,使用打孔纸带、纸卡编程的历史比现代计算机还要早得多。1805年,拿破仑为法国纺织商人、发明家约瑟夫·雅卡尔颁发巨额奖金,嘉奖其发明的极大提升了纺织生产效率的自动化“可设计”织布机。雅卡尔织布机的走线由一系列串接好的打孔卡片控制。打孔卡片的每一列对应一根经线,织布机每织一次纬线时,自动根据打孔卡片当前一行每一列是否打孔,提起或不提起对应的经线。织布机织完一行,把打孔卡片向前拉动,接着根据下一行的打孔控制经线,这样就纺织出跟预先设计一模一样的花纹。后来的各种计算机设计,都借鉴了雅卡尔织布机的打孔卡片控制方法。19世纪英格兰数学家查尔斯·巴贝奇,是公认的第1个机械式可编程计算机——分析机的发明者。他为了能更快地制作更准确的对数表等数学用表,设计制造了一系列“计算机”,就是采用打孔卡片为分析机编写运算程序的。他的助手艾达为分析机编写了完整的三角函数计算、级数相乘计算和伯努利数计算等程序。
  我们再向前追溯,还能发现比打孔卡片更早的编程装置。这些装置中有2种我们比较熟悉,它们是音乐盒和自动人偶(automaton)。能自动演奏音乐的音乐盒最早出现在公元9世纪,在19世纪成为大量生产的工业化产品,是当时人们的休闲娱乐用品。音乐盒内部有一个滚筒,滚筒侧面安装有一排发音簧片,每一个簧片被拨动后能发出特定的音高。工匠对照乐谱,在滚筒上对应行列的位置做出凸起。滚筒转动时,各个凸起依次拨动簧片,就形成了旋律。在19世纪末,大型音乐盒开始使用更轻便、也更容易更换的打孔圆盘替代了滚筒。
  自动人偶最早的记载见于古希腊时期,我国的《列子·汤问》中也有工匠偃师给周穆王献了一个跳舞人偶的记载。有制造结构记载的和有实物保存的自动人偶都使用了凸轮编程。在故宫博物院,藏有一个由英国工匠制造并赠送给乾隆皇帝的铜镀金写字人钟。钟底部的写字机械人由发条驱动,能自动用毛笔在纸上写下“八方向化,九土来王”8个汉字。这样一套复杂的动作,就是由若干个凸轮转动控制人偶的手臂、手腕和头部同时运动的结果。中文书写非常复杂,写字人钟无法装载更多的凸轮写出更多文字。字母文字的书写则相对简单很多,18世纪的瑞士钟表匠皮埃尔·雅克德罗制作的“书写者”自动人偶就可以自由定义书写内容。虽然理论上我们可以控制自动人偶做出各种各样的动作,但更换凸轮无疑是一种低效的方式。不过直到今天,人型机器人的动作控制依然是一项复杂的工作。
  往更早的历史中寻找,我们会发现在公元60年,就有一个可编程的发明。这个装置是古希腊的数学家、工程师希罗发明的可编程三轮车。这辆车有2个驱动轮和1个被动轮。2个驱动轮分别有独立的车轴,在车轴绕上绳子,绳子的另一头由挂在车子桅杆上的重物拉动,驱动轮就转动起来,带动车前进。希罗巧妙地在驱动轮车轴上钉了几根钉子,这样就可以反绕绳子,而且多次改变绕绳方向。当重物拉动绳子时,2个驱动轮的不同正转与反转的组合就可实现小车的前进、后退和左右转弯。只要预先设计好绕绳方式,希罗就能控制小车按既定路线行走,实现对小车的编程。
  现代编程技术的发展
  希罗的小车、八音盒、雅卡尔织布机这些发明所在的年代还没有编程、可编程的概念,但它们在解决各自问题的过程中,都设计出了使用具有通用编码的方式进行自动化控制,用绕绳、滚筒、打孔卡片控制机械按人们的意志运行。今天我们所使用的各种计算机编程语言,就是控制计算机按我们的意志运行的技术工具。
  回顾这些带有编程概念的历史上的发明,我们可以看到,雅卡尔发明织布机是为了改进复杂纹样纺织的生产效率;巴贝奇设计分析机是为了快速准确地进行复杂数学计算;八音盒和自动人偶为人们提供了便利的娱乐方式。这些发明家都是在探究各自问题的解决方法中,发明了这些装置所使用的编程方法。我们熟知的各种现代计算编程语言,也是因为解决特定的問题而被设计发明的。
  全球使用最为广泛的编程语言——C语言由美国贝尔实验室的肯·汤普逊和丹尼斯·里奇所设计。1969年,汤普逊和里奇正在埋头研发一种全新的、支持多用户多任务的操作系统——就是后来的UNIX。第1个版本的UNIX使用汇编语言,在1台DEC PDP-7电脑上开发完成。由于汇编语言极度依赖于硬件,当他们在把UNIX移植到更高级的电脑的过程中,觉得需要一种能够处理更多数据类型,能像机器语言一样直接操作存储器,又具有复杂易用的逻辑结构的编程语言。于是他们在当时的BCPL语言上进行了改进和改造,形成了一门简洁、规范又强大的编程语言C。1973年,二人用C语言重新编写了UNIX,形成了UNIX更为标准化的版本。1983年,汤普逊和里奇因发明UNIX系统而获得计算机科学的最高奖项——图灵奖。   而另一门与C同样流行的编程语言Java,在1990年最开始在SUN公司里被设计时,是用于有线电视和嵌入式设备的应用开发。开发小组让Java能够方便地实现基于信息传输的应用开发,同时能够快捷地在使用不同处理器的设备上部署。Java的设计理念对于当时的有线电视来说有些过于超前。但是很快,Java就找到了适合它的广阔天地——互联网。1995年,SUN正式对外发布了Java,并把Java的特性精简概括为“WORA”——一次编写,到处运行(Write Once,Run Anywhere)。从此Java也迅速流行开来。
  到目前为止,全世界已经发展出超过600门编程语言。从2018年1月的统计数据看,使用量排名前10的编程语言是Java、C、C 、Python、C#、JavaScript、VisualBasic.NET、R、PHP、Perl。這10门语言占据了50%的使用量,它们普遍具有很强的通用性。比如Java就几乎覆盖了桌面软件、网络服务、嵌入式应用、操作系统、智能手机等绝大多数编程开发场景。但前10名里也有仅在特定领域使用的语言,如果不从事数据相关工作,你可能几乎没机会接触到R语言。Pethon是1991年出现的“老”编程语言,近两年大数据、机器学习的兴起,Python被发现非常适宜这两个领域的开发需求,而获得了更多的使用量。新的编程语言也不断出现,从2010年到现在,就有15门全新的编程语言问世。随着社会环境、科学技术的发展,未来还会有更多的编程语言出现,用以解决全新的问题。
  不论是历史上的可编程发明,还是近代的计算机编程语言发展,我们都能从中发现,新方法、新技术随着时代前进不断涌现。除了技术本身,社会环境也在变化。
  提炼编程教育的核心价值
  10年前,没人会认为手机成为个人应用软件的主流平台;20年前,人们也无法想象互联网会接管我们大部分生活需求。在这样的发展节奏里,一个中学生今天接触、学习的编程技术,在10年后他步入社会时,很可能有翻天覆地的变化。所以,在中小学开始Scratch、Python等课程,只是编程教育一个小小的开始。我们必须提炼出编程教育的本质。
  不论是历史中的可编程发明,还是近代的计算机编程语言发展,我们都能从中看出,编程技术的目的是驾驭机器、驾驭计算机,让它们更高效地解决问题。所以我们要让学生逐步接触、理解、体验编程的逻辑操作、算法、数据结构、工程设计等通用的工程方法与数学知识,这些核心知识是编程语言的灵魂。学生在需要使用新的编程语言时,这些核心知识能够帮助他们更快地融会贯通。更重要的是,学生可以脱离编程语言,更纯粹地思考如何让计算机解决问题,也就是让学生具有计算思维。
  除掌握编程的核心知识,形成计算思维外,我们也要把学生的视野拓宽。我们在家庭、学校里看到的只有PC和移动设备,我们还要让学生看到大如“太湖之光”,小如能在人体血管里工作的M3计算机,看到汽车、航空、航天、医疗、军事、经济、人工智能等各种领域的专用计算机,并且看到这些计算机都在解决什么问题。通过计算机与编程,我们让学生能够打开一个全新的视角,观察、分析和思考社会的发展进步,以及同时面临的问题。
  为青少年进行编程教育,如果不能让学生领会编程语言背后的本质知识,那不论他学会多少编程语言,也不代表真正掌握了编程,能够用编程创造价值。计算机科学的发展日新月异,未来新技术的诞生与更替会更快。我们把握住编程教育的本质,把编程的核心价值传递给学生,这才对学生在未来的发展,以及在未来真正创造价值有意义。
其他文献
鸡尿酸盐代谢障碍病是一种较为常见的鸡代谢类疾病,主要是由于多种复杂因素引发的,肾脏功能障碍性疾病。随着我国鸡养殖行业的发展,各个地区的鸡养殖规模不断扩大,鸡尿酸盐代
师范生是未来的教师。普通话是我国教师教育教学中规定使用的标准语言。作为一名师范生应努力做到:排除母语方言干扰,提高普通话的标准程度;区分普通话的使用场合,培养高效的
目的糖尿病视网膜病变是糖尿病最常见的并发症之一,其病变机制较为复杂且并不明确。临床上将微血管病变作为糖尿病视网膜病变的主要诊断依据,其中微血管周细胞的丢失是糖尿病
会议
目的:研究雷公藤甲素(TRD)对小鼠T淋巴细胞活化标志CD69、CD25及细胞因子IL-2及IFN-γmRNA表达的影响,为阐明其免疫抑制作用提供分子药理学依据.方法:无菌分离小鼠淋巴结细胞
摘 要:良好的课堂管理是有效教学的重要条件。幼儿汉语课堂由于教学对象的特殊性,其管理问题应引起特别的关注和重视。采用问卷调查法,针对幼儿汉语课堂管理的相关问题设计问卷,调查了68位海内外幼儿汉语教师。调查发现,89.71%的被调查者认为幼儿汉语课堂管理很重要,有77.94%的教师总是或经常为此感到苦恼,而对课堂管理效果自评“非常满意”的只有47.06%。在提高课堂管理有效性方面,把焦点放在问题学生
猪气喘病是生猪养殖过程中比较常见的一类疾病,日常养殖管理不当、治疗措施不及时等因素都会造成该病的发生和传播。控制猪气喘病的传播与发展,对于降低养殖场经济损失具有比
目的:研究不同剂量的益妇宁软胶囊(YFN)对去势大鼠骨组织中雌激素受体(ER)表达的影响,探讨该方对绝经后骨质疏松症(PMO)的治疗机制.方法:采用3月龄SD雌性大鼠60只,50只行双侧
当前,随着中国特色社会主义进入新时代,新一轮的行政体制改革也提上议事日程。党的十九大和十九届三中全会决定对党和政府机构进行改革,其中规定将出入境检验检疫职责和队伍从国家质量监督检验检疫总局划入海关总署。面对党和国家机构改革的外在趋势和全国通关一体化的内在要求,海关进行机构改革已到了刻不容缓的地步。海关作为国家进出境监督管理机关,在促进对外经济贸易发展方面扮演着重要角色。改革开放的时代背景对海关工作
项目地点:浙江省杭州市项目面积:260平方米完成时间:2015年12月从国外留学归来的年轻主人喜欢简约设计,崇尚品味生活。设计师便选择以白色作为设计语言,用减法和去装饰化的手
期刊
《普通高中地理课程标准(实验)》(以下简称《标准》)提出,高中阶段地理学习要求学生在梳理分析事实的基础上,运用地理原理探究地理变化机制和过程、地理成因以及地理规律[1]。《