背景介绍
InterSystems ObjectScript 是由 InterSystems 公司开发的编程语言,诞生于 1980 年代初期。它最初是为了支持 InterSystems 的数据库产品(如 Caché)而设计的,结合了面向对象和过程式编程的特性。ObjectScript 的设计目的是为了高效地处理医疗、财务和其他高性能计算领域的数据密集型应用。
公司老项目使用的是这个技术栈,我没得选,得使用。我明显感觉到,这个编程语言的社区远小于Java,Spring, C#,.NET, Python, AI等主流编程语言以及技术栈社区。出了错只能查官方API,AI编程辅助在这个语言上表现欠佳,比如会为一个类生成API不存在的方法,以及无法察觉到编译顺序之类的底层错误。
和主流编程语言的对比
相同点
面向对象编程
有静态方法和普通方法。
异常处理
使用 TRY/CATCH 结构处理异常,类似于其他编程语言:- TRY {
- // 可能出错的代码
- SET result = 10 / 0
- } CATCH ex {
- WRITE "Error: " _ ex.DisplayString()
- }
复制代码 全局变量
SET ^MyGlobal("UserCount") = 100
"$"为开头的变量的语法
让我想起来了php的变量。$JOB,$ZDATE("YYYY-MM-DD")
类似于C的宏定义
支持预处理器指令和宏定义,在编译时进行文本替换:- #define DEBUG 1
- #if DEBUG
- WRITE "Debug mode enabled"
- #endif
复制代码 现代包管理工具
zpm "search"
差异
高度封装的例程
有点像mysql的存储过程,可以直接使用
反人类的函数习惯
Collections集合的SetAt方法他这里key是在最后一个参数的位置,value在第一个参数位置。
For循环是FOR var=start:increment:end,主流语言是FOR var=start:end:increment
FOR i = 1 : 1 : 10 { code }
Property和Parameter傻傻分不清
两个都是属性的意思,前者表示可以更改,后者表示常量,类似于主流编程语言的const关键字。
奇特的语法
字符串包含
##class调用
编译顺序人工干预
很头疼的特性,让我想起来被C++的手动内存管理折磨,现在需要自己指定编译顺序。
代码生成器
用代码生成代码,提高执行效率。
较难调试,双引号配对的折磨。- If $CLASSMETHOD(type, "%Extends", "%Boolean")
- {
- Do %code.WriteLine(" do data.Write($Select(.."_propName_"="""": ""null"", +.."_propName_": ""true"", 1: ""false""))")
- }
- ElseIf $CLASSMETHOD(type, "%Extends", "%Integer") || $CLASSMETHOD(type, "%Extends", "%Numeric")
- || $CLASSMETHOD(type, "%Extends", "%Float") || $CLASSMETHOD(type, "%Extends", "%Double")
- {
- Do %code.WriteLine(" do data.Write($Select(.." _ propName _ "="""": ""null"", 1: $FNUMBER(+.." _ propName _ ", ""N"")))")
- }
- Else
- {
- Do %code.WriteLine(" do data.Write($Select(.."_propName_"="""": ""null"", 1: """""""" _ .."_propName_"_""""""""))")
- }
复制代码 不存在多线程的类和方法
ObjectScript 本身并没有提供类似其他编程语言(如 Java 或 Python)中的传统 多线程 类或方法。JOB 在 ObjectScript 中是基于 多进程 的,而不是传统意义上的 多线程。
InterSystems ObjectScript 类图查看器
一个用于生成 InterSystems ObjectScript 类的 UML 类图的 Visual Studio Code 扩展。此扩展不仅生成类图,还提供交互式显示和导航功能。
功能
- 从 .cls 文件生成 UML 类图
- 支持类级和文件夹级图表生成
- 在编辑器和资源管理器中集成上下文菜单
- 可视化类关系、属性和方法
- 基于 PlantUML 提供可靠的图表表示
- 使用 PlantUML Web 服务器生成图表(无需安装 Java)
- 新增: 与 InterSystems IRIS 直接集成,获取服务器端类信息
- 新增: 从图表直接在 IRIS Documatic 中浏览类
- 交互式类图导航
- 点击类名、属性或方法可快速跳转到相应代码
- SVG 图表嵌入 HTML 中实现平滑交互
- 类关系的可视化导航
要求
操作系统必需可选(用于本地 PlantUML 生成)Windows- VSCode 1.96.0+
- ObjectScript 类文件(.cls)- Java 8+Linux- VSCode 1.96.0+
- ObjectScript 类文件(.cls)- Java 8+
- Graphviz
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |