web-dev-qa-db-ja.com

関数名にUnicodeを使用できる最初の言語は何ですか?

JuliaLangがUnicode関数名をサポートすることに人々はしばしば興奮します。しかし、それはまったく新しいことではありません。Juliaコミュニティがそれが適切であると判断し、Unicodeを簡単に入力できるようにするツールを構築しただけです。

それを許可した最初の言語は何でしたか?信頼できる情報源(例:リリースノート。

2004年にJava 1.5で許可されていることへの言及を見たことがありますが、リリースノートでは見つかりませんでした。

注:特にUnicodeを探しています。そのため、Mathematicaのリッチテキストファイル、またはAPLでのASCII記号とカスタムコードページの使用はカウントされません。

5
Lyndon White

関数名におけるPerlの1990年代Unicodeサポート

Perlが関数名にUnicodeを許可する「最初の」プログラミング言語だったとは言えません—これは私にはありそうにありません—しかし、最初にそれが始まったときを明確に文書化できます。

最初のリポジトリコミット:834a4ddd8309fbf6aabbbc51bb6fcbe056e7963f 1998-10-23

Larry WallがPerlで「UTF-8識別子」を使用する際の障害を修正したのは この1998年のコミットで でした。

commit 834a4ddd8309fbf6aabbbc51bb6fcbe056e7963f
Author: Larry Wall <[email protected]>
Date:   Fri Oct 23 18:00:41 1998 +0000

    Program with utf8 identifiers fails to compile

Hindsightは、コアPerlディストリビューションにすべてのUnicodeサポートを最終的に追加する前に、私たちが何年も先延ばしにした(一部の人は馬鹿げていると言う人もいる)幸運に恵まれたことから、それが私たちに長い時間をかけたことが祝福を証明したことを示しています- 1998年7月のLarry'sの以前のコミット

commit a0ed51b321531af4b47cce24205ab9656f043f0f
Author: Larry Wall <[email protected]>
Date:   Fri Jul 24 05:44:33 1998 +0000

    Here are the long-expected Unicode/UTF-8 modifications.

それは数年後 1996年のUnicode 2.0のリリース であったことに注意してください。コア言語のUnicode文字列を遅延させることで、Unicode 1.0の16ビット文字に飛び込んできた初期の採用言語が氾濫し、すべてがそれにこだわったトラブルの海を回避することができました。 「現代の」Unicodeの21ビットコードポイントのレパートリーまで、古代の海で足を濡らすのを待つことで、すべての文字列の内部表現としてUTF-8を使用することができました。

最初の開発リリース:1998-11-30のバージョン5.005_54

追跡 Perlの歴史的なマイナーリリース 過去のミレニアムの終わりに向けて、並行開発と保守のトラックにまだ使用されていた独特のバージョン番号の規則のため、初心者には注意が必要です。

最初の安定/製品リリース:2000-03-22のv5.6

関数名でUnicodeを使用できるようになったのは、2000年3月に最終的にv5.6リリースを作成するために構築されていた5.005_54マイナー開発リリースで最初に登場したと言うだけで十分です。 v5.6リリースノートにはこれが含まれていますパッセージ

UnicodeおよびUTF-8サポート

Perlは現在、文字列の内部表現としてUTF-8を使用しています。 utf8およびbytesプラグマは、現在の字句スコープでこのサポートを制御するために使用されます。詳細は perlunicodetf8 および bytes を参照してください。

そのときまでに、Unicode自体はv3.0リリースまででした。

教訓:常に最初のものを捨てる!

Perlは16ビットトラップに引っ掛かることはありませんが(まだ!)他の多くの人を悩ませていますが、Unicodeサポートの最初の内部モデルは問題のあるモデルであることがすぐに判明したため、2002年のv5.8リリース用にすべての内部を書き直しました。 -07-18。

幸い、この内部の書き換えは、内部C APIに制限されていたため、実際のエンドユーザーにはほとんど影響しませんでした。エンドプログラマーが使用する限り、抽象コードポイント(21ビットの数値)と、UTF-8表現に固有の隠された物理メモリレイアウトの重要な論理的分離が維持されたので、 Perlスクリプト(Perlコンパイラーとインタープリターを更新する人ではなく)は、ビットとバイトのマシンレイアウトではなく、抽象文字(Goのルーンのような)以外を考える必要はほとんどありません。

最初の表現モデルを作り直すと、壊れたデザインが修正されるだけでなく、Unicodeコンソーシアムからの更新に簡単に対応できるようになりました。 2003-09-25のPerl v5.8.1によって、Unicode Character Databaseのv4.0をサポートし、UCDへの更新と多くの密接に関連する付属書および技術レポート(Unicode Regularの TR#18など)を追跡しました。式 )それ以来、かなり堅くなっています。

当時と現在

そして、確かに Perlでもできるように、まださまざまな「Unicode-y」のことを行っています 。すぐに頭に浮かぶ例には、変数と関数名の識別子を NFKC正規化 のようなもので正規化することや、モジュール名のUnicodeがファイルシステムで外部的にどのように表されるかについてより良い保証をすることが含まれます。

それでも、PerlでUnicodeを使用することは、その古き良きヴィンテージの他のプログラミング言語よりも簡単です。結局のところ、それらのallは、言語が最初に作成されたにUnicodeサポートを追加する必要があり、それは常にそれ自身の一種の悪夢です。もともとずっと前に設計された言語では難しいが、PerlやPythonが今日でも使用されている)のような多くのUnicode関連のタスクは、時々簡単です git-go からの設計に組み込まれた抽象的なUnicodeサポートを使用して設計された「最近の」言語では、格言が実行されますが、それは別の日のトピックです。

5
tchrist

Javaは、最初のリリース(1996)からの識別子でユニコードをサポートしていました。 Java言語仕様1.0: http://titanium.cs.berkeley.edu/doc/Java-langspec-1.0/3.doc.html#40625 を参照してください:

文字と数字は、Unicode文字セット全体から抽出できます。これは、中国語、日本語、韓国語の大規模なセットを含む、現在世界中で使用されているほとんどの書き込みスクリプトをサポートしています。これにより、Javaプログラマーは、ネイティブ言語で記述されたプログラムで識別子を使用できます。

最初の仕様はUnicode 1.1.5を参照しています。後でユニコード2.0に更新されました。

Unicode 1.0は、1991年にJava= 1.0よりも5年前にリリースされたため、他の一部の言語が以前にUnicodeをサポートしていたことは理論的に可能です。

2
JacquesB