专门为机器学习开发的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语言的技术细节。

相关推荐
BoBoZz1910 分钟前
AlignTwoPolyDatas 基于ICP算法的配准和相机视角切换
python·vtk·图形渲染·图形处理
dllmayday12 分钟前
Qt/QML + C++ 双向数据绑定(MVVM 模式的几种常用方法(ChatGPT)
开发语言·c++·qt
han_hanker21 分钟前
统一拦截异常 @RestControllerAdvice
java·开发语言·数据库
嗝o゚23 分钟前
Flutter与开源鸿蒙:一场“应用定义权”的静默战争,与开发者的“范式跃迁”机会
python·flutter
liu****23 分钟前
一.脚手架介绍以及部分工具使用
开发语言·数据结构·c++·手脚架开发
一只会奔跑的小橙子25 分钟前
pytest安装对应的库的方法
python
资深web全栈开发32 分钟前
深入理解 Google Wire:Go 语言的编译时依赖注入框架
开发语言·后端·golang
ohoy37 分钟前
EasyPoi 数据脱敏
开发语言·python·excel
Hello World呀39 分钟前
Java实现手机号和身份证号脱敏工具类
java·开发语言
BoBoZz1939 分钟前
MarchingCubes 网格数据体素化并提取等值面
python·vtk·图形渲染·图形处理