TeodoroSeccombe​(留言 | 贡献)
小 创建页面,内容为“。”
IdleTap-bot​(留言 | 贡献)
由旧格式Infobox转换为新参数格式(label/data),修复空信息框(由IdleTap-bot执行)
 
第1行: 第1行:
{| class="infobox" style="border:1px solid #ccc; background:#f8f9fa; width:26em; float:right; margin:0 0 1em 1em; border-spacing:5px;"
{{Infobox
|-
| title = 统一资源定位符
! colspan="2" style="text-align:center; font-size:larger;" | '''Scratch'''
|-
| 中文名 || '''Scratch'''
|-
| [[英文]]名 || Scratch
|-
| 开发者 || 麻省理工学院([[MIT]])媒体实验室终身幼儿园团队<br/>Scratch 基金会
|-
| 首次发布 || 2007年5月15日<ref name="scratchwiki">[https://en.scratch-wiki.info/wiki/Scratch Scratch Wiki. Scratch]</ref>
|-
| 最新稳定版本 || Scratch 3.29.1
|-
| 支持语言 || 70 余种
|-
| 运行平台 || 网页端、[[Windows]]、[[macOS]]、[[Android]]、[[iOS]]
|-
| 适用人群 || 8-16 岁[[青少年]](全年龄段可用)
|-
| [[全球]][[用户]]规模 || 超 1.3 亿<ref name="kidscode">[http://kidscode.cn/archives/18294 少儿编程网. Scratch 全球用户破 1.3 亿 新一代 4.0 版本即将到来]</ref>
|-
| 当前版本系列 || 3.x.x<ref name="scratch30">[https://scratch.mit.edu/discuss/topic/326861/ Scratch 3.0 is here!], 2019</ref>
|-
| 类型系统 || 动态
|-
| 文件格式 || .sb、.sprite (v1.4前)<br/>.sb2、.sprite2 (v2.0)<br/>.sb3、.sprite3 (v3.0)
|-
| 官方网站 || [https://scratch.mit.edu/ scratch.mit.edu]<ref name="scratchwiki"/>
|-
| 源代码仓库 || [https://github.com/scratchfoundation github.com/scratchfoundation]<ref name="github">[https://github.com/scratchfoundation github.com]</ref>
|}


'''Scratch'''(全球少儿图形化[[编程]]语言)是由[[麻省理工学院]](MIT)媒体实验室终身幼儿园团队开发,后由 Scratch 基金会独立运营的免费图形化[[编程语言]],面向全球 8 至 16 岁青少年设计,同时支持全年龄段用户使用<ref name="scratchwiki"/>。该语言通过拖拽色彩分明的积木式代码块替代传统[[文本]]代码,让零基础用户可以快速理解编程逻辑,创作互动故事、游戏、动画、音乐等数字作品,是目前全球应用最广泛的少儿编程工具之一<ref name="faq">[https://scratch.mit.edu/info/faq/#about-scratch Scratch. FAQ]</ref>。截至 2025 年,Scratch 平台全球用户已突破 1.3 亿,覆盖 150 多个国家和地区发行,用户累计创建项目超过 10 亿个<ref name="kidscode"/>。
| label1 = 中文名
| data1 = 统一资源定位符


Scratch编程语言的源代码完全公开,并托管于GitHub平台<ref name="github"/>。该语言的标志性橘色猫咪图案以及“Scratch”这一名称的字体设计均受到版权法的保护<ref name="kidscode"/>。位于[http://scratch.mit.edu scratch.mit.edu]的Scratch官方网站,其后端系统、基于Djan[[go]]BB构建的论坛,以及利用[[MediaWiki]]搭建的Scratch[[Wiki]],并不属于开源项目。
| label2 = 英文名
| data2 = Uniform Resource Locator


== 发展历程 ==
| label3 = 缩写
| data3 = URL


=== 项目起源 ===
| label4 = 提出者
| data4 = 蒂姆·伯纳斯-李(Tim Berners-Lee)


Scratch 项目由麻省理工学院媒体实验室的米切尔·雷斯尼克(Mitchel Resnick)教授及其带领的 “终身幼儿园” 团队于 2003 年启动,项目的设计初衷是为了降低编程的学习门槛,让儿童也能通过创作数字作品来学习编程思维,而非仅仅学习代码语法<ref name="36kr">[https://36kr.com/p/2250697790101509 36 氪. Scratch:解码少儿编程的过去、现在与未来]</ref>。团队的灵感来源于此前乐高公司推出的 Mindstorms 机器人套装,该产品首次将图形化编程与实体机器人结合,让团队意识到图形化编程在儿童教育中的巨大潜力<ref name="xiaomawang">[https://www.xiaomawang.cn/index.php?a=index&aid=232708&c=View&m=home 小码王。图形化趣味编程 (scratch 编程)]</ref>。
| label5 = 首次发布
| data5 = 1994年(RFC 1738)


经过 4 年的研发,2007 年 5 月,Scratch 1.0 正式向公众发布,首次推出了桌面端的编程环境,让儿童可以通过下载安装的方式使用该工具<ref name="kuaidong">[https://m.baike.com/wiki/Scratch/21983937 快懂百科. Scratch [简易图形化编程工具]]</ref>。
| label6 = 最新标准
| data6 = URL Standard(WHATWG 实时标准)<ref name="url-standard">[https://url.spec.whatwg.org/ URL Standard]</ref>


=== 运营主体变更 ===
| label7 = 相关标准
| data7 = RFC 3986、RFC 3987
}}


在发布后的十余年里,Scratch 一直由麻省理工学院媒体实验室负责开发与运营。随着项目的全球普及,为了更好地推动项目的长期发展,2019 年,Scratch 项目正式转入 Scratch 基金会独立运营,基金会负责后续的版本迭代、社区维护以及全球教育推广工作<ref name="csdn">[https://blog.csdn.net/a123456abcaaaaa/article/details/151681521 CSDN 博客. scratch 简介_scratch3.30.5]</ref>。
'''统一资源定位符'''(缩写:'''URL'''),俗称'''网页地址'''或'''网址'''<ref name="c114">[https://baike.c114.com.cn/view.asp?id=7387-76D8FFAA 统一资源定位符(URL)]</ref>,是对[[万维网]]上资源(如网页、图像、文件等)的位置和访问方法的一种简洁表示。URL是[[统一资源标识符]]([[URI]])的一种具体形式,它不仅唯一标识一个资源,还指明了如何定位和获取该资源<ref name="rfc3986">[https://datatracker.ietf.org/doc/html/rfc3986 RFC 3986: Uniform Resource Identifier (URI): Generic Syntax]</ref><ref name="[[wiki]]-url">[https://en.wikipedia.org/wiki/URL URL - Wikipedia]</ref>。URL由[[蒂姆·伯纳斯-李]]([[Tim Berners-Lee]])发明,最初用于万维网的地址系统,随后由[[万维网联盟]]([[W3C]])和[[互联网工程任务组]](IETF)制定为[[互联网]]标准RFC 1738<ref name="rfc1738">[https://datatracker.ietf.org/doc/html/rfc1738 RFC 1738: Uniform Resource Locators (URL)]</ref><ref name="c114" />。如今,URL是互联网基础设施中最基本的组成部分之一,几乎所有网络[[浏览器]]和网络应用都依赖URL来定位和访问在线资源<ref name="url-standard" />。


== 设计理念 ==
== 历史 ==


Scratch 的核心设计哲学是 “低门槛,高天花板,宽墙壁”(Low Floor, High Ceiling, Wide Walls)<ref name="36kr"/>:
URL的概念源于1990年蒂姆·伯纳斯-李为[[欧洲核子研究组织]]([[CERN]])开发的万维网项目。他设计了URL作为超[[文本]]系统中定位文档和资源的方式,与[[超文本传输协议]]([[HTTP]])和[[超文本标记语言]]([[HTML]])共同构成了万维网的三大核心技术<ref name="royal-society">[https://royalsociety.org/people/tim-berners-lee-11380/ Sir Timothy Berners-Lee - Royal Society]</ref><ref name="infoq">[https://www.infoq.cn/article/url-history/ URL的发展史:路径、片段、查询、身份验证]</ref>。


* '''低门槛''':通过积木式的拖拽操作,消除了文本编程中语法错误的门槛,让零基础的儿童也能快速上手,在短时间内完成自己的第一个作品。
1992年,IETF成立了URI工作组,开始对URL进行标准化工作<ref name="rfc1738" />。1994年,RFC 1738正式发布,由蒂姆·伯纳斯-李和IETF URI工作组共同编写,定义了URL的语法和格式<ref name="rfc1738" /><ref name="c114" />。此后,URL标准不断演进,RFC 3986(2005年)和RFC 3987(2006年)分别更新了URI和国际化资源标识符(IRI)的规范<ref name="url-standard" />。
* '''高天花板''':工具并非仅面向入门用户,其支持变量、函数、克隆、消息广播等高级编程概念,用户可以创作复杂的游戏、模拟程序甚至人工智能相关的作品,满足用户从入门到进阶的学习需求。
* '''宽墙壁''':Scratch 不限制用户的创作方向,用户可以创作游戏、动画、故事、音乐、艺术作品、模拟实验等多种类型的内容,鼓励用户跨学科的创作与学习。


== 功能特点 ==
2010年代起,[[WHATWG]](Web超文本应用技术工作组)发布了URL实时标准(URL Living Standard),旨在统一和简化URL的解析与处理,逐步取代早期的RFC标准<ref name="url-standard" /><ref name="wiki-url" />。


=== 积木式编程体系 ===
== 结构 ==


Scratch 最核心的特点就是积木式的编程体系,所有的编程逻辑都被封装为不同颜色、不同形状的积木块,用户只需要将积木块拖拽到编辑区进行拼接,就可以完成程序的编写,无需输入任何文本代码,也不会出现语法错误<ref name="faq"/>。
一个完整的URL通常由多个部分组成,其通用语法格式如下<ref name="c114" /><ref name="rfc3986" />:


这些积木块按照功能被分为不同的类别,包括运动、外观、声音、事件、控制、侦测、运算、变量、自制积木等,覆盖了顺序、循环、条件判断、事件驱动等核心编程逻辑。
<pre>协议 :// 主机名 [: 端口号] / 路径 [ ; 参数 ] [ ? 查询 ] [ # 片段 ]</pre>


图 1: Scratch 3.0 编辑器界面,左侧为积木块分类区域,中间为代码编辑区,右侧为舞台与角色管理区
其中方括号内的部分为可选项。各部分含义如下:


=== 多媒体创作支持 ===
* '''协议(Scheme)''':指定访问资源所使用的通信协议,如 `http`、`https`、`ftp`、`mailto`、`file` 等<ref name="c114" /><ref name="wiki-url" />。协议名称不区分大小写,但通常使用小写。


Scratch 内置了完整的多媒体创作工具,用户可以自行绘制角色与背景,也可以导入外部的图片、声音、视频素材,还可以使用内置的声音编辑器录制与编辑音频,让用户可以完整地完成一个多媒体作品的创作,无需依赖其他工具<ref name="faq"/>。
* '''主机名(Host)''':资源所在[[服务器]]的域名(如 `www.example.com`)或IP地址(如 `192.0.2.1`)<ref name="c114" /><ref name="rfc3986" />。


=== 跨平台与扩展支持 ===
* '''端口号(Port)''':服务器上用于接受请求的端口编号。各协议有默认端口(如HTTP为80,[[HTTPS]]为443),省略时使用默认值<ref name="c114" />。


Scratch 3.0 版本之后,基于 [[HTML]]5 技术重构了整个编辑器,实现了全平台的适配,用户可以在现代[[浏览器]]中直接使用在线编辑器,也可以下载桌面端客户端,同时还支持在平板、手机等移动设备上使用对应的 App 进行创作<ref name="discuss">[https://scratch.mit.edu/discuss/post/4914275/ Scratch. Discuss Scratch 常见问答]</ref>。
* '''路径(Path)''':服务器上资源的具体位置,通常由斜杠分隔的目录和文件名组成<ref name="c114" /><ref name="rfc3986" />。


此外,Scratch 还支持扩展功能,用户可以通过扩展模块连接外部的硬件设备,比如 micro:bit、乐高机器人等,实现从数字创作到物理世界的交互,也可以接入人工智能相关的扩展,实现语音识别、文字识别等 [[AI]] 功能<ref name="csdn"/>。
* '''参数(Parameters)''':部分协议支持的分号分隔的附加参数,现已不常见<ref name="c114" />。


== 版本迭代 ==
* '''查询(Query)''':用于向动态网页传递参数的字符串,以问号 `?` 开头,多个参数之间用 `&` 分隔,格式为 `键=值`<ref name="c114" />。


=== 1.x 版本 ===
* '''片段(Fragment)''':指向资源内部特定位置的标识符,以井号 `#` 开头,常用于定位网页中的某个章节或元素<ref name="c114" /><ref name="rfc3986" />。


Scratch 1.x 系列是 Scratch 的初代版本,基于 Smalltalk 语言开发,仅提供桌面端的安装程序,这一版本奠定了 Scratch 积木式编程的基础框架,初步建立了在线社区,让用户可以分享自己的作品<ref name="csdn"/>。
示例:`https://www.example.com:443/docs/page.html?lang=zh#section2`


=== 2.0 版本 ===
== 与URI的关系 ==


2013 年,Scratch 2.0 正式发布,该版本基于 Flash 技术开发,首次推出了在线编辑器,用户无需下载安装就可以在浏览器中直接创作,同时也保留了离线的桌面端版本。这一版本新增了自制积木、云变量等功能,进一步提升了创作的能力<ref name="kuaidong"/>。
URL是[[统一资源标识符]](URI)的一个子集。URI是一个更广义的概念,用于唯一标识一个资源,而URL不仅标识资源,还提供了定位和访问该资源的方法<ref name="rfc3986" /><ref name="wiki-url" />。URI的另一个子集是[[统一资源名称]](URN),它仅通过名称标识资源而不涉及位置<ref name="rfc3986" />。


=== 3.0 版本 ===
在实践中,URL和URI两个术语经常被混用,但技术上所有URL都是URI,反之则不一定成立<ref name="wiki-url" />。


2019 年 1 月 2 日,Scratch 3.0 正式发布,这是 Scratch 的一次重大技术升级,放弃了 Flash 技术,转而使用 HTML5 与 [[Java]]Script 进行重构,解决了 Flash 逐渐被淘汰的问题,同时实现了移动端的适配,让用户可以在平板等设备上使用 Scratch<ref name="discuss"/>。该版本还新增了大量的新积木、新角色素材,重构了声音编辑器,并且引入了扩展功能体系,支持更多的硬件与 AI 能力。截至 2025 年,3.x 系列仍然是 Scratch 的主流稳定版本,持续进行小版本的更新与优化。
== 编码 ==


=== 4.0 版本规划 ===
URL中只能使用[[ASCII]]字符集的一部分字符。对于不在允许范围内的字符(如中文、空格、特殊符号等),需要进行'''百分号编码'''(Percent-encoding,又称URL编码)<ref name="mdn-percent">[https://developer.mozilla.org/zh-CN/docs/Glossary/Percent-encoding 百分号编码 - MDN Web Docs]</ref>。编码方式是将每个非ASCII字符或特殊字符转换为 `%` 后跟该字符[[ASCII]]码或[[UTF-8]]编码字节的两位十六进制表示<ref name="mdn-percent" /><ref name="[[go]]ogle-url-encoding">[https://developers.google.com/maps/documentation/url-encoding 网址编码 - Google Developers]</ref>。


2025 年,Scratch 基金会宣布将推进 Scratch 4.0 版本的开发,计划重构在线社区功能,并且引入创新性的 AI 工具,帮助用户更好地进行创作,进一步降低创作的门槛,同时提升社区的互动体验<ref name="kidscode"/>。
例如,空格字符(ASCII 32)编码为 `%20`,中文“上海”在UTF-8下编码为 `%E4%B8%8A%E6%B5%B7`<ref name="[[google]]-url-encoding" />。


== 社区生态 ==
== 标准 ==


Scratch 不仅是一个编程工具,同时也是全球最大的儿童创作社区,用户在完成自己的作品之后,可以将作品上传到 Scratch 的在线社区,与全球的用户分享,其他用户可以对作品进行评论、点赞,还可以 “remix”(二次创作)他人的作品,在原有作品的基础上进行修改与创新,形成了开放的创作生态<ref name="faq"/>。
URL的主要标准文件包括:


截至 2025 年,社区内的用户累计创建的项目已经超过 10 亿个,涵盖了游戏、动画、故事、模拟实验等多种类型,其中游戏类作品占比超过 70%,是社区中最受欢迎的作品类型<ref name="xiaomawang"/>。
* '''RFC 1738'''(1994年):URL的原始标准,已废弃<ref name="rfc1738" />。
* '''RFC 3986'''(2005年):URI通用语法标准,取代RFC 1738成为URL的主要参考<ref name="rfc3986" />。
* '''RFC 3987'''(2006年):国际化资源标识符(IRI)标准,允许在URL中使用非ASCII字符<ref name="url-standard" />。
* '''WHATWG URL Standard'''(实时更新):当前最广泛实施的URL标准,定义了URL的解析、序列化和API,旨在统一各实现之间的差异<ref name="url-standard" /><ref name="wiki-url" />。


然而,除了Scratch官网(scratch.mit.edu)社区之外,也有大量的[[Scratch社区]]。
== 参考文献 ==
 
== 教育应用 ==
 
Scratch 目前已经被全球超过 200 个国家和地区引入到中小学的编程教育中,成为少儿编程教育的标准工具之一<ref name="36kr"/>。通过 Scratch,学生可以在创作的过程中学习计算思维、逻辑思维,同时锻炼解决问题的能力、创造力与协作能力。
 
同时,Scratch 也支持跨学科的教学,教师可以将 Scratch 融入到数学、艺术、语文、科学等多个学科的教学中,比如通过 Scratch 制作数学题的互动演示,或者制作语文课文的动画故事,帮助学生更好地理解学科知识,实现知识的融会贯通<ref name="research">[https://openedu.sou.edu.cn/upload/qikanfile/201903260943511592.pdf 孙立会,周丹华。国际儿童编程教育研究现状与行动路径. 《开放教育研究》,2019]</ref>。
 
== 影响与评价 ==
 
Scratch 的出现极大地推动了全球少儿编程教育的普及,其积木式编程的设计思路也成为了后续大量少儿编程工具的参考标准,带动了整个图形化编程教育领域的发展。


学术研究表明,Scratch 能够有效提升儿童的计算思维能力、问题解决能力,同时能够激发儿童的学习兴趣与创造力,在儿童编程教育中具有显著的效果<ref name="research"/>。截至目前,Scratch 已经成为全球应用最广泛、影响力最大的少儿编程工具,帮助数以亿计的儿童开启了编程的学习之路。
<references />
 
== 衍生软件 ==
 
Scratch程序有派生出其它[[软件]]<ref name="blockswiki">[http://wiki.scratch.mit.edu/wiki/Blocks Blocks - Scratch Wiki]</ref>,例如Snap!,[[TurboWarp(基于Scratch的增强型编程工具)|Turbowarp]](将Scratch项目转换为[[JavaScript]]以优化性能),[[02Engine(基于Scratch衍生的编辑器)|02Engine]],[[Bilup(基于Scratch衍生的编辑器)|Bilup]],clipcc(增强了扩展系统、高质量笔、舞台布局等)、[[Gandi(共创世界的Scratch编辑器)|Gandi]]和AstraEditor等。
 
== 参考文献 ==