专门为机器学习开发的jpy语言

这本来是一个为工科教学专门开发的附属品,并不是说Python或Java有多不好,根本上它就是一个Java工程教材,但又要结合人工智能。因此,出现了这样一个包容性的怪胎,可以用python一样的语法与Java一起编写。

没流行起来的一个致命原因,它是基于Eclipse开发的一套DSL语言,胎生于xText技术,我甚至还开发了VsCode插件。Xtext - Language Engineering Made Easy!

python 复制代码
var a = np.arange(24).reshape(2,3,4)
let a1 = a.shape[0]
println("维度:"+a1)

var c = new int[]{1,2}
println("数组:"+c[0])

var b = a[:-1,2]
b[0] = 9
b.dump

使用jpy语言,可让你像Python一样对数组进行各种维度的切割,还支持对一纬和多维数组的矩阵运算,用起来简直和Python的Numpy一样。

自夸一下,Java版本的Numpy也是我实现的,结合jpy语言用起来还是挺爽的!毕竟我们很多人是来搬砖的,现在给你一辆货车把Python代码都搬过来,生活不要太惬意!

python 复制代码
var a= np.arange(12).reshape(3,4)
var b= a[2:][1]

开发的历程还是挺艰难的,我要和欧洲的大神们在论坛交流。国内熟悉XText技术的程序员很少,官网的Demo也实在是太简单,是我研究了很久才扩展实现了jpy的一整套语法,其中的实现逻辑也是躺了不少坑的,后面会详细解释:

python 复制代码
JpySingleStatement returns XExpression:
	XSwitchExpression |
	XIfExpression |
	XForLoopExpression |
	XBasicForLoopExpression |
	XWhileExpression |
	XTryCatchFinallyExpression |
	XSynchronizedExpression |
	JpyBranchingStatement |
	XExpressionOrVarDeclaration |
	XDoWhileExpression |
	XReturnExpression |
	XThrowExpression |
	XSynchronizedExpression |
	JpyWithOpenAs
;

JpyBranchingStatement returns XExpression:
	{JpyContinueStatement} "continue" |
	{JpyBreakStatement} "break"
;

@Override 
IdOrSuper :
	FeatureCallID | 'super' | 'open'
;

尽管自我感觉很厉害的样子,但至今无人问津少有关注,我也两年没更新维护。说句实在的,Eclipse为什么养一帮人搞xText技术啊,根本是没人用的东西! 毕竟很多人也不是研究编译语言的,甚至开发DSL也鲜有人想到使用Eclipse吧。

先写到这,稍后我再分享实现的jpy语言的技术细节。

相关推荐
凯瑟琳.奥古斯特23 分钟前
动态调优IoU提升OCR文本合并精度
开发语言·python·算法
陌陌龙24 分钟前
【紧急预警!PHP 核弹级漏洞 php2shell】
开发语言·php
白露与泡影34 分钟前
一线 Java 后端面试八股(2026 更新版,含完整答案)
java·开发语言·面试
企业解惑小能手-域智盾系统37 分钟前
内网监控软件策略不生效、日志缺失?一套从现象到根因的排查框架
开发语言·php·域智盾
1024奇点41 分钟前
【仓颉语言入门 · 第二篇 第 10 课】
开发语言·数据库·ide·mysql·开源
布莱克6051 小时前
A* 算法详解:从原理到实现
开发语言·c++·算法
多弗朗皮卡丘1 小时前
C++ 智能指针
开发语言·c++·c++11·智能指针
数据狐(Datafox)1 小时前
一文读懂京东商品详情API:返回字段解读与 JSON 样例
java·开发语言·数据库·windows·json
蒸鱼Yuzheng1 小时前
自动化长任务治理:租约、心跳、孤儿进程与安全回收
自动化测试·python·任务调度·可靠性·分布式系统
小成202303202651 小时前
C++~02运算符重载
开发语言·c++