AppleScript类自然语言与非英语语法设计

2023-10-07 02:20

本文主要是介绍AppleScript类自然语言与非英语语法设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最早知晓是之前C#中文版的github讨论里提到了AppleScript有多语言版. 昨天想起, 觉得它毕竟是为数不多(仅有的?)大公司开发的非英语语法的编程语言, 不禁好奇它的前世今生. 于是作了一点调研.

网上相关资料不多, 最早的一本AppleScript专著"AppleScript in a Nutshell"也是2001年出版, 已经到了Mac 9. AppleScript Not Necessarily in English 提到早先支持日语,法语, 还讨论过"a C dialect", 不知指哪个语言, 但在Mac 8.5版就放弃了(1998年左右)

接着有幸找到了2006年的论文"AppleScript", 更多介绍了多语言支持以及相关问题. 这篇论文其他内容也很有价值, 包括这个项目的起源, 相关项目, 以及这一语言系统从需求分析到实现的各阶段细节. 本文只关注非英语语法部分, 对项目本身有兴趣的不妨自行细阅.

下图是不同"语种"(英语, 日语, 法语, “专业”)的示例代码:
2018_02_04_AppleScript语法示例

文中总结的贴近自然语言语法的语言设计的问题:

The experiment in designing a language that resembled natural languages (English and Japanese) was not successful. It was assume that scripts should be presented in “natural language” so that average people could read and write them. This lead to the invention of multi-token keywords and the ability to disambiguate tokens without spaces for Japanese Kanji. In the end the syntactic variations and flexibility did more to confuse programmers than to help them out. The main problem is that AppleScript only appears to be a natural language. In fact is an artificial language, like any other programming language. Recording was successful, but even small changes to the script may introduce subtle syntactic errors which baffle users. It is easy to read AppleScript, but quite hard to write it.

When writing programs or scripts, users prefer a more conventional programming language structure. Later versions of AppleScript dropped support for dialects. In hindsight, we believe that AppleScript should have adopted the Professional Dialect that was developed but never shipped.

Finally, readability was no substitute for an effect security mechanism. Most people just run scripts — they don’t read or write them.

大致是说, 类自然语言语法(包括英语和日语, 不知为何没提法语)的尝试失败了. 为了实现接近自然语言的语法, 引入了多token的关键词(猜测是类似于"在…中"这样的用法), 以及日语的无空格语法. 问题是, 这样"貌似"自然语言而实质仍然语法严格的后果之一是, 用户误认为小的改动, 其实会导致词法解析的大变化. 也就是**“易读而难写”**. 另一个结论是, “Professional Dialect”, 即接近Java的语法被认为是最应该被保留的, 因为它最接近传统编程习惯.

最后一段的意思是, 即使代码可读性好, 也不能取代一套有效的安全机制. 因为大多数人在运行脚本之前, 并不会先读一遍, 确认它是否安全. 个人认为这个结论对语言设计的借鉴价值有限, 因为安全机制和可读性应该没有直接矛盾.

关于文中提到语法近自然语言导致的问题, 个人认为与目标用户群有关. 文中提到"The language was primarily aimed at casual programmers.“以及"make it accessible to non-programmers”, 可见它的设计初衷和推广目标都是非专业程序员, 而他们是最容易将自然语言和程序语言混淆的. 这个问题同样可以适用于今天, 虽然技术上程序语言语法可以引入更多自然语言元素. 这也许是多数最新的通用型英语编程语言(求反例)仍然与自然语言保持相当距离的一个原因.

话虽如此, 现今的人机交互已经越来越普及, 即使是一般用户, 对手机喊命令的时候也会清楚是对一个只懂得简单语法的机器说话. 随着大众适应的过程, 上面这个混淆的问题也许会不那么严重. 个人猜想, 编程语言的趋势还是逐渐向靠近自然语言的方向发展, 尤其是适用于大众编程的语言.

再回到开头的那个讨论, 提到AppleScript时将这一功能的失败归因于关键词/语法支持多语言导致脚本内容混乱:

But it found limited adoption and where it was adopted scripts became a
mess of mixed languages and Apple eventually dropped support.

回头看是需要考证的, 因为看起来最大的问题在于当时类似自然语言的语法, 即使只使用单纯的英语语法.

这篇关于AppleScript类自然语言与非英语语法设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/155430

相关文章

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

SprinBoot+Vue网络商城海鲜市场的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者,全网30w+

单片机毕业设计基于单片机的智能门禁系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍程序代码部分参考 设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订

Spring的设计⽬标——《Spring技术内幕》

读《Spring技术内幕》第二版,计文柯著。 如果我们要简要地描述Spring的设计⽬标,可以这么说,Spring为开发者提供的是⼀个⼀站式的轻量级应⽤开发框架(平台)。 作为平台,Spring抽象了我们在 许多应⽤开发中遇到的共性问题;同时,作为⼀个轻量级的应⽤开发框架,Spring和传统的J2EE开发相⽐,有其⾃⾝的特点。 通过这些⾃⾝的特点,Spring充分体现了它的设计理念:在

开题报告中的研究方法设计:AI能帮你做什么?

AIPaperGPT,论文写作神器~ https://www.aipapergpt.com/ 大家都准备开题报告了吗?研究方法部分是不是已经让你头疼到抓狂? 别急,这可是大多数人都会遇到的难题!尤其是研究方法设计这一块,选定性还是定量,怎么搞才能符合老师的要求? 每次到这儿,头脑一片空白。 好消息是,现在AI工具火得一塌糊涂,比如ChatGPT,居然能帮你在研究方法这块儿上出点主意。是不