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

news2024/11/16 17:49:29

这本来是一个为工科教学专门开发的附属品,并不是说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语言的技术细节。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

共享WiFi项目加盟需要怎么操作?

共享WiFi项目作为当前热门的创业选择,越来越多的人选择加入这个行业。如果你也对共享WiFi项目感兴趣,并希望通过加盟方式来开展自己的创业计划,那么接下来,我们将为你详细介绍加盟共享WiFi项目的操作方法,助你成功开启…

【AI绘画】Stable Diffusion使用入门教程!!!!

手把手教你入门绘图超强的AI绘画,用户只需要输入一段图片的文字描述,即可生成精美的绘画。给大家带来了全新保姆级教程资料包 (文末可获取) 首先提几个好玩的名词: 炼丹:训练AI学习图片生成模型 咒语&…

tee漏洞学习-翻译-1:从任何上下文中获取 TrustZone 内核中的任意代码执行

原文:http://bits-please.blogspot.com/2015/03/getting-arbitrary-code-execution-in.html 目标是什么? 这将是一系列博客文章,详细介绍我发现的一系列漏洞,这些漏洞将使我们能够将任何用户的权限提升到所有用户的最高权限 - 在…

CentOS最优雅的方式安装mysql8

本来想偷个小懒使用yum/dnf安装一下mysq8,但是发现会出现各种问题,系统是CentOS8的. 于是还是使用最原始但是也是比较简单的方法来进行安装: 首先进入到https://dev.mysql.com/downloads/mysql/ 选择系统是Linux-Generic, 然后系统版本x86 64bit, 选择第一个TAR Archive的文件…

MySQL的SQL分类与数据类型

MySQL是一款广泛使用的关系型数据库管理系统,开源、免费且跨平台,常用于存储、管理和检索结构化数据,并通过SQL语言支持高效的数据操作与管理。 文章目录 何为SQLSQL分类DDLDMLDCLTCLDQL MySQL的数据类型数值型日期型字符串型二进制型其他类型…

Java多线程--对比创建多线程的两种方式

文章目录 一、对比两种方式(1)对比(2)Runnable的好处1、案例12、案例2(3)区别和联系(4)补充说明二、笔试题(1)题1(2)题2一、对比两种方式 (1)对比 <1> 两种方式步骤如下: 方式一:继承Thread类 方式二:实现Runnable接口 <2> 演示代码:计算…

uniapp 用css animation做的鲤鱼跃龙门小游戏

第一次做这种小游戏&#xff0c;刚开始任务下来我心里是没底的&#xff0c;因为我就一个‘拍黄片’的&#xff0c;我那会玩前端的动画啊&#xff0c;后面尝试写了半天&#xff0c;当即我就给我领导说&#xff0c;你把我工资加上去&#xff0c;我一个星期给你做出来&#xff0c;…

Idea 连接 mysql 数据库

前言 为了方便直接在 idea 开发工具中直接使用数据库&#xff0c;如查看数据等&#xff0c;可以在 idea 中配置数据库相关属性&#xff0c;实现操作数据库。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 使用步骤 点击最右面的 database&#xff0…

手把手系列!无需 OpenAI 即可搭建 RAG 应用

OpenAI 是时下最火爆的大语言模型&#xff08;LLM&#xff09;&#xff0c;不过除了 OpenAI 以外&#xff0c;还有许多不同的 LLM。此前&#xff0c;我们发布的许多篇文章中都介绍了如何使用 LangChain、Milvus 和 OpenAI 搭建众多 RAG 应用&#xff0c;这次我们来试试不一样的…

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

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

在FreeRTOS上使用软定时器的ESP32开发指南

在FreeRTOS上使用软定时器的ESP32开发指南 在ESP32的开发中&#xff0c;使用FreeRTOS实时操作系统可以有效地提高多任务处理和系统稳定性。其中&#xff0c;软定时器是一项非常有用的功能&#xff0c;它可以让我们在系统中创建定时任务&#xff0c;而无需硬件定时器的支持。 …

基于cubeMX的正点原子miniSTM32对W25Q64的存储使用

一、实现目标 使用cubeMX建立项目工程&#xff0c;结合正点原子提供的hal库对W25Q64闪存调用的例程&#xff0c;实现W25Q64的读写。 二、实现过程 1、首先建立cubeMX工程&#xff0c;其他项设置不再叙述&#xff0c;只看连接W25Q64的SPI设置&#xff0c;这里使用SPI1&#xf…

css display 左右对齐 技巧

.list_number{ display: flex; } .list_name_number{ width:100px; } //左边固定width .list_name_type{ //右边给flex:2 自动撑开 flex:2; }

docker(上)

笔记资料参考与尚硅谷 前提知识课程介绍课程定位学习建议 1前提知识 boot cloud git push pull redis nginx mysql... Linux centos ubuntu 2课程介绍 2.1 2018 vs 2022 2.2 k8s&#xff08;雷峰崖&#xff09; 2.3 大纲 3课程定位&#xff08;因材施教量体裁衣…

Web08--JavaScript高级

1、BOM对象 BOM&#xff1a;browser object model 浏览器对象模型 BOM对象包括window对象、screen对象、history对象、location对象、navigator对象。 1.1 window对象 所有的浏览器都支持window对象。它表示的浏览器窗口 window对象是js中的顶层对象&#xff0c;所有的j…

DOS经典软件,落下帷幕,国产新一代中文编程体系兴起

互联网的演变犹如狂风巨浪&#xff0c;一些我们以为早已遗忘的软件却深深烙印在心底&#xff0c;特别是对于那些经历了DOS到Windows时代变革的人们来说&#xff0c;这种感觉尤为强烈。 DOS软件&#xff0c;曾是80后青春岁月中的璀璨星辰&#xff0c;如今虽已成为历史的遗迹&am…

Redis内存空间节省小技巧

背景&#xff1a;为提升会员对当前等级的权益感知&#xff0c;需对用户仍未领取的权益进行弹框或消息位置推荐&#xff0c;会员需推荐权益有10项&#xff0c;且项权益均需需校验当日推荐次数并做推送限制&#xff0c;推荐次数记入Redis缓存&#xff0c;会员数据庞大&#xff0c…

[实战]加密传输数据解密

前言 下面将分享一些实际的渗透测试经验&#xff0c;帮助你应对在测试中遇到的数据包内容加密的情况。我们将以实战为主&#xff0c;技巧为辅&#xff0c;进入逆向的大门。 技巧 开局先讲一下技巧&#xff0c;掌握好了技巧&#xff0c;方便逆向的时候可以更加快速的找到关键函数…

代码随想录 Leetcode226.翻转二叉树

题目&#xff1a; 代码(首刷看解析 2024年1月25日&#xff09;&#xff1a; class Solution { public:TreeNode* invertTree(TreeNode* root) {if(root nullptr) return root;swap(root->left,root->right);invertTree(root->left);invertTree(root->right);retu…

Java面试提纲

JDK 1 jdk1.8版本后的新特性有哪些? Java Development Kit (JDK) 1.8&#xff08;也称为Java 8&#xff09;在2014年3月发布&#xff0c;引入了许多重要的新特性&#xff0c;以下是其中的一些关键特性&#xff1a; Lambda表达式&#xff1a; Java 8引入了lambda表达式&#x…