CN106155756A - 一种在计算机上实现跨人类语言编程的方法 - Google Patents
一种在计算机上实现跨人类语言编程的方法 Download PDFInfo
- Publication number
- CN106155756A CN106155756A CN201610475731.0A CN201610475731A CN106155756A CN 106155756 A CN106155756 A CN 106155756A CN 201610475731 A CN201610475731 A CN 201610475731A CN 106155756 A CN106155756 A CN 106155756A
- Authority
- CN
- China
- Prior art keywords
- another name
- attribute
- programming
- language
- human language
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及一种在计算机上实现跨人类语言编程的方法,包括如下步骤:S1设置不同人类语言下的编程语言的关键字别名,形成关键字别名注册表。S2通过设置对象属性的别名,实现编程语言基础库提供各种人类语言调用接口,用来实现提供跨人类语言编程的程序库library。本发明的优点体现在:可以让现有的代码库支持多种人类语言,能够使用自己熟悉的人类语言编程,可以实现编程全民化。
Description
技术领域
本发明涉及一种编程方法及编程语言实现方法,具体涉及一种使用别名在计算机编程语言JavaScript上实现跨人类语言编程的方法。
背景技术
现在的JavaScript计算机编程语言是基于英语的,虽然它支持使用Unicode作为标识符,但是它的关键字是英语,提供的基础库编程接口是英语。对于许多不熟悉英语的人来说,要想编写JavaScript代码,这些英语名称对他们来说是有阻碍的。
发明内容
本发明的目的是针对现有技术中的不足,提供一种在计算机上实现跨人类语言编程的方法,让JavaScript计算机编程语言实现跨人类语言编程,通过设置编程语言关键字别名和设置程序库接口别名,让人们可以使用英语、中文、阿拉伯语、西班牙语等等不同的人类语言来编程。
不同人类语言编写出来的程序代码,可以让别人使用他熟悉的语言来调用接口。例如:可以使用中文来调用英语编写出的代码,可以使用中文调用阿拉伯语编写出的代码,可以使用阿拉伯语调用中文编写出的代码等等。设置别名的代码由懂得原始名语言与别名语言的人提供。不同的人类语言使用自己语言的编程语言关键字,编程语言基础库接口也是自己的语言,基础库内部实现可以是任何人类语言编写的代码。
为实现上述目的,本发明公开了如下技术方案:
一种在计算机上实现跨人类语言编程的方法,包括如下步骤:
S1设置不同人类语言下的编程语言的关键字别名,生成关键字别名注册表;关键字的别名可以是不同的人类语言;
在JavaScript语言引擎对代码作词法分析的阶段,通过查询关键字别名注册表和比较初始关键字列表,寻找对应标识符的关键字代码,如果没有找到,则把它当作普通标识符identifier;
S2通过设置对象属性的别名,实现编程语言基础库提供各种人类语言调用接口,实现提供跨人类语言编程的程序库(library);
S2.1对于已经存在的对象,通过设置该对象的属性的别名,来实现提供各种人类语言的接口;
S2.2对于通过原型对象创建的对象,通过设置原型对象属性的别名,来实现提供跨人类语言接口。
S3在程序的运行中,当需要访问某个对象的属性时,JavaScript语言引擎使用输入的属性名称查询该对象的属性别名列表和继承的原型对象的属性别名列表;如果属性别名列表有该名称,则用对应的原始名称访问对象的属性;如果属性别名列表不存在输入的属性名称,则用输入属性的名称访问对象的属性。
进一步的,所述步骤S1设置编程语言关键的方法在JavaScript语言引擎加载程序代码前执行。
进一步的,所述步骤S2.1中,设置对象属性的别名时,参数内容包含要设置属性别名的对象,属性的原始名和属性的别名。
进一步的,一个原始名可以设置一个或多个别名。
进一步的,所述步骤S2.2中,在语言引擎中,当调用设置对象属性的别名时,为该对象创建属性别名列表,该列表保存设置的别名与对应的原始名称。
本发明公开的一种在计算机上实现跨人类语言编程的方法,具有以下有益效果:
使用设置别名,能够方便增加对某一种人类语言编程的支持。当需要支持新的人类语言编程时,需要设置编程语言关键字别名,设置编程语言的基础库接口的别名和设置需要的第三方库接口的别名。
使用该方法,开发人员可以使用熟悉的人类语言编程,不需要学习英语。
使用别名,不同人类语言写出的代码可以相互通用。提供不同人类语言的别名设置,就可以调用不同人类语言编写出的代码库。
使用别名,可以混合人类语言编程。代码中可以同时出现多种人类语言编写的程序。
使用别名,可以重用现有的代码库。提供别名设置,就可以让现有的代码库支持多种人类语言。
使用开发人员熟悉的人类语言编程,可以实现编程全民化。
附图说明
图1是确定标识符类型流程图;
图2是判断访问属性名称流程图。
具体实施方式
下面结合实施例并参照附图对本发明作进一步描述。基于现有的JavaScript引擎V8,https://github.com/v8/v8,版本4.9.278实现。
一种在计算机上实现跨人类语言编程的方法,包括如下步骤:
S1设置不同人类语言下的编程语言的关键字别名,生成关键字别名注册表;关键字的别名可以是不同的人类语言;
在JavaScript语言引擎对代码作词法分析的阶段,通过查询关键字别名注册表和比较初始关键字列表,寻找对应标识符的关键字代码,如果没有找到,则把它当作普通标识符identifier;请参见图1。
步骤S1的处理的实现代码如下:修改文件src/js/v8natives.js,增加方法function GlobalObjectPropertiesAlias(alias_set),调用utils.InstallFunctions,注册_0_为GlobalKeyWordsAlias。
修改文件src/runtime/runtime.h,src/runtime/runtime-object.cc,实现GlobalObjectPropertiesAlias方法,生成关键字别名注册表。
修改文件src/parsing/scanner.cc,方法Token::Value Scanner::ScanIdentifierOrKeyword(),查询关键字别名注册表,判断是关键字还是普通标识符。
设置不同人类语言下编程语言的关键字。
中文:
阿拉伯语:
西班牙语:
_0_为设置编程语言关键字别名的方法,参数为关键字设置对数组。关键字设置对的第一个值为初始关键字,第二个为关键字别名。关键字的别名可以是任何人类语言。
通过这些方法调用,就可以把中文的'子'设为编程语言关键字'function','值'为'var',阿拉伯语为'function',西班牙语'función'为'function'等等。
作为具体实施例,所述步骤S1设置编程语言关键的方法在JavaScript语言引擎加载程序代码前执行。
在使用上面的注册关键字后,以下代码:
等价于:
function测试(){
var甲='你好!';
var乙='大家好!';
var丙=甲+乙;
};
S2通过设置对象属性的别名,实现编程语言基础库提供各种人类语言调用接口,以及实现提供跨人类语言编程的程序库library;
S2.1对于已经存在的对象,通过设置该对象的属性的别名,来实现提供各种人类语言的接口;
如:
_1_为设置对象属性别名方法,第一个参数为属性所属的对象。当该对象为空(null)时,为全局(global)对象。第二个参数为别名对数组。别名对的第一个参数为原始名,第二个参数为别名。一个原始名可以设置一个或多个别名。
通过以上设置,以下代码:
{
数.随机();
物.建();
}
等价于:
{
Math.random();
Object.create();
}
设置别名的代码在这些对象创建后调用。
S2.2对于通过原型对象创建的对象,通过设置原型对象属性的别名,来实现提供跨人类语言接口;
例如有以下函数原型代码:
通过这样设置别名:
加上关键字别名,就可以这样使用代码:
值甲=新建项();
甲.标();
甲.属性='大家好!';
甲.准备好();
值乙=新建项();
乙.标();
乙.属性='大家好!';
乙.准备好();
以上代码等价于:
设置别名的代码在这些原型对象创建后调用。
S2.3当为另一种人类语言编写的代码库提供参数时,使用原型对象别名和常量别名来实现。
当以下英语代码库所需要的参数为对象时,
function f(b){
console.log(b.name);
console.log(b.sex);
}
对象b的结构为:
可以使用以下代码设置别名。
调用设置中文别名的代码后,就可以用中文调用这个用英语实现的代码库。
值小明=新建人();
小明.名='小明';
小明.性别=人.男;
方法(小明);
值张三=新建人();
张三.名='张三';
张三.性别=人.男;
方法(张三);
设置别名的代码在使用代码库之前调用。
作为具体实施例,所述步骤S2.1中,设置对象属性的别名时,参数内容包含要设置属性别名的对象,属性的原始名和属性的别名。
作为具体实施例,一个原始名可以设置一个或多个别名。
作为具体实施例,所述步骤S2.2中,在语言引擎中,当调用设置对象属性的别名时,为该对象创建属性别名列表,该列表保存设置的别名与对应的原始名称;
步骤S2的处理的实现代码如下:
修改文件src/js/v8natives.js,增加方法functionGlobalObjectPropertiesAlias(alias_set),调用utils.InstallFunctions设置全局方法_1_为GlobalObjectPropertiesAlias。
修改文件src/objects.h,修改Map类,纪录对象属性别名。作如下修改:
修改文件src/objects-inl.h,实现DECL_ACCESSORS(alias,Object)。
修改文件src/heap/heap.cc,初始化对象属性别名为空。作如下修改:
修改文件src/runtime/runtime.h,src/runtime/runtime-object.cc,实现GlobalObjectPropertiesAlias方法,设置对象属性别名。别名列表存储在对象的map的alias属性内。
S3在程序的运行中,当需要访问某个对象的属性时,JavaScript语言引擎使用输入的属性名称查询该对象的属性别名列表和继承的原型对象的属性别名列表;如果属性别名列表有该名称,则用对应的原始名称访问对象的属性;如果属性别名列表不存在输入的属性名称,则用输入属性的名称访问对象的属性。
步骤S3的处理的实现代码如下:
修改文件src/lookup.cc,方法void LookupIterator::Next(),在运行该方法时,查询对象属性别名列表。作如下修改:
本发明中的关键字别名也可直接写入代码中,不用设置方式。
以上所述仅是本发明的优选实施方式,而非对其限制;应当指出,尽管参照上述各实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,其依然可以对上述各实施例所记载的技术方案进行修改,或对其中部分或者全部技术特征进行等同替换;而这些修改和替换,并不使相应的技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (4)
1.一种在计算机上实现跨人类语言编程的方法,其特征在于,包括如下步骤:
S1设置不同人类语言下的编程语言的关键字别名,生成关键字别名注册表;
在JavaScript语言引擎对代码作词法分析的阶段,通过查询关键字别名注册表和比较初始关键字列表,寻找对应标识符的关键字代码,如果没有找到,则把它当作普通标识符identifier;
S2通过设置对象属性的别名,实现编程语言基础库提供各种人类语言调用接口,实现提供跨人类语言编程的程序库library;
S2.1对于已经存在的对象,通过设置该对象的属性的别名,来实现提供各种人类语言的接口;
S2.2对于通过原型对象创建的对象,通过设置原型对象属性的别名,来实现提供跨人类语言接口。
S3在程序的运行中,当需要访问某个对象的属性时,JavaScript语言引擎使用输入的属性名称查询该对象的属性别名列表和继承的原型对象的属性别名列表;如果属性别名列表有该名称,则用对应的原始名称访问对象的属性;如果属性别名列表不存在输入的属性名称,则用输入属性的名称访问对象的属性。
2.根据权利要求1所述的一种在计算机上实现跨人类语言编程的方法,其特征在于,所述步骤S1设置编程语言关键的方法在JavaScript语言引擎加载程序代码前执行。
3.根据权利要求1所述的一种在计算机上实现跨人类语言编程的方法,其特征在于,所述步骤S2.1中,设置对象属性的别名时,参数内容包含要设置属性别名的对象,属性的原始名和属性的别名。
4.根据权利要求1所述的一种在计算机上实现跨人类语言编程的方法,其特征在于,所述步骤S2.2中,在语言引擎中,当调用设置对象属性的别名时,为该对象创建属性别名列表,该列表保存设置的别名与对应的原始名称。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610475731.0A CN106155756B (zh) | 2016-06-24 | 2016-06-24 | 一种在计算机上实现跨人类语言编程的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610475731.0A CN106155756B (zh) | 2016-06-24 | 2016-06-24 | 一种在计算机上实现跨人类语言编程的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106155756A true CN106155756A (zh) | 2016-11-23 |
CN106155756B CN106155756B (zh) | 2019-06-25 |
Family
ID=57349936
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610475731.0A Active CN106155756B (zh) | 2016-06-24 | 2016-06-24 | 一种在计算机上实现跨人类语言编程的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106155756B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110018952A (zh) * | 2018-01-10 | 2019-07-16 | 武汉斗鱼网络科技有限公司 | 一种js代码的测试方法、存储介质、设备和系统 |
WO2019148343A1 (zh) * | 2018-01-31 | 2019-08-08 | 拜椰特(上海)软件技术有限公司 | 一种新型计算机编程语言 |
WO2020248784A1 (zh) * | 2019-06-10 | 2020-12-17 | 周登祥 | 一种在计算机上实现母语编程的方法 |
CN113312057A (zh) * | 2021-06-17 | 2021-08-27 | 上海小熊星教育科技有限公司 | 一种代码处理方法、编程辅助方法、介质及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6463428B1 (en) * | 2000-03-29 | 2002-10-08 | Koninklijke Philips Electronics N.V. | User interface providing automatic generation and ergonomic presentation of keyword search criteria |
CN102761443A (zh) * | 2012-07-20 | 2012-10-31 | 中兴通讯股份有限公司 | 命令行的配置方法及装置 |
CN103412913A (zh) * | 2013-08-05 | 2013-11-27 | 北京永信至诚科技有限公司 | 一种关联搜索方法和系统 |
-
2016
- 2016-06-24 CN CN201610475731.0A patent/CN106155756B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6463428B1 (en) * | 2000-03-29 | 2002-10-08 | Koninklijke Philips Electronics N.V. | User interface providing automatic generation and ergonomic presentation of keyword search criteria |
CN102761443A (zh) * | 2012-07-20 | 2012-10-31 | 中兴通讯股份有限公司 | 命令行的配置方法及装置 |
CN103412913A (zh) * | 2013-08-05 | 2013-11-27 | 北京永信至诚科技有限公司 | 一种关联搜索方法和系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110018952A (zh) * | 2018-01-10 | 2019-07-16 | 武汉斗鱼网络科技有限公司 | 一种js代码的测试方法、存储介质、设备和系统 |
CN110018952B (zh) * | 2018-01-10 | 2022-12-27 | 武汉斗鱼网络科技有限公司 | 一种js代码的测试方法、存储介质、设备和系统 |
WO2019148343A1 (zh) * | 2018-01-31 | 2019-08-08 | 拜椰特(上海)软件技术有限公司 | 一种新型计算机编程语言 |
WO2020248784A1 (zh) * | 2019-06-10 | 2020-12-17 | 周登祥 | 一种在计算机上实现母语编程的方法 |
CN113312057A (zh) * | 2021-06-17 | 2021-08-27 | 上海小熊星教育科技有限公司 | 一种代码处理方法、编程辅助方法、介质及电子设备 |
CN113312057B (zh) * | 2021-06-17 | 2023-10-03 | 上海小熊星教育科技有限公司 | 一种代码处理方法、编程辅助方法、介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN106155756B (zh) | 2019-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
MacMahon et al. | Epidemiologie Methods. | |
CN106155756A (zh) | 一种在计算机上实现跨人类语言编程的方法 | |
US9195456B2 (en) | Managing a catalog of scripts | |
CN105989112B (zh) | 一种应用程序分类的方法及服务器 | |
US6654762B2 (en) | Generating small footprint applications for mobile devices | |
US20160124952A1 (en) | Using Synthetic Events to Identify Complex Relation Lookups | |
CN116860949B (zh) | 问答处理方法、装置、系统、计算设备及计算机存储介质 | |
US20180260486A1 (en) | System and method for enhanced search | |
Telles | Python for Professionals: Learning Python as a Second Language | |
CN110781183A (zh) | Hive数据库中增量数据的处理方法、装置以及计算机设备 | |
US9720905B2 (en) | Augmented text search with syntactic information | |
US10229156B2 (en) | Using priority scores for iterative precision reduction in structured lookups for questions | |
AU2008277487A1 (en) | Telecommunications services apparatus and method | |
Williams | The mealy-bugs (Pseudococcidae: Homoptera) described by WM Maskell, R. Newstead, TDA Cockerell and EE Green from the Ethiopian Region. | |
CN111243351B (zh) | 一种基于分词技术的外语口语训练系统、客户端和服务器 | |
KR20160140527A (ko) | 다국어 전자책 시스템 및 방법 | |
De Lotto | The Pseudococcidae (Hom.: Coccoidea) described by CK Brain from South Africa. | |
US20150370460A1 (en) | Business-to-business document user interface and integration design | |
CN111143659A (zh) | 用于执行智能跨域搜索的系统和方法 | |
US20240143298A1 (en) | Data processing methods and apparatuses, devices, and storage mediums | |
Wardana et al. | Applying CodeIgniter framework on JHS website development | |
US20230297777A1 (en) | Personalized natural language processing system | |
Dejica-Cartis | On discourse structure in translation: The concepts of theme and rheme | |
Alweendo et al. | The Development of a Bilingual English-Oshikwanyama Dictionary App | |
JP2015184998A (ja) | 翻訳装置、翻訳方法及び翻訳プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20190329 Address after: 561300 No. 97 East Suburb Road, Huajiang Town, Guanling Buyi and Miao Autonomous County, Anshun City, Guizhou Province Applicant after: Zhou Dengxiang Address before: 100107 Beijing Chaoyang District Tianlangyuan C Block 3 Floor 03 Business (Harvest Incubator 2777) Applicant before: Beijing Pu Hui Technology Co. Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |