Я в свободное время разрабатываю язык программирования, который бы полностью обходился без латиницы, так как всё время переключатся между русским и латиницей очень надоедает. Но как на русском записать шестнадцатеричное число? Так как используются 0123456789ABCDEF, например 0x00FF. Та же проблема с например 3д векторами. Координаты в математике пишутся тоже латиницей: x, y, z. Векторы наверно можно решить вот так: [0], [1], [2]; но как с ABCDEF? У кого есть идеи?
Hexadecimal на русском?
Сообщений 1 страница 19 из 19
Поделиться227-11-2010 13:43:13
из Таметко.atg
ШестьНадЦатеричноеЧислоЛатиница = число + "ABCDEFabcdef".
ШестьНадЦатеричноеЧислоРуссица = число + "ЦОДТЧПцодтчп".
Ц -цать (десять);
О - одиннадцать;
Д - двенадцать;
Т - тринадцать;
Ч - четырнадцать;
П - пятнадцать.
Поделиться327-11-2010 13:49:10
По координатам :
X (икс) - ширина -> Ш;
У (игрек) - высота -> В;
Z (зет) - глубина -> Г.
Поделиться427-11-2010 17:39:47
Интересный подход. Как тогда будет выглядеть например 0x007DE2CA в Таметко? Мне тоже интересна приставка "0х" с которой разузнаётся что число шестнадцатеричное.
Поделиться528-11-2010 13:43:43
Я в свободное время разрабатываю язык программирования
Должен вам признаться, занимаюсь тем же самым Но изобретаю с другого конца: ничего не программируя, пока что обдумываю сам язык. Чтобы программировать только то, в чём уже твёрдо уверен, что это должно быть именно так, а не иначе...
Пишу пока что не программы, а статьи, описывающие предполагаемый язык. Чтобы потом это обсудить с заинтересованными людьми. Когда объём материала превысит некую "критическую массу", то размещу его в Инете и приглашу на обсуждение. Предположительно, это будет в феврале-марте.
ШестьНадЦатеричноеЧислоЛатиница = число + "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)
Поделиться628-11-2010 22:59:10
Согласен, с аргументами по поводу "О" и "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)
Поделиться729-11-2010 14:05:41
Вот за что я люблю Интернет – так за то, что всегда можно найти единомышленников. Что в реальной жизни сделать трудно.
Да, быстро у меня получилось заразить вас своими идеями Но это потому, что над этими вещами думал много лет.
Ещё вариант для замены: “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)
Поделиться829-11-2010 19:42:13
Ещё вариант для замены: “ABCDEF” -> “. : , ; - =” (точка, двоеточие, запятая, точка с запятой, минус, равно). Здесь идём как бы по возрастанию. Самый маленький по площади символ – это точка. Она соответствует наименьшей заменяемой 16-ричной цифре «А». Следом идут 2 точки: “B” -> “:”. Потом запятая и точка с запятой: “CD” -> “, ;”. Потом одна палочка и 2 палочки: “EF” -> “- =”. Достаточно логично и неплохо запоминается.
16"0123456.:,;-="
Но можно сделать и такую замену: “ABCDEF” -> “. , - : ; =” - тоже по-своему логично.
Чёт для меня это трудно. Достаточно и "0123456789АБВГДЕ".
По поводу пробелов.
Если разрабатываемый язык будет объектный?
// Объявление переменной. // [ тип ] [ переменная ] Какой то тип переменная этого типа;
Не наглядно.
Один пробел, два пробела напоминает: "О" и "0".
Надо думать.
Поделиться930-11-2010 11:50:21
Надо думать
Приятнейшее занятие – думать (с) А. Эйнштейн
Пробелы в идентификаторах могут быть проблемой в обычных текстовых редакторах. При наличии синтаксической раскраски, особенно хорошей и заточенной под синтаксис конкретного языка программирования, эта проблема вообще уходит. Зато сколько появляется плюсов…
О замене “ABCDEF” на что-то небуквенное надо всё равно подумать. Спецсимволы – это Brainf*ck – версия общепринятого Пришёл в голову ещё такой вариант: “ABCDEF” -> “( { [ ] } )”. В этом тоже есть логика!
Поделиться1003-12-2010 20:16:33
Спасибо за ответы. Мне тоже больше нравится 0123456789АБВГДЕ, так как это очень естественно и очень легко запоминается и не надо затруднятся заучивать и вспоминать какой значок какое число означает. И с приставкой 16' и 2' я тоже согласен.
Пишу пока что не программы, а статьи, описывающие предполагаемый язык. Чтобы потом это обсудить с заинтересованными людьми. Когда объём материала превысит некую "критическую массу", то размещу его в Инете и приглашу на обсуждение. Предположительно, это будет в феврале-марте.
Я тоже записываю все идеи в документ и уже много накопилось. Так что я думаю обсуждение в феврале-марте будет интересным.
Поделиться1105-12-2010 18:31:03
Ну наконец-то сюда подключился автор ветки
«АБВГДЕ» - это хороший вариант, но только в том случае, если запрещено «ABCDEF». Если разрешены оба варианта, то «В» русское – это 12, а «В» латинское – 11. «Е» русское – это 15, «Е» латинское – 14. Это ж сколько мгновений чудных может подарить отладка!
Если мы создаём язык программирования, на котором могут программировать только русскоязычные, то «АБВГДЕ» вполне устроит. Но тогда наш язык не будет популярным. Это будет сугубо либо нишевый язык (типа 1С), либо обречённый на малую аудиторию.
Хотелось бы, чтобы этот язык позволял программистам полноценно использовать в работе свой родной язык: русский, армянский, вьетнамский, хинди.
Поделиться1206-12-2010 01:04:18
Мне бы хотелось, самую малость, писать программы на том языке на котором я думаю и говорю.
Меня устроит если он будет популярен только среди русскоязычных программистов.
Не возможно всем угодить.
Вот один из моментов, когда пора поговорить о требованиях к разрабатываемому языку.
Поделиться1306-12-2010 16:16:02
Меня устроит если он будет популярен только среди русскоязычных программистов.
Гм... Звучит, как если бы вы хотели, чтобы популярность среди русскоязычных программистов была, а вот среди иноязыких - ни в коем случае!
На мой взгляд, должна быть система автоматического перевода текста программы с одного языка на другой. Это проще, чем сделать полноценный переводчик для полноценной речи. Ведь идентификаторы - это лишь отдельные слова или словосочетания. Разве плохо, если русский написал библиотеку для параллельного программирования, а индус - что-то типа STL. И обе библиотеки доступны на родном языке и русскому, и индусу.
Поделиться1406-12-2010 20:06:01
Язык программирования и библиотеки, это как бы разные вещи.
В языке используется только его грамматика и синтаксис, то есть относящиеся к нему правила, плюс идентификаторы прописанные в библиотеке используемые им.
Библиотека (программа), как правило уже скомпилирована, нам от неё надо ссылки на используемые в ней данные(значения, методы), т.е имена(идентификаторы).
Если язык будет использовать не сами библиотеки на прямую, а "переходники" с уже переведенными идентификаторами, будет проще написать САМ язык, в данном случае использующий только русские слова.
Если Вы имеете ввиду совместную разработку с программистами не владеющими русским языком, то перевод текста программы на прямую с одного языка на другой, а потом ещё и обратно, вызовет ряд дополнительных проблем,
взять хотя бы перевод комментариев, где структура текста может быть произвольная.
Как решение, есть возможность использовать промежуточный язык, бай-код, я показываю в сторону .net или java.
Но и там, в частности в .net, есть участки кода уже переведённые в машинные команды, с ними будет трудней.
Надо думать.
Поделиться1509-12-2010 07:54:52
«АБВГДЕ» - это хороший вариант, но только в том случае, если запрещено «ABCDEF». Если разрешены оба варианта, то «В» русское – это 12, а «В» латинское – 11. «Е» русское – это 15, «Е» латинское – 14. Это ж сколько мгновений чудных может подарить отладка!
Нисколько - нужно просто подсветить русские буквы одним цветом, не русские другим...
Поделиться1605-07-2011 12:52:11
Я был неправ, утверждая, что восмеричная система счисления в программировании мертва.
Вчера ко мне обратился один сотрудник НИИ с просьбой помочь в алгоритме. Показали ТЗ на программу для некого изделия, в котором имеется 3-х байтовая система команд, из них 20 разрядов - собственно команда, 1 разряд - дополнение до нечёта и 3 разряда - нули. И записывается это в восьмеричной системе счисления.
Самому очень любопытно, что там за процессор. Но программируют на Си. Откуда он там взялся? Или я что-то не понимаю...
Само изделие - из того немногого, что идёт на экспорт, будучи готовым изделием, а не сырьём. В Инете о нём ничего нет.
Поделиться1709-07-2011 23:00:34
Интересная тема, кстати. Но ответ тут может быть только один. От латиницы НЕ нужно отказываться. Равно как от гречицы и других алфавитов, применяемых в математической форме записи. Просто их применять нужно в меру.
Поделиться1812-11-2012 00:56:02
От латиницы нужно отказываться. Причём как в записи чисел, так и в обозначениях научных величин и в уравнениях. Русский язык достоин быть языком науки и техники, и русская азбука — тоже.
Поделиться1912-11-2012 13:12:23
Присоединюсь к мнению о том, что для шестнадцатеричной системы счисления больше всего подходят десятичные цифры, дополненные первыми шестью буквами русской азбуки: 0 1 2 3 4 5 6 7 8 9 А Б В Г Д Е
Я как-то раньше пробовал в уме переводить числа из одного вида другой, и заметил, что идущие по порядку латинские буквы упрощают такой перевод, как и в случае с десятичными цифрами: девять идёт после восьми и ты уже точно знаешь, что оно не единицу больше, — так и с буквами: Б идёт после В, значит она больше на единицу. Когда много работаешь с такими числами, осознаёшь это удобство.