日语编程语言"抚子" - 第三版特色初探

简介: 对最新版的"抚子"语言进行各方面学习, 此文从功能和特性开始. Study the unique features and designs from the Japanese programming language Nadesiko.

它山之石可以攻玉. 学习其他的母语编程语言, 相信对中文编程语言的设计和实践有借鉴意义. 本人刚刚开始接触"抚子"语言, 从官方文档开始探索. 以下试图突出一些发现的特色和亮点, 更完整的语法列表请见讨论组主题帖.

一些背景资料: 官方网站

  • 第三版(最新)源码库, 用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). 复杂的字符串可以用{% raw %}S{{{...}}}{% endraw %}(三对以上的大括号)表示:
{% raw %}

得分是35。 评价是「A」。
成绩报告是S{{{成績表
·他的分数是{得分}。
·评价是{评价}。}}}
显示成绩报告。

{% endraw %}
返回:

成績表
・他的分数是35。
・评价是A。

2017-11-06

相关文章
|
4月前
|
关系型数据库 MySQL 数据库
超详细MySQL安装与配置零基础教程(Windows版)
本文为新手量身打造的Windows版MySQL 8.0零踩坑安装指南:涵盖官方下载、卸载残留、Developer Default一键安装、关键参数配置(3306端口、root密码、开机自启)、环境变量设置及全流程验证,步骤清晰、避坑务实,跟着操作即可一次成功。
|
人工智能 算法 计算机视觉
只需完成手画线稿,让AI算法帮你自动上色
本文介绍了如何利用图像处理技术生成手绘风格图像及自动上色的方法。内容涵盖图像灰度化、梯度调整、虚拟深度实现手绘效果,以及使用 Python 编程实现相关算法。此外,还介绍了 AI 工具 Style2Paints V4.5,其可为线稿自动上色并支持多种线稿类型,如插画和手绘铅笔稿,适用于艺术创作与图像处理领域。
|
人工智能 自然语言处理 Java
DeepSeek 满血版在 IDEA 中怎么用?手把手教程来了
DeepSeek 满血版在 IDEA 中怎么用?手把手教程来了
|
存储 监控 安全
什么是事件日志管理系统?事件日志管理系统有哪些用处?
事件日志管理系统是IT安全的重要工具,用于集中收集、分析和解释来自组织IT基础设施各组件的事件日志,如防火墙、路由器、交换机等,帮助提升网络安全、实现主动威胁检测和促进合规性。系统支持多种日志类型,包括Windows事件日志、Syslog日志和应用程序日志,通过实时监测、告警及可视化分析,为企业提供强大的安全保障。然而,实施过程中也面临数据量大、日志管理和分析复杂等挑战。EventLog Analyzer作为一款高效工具,不仅提供实时监测与告警、可视化分析和报告功能,还支持多种合规性报告,帮助企业克服挑战,提升网络安全水平。
731 2
|
项目管理 数据安全/隐私保护 Python
使用poetry来更优雅的管理 python 包
Poetry 的优势在于它提供了一个统一的工具来处理 Python 项目的整个生命周期,从依赖管理到打包和发布。它的依赖解析器非常强大,能够有效地处理复杂的依赖关系。此外,Poetry 还提供了一个直观的命令行界面,使得项目管理变得更加简单。 对于团队协作和项目部署来说,Poetry 的依赖锁定功能(通过 poetry.lock 文件)特别有用,因为它确保了所有环境中使用相同版本的依赖。
|
传感器 大数据 数据处理
深入理解Python中的生成器:用法及应用场景
【10月更文挑战第7天】深入理解Python中的生成器:用法及应用场景
814 1
|
前端开发 JavaScript
前端框架的选型、分类、常用框架整理(含官网链接)
前端框架的选型、分类、常用框架整理(含官网链接)
1182 7
|
存储 Ubuntu Linux
Windows与Linux的和谐共处时代!🏠
梦想在一台电脑上同时拥有Windows的便捷与Linux的强大开源功能吗?通过虚拟机技术,这已成为现实!虚拟机让你在同一硬件上构建多个独立系统环境,仿佛拥有多台电脑。无需重启,即可无缝切换操作系统,无论是开发、测试还是学习,都能轻松应对。本指南将带领你从下载VMware Workstation开始,一步步创建属于自己的Linux虚拟机,开启多系统并行的新篇章。🚀🏠🌈
439 0
|
设计模式 API Python
Python Web:Django、Flask和FastAPI框架对比
Python Web:Django、Flask和FastAPI框架对比
1037 0

热门文章

最新文章