-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
通过中文命名将少儿编程与核心学科结合起来 #97
Comments
借助在线翻译略读了一下官方教育指导, 初步理解是以类似Scratch的日文版为编程环境(可以另选环境). 下一段有点意思:
阐述了其他还有很多基于文字的编程语言, 粗体部分大概是"不仅可以用英文/数字, 也可以用日语表述". 如果理解无误, 这应该是明确点出了在主流编程语言中进行日语命名的可行性. 下面几个与核心学科结合的例子: 另外看到一个日本少儿编程课程的实例, 几点:
之前的一个想法, 将尽可能多的教科书知识(从小学开始)用程序+数据整理表达, 比如 |
@nobodxbodon 是也乎,( ̄▽ ̄)
Blockly 是 Google 开源出来的通用可视化开发界面, 简单说, 类似 Scratch 的可视化编程,只是教育可用, 如果有学校配合, 类似编程猫的社区组织线下活动, 即, 入门前的玩具. |
This comment has been minimized.
This comment has been minimized.
@ZoomQuiet 近来少儿编程逐渐兴起, 感觉此类拖拽式编程被普及不少. 前不久看到的编程猫IDE体验:对Scratch的改进, 在关键词和API中文化的基础上还增加了一些功能. 对比之前对实用编程语言/IDE的特性讨论, 感觉它现在比较欠缺的是对团队开发/代码重用(API封装)/版本控制/测试/调试的支持, 以及功能API的欠缺. 个人认为, 此类编程环境虽然现在仅以教育用途为主, 但也许有潜力由非专业IT人员开发使用. 从最近看到的财经应用和之前的游戏脚本设计例子看, 拖拽式开发可以满足不少小应用的流程控制和复杂度, 而且有语法出错相对较少的优势. 这帖主要探讨少儿编程与核心学科的结合. 对于楼上的想法, 在现在的编程工具中, 感觉似乎用Python3实现最有可行性, 不知有没有其他建议?
|
尝试从人教版小学数学一年级上册开始, 但已经觉得也许从更高年级开始更有可行性(更容易程序化). 感觉这样的项目做大了就会接近wolfram知识库, 区别似乎只是开源和中文化. 准备课认知部分, 如认识上下左右前后, 算法识别不现实. from enum import Enum
class 比较结果(Enum):
多 = "多"
少 = "少"
同样 = "同样"
def 比较(组1, 组2):
for 序号 in range(10):
if 组1:
if not 组2:
return 比较结果.多
else:
组1.pop(0)
组2.pop(0)
else:
if 组2:
return 比较结果.少
else:
return 比较结果.同样
print(比较([1,2], [1,2,3]))
print(比较([1,2,3], [1,2]))
print(比较([1,2,3], [1,2,3])) |
@nobodxbodon 是也乎,( ̄▽ ̄) |
@ZoomQuiet 虽然wolfram提供API, 但并不免费. 而且, 毕竟数据不是开放的, 而且查询结果也是全英文(翻译量会非常大). 刚试了不支持中文查询(不过拼音可以: |
尝试了一下用Python3编写历史数据, 感觉有几个优势:
消失国家 = list(set(国家所属时期[朝代.春秋]) - set(国家所属时期[朝代.战国]))
print("春秋消失的国家: " + 消失国家) 输出:
下面是源码, 仅作原型演示之用, 如果正式开始项目需要更官方的史实参考来源. 非常不成熟, 请多指摘, 尤其是TODO部分. # 来源: 中国少儿百科全书-历史大观: 河姆渡文化-郑和下西洋
from enum import Enum
class 朝代(Enum):
新石器 = "新石器时代"
东周 = "东周"
春秋 = "春秋时期"
战国 = "战国时期"
秦 = "秦朝"
西汉 = "西汉"
东汉 = "东汉"
三国 = "三国时期"
隋 = "隋朝"
唐 = "唐朝"
元 = "元朝"
明 = "明朝"
class 社会类型(Enum):
氏族社会 = "氏族社会"
母系社会 = "母系社会"
# TODO: 添加地点关系, 如国-地区-省-市-镇, 以及行政区划改变(村->镇等)
class 地点(Enum):
浙江 = "浙江省"
余姚 = "余姚市"
河姆渡 = "河姆渡文化"
长江下游 = "长江下游地区"
黄河中游 = "黄河中游地区"
陕西 = "陕西省"
西安 = "西安市"
半坡 = "半坡遗址"
长安 = "长安"
洛阳 = "洛阳"
齐 = "齐国"
晋 = "晋国"
宋 = "宋国"
秦 = "秦国"
楚 = "楚国"
吴_春秋 = "吴国"
越 = "越国"
燕 = "燕国"
韩 = "韩国"
赵 = "赵国"
魏_战国 = "魏国"
鲁 = "鲁国"
匈奴 = "匈奴"
大月氏 = "大月氏"
西域 = "西域"
官渡 = "官渡"
赤壁 = "赤壁"
魏_三国 = "魏国"
蜀国 = "蜀国"
吴_三国 = "吴国"
吐蕃 = "西藏"
蒙古 = "蒙古国"
中亚 = "中亚"
东欧 = "东欧"
西洋 = "东南亚和印度洋沿海"
# TODO: 更多人物信息, 如原名, 性别, 小名等等
class 人物(Enum):
周平王 = "周平王"
齐桓公 = "齐桓公"
晋文公 = "晋文公"
宋襄公 = "宋襄公"
秦穆公 = "秦穆公"
楚庄王 = "楚庄王"
吴王 = "阖闾"
越王 = "勾践"
孔子 = "孔子"
老子 = "老子"
墨子 = "墨子"
孟子 = "孟子"
秦王 = "嬴政"
汉景帝 = "汉景帝"
汉武帝 = "刘彻"
卫青 = "卫青"
霍去病 = "霍去病"
张骞 = "张骞"
袁绍 = "袁绍"
袁术 = "袁术"
曹操 = "曹操"
孙坚 = "孙坚"
刘备 = "刘备"
孙权 = "孙权"
曹丕 = "曹丕"
汉献帝 = "汉献帝"
唐太宗 = "李世民"
李靖 = "李靖"
尉迟恭 = "尉迟恭"
李建成 = "李建成"
魏征 = "魏征"
文成公主 = "文成公主"
松赞干布 = "松赞干布"
武则天 = "武则天"
唐高宗 = "唐高宗"
成吉思汗 = "铁木真"
忽必烈 = "忽必烈"
郑和 = "马和"
朱棣 = "朱棣"
class 年号(Enum):
贞观 = "贞观"
class 路线(Enum):
丝绸之路 = "丝绸之路"
class 群体(Enum):
儒家 = "儒家"
道家 = "道家"
墨家 = "墨家"
class 行为(Enum):
栽种 = "栽种"
制作 = "制作"
结婚 = "结婚"
求教 = "求教"
消灭 = "消灭"
出使 = "出使"
出击 = "出击"
击败 = "击败"
效力 = "效力"
称帝 = "称帝"
class 植物(Enum):
水稻 = "水稻"
class 物件(Enum):
陶器 = "陶器"
国家所属时期 = {
朝代.春秋: [地点.齐, 地点.晋, 地点.宋, 地点.秦, 地点.楚, 地点.吴_春秋, 地点.越, 地点.鲁],
朝代.战国: [地点.齐, 地点.楚, 地点.燕, 地点.秦, 地点.韩, 地点.赵, 地点.魏_战国],
朝代.三国: [地点.魏_三国, 地点.吴_三国, 地点.蜀国]
}
# 数字为公元纪年, 如-5000即公元前5000年, 221即公元后221年
# TODO: 很多年份如秦代-200需更正
时间跨度 = {
地点.河姆渡: range(-6000, -5000),
地点.半坡: range(-4400, -4300),
朝代.东周: range(-770, -221),
朝代.秦: range(-221, -200),
朝代.西汉: range(-200, 0),
朝代.东汉: range(0, 229),
年号.贞观: range(626, 650)
}
# TODO: 此表仅在人物无具体生卒年月时有用
所属时期 = {
地点.半坡: 朝代.新石器,
地点.河姆渡: 朝代.新石器,
人物.孔子: 朝代.春秋,
人物.老子: 朝代.春秋,
人物.卫青: 朝代.西汉,
人物.霍去病: 朝代.西汉
}
所属地点 = {
人物.孔子: 地点.鲁,
}
人物所属群体 = {
人物.孔子: 群体.儒家,
人物.孟子: 群体.儒家,
人物.老子: 群体.道家,
人物.墨子: 群体.墨家
}
属性 = {
地点.河姆渡: 社会类型.氏族社会,
地点.半坡: 社会类型.母系社会
}
# 行为方向为: 前者对后者
# TODO: 加入事件发生时间, 地点
事件 = {
行为.结婚: [(人物.文成公主, 人物.松赞干布), (人物.武则天, 人物.唐高宗)],
行为.栽种: [(地点.河姆渡, 植物.水稻)],
行为.制作: [(地点.半坡, 物件.陶器)],
行为.求教: [(人物.孔子, 人物.老子)],
行为.消灭: [(地点.秦, 地点.韩), (地点.秦, 地点.赵), (地点.秦, 地点.魏_战国)],
行为.出使: [(人物.张骞, 地点.西域), (人物.郑和, 地点.西洋)],
行为.出击: [(人物.卫青, 地点.匈奴), (人物.霍去病, 地点.匈奴)],
行为.击败: [(人物.曹操, 人物.袁绍)],
行为.效力: [(人物.魏征, 人物.李建成), (人物.魏征, 人物.唐太宗), (人物.李靖, 人物.唐太宗), (人物.尉迟恭, 人物.唐太宗), (人物.郑和, 人物.朱棣)],
行为.称帝: [(人物.曹丕, 地点.魏_三国, 220), (人物.刘备, 地点.蜀国, 221), (人物.孙权, 地点.吴_三国, 229)]
}
名言 = {
人物.唐太宗: ["民, 水也; 君, 舟也. 水能载舟, 亦能覆舟"]
} |
@ZoomQuiet 文中提出的几个要素基本上是往对开发者更可读, 在基本概念上更与核心知识(比如数学)一致的方向走. #33 (comment) 中的设想有点相似. 不过这个issue关注的重点并非编程语言本身, 而是构建基础知识库. 文章最后一句很应景:
无论人机交互方式如何变化(编程语言只是其中一条途径), 核心知识是相对稳定的(公理/自然规律/历史/地理等等). |
@nobodxbodon 是也乎,( ̄▽ ̄) 所以, 尝试通过将文本界面变成中文, 并不能本质的提高这类相对稳定的工程经验获得效率... 学习的核心过程, 是自身知识树的重构...信赖大量的专注的有结构的训练... 所以, 可能中文编程 这个概念本身的提出以及实现, 受益最大的, 不是学习者, 而是实现者... |
我觉得JS+H5+Vue+Canvas编程比较好,所见即所得,很快就能创造出有意义的很Cool的东西,这会很吸引小孩子. |
@silverleaves 之前做过中文版logo的原型. 但这里针对的是传统学科/基础知识, 主要目的是义务教育阶段的辅助学习(编程只是工具而非目的), 而不是像现在市面上多数少儿编程采用的从游戏中学基本编程(基本与传统学科无关). |
@silverleaves 对呀, 义务教育阶段最有用的就是 数学和物理了, 数学就是画函数图像以提高象形思维能力, 物理就是动力模拟以提高分析思维能力. JS+H5+Vue+Canvas这一套刚好啊! |
@silverleaves 这里关注的是对基础知识本身的程序/数据化. 利用形成的知识库(如楼上例子: #97 (comment), #97 (comment) )来实现衍生应用可以有很多形式, 比如教学软件/类似wolfram的搜索引擎等等. 至于用何技术实现是确定了应用形式之后再探讨的问题. |
我觉得关键是趣味, 我现在会写C/C++, JS等完全是以一个兴趣点 哪种衍生应用? 我的回答是
|
@silverleaves 上面的代码不是给少儿看的. 举个例子, 三国志系列游戏也是基于了史实和地理知识, 比如城市/人物/大事件年代/兵种相克等等. 这里希望积累的中文知识库就是作为各种衍生应用的基石(游戏只是衍生应用的一种), 性质与这里的各种知识库相同, 只不过是用某种编程语言实现, 而非常用的RDF/OWL格式. |
@nobodxbodon 可以开发一种这样的新的计算机语言吗? 像这样
等价于,js语句
运行示例 |
@silverleaves 技术上做的到. 可以看看一个开源的日语编程语言(最新版也是JS实现), 就挺接近自然语言(包括无空格等): https://zhuanlan.zhihu.com/p/30800689 |
12月份总结:我打算用flash+typescript+haxe+openFL,实现小游戏开发的闭环。让小屁孩也能自己做4399小游戏 |
@Absente adobe flash 的那个 flash??? |
并没有,如果你是学传媒或者数媒的(假设你也去过中传),你就会发现,flash只是在html5可以替代的地方被替代了而已,仅此。 |
如#123 (comment) 所述, 打算先从度量衡开始. 与某历史地理群讨论之后, 发现的确有类似需求. 功能初步设想如下:
初版粗略API设计:
之后的扩展:
待定问题: 参考现有类似功能库: 1/6/2019 发现JSR 385 Units of Measurement API. 打算基于此实现, 以减小重复工作量. |
得知数学 app GeoGebra支持中文函数: |
已开始一些文史、自然方面的常识库:中国历代纪元,中医药方。
参考: |
有点意思,有人要少儿编程学院域名吗:sebcxy.com |
昨天发现日本教育界有将编程与核心学科结合的思路, 如2017年的小学校におけるプログラミング 教育実践上 の 課題, 感觉和之前自己一些想法有些共鸣.
最重要的是, 只有依靠母语命名, 才可以做到这样的结合. 毕竟不可能在少儿时期就用第二语言教学核心学科.
打算研究一下日本官方今年刚发布的小学编程教育指导第一版 (在知乎文章引用), 总结一下可以借鉴的部分.
哪位日语水平在线的童鞋欢迎一同, 靠在线翻译啃还是挺费劲的.
The text was updated successfully, but these errors were encountered: