拜语言语法结构与JAVA、C#、Javascript的对比研究

发表时间: 2024-06-15 21:45

应广大拜语言(By语言)用户的要求,团队尝试用更简洁的文字整理一些概念性的内容,以供读者,帮助用户更好的理解拜语言(By语言)的设计理念。工具已经可以实现日常开发所需。文案、视频和案例的不足之处,团队后续会继续努力,为大家提供更易懂的内容和更优质的工具。

一、拜语言的语法结构

拜语言(By语言)的语法结构是基于支持面向身份编程技术、数据化编程和配置化编程的特性而设计的。它旨在简化编程模型,提高开发效率,提供更广更深的阶梯,让更多的人包括泛实施人员参与到软件的设计中来。以下是拜语言(By语言)的一些核心语法结构特点解析:

1. 身份(identity:拜语言(By语言)中的身份是一种数据类型,其包括或支持面向对象的功能或特性,如:方法、属性、事件;也包括身份的特性:skill “技能component“构件”。在编程过程中,可以把身份当成对象来考量,只是身份不同于对象,具有更复合的内容。主要区别如下:

对象是经由 new object() 来产生新实例;身份是由配置产生新实例。配置是把当前的身份的“依赖项”一一指定,明确地告诉该身份当前的“依赖项”对应类型“是谁、在哪里”。身份成员构件中的“依赖项”也一一明确“是谁,在哪里”。身份的“依赖项”一一指定之后,相应身份的新实例就完成了。接下来就可以参照传统的对象使用这个身份了。传统的面向对象编程采用明确编程,不存在“配置”的过程。

举例说明:

例一:开发了一个数据字典的管理界面,用到了一张的字典表“dic”身份。在新项目中开发学校的系统,有两个字典表:一个是学生表student,还有一个是老师表teacher

学生表如下:

老师表如下:

传统的开发方式是在这两张表之上构件一对一的ORM类型体系,然后在这些ORM上构建代码逻辑。这种开发方式对于代码的复用是影响很大的。因为只要用到了ORM,代码就没有多少复用性可言。

拜语言(By语言)的解决方案是:流程上与传统环节一致:先定义一个表级的“dic”字典身份,定义两个字段级构件“iIDiName”编号与名称,写出代码逻辑。写完之后,身份的特点和复用特性开始呈现。通过刚刚定义的这个身份进行两次新实例及个性化配置。第一次配置,把身份指向到student这张表,把第一个“iID”的编号构件指向到student表的ID字段上,把“iName”名称构件指向到student表的name字段上,再配置数据源即可(拜语言IDE可以一键自动生成)。第二次配置,把身份指向到teacher这张表,把第一个“iID”的编号构件指向到teacher表的ID字段上,把“iName”名称构件指向到teacher表的name字段上,再配置一下数据源即可(拜语言IDE可以一键自动生成)。直到项目中所有的数据表完成第N次配置。

不用ORM可否?可以,拜语言提供了双类型,通过双类型,可以实现比传统的ORM更强大功能,而且语法更简洁,也更好用。双类型是全局性,与传统SQL结合最紧密。如下图所示,这是By特有的数据类型之一。希望开发者会喜欢例二的双类型示例。

例二:

通过这种方式,拜语言(By语言)用一份逻辑解决一类问题。设计“身份”的初衷是为了实现面向对象所不能实现的代码的高度复用,从而使得开发者能够更好的解决类型性问题和复用性需求。

1. 数据化编程:拜语言(By语言)使用库与表的概念来描述数据类型,其中“库”用于组织不同类型的数据结构、数据表,可以是一类数据结构、数据表的结合,也可以是一系列数据结构、数据表的组合。“表”用于定义具体的数据项,是一份份的数据表,包含了表名称、表结构和数据等内容,可以按需直接修改。

2. 共性和个性:拜语言(By语言)在语法规范层面做了规范,在设计和功能层面实现了共性和个性的概念。共性是指软件系统通用的部分,个性是指软件系统个性化的部分。比对任意软件与软件之间的共性部分,占比1-99%不等,其余为差异化的个性部分。举个浅显的例子说明:UI有些类似,logo不同;登录模块大多相同;业务逻辑不同,但依然会有出库入库逻辑、有基本信息表等等。不同行业之间,逻辑内容不是100%可以复用的,但是,一些基础性的、结构性的,是可以复用的,比如要用到数据库的内容,是可以跨行业的。常用的数据结构,如主表身份、明细表身份,字典表身份、中间表身份等,这些是各个行业都要用到的内容,根据这些结构写的内容都可以在拜语言(By语言)实现跨行业、跨项目。所以,拜语言(By语言)通用性高的部分可以直接配置复用,不需要再重复做。

3. 效率:效率的本质是生产力。不同的业务逻辑和编程逻辑,实现不同的软件系统。开发者的价值是编程逻辑与业务逻辑的实现,也都知道共性部分其实是属于重复劳动。全球数千万程序员在使用不同的工具开发不同的软件。很多开发者有很多积累,也可以找到很多前人开发的基础设施和功能,也可以在Github上找到很多开源的项目。面向对象编程技术是将代码分享给开发者,通过一段代码能够实现什么功能。参考既有代码,再回到开发工具,整体修改和调试。开源代码是无偿贡献,闭源代码拿不到。而掌握代码数据的厂商,可以做AI生成代码,类似标注的数据,需要问题触发生成。如今的copilot等产品给开发者提供代码片段,就是此类产品,这是生产力的表现之一。

拜语言(By语言)的差异又在哪里呢?进一步分析:拜语言(By语言)本身是数据化编程技术,具有AI底座,共性部分做一次就可以复用。开发者可以直接配置,甚至AI生成。差异化的内容需要自行稍微修改一下模块化的内容,比如:修改表名称等。这部分内容也可以成为该类型软件产品的共性内容。当开发者在拜语言(By语言)的库与表、编程逻辑、业务逻辑积累到达一定程度,开发者就可以用拜语言(By语言)配置出开发过的任意系统组合,只做差异化部分就可以交付了。随着积累的越多,开发者可以配置的内容越多,不需要重复做的比例就越高,就可以更多的复用内容,生产力和效率也会越来越高。这是拜语言的重要价值之一。

4. 配置化编程:拜语言(By语言)允许通过配置共性部分和个性部分,而非传统的代码编写来实现功能、复用和灵活性。共性部分代表通用性内容,个性部分也可以细化到颗粒化的数据单元子集和数据表。这意味着开发者可以通过设置名称、参数和属性来定义行为,而不是编写大量的重复性代码逻辑。

5. 转译:拜语言(By语言)支持将其代码转译成其他主流编程语言,转译代码由目标语言的编译器保障。如JavaC#JS等。这使得拜语言(By语言)编写的代码可以跨平台、跨语言。开发者不需要担心编译器的性能和稳定性,更放心使用。

6. 跨端一体化:拜语言(By语言)支持多端一体化开发、部署和运维。因为拜语言(By语言)实现了数据化的开发,一体化的开发,库与表成为逻辑关联的单元,逻辑实现库与表的关系,有经验的开发大致能了解到这层关系实质上是反映了业务逻辑和编程逻辑的层面。大多数情况下,库与表中的名称一致,用编程逻辑关联即可,反而更容易避免bug。特别是共性部分,拜语言(By语言)支持全网共性部分检索,最优算法推荐。因此,用拜语言(By语言)编程掘金基础设施,也能够获利。

7. 跨语言:拜语言(By语言)支持跨语言,未来会根据客户需求,支持更多语言。

8. 跨应用场景:拜语言(By语言)支持跨应用场景,共性部分是可以直接根据不同应用场景复用,比如:制造业的进销存共性部分,电商的进销存共性部分,医院的进销存共性部分等。

9. 跨项目:拜语言(By语言)支持跨项目,共性部分是可以直接根据不同的项目复用,比如:A制造公司的CRM共性部分,B制造公司的CRM共性部分可以直接服用。

二、拜语言与JAVA对比

Java相比,拜语言(以下内容部分简称By)的语法结构和编程范式有以下不同之处:

1. 面向对象 vs 面向身份Java是一种传统的面向对象编程语言,它使用类(对象)的概念来组织代码。而By使用身份和配置的概念,提供了一种新的组织代码和数据的方式。

2. 语法简洁性By的设计注重简洁性,旨在减少程序员编写代码的工作量。相比之下,Java的语法更加复杂,包含了更多的关键字和语法结构。

3. 数据类型表示:在Java中,数据类型通常是通过类和接口来定义的。而在拜语言中,数据类型是通过库与表的概念来表示的,这使得数据类型的表示更加直观和易于理解,尤其是对新手程序员,拜语言的每个格子都有详细的提示,可按CTRL+J提示。

4. 举例说明:

例三:在Java中,定义一个类并创建对象的代码可能如下所示:

By中,会使用身份和配置的方式来定义和使用类似的数据结构,除了表头之外,代码更加简洁直观,而且可以完成面向对象中不能完成的功能。比如:面向对象中的对象类,在其他语言中也就是仅仅是一个对象而已,但By写出来的内容不同,表面上看代码块是多一点,但是,实际内容反而是更少的,而且这是一写多份。如下示例代码:

例四:表结构都是相似的,开发者真正需要关注最核心的那一行记录即可。By开发时,每一个字符通过快捷键CTRL + J都会有提示,选择所需即可。

例五:

例六:

5. 重点解析编程实现的过程差异:

传统面向对象编程(OOP)实例的属性是自动跟随对象,不需要开发者另行创建新实例属性。面向身份编程(IOP)的实例(即身份)是通过配置实现,包括了库、表、身份(实例)、类型、构件等。IOP的特点就在于:开发者可以根据需求任意配置身份(实例),通过配置实现编程,身份(实例)的内容就是库、表、方法、构件等内容,配置的内容就是开发者创建的每一份实例和编程逻辑。这个特点是面向身份的核心内容之一,其在编程逻辑中支持了:从表结构可以创建身份(实例),可以用已有的数据库创建身份(实例),支持配置开发,支持一键导入表结构生成系统,而不用另行写代码。对于个性化或没有的身份(实例)和编程逻辑内容,需要开发者自行创建。

传统面向对象编程中的语法结构没有此种功能和语法规范的内容,这是由编程语言语法本身决定。但是,面向对象几十年的积累,拥有了大量的框架和基础设施,这是优势。在实际项目开发中,开发者接到新客户的开发需求,首先评估客户需求与现有已开发的内容匹配度,再评估客户差异化需求的工作量,包括但不限于各行各业的差异化而需要一次开发和二次开发内容,其中涉及到各类表单的一次开发和二次开发的编程实现,业务逻辑的编程实现等。如今的解决方案是:原生开发、框架开发、购买标准件,低代码实现等等。但是,每个开发者和开发团队经验积累创建的内容中,其中又因为很多内容不符合新客户需求,大多数非标准软件系统的需求都是差异化的内容,需要大量的调整工作。依然可能产生大量的重复性工作。评估完成后,安排出项目实施的计划,安排重构代码开发,每一个端逐步开发或分组开发,拿出成品后,测试,修改,上线等等流程。开发者最烦闷的是需求变更导致的架构变化。这种需求变化是有可能导致大幅度修改,甚至有可能产生推倒重来的情况。开发者便就需求沟通、需求建模、需求开发和修改等等事情,惶惶不可终日的反复加班了。

拜语言(By语言)的解决方案是:将开发过的库与表作为整体,允许对库与表进行直接的调用,跨端一体化、跨语言、跨应用场景、跨项目调用,转译成目标语言运行。开发过程中,遵循拜语言(By语言)的语法规范,库与表名称统一,即可直接调用和复用。调用和复用的内容包括By库中的所有既有库和表(不允许自行修改),开发者自行开发的库和表,也允许对开发者自行开发的库与表的内容直接增删改查。这是拜语言(By语言)与其他语言最重要的差异性之一。这也直接决定了拜语言(By语言)一次开发和二次开发的效率提升。开发身份(实例)积累越多,效率越高。如下示例,代码中的构件就是针对个性化需求用户而定制的语法规范。身份(实例)的实际内容名可以为按需设定,按需增删改查任一表单,而且可以根据用户的需求直接修改调整而不影响架构,多端一体化开发、部署和运维。在拜语言的语法中,库与表作为整体,就像是OOP中的指针对象,修改已有库与表的名称调用即可。由此,开发者可以将更多精力放在架构和需求实现设计方面,节约大量写代码的时间。开发积累越多,可调用越多,时间转化价值越大。而且此类调用的代码相对简单,实施人员或业务人员也可以独立自行完成。如下示例。

例七:

三、拜语言与C#的不同:

ByC#的不同主要体现在它们的设计理念、语法结构、应用领域和目标用户等方面。

1. 设计理念C#是一种面向对象的编程语言,设计用于.NET框架。By提出了面向身份编程的概念和理论,强调数据和状态的管理以及身份之间的关系。

2. 语法结构C#的语法结构遵循传统的面向对象编程模式,包括类、接口、继承、多态等概念。By采用更简洁的语法结构,减少重复性代码,并通过配置化编程来提高开发效率。

3. 应用领域C#广泛应用于企业级应用、桌面应用、游戏开发(使用Unity引擎)等领域。By更专注于数据处理和云服务,特别是在需要处理大规模数据和快速适应变化的场景中。

4. 目标用户C#由于其强大的类型系统和丰富的库支持,适合专业的软件开发人员。By在于提供更广更深的编程扩展和纵深,使得专业和入门各司其职,使得非技术人员也能参与到软件开发中来。

5. 面向身份编程C#是一种面向对象的编程语言,使用类和对象作为基本构建块。By引入了面向身份的概念,强调个体的唯一性和状态管理。

6. 数据化编程C#通过类定义数据结构。By使用“库与表”的概念来描述数据类型,这使得数据类型的表示更加直观和易于理解。

7. 配置化编程By支持通过配置而非传统的代码编写来实现功能的复用和灵活性。C#中配置不是核心概念。

四、拜语言与JavaScript的不同:

ByJavaScriptJS)的不同也反映在设计理念、语法结构、应用领域和目标用户等维度。

1. 设计理念JavaScript是一种动态类型的脚本语言,广泛用于Web前端开发以及服务器端(Node.js)编程。By提出了面向身份编程的概念,在数据处理和云服务方面有其独特的优势。

2. 语法结构JavaScript以其灵活的语法和异步编程模型而知名。By采用不同的语法结构,更注重于数据模型的配置和身份之间的关系定义。

[1]. 静态类型 vs 动态类型JavaScript是一种动态类型的语言,By更注重静态强类型检查,以提高代码的稳定性和性能。

[2]. 语法简洁性JavaScript以其灵活的语法和异步编程模型而知名。By采用更简洁的语法结构,减少程序员编写代码的工作量。

[3]. 编程范式JavaScript广泛用于Web前端开发以及服务器端(Node.js)编程,By更专注于数据处理和云服务,特别是在需要处理大规模数据和快速适应变化的场景中。

3. 应用领域JavaScriptWeb开发中占据主导地位,同时也在移动应用、物联网等领域得到应用。By更多地关注于企业级数据处理、云计算和大数据分析等领域。

4. 目标用户JavaScript的主要用户群体是Web开发者和全栈开发者。By更侧重于那些需要处理复杂数据模型和业务逻辑的企业级开发者,以及希望降低编程难度的非技术背景用户。

5. 举例说明:

例八:在C#中,定义一个类并创建对象的代码可能如下所示:

例九:在JavaScript中,创建一个对象并操作的代码可能如下所示:

对于软件开发来说,任何语言都是无所不能的,但不同语言有其擅长领域。擅长意味着效率。C语言可以写任何领域任何软件的代码,可以开发任何软件和应用。但语言与语言之间,C++相比C多了垃圾回收机制和类,Java解决了跨平台。在企业级软件开发中,后端基本是Java/C#在写,前端一般是JS/Html。拜语言(By语言)编程工具是一次集成编写,多端运行。拜语言(By语言)除了具有传统编程语言的能力之外,还有跨语言、跨应用场景、跨端一体化配置生成商用系统、转译成面向对象编程语言、高度复用等特性。拜语言(By语言)的编程工具优势在于开发效率高,原生开发效率相比传统面向对象编程工具有三倍级提升,二次开发具有十倍级提升。拜语言(By语言)是一种新兴的编程语言,其语法和特性还在不断发展和完善中;JAVAC#JavaScript作为成熟的编程语言,已经建立了稳定的生态系统和开发者社区。开发者在选择编程语言时,应根据项目需求、团队技能和长期维护等因素综合考虑。随着新一代面向身份编程技术的出现,软件开发领域的工具多了一项低成本和高效率的新选择。