Языки программирования с русским синтаксисом

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Языки программирования с русским синтаксисом » Прочее... » Какую кодировку должен использовать компилятор?


Какую кодировку должен использовать компилятор?

Сообщений 1 страница 11 из 11

1

Использование кодовых страниц 866 и 1251 неактуально, если ставится цель поддержка разных алфавитов разных языков. Юникод нам в помощь? Да, его первая версия была 16-битной и позволяла пользоваться почти всеми языками мира. Юникод 1.0 оставил за бортом языки, уже исчезнувшие (типа шумерской письменности), а так же языки, на которых разговаривает сотня человек. Ну и редко используемые иероглифы. Т.е. 16-битные символы должны были устроить почти всех. Но если бы не устраивали, можно было перейти на 32-битные символы. Язык Эйфория так и делает: все строки там – это массивы 32-битных чисел.

Все было бы идеально в этом несовершенном мире, пока янки не заметили, что в строках содержится слишком много(по их мнению) нулей. Оно и не мудрено, ведь они пользовались латиницей, а двухбайтовая латиница выглядит как ‘00xx’. Пользуйся они кириллицей, они бы и не увидели этих нулей. И янки решили сэкономить: пусть латиница занимает 1 байт, а кому нужен другой алфавит, пусть пользуется 2, 3, 4, 6 байтовыми последовательностями. Так появился UTF.

И вот Юникод превратился в такую же ерунду, что и UTF. Невозможно теперь обратиться к 19 символу строки: array[19]. Чтобы узнать количество символов в строке, нужно провести её парсинг разбор. А уж если строку читать с конца, то без стакана не разберёшься, какой символ впереди.

Существует такое напутствие программистам: «Программу надо писать, представляя, что ею будет пользоваться маньяк, который знает ваш домашний адрес». Как же мне хочется узнать домашний адрес авторов этих нововведений, которые не удосужились сделать размер всех символов одинаковым. Не знаю, что больше чешется: язык ли, чтобы сказать всё, что думаешь. Или руки, чтобы это же показать жестами.

Или можно на всё забить и использовать Юникод-16, наплевав на то, что может встретиться шумерская письменность?

0

2

> Как же мне хочется узнать домашний адрес авторов этих нововведений
unicode.org - там должны быть контактные данные.

> парсинг
Это что за нерусское извращение такое?

> Или можно на всё забить и использовать Юникод-16, наплевав на то, что может встретиться шумерская письменность?
Да.

А в идеале нужно разработать ГОСТ на многобайтовую кодировку (уникод), а этих послать нах**.

0

3

1) Я Вам про домашний адрес организаторов, а Вы мне про юридический адрес организации. Я вам про канал, а Вы мне про канализацию. Не чувствуете разницы? Да и сомнительно, чтобы Irina Shlyapnikova возглавляла бы процесс дискриминации не-латиницы.
Courier Address
The Unicode Consortium
Attn. Irina Shlyapnikova
1065 L'Avenida Street
SVC-4/2123
Mountain View, CA 94043
U.S.A.
Впрочем, вполне возможно, что она там оказалась как раз из-за нелюбви к кириллице, отеческим гробам и родному пепелищу. И дым Америки ей сладок и приятен.  Она есть «В контакте», но пока не отвечает.
2) Нерусское извращение устранено. И ваше чисто русское извращение тоже устранено.
3) В принципе, 16-битное решение, надо думать – самое лучшее. 32-битное слишком неэкономно. Но есть ещё одна ерунда в Юникоде. Диакритические знаки. К ним относится, например, знак ударения. Появляются очень необычные вопросы типа: «А может ли идентификатор начинаться знаком ударения (U+0301, код 769 в десятичной системе)? Знак ударения – это буква, цифра, знак пунктуации или специальный символ?» Мне кажется, было бы логично диакритические знаки отнести к буквам. Всё-таки в цифрах ударения не встречаются.

0

4

Любой код который закладываеся на кодировку и ее представление в памяти проблемен.  Добрые маньяки будут бегать уже за вами. Это было возможноо в времена ASCII, но урожай костылей тех времен собирают до сих пор.

Чтобы узнать количество символов в строке, нужно провести её парсинг разбор.

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

0

5

Текст программы не связан с какой-то кодировкой в одном случае – если он на бумаге. 8-битная кодировка хороша, но у неё проблема в том, что она рассчитана на одновременное использование 2 алфавитов. Эту проблему логично решить, перейдя на 16-битную кодировку. Но получается так, что нет общепринятой 16-битной кодировки. Точнее, она была, это Юникод версии 1.0. Но следующие версии Юникода имеют кодировку с переменным  числом битов. Вот в чём идиотство!

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

0

6

> Я Вам про домашний адрес организаторов, а Вы мне про юридический адрес организации.
Я не про адрес организации, а про имена её руководителей. По ним, думаю, можно найти место их проживания. Хотя, даже личные контактные данные там тоже могут быть, не смотрел.

> Irina Shlyapnikova
Ну вот, с этим беженцем и разбирайтесь.

> Диакритические знаки.
В "Юникоде" очень много всякой херни, к буквам и цифрам не относящейся.

> Но следующие версии Юникода имеют кодировку с переменным  числом битов. Вот в чём идиотство!
Сам по себе "Юникод" такую херню не предопределяет. Это всего-лишь метод кодирования, основное преимущество которого - экономичность. Это я про "UTF-16", про "UTF-8" не говорю, это вообще пи**ец.

0

7

Было бы интересно узнать, как обходят проблемы в компиляторе C++ компании "Интерстрон", там ведь Юникод.

0

8

Посмотри в исходники Coco/R.
Нужный язык исходника выберешь здесь: "нажать".

Я использовал C#, с кириллицей в UTF8 были проблемы при генерации файлов, не большой доработкой, проблема решилась.
Разбирает и сканирует входные файлы, быстро, это моё мнение.

+1

9

Понимаете, Данил,  выражал своё недовольство тем фактом, что кодировка UTF имеет переменную размерность. При этом охотно верю, что можно организовать беспроблемную генерацию файлов с помощью Coco/R. Но это не отменяет того факта, что переменная разрядность всё равно сохранится и будут проблемы при неиспользовании Coco/R :) Лично мне не нравится код, генерируемый инструментами типа Lex и Yacc/Bison. Есть некоторые приёмы, которые позволяют уменьшить число сравнений и увеличить ясность кода :) Но им больше подходит что-то одно: либо 8 битов в символе, либо 16, но не сегодня 8, а завтра 32.

Наверное, все взвешивания "за" и "против" лучше всего здесь: Выбор кодировки для компилятора

0

10

Наверное Я не понял, что Вы хотели.
Моё предложение выше,  касалось варианта реализации разбора строки в UTF8. Там это есть.
:)

0

11

Или можно на всё забить и использовать Юникод-16, наплевав на то, что может встретиться шумерская письменность?

Именно так и следует поступить.

0


Вы здесь » Языки программирования с русским синтаксисом » Прочее... » Какую кодировку должен использовать компилятор?