当前位置: 首页 > news >正文

中文编程是否可行之验证——(一)

之前看到有这样的一个观点,一个好的程序员可以编写出自解释的代码,也就是说,如果变量、函数名等等名称都能够起的非常准确,并且结构上充分重构,没有过长的函数和过程,所有的功能都有很小的函数和过程组成,那么,即使不写注释,仅仅是代码也能够充分说明程序的功能是什么。

然而,对于我们这些母语并非是英语的程序员来说,想要达到那一点非常之困难,如何确定变量、函数、类等等的名称,使其能够准确表达业务上的意义,还是有很大难度的。如果用英文的话,很可能就会在字典中查出一个词,然后就使用,但是对于专业的术语来说,很可能是不准确的。也有人说可以使用汉语拼音来起名字,而中文的一音多字和一字多音的问题会让人丈二和尚摸不着头脑。

由此,我想到了很多人曾经讨论过的问题——中文编程,也就说,对于程序中的类、变量、过程、函数等等的名称使用中文,这样的程序对于本国的程序员来说,理解起来再容易不过了,也就可以省去很多的注释,甚至于能够写出不少自解释的代码。

然而,当前的各种语言是否能够对中文有良好的支持呢?我们使用中文编写的代码是否会出现各种问题呢?实践是检验真理的唯一标准,不做不知道。

针对对中文的支持问题,我想在以下三个环境中测试:

1、Oracle,使用工具:pl/sql developer

2、C#,使用工具VS 2005

3、Java,使用工具myEclipse

这样不仅测试到语言是否支持中文,而且可以看出我们经常使用的开发环境对中文的支持如何。毕竟是“工欲善其事必先利其器”。

首先是针对Oracle的测试:

1、建立表名、字段名均为中文的表:

 


  
create table
(
编号
NUMBER ( 4 ) not null ,
姓名
VARCHAR2 ( 50 ),
出生日期 DATE
);

 

2、向其中插入几条数据

 

    编号 姓名 出生日期

1 1 张三 2010-2-1

2 2 李四 2019-3-4

 

3、编写了一个函数:

 


  
create or replace function 取得姓(姓名 in varchar2 ) return varchar2 is
Result
varchar2 ( 50 );
begin

select substr(姓名 , 1 , 1 )
into result
from dual;

return (Result);
end 取得姓;

 

4、执行带有函数的查询:

 


  
select 人的别名.编号
,人的别名.姓名
,取得姓(人的别名.姓名)
as
from 人 人的别名

 

查询结果为:

 

     编号  姓名  姓
1  1  张三  张
2  2  李四  李

    编号 姓名 姓

1 1 张三 张

2 2 李四 李

 

从上面看来,对于数据库开发,使用中文名没有太大的问题。

其实之前在做对日项目的时候,就有这样的一个大型的项目,其中所有的数据库相关内容的名称都是用的是日文字,而系统的运行也没有什么问题。

……待续。

 

相关文章:

  • Provisioning Services 7.6 入门到精通系列之九:创建和配置目标设备
  • 基于OHCI的USB主机 —— 中断处理程序
  • ssh 连接缓慢解决方法
  • 编写优美的GTest测试案例
  • 【转】HBase架构解析
  • JavaScript正则表达式
  • 《Unity3D-控制检测碰撞以后触发的事件之敌人的攻击行为》
  • mysql alter 语句用法,添加、修改、删除字段等
  • XML(php中获取xml文件的方式/ajax获取xml格式的响应数据的方式)
  • 难得一见的《Google在中国》专辑
  • windows下微信公众号开发(js-sdk)(一)
  • java8 Stream Pipelines 浅析
  • linux下的ftp
  • Servlet之doPost获取表单参数
  • 【转载】JSP 获取真实IP地址的代码
  • 【Linux系统编程】快速查找errno错误码信息
  • Java反射-动态类加载和重新加载
  • k8s如何管理Pod
  • LeetCode29.两数相除 JavaScript
  • mongo索引构建
  • Python3爬取英雄联盟英雄皮肤大图
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Zsh 开发指南(第十四篇 文件读写)
  • 测试如何在敏捷团队中工作?
  • 坑!为什么View.startAnimation不起作用?
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 数据科学 第 3 章 11 字符串处理
  • 小程序开发中的那些坑
  • HanLP分词命名实体提取详解
  • 昨天1024程序员节,我故意写了个死循环~
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #pragma 指令
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (C++)八皇后问题
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (排序详解之 堆排序)
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .net下的富文本编辑器FCKeditor的配置方法
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • [20170713] 无法访问SQL Server
  • [AIGC] Kong:一个强大的 API 网关和服务平台
  • [BIZ] - 1.金融交易系统特点
  • [Deep Learning] 神经网络基础
  • [EFI]ASUS EX-B365M-V5 Gold G5400 CPU电脑 Hackintosh 黑苹果引导文件
  • [GXYCTF2019]BabyUpload1 -- 题目分析与详解
  • [HNOI2006]鬼谷子的钱袋
  • [ISCTF 2023]——Web、Misc较全详细Writeup、Re、Crypto部分Writeup
  • [leetcode] 66. 加一
  • [Lucas定理]【学习笔记】
  • [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'XXX' 无效