1,041
社区成员




对于“模块化编程”以及“scratch编程”的来源、历史及发展的分析
模块化编程的来源、历史及发展
模块化编程是一种软件设计技术,它强调将程序的功能分为独立的,可互换的模块,以使每个模块都包含执行所需功能的一个方面所必需的一切。简单来说,就是把程序进行封装。
模块接口表示该模块提供和需要的元素。接口中定义的元素可由其他模块检测。该实现包含与接口中声明的元素相对应的工作代码。模块化程序设计与结构化程序设计和面向对象程序设计密切相关,它们的全部目标都是通过分解成较小的部分来促进大型软件程序和系统的构建,并且都起源于1960年代。尽管这些术语的历史用法一直不一致,但“模块化编程”现在是指将整个程序的代码分解为高级片段:结构化编程到结构化的低级代码使用控制流,以及面向对象的编程的数据使用的对象,一种数据结构。
模块化编程以子系统(尤其是I / O)和软件库的形式出现,可以追溯到早期的软件系统,在该系统中,它被用于代码的重用。1960年代末和1970年xxx发的以模块化为目标的模块化编程本身,作为结构化编程概念(1960年代)的大规模模拟。术语“模块化编程”至少可以追溯到1968年7月在信息和系统研究所由拉里·康斯坦丁组织的全国模块化编程研讨会上。
模块未包含在ALGOL 68(1968)的原始规范中,但作为早期实现的扩展(ALGOL 68-R(1970)和ALGOL 68C(1970))包括在内,并于随后正式使用。从一开始就为模块化编程设计的xxx种语言是Niklaus Wirth的短暂的Modula(1975)。
模块化编程从1980年始普及:最初的Pascal语言(1970年)不包含模块,但后来的版本,尤其是UCSD Pascal(1978年)和Turbo Pascal(1983年),就像Pascal一样以“单元”的形式包含了它们。影响Ada(1980)。扩展的Pascal ISO 10206:1990标准在其模块化支持方面与Modula2保持了紧密联系。标准ML(1984)aM拥有最完整的模块系统之一,包括在模块之间映射的函子。
在1980年代和1990年代,尤其是由于C++和Java的流行,模块化编程被面向对象的编程所遮盖,并且常常与之混淆,Python(1991)从一开始就突出使用模块和对象,使用模块作为代码组织的主要单位,使用“包”作为较大的单位。领动模块化编程行业的发展。
Scratch编程的来源、历史及发展
Scratch 由麻省理工学院的媒体实验室终身幼儿园团队设计并制作,是专门为青少年研制的一种可视化编程语言。编写 Scratch 代码,实际上就是将多个积木(也叫作功能块或模块)组合在一起,实现想要达成的目标。Scratch 这种简单、可视化的编程方式,使得编程过程中融入了更多的趣味性和创造性,因而很容易受到少儿和青少年的喜爱,进而激发他们编写程序的欲望。孩子们通过玩游戏、编程、编写游戏等方法来学习计算机编程的一些基本思维方式。这促使 Scratch 成为一种逐渐流行起来的语言和工具。而随着目前教育部把编程正式纳入中小学课程后,Scratch 更是成为了大家的首选课程。
Scratch 发展史Scratch 的 1.4 版本、2.0 版本和 3.0 软件版本分别是用Smalltalk、Flash 和 HTML5 开发的。Scratch1.x 时期:Scratch 1.x 采用 Smalltalk 编写。作为“OLPC(One Laptop per Child,每个孩子都有一台电脑)”项目的一部分,Smalltalk 提出一个建议的语言学习顺序,其中的每种语言都被设计成下一种的入门和基础。在整个 1.x 系列中,Scratch 官网基本保持不变。该版本的 Scratch 和网站没有联系(除了发布程序)。这在 2.0 时期中发生了变化,人们可以在网页里制作程序。Scratch 2.0 时期:Scratch 2.0 是由 andresmh 于 2010 年 1 月在 Scratch 论坛上发布的。它采用 Flash编写,支持了矢量图。Scratch2.0 分为离线版和在线版,在线版允许直接在 Web 浏览器里创建、编辑和查看项目(不再需要上传、下载项目或者安装其它软件),可以使用云变量。离线版则只能本地制作程序,且无法使用云变量。2020 年,更加先进的 3.0 版本发布后,官网不再提供 Scratch2.0 编辑器。Scratch 3.0 时期:Scratch 3.0 放弃了 Flash,采用了 HTML5 来编写,HTML5 是最新的 HTML、CSS 和JavaScript 的总和,Scratch 3.0 首先将会使用 WebGL、Web Workers 和 Web Audio Javascript Libraries。
JavaScript 是一种广泛的语言,它支持所有浏览器和 WebGL,从而跨平台使用。它经过了精心挑选,JavaScript 运行不需要任何额外的插件。Scratch 3.0 不仅仅是重构,也增加了一些功能,比如“移到最后面”积木、“文字朗读”“翻译”扩展等。编辑器的外形看起来更加柔美,支持多次撤销和重做。Scratch3.0保存的文件格式为.sb3,但它也可以读取.sb 和.sb2 文件。
模块化编程与传统代码编程的练习与区别
模块化编程是视觉化编程,输入以鼠标为主,减少键盘的使用,也避免了不合法的语法;程序员在工作上多使用文本编程,会容易出现语法及其他方面的编译错误,但编码的效率更高。模块化编程的主要编程范式是指令式(imperative)和事件驱动(event-driven)。程序员在工作上除这两种范式外,还会比较多使用到面向对象(object-oriented)、函数式(functional)编程范式。模块化编程通过自定义区块(customblock)可一定程度上进行模块化编程(modularprogramming),但现时的版本中自义区块不能返回值,比较难实现一些递归算法。
程序员在工作上有更多模块化的工具,例如把项目分拆成子项目(程序库、框架等),用面向对象的话会把数据封装成类,更方便重复使用、扩展,去开发大型的软件。
模块化编程的变量类型较少,现版本只有字符串、数字和列表,比较难实现复杂的数据结构。总体而言,模块化编程可培养学习最基本的指令式编程思维(控制结构、变量、表达式、子程序等),视觉化编程容易入手,可实现一些简单的算法,适合做一些简单的图形编程和小游戏。