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

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

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

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代码都搬过来,生活不要太惬意!

var a= np.arange(12).reshape(3,4)
var b= a[2:][1]

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

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语言的技术细节。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/346868.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一个使用pyqt的word文档查重工具

一个使用pyqt的word文档查重工具 使用场景代码使用截图打包好的软件下载链接结尾 使用场景 有时我们在借鉴一篇文档之后还不想有太多重复,这个时候可以使用这个工具对两个word文档进行对比 代码 import sys from PyQt5.QtWidgets import QApplication, QMainWind…

[RK-Linux] 移植Linux-5.10到RK3399(十)| 配置AP6256模组使能WIFI、BT功能

手上 ROC-RK3399-PC Pro 使用蓝牙 WIFI 模组是 AP6256。 一、AP6256 模组介绍 AP6256是正基科技(AMPAK)推出的一款低成本、低功耗的双模模块,它集成了Wi-Fi和蓝牙功能。这款模块支持SDIO接口,具有以下特点: 1、型号:AP6256 2、接口:SDIO(Secure Digital Input/Outp…

搜维尔科技:【简报】元宇宙数字人赛道,优秀作品赏析《大福太郎》

这次采用亮眼的浅粉做为发色,为了贴合她小警察的身分 给了她一顶特制的警帽,上面有大福的荧光蓝叶片作为标 志,而在配件及裙子上也加入了许多科技元素的小巧思。 学校: 朝阳科技大学(台湾) 选手&#xff…

排序算法经典模型: 梯度提升决策树(GBDT)的应用实战

目录 一、Boosting训练与预测 二、梯度增强的思想核心 三、如何构造弱学习器和加权平均的权重 四、损失函数 五、梯度增强决策树 六、GBDT生成新特征 主要思想 构造流程 七、梯度增强决策树以及在搜索的应用 7.1 GDBT模型调参 7.1.1 框架层面参数 n_estimators su…

【制作100个unity游戏之23】实现类似七日杀、森林一样的生存游戏1(附项目源码)

本篇最终效果演示 文章目录 本篇最终效果演示系列目录前言环境素材绘制地形 实现人物移动指示显示物品名称源码完结 系列目录 【制作100个unity游戏之23】实现类似七日杀、森林一样的生存游戏1(附项目源码) 【制作100个unity游戏之23】实现类似七日杀、森…

申万宏源基于 StarRocks 构建实时数仓

作者 :申万宏源证券 实时数仓项目组 小编导读: 申万宏源证券有限公司是由新中国第一家股份制证券公司——申银万国证券股份有限公司与国内资本市场第一家上市证券公司——宏源证券股份有限公司,于 2015 年 1 月 16 日合并组建而成&#xff0c…

【若依】关于对象查询list返回,进行业务处理以后的分页问题

1、查询对象Jglkq返回 list,对 list 进行业务处理后返回,但分页出现问题。 /*** 嫁功率考勤查询*/RequiresPermissions("hr:kq:list")PostMapping("/list")ResponseBodypublic TableDataInfo list(Jglkq jglkq) throws ParseExcepti…

简单高效 Learn LaTeX 009 - LaTex Cite Notes (30 mins) 引用与注释

这一集里介绍了对文献引用的表示方法,和添加注释文本的方法: https://www.ixigua.com/7298100920137548288?id7304342671428944403&logTag495628805c8329a41ffa

JVM系列-6.java垃圾回收

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术、JVM原理🔥如果感觉博主的文…

PyTorch深度学习实战(32)——DCGAN详解与实现

PyTorch深度学习实战(32)——DCGAN详解与实现 0. 前言1. 模型与数据集分析1.1 模型分析1.2 数据集介绍 2. 构建 DCGAN 生成人脸图像小结系列链接 0. 前言 DCGAN (Deep Convolutional Generative Adversarial Networks) 是基于生成对抗网络 (Convolution…

香港代理IP为何受欢迎?

香港代理IP深受用户欢迎的原因主要有以下几点: 1,地理位置优势:香港位于亚洲的中心地带,与中国大陆、东南亚和其他亚洲国家都有良好的网络连接。这使得使用香港代理IP可以实现较快的网络连接速度和较低的延迟,特别是对…

架构篇24:排除架构可用性隐患的利器-FMEA方法

文章目录 FMEA 介绍FMEA 方法FMEA 实战小结 前面的专栏分析高可用复杂度的时候提出了一个问题:高可用和高性能哪个更复杂,根据墨菲定律“可能出错的事情最终都会出错”,架构隐患总有一天会导致系统故障。因此,我们在进行架构设计的…

shopee的AI学习之路——GPTs通过AdInteli 广告变现

GPTs|AdInteli 广告变现 一、什么是 AdInteli AdIntelli 是一个旨在为生成 GPTs 接入广告并实现变现的平台。它连接了全球最大的广告联盟,允许广告商进行竞价,确保展示最有价值的广告。AdIntelli 采用 AI 驱动的收入生成技术,优化广告选择。…

【github】使用github action 拉取国外docker镜像

使用github action 拉取国外docker镜像 k8s部署经常用到国外镜像,如果本地无法拉取可以考虑使用github action环境 github action的ci服务器在国外,不受中国防火墙影响github action 自带docker命令运行时直接将你仓库代码拉取下来 步骤 你的国内dock…

SAP PO平台配置

多个系统分配 : XPATH : /p1:mt_ERP_ZSSF_HFM_001/sapClient SPACE : p1 http://lstech.com/erp/IF0523/ZSSF_HFM_001

qml与C++的交互

qml端使用C对象类型、qml端调用C函数/c端调用qml端函数、qml端发信号-连接C端槽函数、C端发信号-连接qml端函数等。 代码资源下载: https://download.csdn.net/download/TianYanRen111/88779433 若无法下载,直接拷贝以下代码测试即可。 main.cpp #incl…

HDMI之ALLM

概述 ALLM(Auto Low-latency Mode)即自动低延迟模式,在自动低延迟模式下智能电视的用户不用根据电视播放的内容手动来切换低延迟模式,而会根据电视播放的内容自动启用或者禁用低延迟模式。这里的启用或者禁用低延迟功能通常是信号源设备控制的(如游戏设备 Xbox One,或 PS5…

LIMS源码,实验室信息系统源码,后端框架:asp.net

LIMS(laboratory information management system)即实验室信息管理系统是实验室管理科学发展的成果,是实验室管理科学与现代信息技术结合的产物,是利用计算机网络技术、数据存储技术、快速数据处理技术等,对实验室进行全方位管理的计算机软件…

66.Spring是如何整合MyBatis将Mapper接口注册为Bean的原理?

原理 首先MyBatis的Mapper接口核心是JDK动态代理 Spring会排除接口,无法注册到IOC容器中 MyBatis 实现了BeanDefinitionRegistryPostProcessor 可以动态注册BeanDefinition 需要自定义扫描器(继承Spring内部扫描器ClassPathBeanDefinitionScanner ) 重…