基于Unicode的编程语言

问题描述 投票:9回答:14

这比任何其他事物都更具好奇心:是否存在一种编程语言,允许使用Unicode而不是ASCII来命名变量,函数和类(当然,特殊字符(例如'+')除外)?是否有任何流行的语言对此提供支持?

另外,与此相关的是,如果任何通用语言都支持Unicode,那么有什么方法可以将现有的API转换为用户自己选择的语言?给予程序员以他们自己的语言学习API的能力似乎是有帮助的。我想象下载一个标准API(例如boost),然后下载标准翻译映射,然后能够用我的母语编程。

unicode programming-languages
14个回答
5
投票
您可以从其他答案中看到,大多数现代语言都允许这样做,包括Perl,Python,Go,Ruby,Java,C♯,lisp的变体,Fortess,ADA等。 C和C ++没有,但它们不是现代的。

关于C♯,来自MSDN

本节中给出的标识符规则与Unicode标准附件15建议的完全一致


关于将API转换为所选语言-这是不可行的。您需要一个能够理解每种方法,变量和类名的细微差别和含义并正确翻译它们的翻译器-这与能够在代码中

使用所选语言的字符不同。


1
投票
Tcl允许您将Unicode字符用于命令和变量名,尽管建议您避免将它们用于变量名,因为当前快捷方式语法尚无法解决(即,您必须使用[set Ω]形式的)。

1
投票
方案,PLT球拍和Lisp风味Erlang都允许使用unicode标识符(由于前缀语法而变得简单)

0
投票
Perl和Go都允许使用完整的Unicode标识符。 Perl需要use utf8;声明,但是Go会自动执行。

请参阅UAX#31: Unicode Identifier and Pattern Syntax,以解决各种问题。

[通常,标识符应与模式^\p{ID_Start}\p{ID_Continue}*$相匹配,尽管可以自由添加语言。例如,Java添加货币符号(\p{Sc}),包括$


0
投票
考虑Swift,Apple在2014年推出。这是一个代码段:

var国=“美国”

祝您好运,找到最好的一个!


0
投票
我从1988年开始开发这种语言的软件工具链,称为ϕPPL(ϕ并行编程语言)。但是,它是在1986年左右构思出来的。Unicode支持不只是像大多数其他语言一样被添加了。有许多非ASCII字符的运算符,其中一些在用户定义区域中,因为Unicode中没有适合其预期目的的合适字符。我可以向您展示很多代码示例,但该网站无法正确显示它们。它确实是一门强大的语言,而且我使用它编程的次数越多,使用其他语言时,我越会穿着直筒夹克。函数名称可以使用允许的字符子集中的254个Unicode字符中的任何一个。其中包括全套的罗马,希腊和西里尔字母,以及一些经过修改的罗马字母。重新编码为仅需存储一个字节的NSC值时,它们仅需存储一个字节。零保留用于名称终止,值1保留作为多部分名称的分隔符。这些是标识符中允许的字符:

0123456789_aAãÃäÄâàààÁáăăĂāĀåæÆbBcCçÇdDeEėĖëËÊÉÈÉÉĕĔĕĔfFgGhHiIïÏîÎíÌíÍĭĬīĪjJkKlLmMnNñÑoOœŒöÖôPòÒóÓŏŎōŌpPqQrRsSßtTuUůŮüÜùÙúÚŭŬŪvVwWxXyYŷŶýÝzZαΑβΒγΓδΔεΕζZnηΗθΘΙΙΚΚλΛμΜνΝξΞοΟπΠρΡσΣττυΥφΦχΧψψωωΩаАбБвВгГдДеЕжЖзЗиИйЙкКлЛмМнНоОпПрРсСтТуУффхХЦчЧшШщЩъЪыШщЩъЪьЬэЭюЮяЯ

使用此系统的方便副作用是这些字符按字母顺序排列,因此您可以按其原始NSC值对名称进行排序。

如果您是C工具链开发人员,并希望参与其开发,请给我发送电子邮件至[email protected]


3
投票
Ada(以及其他名称)允许使用UNICODE进行国际化的标识符。

但是,我个人的看法是,软件应该使用一种通用且易于理解的单一语言(显然是英语)来编写,以鼓励协作,确保代码的可理解性和可重用性。


2
投票
Delphi自2009年以来具有此功能

2
投票
Javascript具有此功能。

2
投票
Fortress广泛使用Unicode(也许以类似APL的方式);参见http://projectfortress.sun.com/Projects/Community/wiki/FeatherweightJava的一个例子。

2
投票
。Net支持Unicode,我每天都在使用C#Unicode变量。

2
投票
据我所知,C#,Java,Python3都是基于Unicode的编程。

我没有发现上面提到的

Python,因此我添加了它。 Python具有幻想功能:一切(函数,类,模块,变量,类实例)都是对象,每个对象都可以附加一个文档来描述它。此功能对于以交互方式组织代码和执行脚本可能很有用。例如:

# Python code in interactive mode >>> def MyFunc(): '''This is self-included document. It can be write in multi lines.''' print('foobar') >>> print(MyFunc.__doc__) This is self-included document. It can be write in multi lines. >>> MyFunc() foobar

1
投票
Java具有此功能。

1
投票
一些常见的Lisp实现会允许这样做。 AFAIK语言规范没有禁止或要求它(它只需要基本的ASCII字符集)。
© www.soinside.com 2019 - 2024. All rights reserved.