日语编程语言抚子 - 第三版特色初探
它山之石可以攻玉. 学习其他的母语编程语言, 相信对中文编程语言的设计和实践有借鉴意义. 本人刚刚开始接触"抚子"语言, 从官方文档开始探索. 以下试图突出一些发现的特色和亮点, 更完整的语法列表请见讨论组主题帖.
一些背景资料: 官方网站
- 第三版(最新)源码库, 用JavaScript实现, 代码提交从2017/2至今
- 第二版源码库, 用C#实现. 代码提交从2010/6到2016/2.
- 第一版源码库, 用Pascal实现, 最近仍然在更新. 最早代码提交是2008年, 但应该在更早几年前就已经成型.
下面的示例代码源自第三版语法文档. 限于日语水平, 对它的示例源码也许有理解出入. 为方便理解, 已把它们转成对应的中文, 词序有不少调整. 如发现大的出入, 非常欢迎到主题帖批评指正.
接近日语自然语言的语法
比如它允许多种方式赋值:
价格是3000 # 原代码: 値段は3000
价格=2000
置价格为4000 # 値段に4000を代入。
复制代码
很明显它支持是无空格语法, 也同时支持传统(=)赋值和接近自然语言的赋值方式. 这个风格贯穿所有语法. 又如条件语句:
A = 4
如果A不是5显示为「OK」
如果不是显示为「NG」
直到这里。
复制代码
暂时不确定空格缩进是否像Python那样必须, 还是仅为了代码可读性.
特别的'它'
加5到30,并乘以2来显示它。
加5到30。 它乘以两倍。 显示它。
复制代码
它
的使用, 是一个特色. 个人感觉是内置的匿名变量, 并且在函数没有实参时默认使用. 这是很接近自然语言的指代用法! 例如:
它是“ abc ” <--- 后面几行都省略了'它'
空白删除。
大写转换
用“*”替换“A”
显示。
复制代码
在函数中可以用它
, 作为返回的默认值:
●(A和B的)加法是它是A + B返回
直到这里
复制代码
上例中即使没有返回
"它", 函数返回值仍然是它
的值
它
也会随着函数执行而更新, 如下示例, 函数体中没有它
, 但仍然显示50
●(A和B的)加法是B添加到A
直到这里
30和7的加法. 显示它.
复制代码
精简的循环
'回数'是个保留变量, 可以获得当前循环次数的序号:
N=3
(N)次
  显示「这是第{回数}次」。
直到这里。
复制代码
也可以遍历:
重复[1,2,3], 这里开始显示对象。
直到这里。
复制代码
上面的对象
应该是类似回数
的内置变量, 用以返回当前循环对应的值. (推测上面如果是显示{回数}
的话, 应该显示0 1 2
) 上面也可以用显示它
对象按照键遍历:
OBJ = {“Jan”:1,“Feb”:2,“Mar”:3,“Apr”:4}
重复OBJ显示「{对象键} = {对象}月份」
直到这里。
复制代码
这里也可以看到它支持JSON数据结构.
显式声明变量/常量
可带初始化的声明:
A是变量=30
B是常量=50
复制代码
也可以简写:
变量A=30
常量B=50
复制代码
函数
支持递归和匿名函数, 后者还未来得及细究(官方文档在此)
允许内嵌JavaScript
这是个非常重要的功能, 虽然没有深入, 但个人理解是类似于Scala调用Java库的功能, 因而"抚子"语言可以用于所有JavaScript可用的领域(包括前后端). 因为此版是在NPM发布的, 猜测JavaScript也可以调用抚子语言的模块. 在缺乏自身的核心标准库时, 个人感觉新语言依托现有成熟语言的核心库以及丰富的第三方库对推广来说至关重要.
JavaScript回调事件参数 <--- 此处不甚理解
参数
这一内置变量可以以数组形式获取event参数的值。
●(A和B的)加法是它=参数[0] + 参数[1]
直到这里
显示3和5的加法。
复制代码
对移动设备和输入法的特别优化
一个很有特色的功能是, 为了简便地访问数组/对象. 因为智能手机很难输入A[n]
(猜想因为[]是在"符号"部分), 因此允许A@n
. 这是第一次看到为了移动设备而设计的功能.
其他
字符串展开
感觉类似于Scala的功能(string interpolation). 复杂的字符串可以用S{{{...}}}
(三对以上的大括号)表示:
得分是35。 评价是「A」。
成绩报告是S{{{★成績表★
·他的分数是{得分}。
·评价是{评价}。}}}
显示成绩报告。
复制代码
返回:
★成績表★
・他的分数是35。
・评价是A。
复制代码
转载于:https://juejin.im/post/5d2f99d2e51d45775c73dd94
日语编程语言抚子 - 第三版特色初探相关推荐
- 2017-11-06 日语编程语言抚子 - 第三版特色初探
它山之石可以攻玉. 学习其他的母语编程语言, 相信对中文编程语言的设计和实践有借鉴意义. 本人刚刚开始接触"抚子"语言, 从官方文档开始探索. 以下试图突出一些发现的特色和亮点, ...
- 2017-11-06 日语编程语言抚子 - 第三版特色初探 1
它山之石可以攻玉. 学习其他的母语编程语言, 相信对中文编程语言的设计和实践有借鉴意义. 本人刚刚开始接触"抚子"语言, 从官方文档开始探索. 以下试图突出一些发现的特色和亮点, ...
- 日语编程语言抚子-第三版实现初探
前文日语编程语言"抚子" - 第三版特色初探仅对语言的语法进行了初步了解. 之前的语言原型实现尝试(如编程语言试验之Antlr4+JavaScript实现"圈4" ...
- 2017-12-22 日语编程语言抚子-第三版实现初探
前文日语编程语言"抚子" - 第三版特色初探仅对语言的语法进行了初步了解. 之前的语言原型实现尝试(如编程语言试验之Antlr4+JavaScript实现"圈4" ...
- 2017-12-22 日语编程语言抚子-第三版实现初探 1
前文日语编程语言"抚子" - 第三版特色初探仅对语言的语法进行了初步了解. 之前的语言原型实现尝试(如编程语言试验之Antlr4+JavaScript实现"圈4" ...
- 《精通 ASP.NET MVC 3 框架(第三版)》----第2章 准备工作 2.1 准备工作站
本节书摘来自异步社区<精通 ASP.NET MVC 3 框架(第三版)>一书中的第2章,第1节,作者: [美]Adam Freeman , Steven Standerson,译者: 林逸 ...
- python基础教程第三版-《Python基础教程第三版》原版中英文PDF+代码+袁国忠(译)...
<Python基础教程第3版>整本书的结构安排还是比较明显的.先是基础知识和python的基本数据类型和语言特性介绍,然后是面向对象的编程.之后介绍python的标准库以及相关主题的编程( ...
- 琢石成器――windows环境下32位汇编语言程序设计(第三版)笔记
琢石成器――windows环境下32位汇编语言程序设计(第三版)笔记 2011年12月20日 基础篇 第1章 背景知识 1 1.1 Win32的软硬件平台 1.1.1 80x86系列处理器简史 1.1 ...
- 要点初见:OpenCL 2.0 异构计算 [第三版] 知识点整理
Word 版Github项目地址: https://github.com/BingLiHanShuang/Chinese-Knowledge-Collation-of-Heterogeneous-Co ...
最新文章
- 拥抱AI大趋势,ARM发布两款AI芯片架构
- 重装windows installer
- ajax返回的是流如何转换为pdf,如何在AJAX请求成功响应中返回PDF文件
- 什么时候z检验什么时候t检验?
- java对象引用出错_上传图片错误:尝试在空对象引用上调用虚拟方法’java.lang.String android.net.Uri.getLastPathSegment()’...
- 计算机三级会保研加分吗,366所高校有保研资格,除了对成绩有要求外,还有哪些要求?...
- 他高考数学仅得15分,清华校长复查后激动拍板:这名学生,我要了
- 网友希望一加7像iPhone XR一样流畅 刘作虎:iPhone很卡
- Linux命令详解-mkdir
- LeetCode Sumary - Graph
- C站能力认证(C4前端基础认证) //任务二:根据浮动布局以及定位布局的特性,实现构建下列(截图)中的页面
- mysql datasource.url_DataSource配置
- 利用seven 7zip的API来进行压缩和解压文件夹
- Scratch软件界面介绍
- CSGO 详细控制台指令(更新中)
- Vue 3 Component emitted event “confirmForm“ but it is neither declared in the emit
- 开放式式商业模式_开放式和封闭式耳机之间有什么区别,我应该得到什么?
- 删库不跑路-详解MySQL备份策略
- Luogu 3642 [APIO 2016] 烟火表演
- java相传韩信才智过人_韩信点兵(hanxin)
热门文章
- 通过 SAP Spartacus 的 Component 映射机制,更改默认购物车 Cart 页面
- SAP gateway 里对 OData eq ne lt gt 操作的实现源代码
- SAP云平台CloudFoundry的Access Token和refresh token
- SAP S/4HANA生产订单创建之后,为什么会自动执行action
- pandas算加权平均值_4000 字详解TCP超时与重传,看完没收获算我输
- linux+ip+路由设置,Linux下IP巧设置-网管专栏,防火墙和路由
- java 自定义注解 生成json_SpringBoot:自定义注解实现后台接收Json参数
- 使用C语言写一个扫雷小游戏
- 整型数组中三个数的最大乘积
- 《计算机网络》第10章在线测试,《计算机网络》第07章在线测试