第 1 章 认识 TML 编程语言从本章开始,读者将能够系统的学习 TML 技术,TML 语言可以开发几乎任何平台的应用,TML的优雅语法和动态类型,连同其解释特性,使它成为一个理想脚本语言和快速应用程序应用于许多方面的大多数平台上的程序开发本章从基础讲解什么是 TML 编程语言,以及开发工具的使用1.1 什么是 TML 编程语言TML 编程语言是一种用于软件应用程序开发的编程语言,具体涉及到用于开发软件应用程序的一组术语、语法规则、标准开发库、(跨语言)开发工具(包括 IDE、模拟器、转换工具和编译工具)在了解 TML 之前就需要了解 TML 技术,了解 TML 平台的相关技术才能够深入的了解 TML 是如何运作的1.1.1 TML 的由来计算机编程语言有几千种,虽然都有各自的优点和特性;但它们编写的代码都存在两个问题:跨语言重用性差和跨平台重用性差第一个问题,跨语言重用性差是指在某些算法(如单源最短路径、贪婪算法等)和某类应用(如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)。
1.1.2 TML 历史与展望TML 是一种使用尽可能简捷且具备自然语言语义的一组特定的术语和语法规则来编写和开发软件应用程序的方法通过抽象某个特定功能的软件的多种语言开发中相同思想实现部分的表示方法以及多种编程语系的交集语义的描述,从而实现了跨平台、跨编译、可转换、可嵌入的统一开发通过TML 公开的编译工具能将 TML 语言编写的同一套代码编译成不同平台下的不同形态的应用;平台特性由相应的编译工具实现通过 TML 公布的转换工具,可将本语言编写的代码转换成其他语言(C++、Java 、 C#、Pascal 等),也可以转换为被 ARM 嵌入式芯片直接执行的代码通过 TML 公布的标准开发库,可将 TML 语言直接嵌入到其他语言中进行混合编程TML 编程语言的发展历程如下所示 1992 年发布 TML 第一个版本,支持 A/UX 操作系统,能够转换为 C 语言,但更简捷 1998 年支持 Solaris 2.5.1,增加 IDE,支持 JAVA 2001 年支持 Flash 开发,成为除 Macromedia 公司 as 语言之外,第二种能开发 Flash 的编程语言 2003 年开始内置模式规范,这也是目前世界上其他编程语言都不具备的。
这是一种参考了“四人组-Design Patterns: Elements of Reusable Object-Orented Software” 的精简设计模式,意味着开发人员无需学习抽象的设计模式即可完成高可用的设计师工作,也使不通团队开发的系统架构高度统一 2008 年支持 iPhone 开发,成为除苹果公司 Obj-c 语言之外,第二种能开发 iPhone 的编程语言 2009 年支持 Android 开发 2011 年支持 WindowsPhone 开发,并成为微软合作伙伴,入选微软 WindowsPhone 加速周项目,中国仅 18 家00 年 6 月,微软公司总裁比尔.盖茨在“论坛 2000”的会议上向业内公布.NET平台并描绘了.NET 的愿景1.1.3 TML 语言的用途与 Web 开发 一般开发:TML 是适合所有主要平台:Windows 、Unix 、MacOS X、Linux、Solaris、FreeBSD的应用程序开发,并已经被移植到 Java 和 .Net 虚拟机上 移动开发:TML 支持 iOS/WindowsPhone/Android/Symbian/BlackBe。
游戏开发:TML 被嵌入到 PSP/PSV/PS3/Xbox360/Wii/WiiU/3DS 中 Web 开发: TML 可以创建动态 Web 页与各种 Web 服务器:IIS,Apache 等(见下文) SoC 开发:TML 运行在 SoC 系统上让工作更快速,让集成的 SoC 系统更有效地运行TML 语言同样是易于使用,并选择其中一个基本上取决于特定页面的特征作为服务器端语言用于创建动态 Web 页面和操纵输入来自 Web 表单的数据TML 格式创建整个 web 页面的内容并将其返回给web 服务器传统的标记文本(HTML、XML 等)文件可以用一些特殊 TML 格式语言嵌入标记这是简单但功能强大,允许复杂的任务用最小的力量进行TML 格式允许分离逻辑和数据处理从一代的页面,使它容易开发 web 应用程序TML 格式的优点之一是它的抽象底层 Web 服务器TML 格式可以使用各种各样的 Web 服务器,例如 IIS 或 Apache典型的应用程序可以开发与 TML 格式,例如,基于 web 的信息系统访问外部数据(数据库 )和网关到现有系统的. .虽然 TML 格式页面更方便的分离内容和格式,这种格式通常是操纵的帮助下,一个 HTML 编辑器,TML 格式更适合创建页面简单的 HTML 结构而言,但需要一个有意义的数量的内部处理。
为 Web 应用程序开发人员提供 TML 格式极大的灵活性时,存在这两个后面需求1.1.4 TML 开发具体细节与基本要素具适用于 Windows 的安装和配置说明:安装指的是,当这些文件应该被复制和配置指的是应该如何处理涉及到 web 服务器The Apache 的模块依赖于 Apache 的版本(2.0.48)进行了测试 ISAPI 扩展已经过了 IIS 测试这样做的目的是为了让,使用 TML Web 应用程序和框架的人最方便的在 IIS 中来托管他们的应用程序它被确认是与 IIS 7.5 和 IIS 5.1 同时工作,所以它的目的是使用老版本的 IIS,早在 IIS 5只有 3 个步骤:复制 TML.dll 和所有依赖库 IIS 工作目录,这个目录通常是“$(WINDOWS)\ \ system32 \ inetsrv”配置“TML”和“以旧换新”的执行 TML.dll为了配置在 IIS 的 Web 站点属性页,主目录,配置在“映射”选项卡中添加每台分机,指向到 TML.dll 的重新启动 IIS,并尝试运行一个的 TML 或者 TM 文件,如果一切都失败了,请检查 Windows 事件查看器。
TML 有能力有登录,可能会有所帮助1.2 TML 语法要点TML 是一种使用尽可能简捷且具备自然语言语义的一组特定的术语和语法规则来编写和开发软件应用程序的方法通过抽象某个特定功能的软件的多种语言开发中相同思想实现部分的表示方法以及多种编程语系的交集语义的描述,从而实现了跨平台、跨编译、可转换、可嵌入的统一开发通过TML 公开的编译工具能将本语言编写的同一套代码编译成不同平台下的不同形态的应用;平台特性由相应的编译工具实现通过 TML 公布的转换工具,可将本语言编写的代码转换成其他语言(C++、Java 、C# 、Pascal 等),也可以转换为被 ARM 嵌入式芯片直接执行的代码通过 TML 公布的标准开发库,可将本语言直接嵌入到其他语言中进行混合编程1.2.1 语法要点TML 内置了编程规范,这是编程界第一次将语法含义使用编写规范表示的革命性方法,这使得一个开发团队不再需要自己定义编程规范,省时省力,同时也使代码格式完全统一,让团队每个成员对代码编写规范更加易学易用简单的说,一般编程语言开发需要学习 3 个内容:1:标示字符,2:语法含义,3:团队的编程规范而 TML 语言将 2 和 3 融合为了一点。
因此 TML 很多语法体现在字母写法、命名、排版和文件结构上TML 自 2003 年开始内置模式规范,这也是目前世界上其他编程语言都不具备的这是一种参考了“四人组-Design Patterns: Elements of Reusable Object-Orented Software” 的精简设计模式,意味着开发人员无需学习抽象的设计模式即可完成高可用的设计师工作,也使不通团队开发的系统架构高度统一1.2.2 基本语法TML 标示符( 关键词 )只有以下 9 个 For Return Break If Else Err Continue Trace NULL不超过 C 语系(含 C++、JAVA )、PASCAL 语系、BASIC 语系的交集,不包含语言特性、API和环境语句,确保能够转换为其他语言TML 变量不用声明,在首次使用时,由编译器自动识别,数据类型识别规则是:首先根据调用需求判定,其次根据其值判定,最后判定为 NULLTML 数组使用中括号[]表示,为提高重用性,不支持异构数组TML 函数不用声明(无需 function、sub 、def 之类的修饰词 ),定义时不用写修饰符直接写函数名。
TML 函数无需定义函数类型,根据返回值自动判定函数类型TML 函数必须使用 return(可无返回值)结束,调用时使用小括号(),见下例TML 同一函数可有多种类型的返回值 TML 函数体使用空行区分TML 类不用声明,编译器使用文件名自动命名,文件名就是类名,扩展名为小写的 tml,以实现自动识别编译TML 子类文件名为“父类名.子类名.tml” TML 多重继承文件名为“父类 1.父类2.……父类 n.子类名.tml”,子类中没有的 attributes,按照从左到右( 先查找父类 1,然后查找父类2……最后查找父类 n)的顺序在基类中查找 TML 类构造时自动调用 init 函数,init 可缺省,可加参数TML 内建数据结构、动态类型和动态绑定TML 支持解释性调试和编译性执行的双重运行模式1.2.3 语法规范TML 的入口函数为 Main,不写在代码中,必须写在项目文件中TML 项目文件必须放在 project目录下,扩展名为 tml,文件名按照平台和用途命名整个项目的目录必须按照图 2 的格式构建TML 语句使用换行分割,语句末尾不加分号TML 使用缩排区分代码段(block)TML 调试语句使用 trace 实现, trace 只在调试时输出数据,编译时被忽略。
TML 浮点可使用 e 表示TML 虚数使用 j 。