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

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

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



Hexadecimal на русском?

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

1

Я в свободное время разрабатываю язык программирования, который бы полностью обходился без латиницы, так как всё время переключатся между русским и латиницей очень надоедает. Но как на русском записать шестнадцатеричное число? Так как используются 0123456789ABCDEF, например 0x00FF. Та же проблема с например 3д векторами. Координаты в математике пишутся тоже латиницей: x, y, z. Векторы наверно можно решить вот так: [0], [1], [2]; но как с ABCDEF? У кого есть идеи?

0

2

из Таметко.atg
ШестьНадЦатеричноеЧислоЛатиница     = число + "ABCDEFabcdef".
ШестьНадЦатеричноеЧислоРуссица     = число + "ЦОДТЧПцодтчп".

Ц -цать (десять);
О - одиннадцать;
Д - двенадцать;
Т - тринадцать;
Ч - четырнадцать;
П - пятнадцать.

0

3

По координатам :
X (икс) -     ширина  ->     Ш;
У (игрек) -  высота   ->     В;
Z (зет) -     глубина  ->     Г.

0

4

Интересный подход. Как тогда будет выглядеть например 0x007DE2CA в Таметко? Мне тоже интересна приставка "0х" с которой разузнаётся что число шестнадцатеричное.

0

5

Я в свободное время разрабатываю язык программирования

Должен вам признаться, занимаюсь тем же самым :) Но изобретаю с другого конца: ничего не программируя, пока что обдумываю сам язык. Чтобы программировать только то, в чём уже твёрдо уверен, что это должно быть именно так, а не иначе...
   Пишу пока что не программы, а статьи, описывающие предполагаемый язык. Чтобы потом это обсудить с заинтересованными людьми. Когда объём материала превысит некую "критическую массу", то размещу его в Инете и приглашу на обсуждение. Предположительно, это будет в феврале-марте.

ШестьНадЦатеричноеЧислоЛатиница     = число + "ABCDEFabcdef".
ШестьНадЦатеричноеЧислоРуссица     = число + "ЦОДТЧПцодтчп".

Ц -цать (десять);
О - одиннадцать;
Д - двенадцать;
Т - тринадцать;
Ч - четырнадцать;
П - пятнадцать.

Так плохо. Во-первых, надо запоминать сокращения - в них есть некая неестественность, потому что эти буквы не идут в алфавите подряд. Во-вторых, буква "О" очень похожа на "0" (ноль) - этому источнику недоразумений уже полсотни лет.

Ещё вариант. "abcdef" -> "абвгде". Тоже не хорошо. Потому что "DE" в латинском варианте соответствуют не "ДЕ" в русском, а "ГД". Это тоже потенциальный источник путаницы. Хотя вариант - естественный, т.е. в алфавитном порядке.

Ещё вариант. "abcdef" -> "ъыьэюя". Тоже в алфавитном порядке. Но весьма непривычно. Поэтому вряд ли приживётся.

Ещё вариант. "abcdef" -> "абцдеф". Наверно, наиболее привычно. Но лично мне такое не нравится.

Ещё вариант. "abcdef" -> "#10#11#12#13#14#15". (Взамен # можно ещё что-то придумать, на клавиатуре ещё много символов). Очень даже естественно. Очень интернациональный вариант, подойдёт индусу, китайцу и даже американцу. Но ДЛИННОВАТО!

Более короткий  вариант. "abcdef" -> "^0^1^2^3^4^5". Или ":0:1:2:3:4:5". Весьма не плохо и очень даже естественно. Тоже интернациональный вариант. Но все равно длиннее варианта, когда одна 16-ричная цифра - один символ.

Юмористичный вариант: "abcdef" -> "ёпрст". А что? "О" исключаем, как похожую на ноль. Естественно, заменяем её на "Ё". Но есть недостаток. Если вы были внимательны, то должны были заметить, что не хватает 6-й буквы/цифры на замену "F". Поэтому должно быть "ёпрсту".

Если пофантазировать, то можно ещё что-нибудь придумать.
"Воображение важнее знания". (с) А.Эйнштейн.

Но предлагаю прерваться в этом месте и обсудить проблему ещё с другой стороны. Потому что наличие префикса "0х" ни кем ещё не оспаривалось. А ведь надо! Префикс "0х" следует заменить на более естественный!

Предложение такое. Префикс 0х меняем на префиксы 16' и 16":

1) 0x0123456789abcdef - это С-подобный стандарт де-факто.
2) 16'0123 4567 89ab cdef  - то же самое, только:
   а) вместо 0х пишем 16'
   б) между 16-ричными цифрами возможны одиночные пробелы. Употребление иных символов заканчивает 16-ричную константу.
3) 16"0 1 2 3   4 5 6 7   8 9 a b   c d e f " - то же самое, только:
   а) вместо 0х пишем 16"
   б) между 16-ричными цифрами возможно любое количество пробелов. Употребление символа " заканчивает 16-ричную константу.

В новом языке программирования должны употребляться оба варианта: и 16', и 16". Их использование повысит наглядность употребления таких констант. Не знаю, почему так не сделано в Си или где-то ещё. Синтаксические правила это не слишком усложняет, компилятор от этого не "распухнет". Употребление 16' и 16" будет понятно и близко программистам всех национальностей. Своего рода "эсперанто".

По аналогии хотелось бы ввести двоичные константы. Парадоксально, но факт: компьютеры насквозь пропитаны двоичной арифметикой, но её нет во всех распространённых языках программирования! Конечно, двоичные константы легко заменить на 16-ричные. Но нередко двоичные константы выглядят нагляднее 16-ричных. Посмотрите:

2'1001 0001 1110 1100
2"1001 0001 1110 1100"

Не правда ли, такой вариант должен иметь право на жизнь?

Считайте, что предложил вам черновой вариант будущей статьи, посвященной обсуждению 16-ричных констант в новом языке программирования :) Основными идеями поделился; остальное- уже мелочь.

Отредактировано Юрий (30-11-2010 18:45:45)

0

6

Согласен, с аргументами по поводу "О" и "0".
Принято.

По поводу префикса "0х" - поддерживаю на счёт замены.
На что менять?
Используя в префиксе ( " ) - двойная кавычка (если её так можно назвать) используется как правило для выделения(определения) строковой константы.
Используя в префиксе ( ' ) - одинарная кавычка (если её так можно назвать) заставляет лишний раз, переключать раскладку.

Предлагаю как вариант использовать ( ! ).
( ! ) восклицательный знак - используется в си-подобных языках, как логическое отрицание, возможно заменить на "НЕ".

Пример - 16!00ЕЕ (шестнадцатеричное), 2!1001000111101100 (двоичное)

По поводу "АБВГДЕабвгде" - просто, естественно, по фигу на счёт соответствий в других языках.

(простите за нецензурную брань)
:)

Да, чуть не забыл про пробелы в числах.
Наглядности они прибавляют, но ...
Если их использовать, возникает проблема в распознавании числа сканером(парсером), пробел читается как переход к новому слову(терму) в языке.
Как вариант использовать ( ! ) и в конце тоже.
Пример -  2!1001 0001 1110 1100! (двоичное).

Из этого следует что и использование ( " ) возможно, а может быть даже предпочтительней чем ( ! ), по причине восприятия(читаемости).
Пример - 16"00 ЕЕ" (шестнадцатеричное), 2"1001 0001 1110 1100" (двоичное).
2 (двойка) или 16 (шестнадцать) или 8 (восемь), как бы говорит сканеру(парсеру), ну и конечно программисту что в кавычках не слово-константа а соответствующие число-константа.
Использование в префиксе пробела, то есть между 2 и ( " ) или 16 и ( " ) скорее всего будет не допустимо, по причине указанной чуть выше.
Я про это - 2(пробел)"...." или 16 "...." - не понятно что они одно целое, в нутри пожалуйста хоть в любом месте, главное выкинуть пробелы и разпознать число.

Отредактировано Данил (28-11-2010 23:59:18)

0

7

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

Да, быстро у меня получилось заразить вас своими идеями :) Но это потому, что над этими вещами думал много лет.

Ещё вариант для замены: “ABCDEF” -> “. : , ; - =” (точка, двоеточие, запятая, точка с запятой, минус, равно). Здесь идём как бы по возрастанию. Самый маленький по площади символ – это точка. Она соответствует наименьшей заменяемой 16-ричной цифре «А». Следом идут 2 точки: “B” -> “:”. Потом запятая и точка с запятой: “CD” -> “, ;”. Потом одна палочка и 2 палочки: “EF” -> “- =”. Достаточно логично и неплохо запоминается.

16"0123456.:,;-="

Но можно сделать и такую замену:  “ABCDEF” -> “. , - : ; =” - тоже по-своему логично.

Насчёт пробелов в числах. Есть идея разрешить одиночные пробелы не только в 16-ричных числах, но и в десятичных:
"89 206 467.02" читается лучше, чем "89206467.02". Проявляем последоватеьность дальше: внедряем одиночные пробелы 
в имена переменных, функций, классов… Разделителем одиночный пробел не является; чтобы разделить лексемы, нужно употребить два пробела, табуляцию, перевод строки и прочие принятые в таких случаях символы… Зато переменные будут выглядеть естественным образом. Переменная с именем «длина входной строки» смотрится куда лучше, чем «ДлинаВходнойСтроки». По своему опыту скажу, что делать два пробела там, где раньше хватало одного – дело привычки. Честное слово, я ведь так и программирую на своём русскоязычном С++: http://rus24bbru.bb24.ru/viewtopic.php?id=55. Если я где-то забыл и написал «цел счётчик», а не «цел   счётчик», то компилятор мне напомнит (типа: необъявленная переменная «цел_счётчик») , и никаких проблем… Так что 16`AB CD EF 01 – вполне пристойный вариант.

О 8-ричных числах тоже размышлял, т.к. в С/С++ они есть. Но эти числа были актуальны в эпоху БЭСМ и другой подобной техники. Сейчас не употребительны 6-битовые байты (или слова, или ещё они как-то они назывались), 8-ричные цифры нужны, когда единицы информации кратны 6 битам. У нас сейчас байт состоит из 8 бит, следовательно, нам 16-ричных чисел достаточно. Не нужно поддерживать анахронизмы.

Отредактировано Юрий (29-11-2010 14:08:17)

0

8

Ещё вариант для замены: “ABCDEF” -> “. : , ; - =” (точка, двоеточие, запятая, точка с запятой, минус, равно). Здесь идём как бы по возрастанию. Самый маленький по площади символ – это точка. Она соответствует наименьшей заменяемой 16-ричной цифре «А». Следом идут 2 точки: “B” -> “:”. Потом запятая и точка с запятой: “CD” -> “, ;”. Потом одна палочка и 2 палочки: “EF” -> “- =”. Достаточно логично и неплохо запоминается.

16"0123456.:,;-="

Но можно сделать и такую замену:  “ABCDEF” -> “. , - : ; =” - тоже по-своему логично.

Чёт для меня это трудно. Достаточно и "0123456789АБВГДЕ".

По поводу пробелов.

Если разрабатываемый язык будет объектный?

Код:
// Объявление переменной.
// [ тип ]  [ переменная ]
Какой то тип  переменная этого типа;

Не наглядно.
Один пробел, два пробела напоминает: "О" и "0".

Надо думать.

0

9

Надо думать

Приятнейшее занятие – думать (с) А. Эйнштейн :)

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

О замене “ABCDEF” на что-то небуквенное надо всё равно подумать. Спецсимволы – это Brainf*ck – версия общепринятого :) Пришёл в голову ещё такой вариант: “ABCDEF” -> “(  { [ ] } )”. В этом тоже есть логика!

0

10

Спасибо за ответы. Мне тоже больше нравится 0123456789АБВГДЕ, так как это очень естественно и очень легко запоминается и не надо затруднятся заучивать и вспоминать какой значок какое число означает. И с приставкой 16' и 2' я тоже согласен.

Пишу пока что не программы, а статьи, описывающие предполагаемый язык. Чтобы потом это обсудить с заинтересованными людьми. Когда объём материала превысит некую "критическую массу", то размещу его в Инете и приглашу на обсуждение. Предположительно, это будет в феврале-марте.

Я тоже записываю все идеи в документ и уже много накопилось. Так что я думаю обсуждение в феврале-марте будет интересным.

0

11

Ну наконец-то сюда подключился автор ветки :)

«АБВГДЕ» - это хороший вариант, но только в том случае, если запрещено «ABCDEF». Если разрешены оба варианта, то «В» русское – это 12, а «В» латинское – 11. «Е» русское – это 15, «Е» латинское – 14. Это ж сколько мгновений чудных может подарить отладка!

Если мы создаём язык программирования, на котором могут программировать только русскоязычные, то «АБВГДЕ» вполне устроит. Но тогда наш язык не будет популярным. Это будет сугубо либо нишевый язык (типа 1С), либо обречённый на малую аудиторию.

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

0

12

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

Не возможно всем угодить.

Вот один из моментов, когда пора поговорить о требованиях к разрабатываемому языку.

0

13

Меня устроит если он будет популярен только среди русскоязычных программистов.

Гм... Звучит, как если бы вы хотели, чтобы популярность среди русскоязычных программистов была, а вот среди иноязыких - ни в коем случае!

На мой взгляд, должна быть система автоматического перевода текста программы с одного языка на другой. Это проще, чем сделать полноценный переводчик для полноценной речи. Ведь идентификаторы - это лишь отдельные слова или словосочетания. Разве плохо, если русский написал библиотеку для параллельного программирования, а индус - что-то типа STL. И обе библиотеки доступны на родном языке и русскому, и индусу.

0

14

Язык программирования и библиотеки, это как бы разные вещи.
В языке используется только его грамматика и синтаксис, то есть относящиеся к нему правила, плюс идентификаторы прописанные в библиотеке используемые им.
Библиотека (программа), как правило уже скомпилирована, нам от неё надо ссылки на используемые в ней данные(значения, методы), т.е имена(идентификаторы).
Если язык будет использовать не сами библиотеки на прямую, а "переходники" с уже переведенными идентификаторами, будет проще написать САМ язык, в данном случае использующий только русские слова.

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

Как решение, есть возможность использовать промежуточный язык, бай-код, я показываю в сторону .net или java.
Но и там, в частности в .net, есть участки кода уже переведённые в машинные команды, с ними будет трудней.

Надо думать.
:)

0

15

«АБВГДЕ» - это хороший вариант, но только в том случае, если запрещено «ABCDEF». Если разрешены оба варианта, то «В» русское – это 12, а «В» латинское – 11. «Е» русское – это 15, «Е» латинское – 14. Это ж сколько мгновений чудных может подарить отладка!

Нисколько - нужно просто подсветить русские буквы одним цветом, не русские другим...

0

16

Я был неправ, утверждая, что восмеричная система счисления в программировании мертва.

Вчера ко мне обратился один сотрудник НИИ с просьбой помочь в алгоритме. Показали ТЗ на программу для некого изделия, в котором имеется 3-х байтовая система команд, из них 20 разрядов - собственно команда, 1 разряд - дополнение до нечёта и 3 разряда - нули. И записывается это в восьмеричной системе счисления.

Самому очень любопытно, что там за процессор. Но программируют на Си. Откуда он там взялся? Или я что-то не понимаю...
Само изделие - из того немногого, что идёт на экспорт, будучи готовым изделием, а не сырьём. В Инете о нём ничего нет.

0

17

Интересная тема, кстати. Но ответ тут может быть только один. От латиницы НЕ нужно отказываться. Равно как от гречицы и других алфавитов, применяемых в математической форме записи. Просто их применять нужно в меру.

0

18

От латиницы нужно отказываться. Причём как в записи чисел, так и в обозначениях научных величин и в уравнениях. Русский язык достоин быть языком науки и техники, и русская азбука — тоже.

0

19

Присоединюсь к мнению о том, что для шестнадцатеричной системы счисления больше всего подходят десятичные цифры, дополненные первыми шестью буквами русской азбуки: 0 1 2 3 4 5 6 7 8 9 А Б В Г Д Е
Я как-то раньше пробовал в уме переводить числа из одного вида другой, и заметил, что идущие по порядку латинские буквы упрощают такой перевод, как и в случае с десятичными цифрами: девять идёт после восьми и ты уже точно знаешь, что оно не единицу больше, — так и с буквами: Б идёт после В, значит она больше на единицу. Когда много работаешь с такими числами, осознаёшь это удобство.

0