AppleScript初体验

相比其它领域专用脚本来说AppleScript感觉来自...地球?因为它应该是市面上最接近自然语言(英语)的编程语言,连其内建文档都做成了类英文字典的格式(例如对象词条被标注为名词,命令为动词)。但对有编程经验的人来说这种语言显得啰嗦,令人不禁反思自然语言的相同属性。为什么显得啰嗦和为什么要啰嗦?

传统编程语言的设计目标是表达和控制,但在表达和控制的顶层概念就作了细分。比如将作为“名词”的对象细分为单数变量和集合;将控制机制分为过程、逻辑控制流、循环遍历等等独立“语言“属性。正是这些顶层技术性设计使得编程语言和自然语言分道扬镳,在专业人士眼里显得言简意赅而变成了普通人乍望去高不可攀的专业。很多应用脚本沿用了通用编程语言文化甚至直接规定某种通用编程语言为应用脚本指定语言,比如Python被作为Linux音乐播放器Rhythmbox的脚本语言,面向的仍然是有编程基础的用户。AppleScript选择了不同的道路,从语法设计上将变量、集合、控制流、循环等等全部集中或者回归到英语语法中,其出发点大概是因为编程语言中的表达和控制概念源自自然语言(我们的思维),不懂编程语言的人理应用书面语对计算机发号施令。更体贴的是,对于同种语义,AppleScript提供了足够多的备用表达方式,正如自然语言一样,进一步降低了脚本作者对字典文档的依赖性;比如所有格可以用of或‘s两种方式表示。遍历可以用every或复数形式实现等。

这样的设计必然会留给脚本解释器大量解释工作,导致运行效率低下。但其目标人群编程效率的提升加上定位在控制大型图形程序,牺牲一点运行效率还是值得的。真正的问题可能在于脚本可读性和维护性。可读性是个悖论。贴近英语的风格使得脚本在篇幅较短的情况下很容易理解;但全部使用AppleScript标准表达方式的脚本正如阅读文字一样,需要细致的线性扫描甚至字字专注,比如复数语法视觉上很不起眼;不象传统脚本语言的控制流语法风格是独立的,视觉上相当容易辨认,适合快速扫描。当然,这可能只是习惯问题,熟悉英语的用户很可能会认为AppleScript非常直观。维护性也来自AppleScript的贴近自然语言的属性,这种属性不但造就繁复的语句,也鼓励用一句话表达复杂语义(各种带从句的复杂句),这样令进一步抽象复用和重构变得困难。如果目标脚本需要方便长期维护,脚本风格必然会回到传统编程语言的精髓:模块化。这样却会淡化贴近自然语言这一AppleScript最大的优势。所以感觉AppleScript只适合作为粘合剂语言,利用它作为应用界面控制接口,而将复杂的逻辑工作交给其它语言,利用Shell接口来开启其它进程协同作战。

因为贴近自然语言,AppleScript可以作为通用应用脚本语言,例如支持大部分Mac内建应用。很可惜的是,个人认为本来它还适合作为跨平台应用语言,却因为平台之争恐难成事。本来其语法无须依赖任何平台相关内容,比如路径表示法是通过名词所有格(of)来表示,不牵涉Windows和Unix机缘巧合下发明的各种正反斜杠语法。这比其它脚本语法依赖标准库和API来处理平台相关内容,或者必须区分字符串编码和Unicode等等的做法要“跨平台”的多。当然,在所有跨平台语言和应用都还在平台差异化为主旋律的商战中蹒跚学步艰难生存的当前,诞生更上层的一招制敌的跨平台应用脚本恐怕只是高级用户的幻想,仍然衷心希望能出现类似的类自然语言跨平台脚本语言,并且流行起来。到那个时候计算机可以从大量的自然语言脚本学到货真价实的人类需求,这对智能化未来也是大有裨益的。


一点浅见。

内容概要:本文介绍了多种开发者工具及其对开发效率的提升作用。首先,介绍了两款集成开发环境(IDE):IntelliJ IDEA 以其智能代码补全、强大的调试工具和项目管理功能适用于Java开发者;VS Code 则凭借轻量级和多种编程语言的插件支持成为前端开发者的常用工具。其次,提到了基于 GPT-4 的智能代码生成工具 Cursor,它通过对话式编程显著提高了开发效率。接着,阐述了版本控制系统 Git 的重要性,包括记录代码修改、分支管理和协作功能。然后,介绍了 Postman 作为 API 全生命周期管理工具,可创建、测试和文档化 API,缩短前后端联调时间。再者,提到 SonarQube 这款代码质量管理工具,能自动扫描代码并检测潜在的质量问题。还介绍了 Docker 容器化工具,通过定义应用的运行环境和依赖,确保环境一致性。最后,提及了线上诊断工具 Arthas 和性能调优工具 JProfiler,分别用于生产环境排障和性能优化。 适合人群:所有希望提高开发效率的程序员,尤其是有一定开发经验的软件工程师和技术团队。 使用场景及目标:①选择合适的 IDE 提升编码速度和代码质量;②利用 AI 编程助手加快开发进程;③通过 Git 实现高效的版本控制和团队协作;④使用 Postman 管理 API 的全生命周期;⑤借助 SonarQube 提高代码质量;⑥采用 Docker 实现环境一致性;⑦运用 Arthas 和 JProfiler 进行线上诊断和性能调优。 阅读建议:根据个人或团队的需求选择适合的工具,深入理解每种工具的功能特点,并在实际开发中不断实践和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值