Nzym 简介:一份关于将彻底改变多媒体的编程语言的白皮书

Published on 12 Aug 2023

新西兰标志

介绍

Nzym 是一种新型编程语言,其重点是使编程更轻松、更简单、更快捷,从而缩短生产时间,甚至产生更好的结果,尤其是对于多媒体应用程序而言。Nzym 的核心是一个脚本文件对象,它可以独立存在,也可以与其他文件对象链接在一起。Nzym 解释器正是通过这些脚本对象来生成程序和内容页面。本文档旨在介绍这种语言及其中的新概念。


Nzym 语法

Nzym 的基本语法非常简单。通过为适当类型的变量分配值来创建对象。例如,要创建一个 Number 类型的新对象,您可以编写以下内容:

数字 myInteger = 10;

使用点符号来调用对象上的方法。例如,要调用 Number 类型对象的Add方法,请编写以下命令:

我的整数.添加 = 6;
// 如果 myInteger 的值之前等于 10,那么现在将是 16

还需要注意的是,分号( ; )用于终止所有语句,注释是使用两个正斜杠(//)和后面的空格来创建的。

原始类型

Nzym 仅引入了五种基本原始类型:
  • 数字- 将存储整数、浮点数或两者的混合
  • 字符串——存储字符,可用于更复杂的表达式
  • 布尔值– 存储真或假的二进制类型
  • – 对象数组,用于创建和定义更复杂的元素
  • 链接——一种可以为空或指向某个函数的唯一类型

类和方法

Nzym 类可用于创建自定义类型。项目中的每个脚本文件都可以作为类来调用和访问,但是,在脚本文件中,可以创建其他类。Nzym 对方法也有独特的看法。就创建方式而言,方法有两种类型,这取决于创建位置。包含在嵌套类中的方法简称为方法。类外的方法称为函数。以下代码给出了这两种方法的示例:


班级人;
字符串名称=无名称;
数字年龄=18;
方法显示名称;
原始名称;
返回;
返回;
函数 GetPerson = String;
人 随机人;
randomPerson.name = 陌生人;
随机人.显示姓名;
返回;

上面的代码创建了一个名为 Person 的类,并实例化了 name 和 age 属性,并使用默认变量对其进行了设置。Person 中还有一个方法,它将打印出给定 Person 类的名称。函数 GetPerson 的返回类型为 String,它实际上会创建一个新的 Person,并根据 Person 类中的方法将其名称打印到屏幕上。


遗产

Nzym 类可以从其他类继承。这允许您重用代码并创建更复杂的类型。要从类继承,您可以在创建类后使用等号,例如,以下类从 Person 类继承:

超级英雄类 = 人;
团体超能力=(激光眼、超强力量、飞行);
有效功率数量 = 1;
方法 PowerInUse;
原始超级能力[activePower];
返回;
返回;

SuperHero 类也可以访问 Person 类的所有属性和方法。

Nzym 流行语

Nzym:一种简单、面向对象、解释型、命令式、多平台、高性能、多线程和动态的语言。

许多编程语言系统使用一组标准关键字来描述它们,这些关键字根据它们的范式、类型规则以及语言旨在解决的问题进行阐述。我们使用这些关键字(我们在这里称之为流行语)来描述 Nzym 并介绍其结构和生态系统的核心创始核心。

Nzym 的开发公司 Sadomba-Mahari Computers (Private) Limited(简称 SM)于 2010 年进入网络开发行业,当时他们注册仅几个月,并涉足津巴布韦当地电影业的专用软件制作。大约几年后,他们还开始在 Android、Windows Phone 和 iOS 平台上开发针对高端手机的移动应用程序。下面的斜体部分旨在叙述 SM 面临的问题,并举例说明 Nzym 的关键词。

简单的

Nzym 开发的一个主要原则是,需要一种可以轻松编程且不需要大量培训的系统,这种系统与之前的概念有些相似,但更简化,甚至可以吸引编程新手。在 Nzym 开发期间,教授的最常见编程语言是与 C++ 语法类似的语言,包括 C++、C#、Java 和 Python。这些编程语言也是面向对象的。虽然 C++ 具有上述其他语言所没有的一些复杂性,例如缺乏内存管理以及指针和运算符重载的概念,但其他语言试图改进这些概念,但对于程序员来说,掌握它们仍然需要很长的学习曲线,因为需要额外的开销和概念,例如垃圾收集、多重继承和广泛的自动强制。
Nzym 专注于对象,完全消除了对括号和许多括号类型甚至引号的需求。对于 Nzym 中的每个语句,通常有两到三个部分,主要形式为:

类型名称类型 = 值;
类型名称.类型方法 = 值2;
类名OfClass = InheritFrom;
函数名称OfFx = 返回类型;
方法名称OfMethod = ReturnType;

通过删除 C++ 中很少使用、难以理解、令人困惑的功能以及 C 类型语法中有时令人困惑的方面(这些方面对于许多人来说造成了许多痛苦和悲伤),一种更简单的语言诞生了。

一开始,SM 只雇佣了三名全职程序员,其中两名是从大学招聘的实习生。他们面临的最大挑战是能够创建和复制静态网站,为不同类型的客户量身定制,但要缩短生产时间。显然,样式表会因项目而异,但有些元素会存在于每个项目中,并且会存在于所有项目中,尤其是导航、页脚小部件、主页、联系页面、关于页面以及用于突出显示产品和展示产品组合的页面。需要一种更简单的原型制作和生产方式……

简单的另一个方面是视觉上的可移植性。Nzym 的目标之一是能够创建可在任何平台上运行并保持其视觉外观和吸引力的媒体应用程序。使用级联样式表和 Web 技术元素来创建标准视觉显示已成为 Nzym 开发的核心目标功能。浏览器、移动应用程序和桌面应用程序中的屏幕显示方式将相同,或者至少在所有平台上的外观和感觉将一致。

面向对象

可以说是描述编程语言时最常用的流行词之一,但实际上是描述 Nzym 的一个关键概念。面向对象编程作为一种编程范式,基于由数据和代码组成的对象。在 Nzym 中,数据以构成对象各种属性的类型的形式存在,然后代码存储在方法(即过程)中。Nzym 使用面向对象设计,因为它有助于清晰地定义接口,并可以提供可重用的元素。

Nzym 的面向对象功能本质上与之前大多数 C 类语言的功能相同,但语法不同,规则也宽松得多。Nzym 脚本文件是 Nzym 项目的关键对象,在脚本文件中,它们可以包含同样被视为对象的类。

在开发网站时,SM 团队知道他们总是需要重新创建常用元素,例如联系表单或下拉菜单,但需要根据客户的要求进行一些修改。由于他们主要处理创建静态网站,因此,如果有一种方法可以将这些常用元素分组到单独的文件中,以便在需要时轻松导入项目,只需为客户进行少量修改,这似乎是个好主意。例如,更改颜色、在表单中添加或删除某些字段,或在菜单上添加图标。

解释

Nzym 脚本文件由 Nzym Builder 解释器(称为 Elephant)解释,输出可以是整个网站,也可以是 nzym 文件(可用作其他 Nzym 项目的库),或者 ctlyst 文件(即 Nzym 字节码),可以使用 Nzym Console 在任何设备或机器上的实现运行。虽然 Nzym Console 现在适用于大多数操作系统,但正在开发更多实现,这将允许在任何设备上运行已编译的 Nzym 程序。但是,如果将 Nzym 程序解释为网站,则输出将立即可移植到任何设备或服务器进行托管,通常为静态网站。

SM 团队会使用当时存在的 Bootstrap 或内部样板来重新创建和生成不同类型的网站。然而,这些代码块有很多缺点,尤其是在不同设备和旧版浏览器上显示时。

Nzym 解释过程的一个关键目标也是创造出适用于任何设备、任何平台的产品,不仅保持视觉可移植性,还保持相同的功能和性能。

至关重要的

Nzym 使用语句来更改程序的状态,因此在这种情况下它是一种命令式编程语言,描述程序在每个步骤中的运行方式。Nzym 还可能遵循过程式编程的原则,即可以通过使用函数从一个或多个过程构建程序,这些函数可以将状态更改定位到特定方法。

SM 团队工作中的一个困难是必须确定在每个项目中重复使用的元素的放置位置。一个网站的菜单系统位于页面顶部的页眉上方,而另一个网站的菜单系统位于页眉下方。有时菜单会放在页眉中,与其他页眉元素放在一起,有时菜单会分开。知道将代码块和菜单放在何处是一项需要非常小心的任务,如果有人暂时离开他们的项目,那么恢复起来总是很困难。如果有人需要从另一个人手中接管正在进行的项目,而无法一目了然地知道项目的进展情况和已经完成的工作,这同样令人不安。

Nzym 的命令式编程使该语言易于学习,因为可以显示清晰的控制流,让用户更有能力更改、修改和优化程序。这也提高了效率,因为程序员可以准确地告诉计算机程序要做什么。在程序方面,模块化具有优势,因为程序可以分解为较小的可重复使用程序,这些程序也可以在其他程序中重复使用。由于命令式范式,调试也简单得多。

多平台

Nzym 的设计不仅针对网络,还考虑到了多媒体应用的整体性。在考虑多媒体应用时,我们指的是结合了文本、图像、视频和音频等不同类型媒体的交互式软件,用于向受众传达信息。这些应用是各种设备和硬件上最主要的软件类型,涵盖各种操作系统、游戏机和手机、手表等消费设备。

虽然网站工作是 SM 的主要收入来源,但 SM 还参与了另一个大型项目,即开发多媒体软件包 AVisPar(非洲视觉软件包)。AVisPar 是一套用于创建 3D 可视化、电影、游戏、游戏资产和视觉效果的软件程序和工具。AVisPar 的独特之处在于它能够利用显卡生成高质量的 3D 渲染并几乎实时地将其保存到磁盘。AVisPar 不仅可在最常见的商用桌面操作系统上运行,还可在某些 Linux 发行版上运行。

由于 Nzym 可以生成带有网络资产的网站,包括带有 JavaScript 和 CSS 的 HTML 页面,因此可以说它是多平台的。但是,如果 Nzym 生成 ctlyst 文件,则可以在任何具有 Nzym 控制台实现的平台上运行该文件。

高性能

至于 ctlyst 文件格式,Nzym Console 旨在将其直接转换为应用程序在运行时运行的特定 CPU 的机器代码。该文件格式以催化剂一词命名,该词指的是加速化学反应的物质。但是,在这种情况下,Nzym Console 运行 ctlyst 文件,为程序提供一个环境,使其可以像系统上的任何其他应用程序一样运行。

Nzym 和 Nzym Console 的最新实现是使用 Rust 创建的,因此继承了该语言的其他高性能特性,因为 Rust 编译器能够优化代码以提高速度。此外,Rust 标准库提供了许多高效的算法和数据结构,这些算法和数据结构用于创建当前版本的 Nzym。简要概述一下这对 Nzym 程序意味着什么:

  • 内存安全:Rust 的所有权系统确保内存始终得到正确管理,从而防止内存泄漏和崩溃。这可以显著提高性能,因为 Nzym 不必花时间手动管理内存。
  • 效率:Rust 的编译器非常擅长优化代码以提高速度。这意味着 Nzym Console 即使在执行复杂任务时也能尽可能快地运行。

多线程

要制作出功能强大、互动性强的多媒体应用程序,通常意味着需要能够实时处理互动响应,并更好地同步所有相关元素。这意味着应用程序需要能够同时处理多个进程,这意味着多个线程和可能同时发生的事件。

AVisPar 是 SM 团队开展的一个独特项目。它允许在如何创建相关解决方案方面进行大量实验,但团队面临一个巨大的问题,那就是处理同时发生的事件。AVisPar 的初始代码库是用 C++ 编写的,并附带了来自其他 3D 游戏引擎(如 Irrlicht)的一些库。特别是 3D 游戏引擎 Irrlicht 确实有一些多线程功能,这些功能易于使用并适用于在单台机器上运行各种进程。然而,在涉及各种 CPU 和图形处理单元的网络上运行多个线程时,线程变得非常难以处理且复杂。

C 和 C++ 通常是单线程的,使用一些库来实现多线程的创建会导致大多数程序员在使用 Java 或 Objective C 创建多线程应用程序时遇到的相同缺点。通常,问题来自于需要弄清楚线程如何交互的复杂性、由于设计不周而导致的操作系统在线程之间切换的性能问题以及最终更高的资源使用率。另一方面,Nzym 在创建 ctlyst 文件时使用 Rust 的 async/await 模型来处理并发代码。但是,Nzym 在使用 Web Workers 方面也有退路,与 JavaScript 非常相似,可以将多线程转换为 JavaScript 用于网站项目,然后从具有多线程的 JavaScript 应用程序所受益的改进的性能、响应能力和可扩展性中受益。

动态的

Nzym 仍在开发中,并且不断发展。它的设计旨在适应不断发展的技术环境。随着 Nzym 控制台及其实现的不断发展和扩展,Nzym 可以成为为便携式和移动设备(包括智能手表和智能手机)创建应用程序的首选语言。

从 2011 年初到 2012 年年底,SM 的客户数量不断增加,要求其服务为他们开发移动应用程序。SM 使用 Java 为当时支持 Java 的智能手机创建应用程序,包括当时市场份额很大的 Android 手机。问题是,这些平台的代码虽然用同一种语言编写,但它们并不相同,也不可能相同。视觉呈现不可移植,功能差异很大,开发中使用的库也大不相同。

Java 曾是开发移动语言的首选语言,但近年来已被 Kotlin 和 Swift 等新语言取代。Java 的主要问题过去和现在都是

  • 性能:Java 的性能不如某些较新的语言,这会导致应用程序运行速度变慢。
  • 复杂性:Java 是一种复杂的语言,这使其难以学习和使用。
  • 碎片化:Java 有许多不同的版本,这使得开发适用于所有设备的应用程序变得困难。

虽然 Java 仍然是开发移动应用程序的热门语言,因为它拥有丰富的库和工具,受到众多供应商的支持,并且成熟度高,但新语言正在逐渐普及。Nzym 计划遵循这一思路,以单一代码库为目标,让创建应用程序并将其移植到尽可能多的设备变得更轻松、更好、更快捷,Nzym 无疑是一种值得关注的语言,因为它正在朝着这个目标努力。


结论

Nzym 是一种新型编程语言,其设计理念是简洁、优雅且功能强大。虽然它还处于起步阶段,但它的目标是成为想要创建面向对象媒体应用程序和网站的程序员的选择。由于其简单性,它确实消除了字符串对花括号和引号的需求,并使语法更加直接。

目前的发展

Nzym 最初的实现语言是 C++,但随着 2015 年 Rust 1.0 第一个稳定版本的出现和发布,Nzym 的开发和生产转向了新语言。选择一种可以加强内存安全性、不需要使用垃圾收集或引用计数的语言似乎是一个不错的选择,因为它将用于创建具有高性能和极少错误的强大媒体应用程序。

未来发展

由于 Nzym 仍在开发中,因此计划在未来版本中推出许多功能。这些功能包括:
  • 预构建库可更轻松、更快地创建应用程序
  • 更强大的类和对象
  • 更好的调试器
  • 一个简单但更用户友好的 IDE
Nzym 是一种很有前途的新编程语言,有潜力成为面向对象编程的流行选择。对于想要创建简单、优雅、快速的应用程序的程序员来说,这是一个不错的选择,尤其是针对包括移动和互联网在内的各种平台。如需更多信息,请发送电子邮件至hello@nzym.org。
Tags
  • #技术
Icon
THANK YOU

You will receive an email with a download link. To access the link, please check your inbox or spam folder