Какие языки программирования были разработаны с поддержкой Unicode с самого начала? - PullRequest
18 голосов
/ 13 сентября 2009

Какие широко используемые языки программирования были разработаны с поддержкой Unicode?

Многие языки программирования добавили поддержку Юникода в качестве запоздалой мысли в более поздних версиях, но какие широко используемые языки были выпущены с поддержкой Юникода с самого первого дня?

Ответы [ 12 ]

32 голосов
/ 13 сентября 2009

Java был, вероятно, первым популярным языком, который имел основную поддержку Unicode.

31 голосов
/ 13 сентября 2009

В основном все языки .NET являются языками Unicode, такими как C # и VB.NET .

19 голосов
/ 13 сентября 2009

В Python 3 было много критических изменений, в том числе переход на Юникод для всего текста .

То есть Python не был разработан для Unicode, но Python 3 был.

12 голосов
/ 19 сентября 2009

Я не знаю, как далеко это зашло в других языках, но забавная вещь в C # заключается в том, что не только среда выполнения (класс string и т. Д.) Поддерживает Unicode - но Unicode полностью поддерживается в источнике:

using משליט = System.Object;
using תוצאה = System.Int32;
public class שלום : משליט  {
    public תוצאה בית() {
        int אלף = 0;
        for (int λ = 0; λ < 20; λ++) אלף+=λ;
        return אלף;
    }
}
9 голосов
/ 09 февраля 2011

Язык программирования Google Go поддерживает Unicode и работает с UTF-8.

6 голосов
/ 13 сентября 2009

Очень сложно спроектировать поддержку Unicode для будущего на языке программирования с самого начала.

Java - один из языков, для которых это было разработано в спецификации языка. Однако поддержка Unicode в v1.0 Java отличается от v5 и v6 Java SDK. Это в первую очередь связано с версией Unicode, на которую была ориентирована языковая спецификация, когда язык был изначально разработан. Java пытается отслеживать изменения в стандарте Unicode с каждым основным выпуском.

Ранние реализации JLS могли требовать поддержки Unicode, главным образом потому, что сам Unicode поддерживал 65536 символов (v1.0 Java поддерживал Unicode 1.1, а Java v1.4 поддерживал Unicode 3.0), который был совместим с 16-разрядным занимаемым пространством хранения вверх по персонажам. Это изменилось с Unicode 3.1 - это развивающийся стандарт, обычно с добавлением большего количества символов в каждом выпуске. Символы, добавленные позже в 3.1, назывались дополнительными символами . Поддержка дополнительных символов была добавлена ​​в Java 5 через JSR-204 ; Java 5 и 6 поддерживают Unicode 4.0.

Поэтому не удивляйтесь, если разные языки программирования по-разному поддерживают Unicode.

С другой стороны, PHP (!!) и Ruby не имели встроенной поддержки Unicode в начале.

PS: поддержка Unicode v5.1 должна быть сделана в Java 7 .

5 голосов
/ 20 сентября 2009

Языки Java и .NET, как отмечали другие комментаторы, хотя строки Java - это UTF-16, а не UCS или UTF-8. (В то время это казалось разумной идеей! Теперь очевидно, что лучше либо UTF-8, либо UCS.) И Python 3 действительно отличается от несовместимых языков с Python 1.x и 2.x, поэтому он также подходит.

Языки Plan9 примерно в 1992 году были, вероятно, первыми, кто сделал это: их диалект C, rc, Alef, mk, ACID и т. Д., Были все с поддержкой Unicode. Они выбрали очень простой подход, согласно которому все, что не было ASCII, было идентифицирующим символом. См. Их статью 1993 года на эту тему. (Это проект, в котором был изобретен UTF-8, что означало, что они могли сделать это довольно совместимым способом, в частности, без использования двоичного текста и текста через все их программы.)

Другие языки, которые поддерживают не ASCII-идентификаторы, включают текущий PHP.

3 голосов
/ 04 марта 2017

Perl 6 имеет полную поддержку юникода с нуля.
(С компилятором Rakudo Perl 6 является первой реализацией)

Общий обзор

Операторы Unicode

Все строки, регулярные выражения и грамматики работают на основе графем, даже для тех комбинаций кодовых точек, для которых нет составного представления (для этих случаев на лету создается искусственная кодовая точка составного представления).

Существует специальная кодировка для обработки данных неизвестной кодировки "utf8-c8": это предполагает использование utf-8, когда это возможно, но создает искусственные кодовые точки для не кодируемых последовательностей, позволяя им при необходимости выполнять обход туда и обратно.

2 голосов
/ 13 сентября 2009
1 голос
/ 22 сентября 2009

Иногда функция, которая была включена в язык при его первоначальном проектировании, не всегда является лучшей.

Языки со временем менялись, и многие стали раздутыми с дополнительными функциями, но при этом не обязательно были в курсе тех функций, которые были в него включены впервые.

Так что я просто отказываюсь от мысли, что вам не обязательно сбрасывать со счетов языки, которые недавно добавили Unicode. У них будет преимущество в том, что они добавят Unicode к уже зрелому инструменту разработки и получат шанс сделать это правильно с первого раза.

Имея это в виду, я хочу убедиться, что Delphi включен сюда как один из ваших ответов. Embarcadero добавил Unicode в свою версию Delphi 2009 и отлично поработал над этим. Этого было достаточно, чтобы наконец-то побудить меня перейти с Delphi 4, которым я пользовался в течение 10 лет.

...