一种可跨语言重用的编程语言

著录项
  • CN201210021876.5
  • 20120201
  • CN102880452A
  • 20130116
  • 日照市国软软件有限公司;李天盟;济南高新区动漫游戏研发中心
  • 不公告发明人
  • G06F9/44
  • G06F9/44

  • 山东省日照市日照软件园一楼
  • 中国,CN,山东(37)
摘要
一种可跨语言重用的编程语言。本发明公布了一种使用尽可能简捷且具备自然语言语义的一组特定的术语和语法规则来编写和开发软件应用程序的方法。通过抽象某个特定功能的软件的多种语言开发中相同思想实现部分的表示方法以及多种编程语系的交集语义的描述,从而实现了跨平台、跨编译、可转换、可嵌入的统一开发。通过本发明公开的编译工具能将本语言编写的同一套代码编译成不同平台下的不同形态的应用;平台特性由相应的编译工具实现。通过本发明公布的转换工具,可将本语言编写的代码转换成其他语言(C++、Java、C#、Pascal、Obj-C等),也可以转换为被ARM嵌入式芯片直接执行的代码。通过本发明公布的标准开发库,可将本语言直接嵌入到其他语言中进行混合编程。通过本发明公布的IDE和模拟器,可实现跨平台调试和模拟运行。
权利要求

1.一种用于软件应用程序开发的编程语言,包括用于开发软件应用程序的一组术语、语法规则、标准开发库、(跨语言)开发工具(包括IDE、转换工具和编译工具)。

2.根据权利要求1所述的编程语言,其特征在于:变量和函数都不用声明(无需function、sub、def之类的修饰词),无需定义数据类型直接写函数名,根据返回值自动判定函数类型,支持同一函数有多种类型的返回值,编译器使用空行区分函数体,必须使用return(可无返回值)结束,调用时使用小括号()。

3.根据权利要求1所述的编程语言,其特征在于:类不用声明,编译器使用文件名自动命名,文件名就是类名,扩展名为小写的tml,以实现自动识别编译;子类文件名为“父类名.子类名.tml”;多重继承文件名为“父类1.父类2.……父类n.子类名.tml”,子类中没有的attributes,按照从左到右(先查父类1,然后查父类2……最后查父类n)的顺序在基类中查。

4.根据权利要求1所述的编程语言,其特征在于:入口函数为Main,必须写在项目文件中;项目文件必须放在project目录下,扩展名为tml,文件名按照平台和用途命名;整个项目的目录必须按照图2的格式构建。

5.根据权利要求1所述的编程语言,其特征在于:支持解释性调试和编译性执行的双重运行模式,编译规则是:首先转成高效的C语言编译为二进制指令(二进制格式由平台定义,与代码无关),如果遇到不支持的平台,则进行字节型编译;同理,也可以让最终用户自由指定本地编译并构建一个程序版本。

6.根据权利要求1所述的编程语言,其特征在于:没有inlcude或import语句,若要包含外部文件也无需写在代码中,写在项目属性中即可,由编译器自动识别包含关系。

7.根据权利要求1所述的标准开发库,其特征在于:提供一套可跨平台重用的GUI,与现有技术的区别点在于:通过单窗口虚拟多窗口多任务技术,实现最低资源消耗,控件不单独绘制,整屏一起绘制,绘制时通过多线程,多面绘制,高效率渲染;控件响应也要通过多线程来调度;两者用一个线程,绘制的时候不处理响应。

8. 根据权利要求1所述的转换工具,其特征在于:能将同一份源代码转换为C++、Java、C#、Pascal、Obj‑C语言的多套源代码,也可以转换为被ARM嵌入式芯片直接执行的语言,实现跨语言的代码重用。

9.根据权利要求1所述的编译工具,其特征在于:能完成一部分编程工作(如图3),并将同一份源代码直接编译成Windows、Unix、MacOS X、iOS、Android、Linux、Solaris、FreeBSD 等平台的多种应用,实现跨平台的代码重用。

10.根据权利要求1所述的标准开发库,其特征在于:提供嵌入到其他语言的扩展接口,也就是说其他语言通过引用TMLib将TML作为extern模式链接到同一代码中实现混合编程和源代码直接重用。

说明书
技术领域

本发明涉及一种用于软件应用程序开发的编程语言,具体涉及到用于开发软件应用程序的一组术语、语法规则、标准开发库、(跨语言)开发工具(包括IDE、模拟器、转换工具和编译工具)。

计算机编程语言有几千种,虽然都有各自的优点和特性;但它们编写的代码都存在两个问题:跨语言重用性差和跨平台重用性差。

第一个问题,跨语言重用性差是指在某些算法(如单源最短路径、贪婪算法等)和某类应用(如3D游戏)的编程中,各语言处理流程几乎大同小异;比如3D游戏一般的程序流程是“算法建模‑>渲染‑>算法建模‑>渲染‑>……”如此循环而成。这种情况下,如果想实现多语言开发,虽然算法相同却无法重用以前用别的语言写好的算法,便会产生重复开发成本,并可能代价极高。

作为第一个问题的技术背景,虽然人们发展的UML(Unified  Modeling Language,统一建模语言或标准建模语言)和PDL(Program Design Language,设计性程序语言),被认为能够实现跨语言的建模和重用,然而这些语言都处于软件开发的设计阶段,均不被认为是软件的代码。

第二个问题,许多应用需要跨多个平台,而有些平台(如iOS、WindowsPhone等)不支持Java、有些平台(如iOS、Android)则不至支持C++,无法实现用统一的语言开发多个终端的应用,而跨平台移植又可能产生昂贵的成本。

作为第二个问题的技术背景,历史上出现了近百种脚本语言(如Lua、Python、Ruby等)能够实现跨平台的直接代码重用。但脚本语言都是解释性和寄生性的,不能独立开发完备的软件,并且运行效率低、语法冗长(相比本语言)、易出错,难以实现用户级的线程库和复杂递归应用,不可转换成其他语言,也不可直接编译成软件产品。相比本发明来说,这些语言还存在语法扩散、过度使用符号标示、精度表示繁琐、缺乏标准函数库、开发效率低、执行慢等缺点。

为了解决上述技术问题,本发明公开了一种编程语言,为方便说明,以下将其简称为TML(Thought Markup Language); 将本发明的编程语言的标准开发库简称为TMLib(Thought  Markup Language Library)。

TML内建数据结构、动态类型和动态绑定。

TML标示符(关键词)只有9个:for、return、break、if、else、err、continue、trace、NULL,不超过C语系(含C++、JAVA)、PASCAL语系、BASIC语系的交集,不包含语言特性、API和环境语句,确保能够转换为其他语言。

TML变量不用声明,在首次使用时,由编译器自动识别,数据类型识别规则是:首先根据调用需求判定,其次根据其值判定,最后判定为NULL。

TML数组使用中括号[]表示,为提高重用性,不支持异构数组。

TML函数不用声明(无需function、sub、def之类的修饰词),定义时不用写修饰符直接写函数名。

TML函数无需定义函数类型,根据返回值自动判定函数类型。

TML函数必须使用return(可无返回值)结束,调用时使用小括号(),见实施例1。

TML同一函数可有多种类型的返回值。

TML函数体使用空行区分。

TML语句使用换行分割,语句末尾不加分号。

TML使用缩排区分代码段(block)

TML类不用声明,编译器使用文件名自动命名,文件名就是类名,扩展名为小写的tml,以实现自动识别编译。

TML子类文件名为“父类名.子类名.tml”。

TML多重继承文件名为“父类1.父类2.……父类n.子类名.tml”,子类中没有的attributes,按照从左到右(先查父类1,然后查父类2……最后查父类n)的顺序在基类中查。

TML的入口函数为Main,不写在代码中,必须写在项目文件中。

TML项目文件必须放在project目录下,扩展名为tml,文件名按照平台和用途命名。整个项目的目录必须按照图2的格式构建。

TML类构造时自动调用init函数,init可缺省,可加参数。

TML支持解释性调试和编译性执行的双重运行模式。

TML调试语句使用trace实现,trace只在调试时输出数据,编译时被忽略。

TML编译规则是:首先转成高效的C语言编译为二进制指令(二进制格式由平台定义,与代码无关),如果遇到不支持的平台,则进行字节型编译。同理,也可以让最终用户自由指定本地编译,并构建一个程序版本。

TML浮点可使用e表示。

TML虚数使用j表示。

TML字符串用双引号””表示。

TML注释写使用//和/*….*/ 。

TML转译字符使用反斜杠()表示。

TML区分大小写,类名(文件名)和函数名首字母必须大写,变量名必须小写。

TML没有inlcude或import语句,因为文件名和类名的统一使这些语句变的多余。若要包含外部文件也无需写在代码中,写在项目属性中即可,由编译器自动识别包含关系。避免重复包含,降低了代码依赖性。

TMLib提供开发中常用的数据结构(包括异构数组、哈希表、字典等)、函数(包括绝对值、四舍五入、地板除、随机数、三角函数、正则等)和GUI。

TMLib提供嵌入到其他语言的扩展接口,也就是说其他语言通过引用TMLib将TML作为extern模式链接到同一代码中实现混合编程和源代码直接重用,见实施例2。

 TMLib提供一套可跨平台重用的GUI,与现有技术的区别点在于:通过单窗口虚拟多窗口多任务技术,实现最低资源消耗,控件不单独绘制,整屏一起绘制,绘制时通过多线程,多面绘制,高效率渲染。控件响应也要通过多线程来调度。两者用一个线程,绘制的时候不处理响应。因此本GUI非常适合3D展示或游戏领域的跨平台开发。

本发明的IDE提供带智能提示的文本编辑器和模拟器。虽然只有Windows单一平台,但由于语言和库的跨平台型,因此在Windows下开发的应用也可以直接运行在iPhone等设备上。IDE对硬件要求低,PII系列即可开发,实际中我们采用PIII 800/256M配置搭建iPhone的开发环境。

本发明的转换工具通过转换算法,将同一份TML源代码转换为C++、Java、C

下面结合附图对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。

图1为本发明的各部分的结构和关系图。

图2为本发明开发的一个3D游戏的项目结构示例图。

图3为本发明的编译器的编译过程,编译器完成了一部分编程工作。

下面结合实施示例对本发明做更进一步的解释。

实施例 1

使用本发明定义一个取绝对值的函数的代码,以说明函数的语法规则:

//定义一个取绝对值的函数

ABS(x)

       if (x<0)

               x=‑x

       retrun x

 上段代码说明了函数名前面无需修饰符,首字母必须大写,无需定义函数类型,必须使用return结束。

实施例 2

使用本发明的标准开发库将本语言嵌入到C++和JAVA中写法为:

extern “TML” {

           //直接编写TML代码

      }

在其他语言中写法与此类似。

实施例 3

使用本发明开发的一款跨平台的3D捕鱼游戏示例项目,项目源代码和目录结构如图2所示,具体步骤如下:

步骤 1 :使用本发明的IDE建立项目,名称一般为项目名或其他有意义的英文缩写,此处起名为3Dgame;

步骤 2 :在创建选项中,选择多平台和设置参数;

步骤 3 :点击创建,如图2所示,会得到一个名为3Dgame的目录,在3Dgame目录下建立4个基本目录:platform(里面已经生成好步骤2所选的平台的标准开发库)、product(用于存放最终产品,包括编译生成文件、图片资源、音乐资源和配置文件)、project(里面已经生成好步骤2所选的平台的项目文件,一般的Windows、Android、iOS等平台都可以使用solution.tml进行编译,ARM嵌入式平台使用ARM.tml进行编译,Qt平台使用Qt.tml进行编译)和source(存放源代码)。这里的目录结构是固定的,才能被编译工具和转换工具识别;

步骤 4 :根据游戏规则,编写源代码,存放在source目录下;

步骤 5 :使用编译工具,编译需要的平台的项目,会生成到product目录下 。编译器会选择运行效率最高的方式编译,如图2,在Windows下将使用Direct3D实现3D渲染,在Android下使用OpenGL ES实现3D渲染。在传统开发中这种选择由代码指定,而本发明中由编译器实现了一部分编程工作,如图3;

步骤 6 :打包发布。

实施例 4

如图3所示,本发明公开了一种可跨语言重用的编程语言的编译工具,编译工具能够将同一份TML源代码直接编译成Windows、Unix、MacOS X、iOS、Android、Linux、Solaris、FreeBSD等平台的多种应用,完成部分代码处理工作,实现跨平台的代码重用。当用户选择好目标平台,开始程序编译后包括以下步骤:

步骤 1 :CPU读取用户选择的平台类型和project下的项目的参数;

步骤 2 :筛选出对应平台上的编译框架集合,如二进制或者字节码类型;

步骤 3 :分析源代码用的主要技术的最优实现方案集合,如3D项目会对应Direct3D、OpenGL等几种实现方案;

步骤 4 :确定平台映射的标准开发库集合,按最优化指标进行排序;

步骤 5 :对步骤2,3,4的三个集合进行组合,得到一组编译方案;

步骤 6 :根据方案将源代码处理为中间码,中间码有可能是C语言或其他代码;

步骤 7 :判断转换是否成功;

步骤 8 :若结果不成功,则选择下一组更宽松的方案进行处理;

步骤 9 :若结果成功,则将source目录下的类文件,逐个编译成对象(或中间文件);

步骤 10 :判断是否编译完成或者方案不能继续放宽; 

步骤 11 :若是,则将对象或中间文件,链接或转换(打包)成最终可执行文件,存放在product目录下。

本发明提供了一种编程语言及使用方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

本文发布于:2024-09-25 11:18:46,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/73328.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议