Программирование на кириллице может повысить производительность

Привет, Хабрахабр. Как известно, технический английский — язык мира информационных технологий. Основная документация, все стандарты программирования представлены на английском языке. В числе прочих, главная кодовая страница ASCII и переносимый набор символов включают 26 латинский символов, с которыми не возникает проблем при использовании разных кодировок. Исторически так сложилось благодаря международному уровню английского языка и лидерству США в области информационных технологий. Это обстоятельство позволяет добиться максимальной совместимости техники в эпоху Интернета и глобализации. В данной статье я не ставлю цель менять стандарты, а просто хочу показать альтернативный подход к IT на русском языке.

Изначально мне просто ради спортивного интереса захотелось построить похожую на ASCII 7-битную таблицу символов, включающую весь русский алфавит, 10 цифр и все знаки пунктуации из переносимого набора символов стандарта POSIX. В процессе все больше всё больше выяснялось, что такая таблица гораздо удобнее ASCII из-за чёткого определения её подразделов. Я знаю, что есть Юникод, но здесь рассматривается именно возможность однобайтового кодирования. В процессе создания находились дополнительные преимущества, таблица много раз полностью переписывалась, появились управляющие символы, далее представлен один из получившихся конечных результатов.



В чём же преимущества? Разберём по частям.

1. Очевидно, литеры в полном составе занимают всю вторую половину таблицы. Не хватило места только для буквы Ё, не критично, все давно привыкли к её особому статусу «дальнего родственника», хотя лично я вынес бы из списка твёрдый знак Ъ, непонятно зачем оставленный лингвистами вместо более нужной Ё. Но такое решение будет совсем бунтарским, поэтому, как в ISO 8859-5 и Win-1251, ей отведено место отдельно от алфавита, заглавный и строчный вариант в соседних ячейках. Без этой хорошей буквы русский алфавит состоит из 32 букв, добавив второй регистр, получаем 64 символов, или 2^6. Таким образом, один бит может определять, является ли символ буквой и применим ли к нему средний регистр (о котором позже). Как положено настоящему буквенному ряду, он идёт в алфавитном порядке, при этом сначала все строчные, затем все заглавные. Почему не наоборот, скажу после, сейчас главное, — что благодаря степени двойки границы обоих алфавитов совпадают с границами строк шестнадцатеричной таблицы, а это просто замечательно. Двоичный индекс каждой буквы в массиве равен числу последних 5 битов на кодовой странице, регистр определяется шестым, а сама буквенная природа символа — седьмым.

2. В первой половине множество не-букв так же поделено надвое, причём дважды: здесь действует та же адресация, и добавлен дополнительный регистр, я назвал его «средним». Верхнюю строку занимают управляющие символы, здесь они прописаны на русском, потому что что наличие латиницы в православной русской картинке вопреки всем правилам выглядело топорно. Их назначение не важно, я не мастер ассемблера и тем более машинных команд. С момента создания ASCII технологический прогресс ушёл далеко вперёд, и большинство управляющих символов 70-х более не актуальны. С такой кодировкой не смогут работать телетайпы и многие коммутаторы, но для использования компьютера с современной архитектурой 16 команд вполне достаточно, если нужно ещё, в конце специально отведена специальная команда «УПР», при получении которой устройство иначе воспримет следующий байт.

Если кратко: ПУС — \0, БИП — \a, НАЗ — \b, ТАБ — \t, НОВ — \n, АБЗ — \v, ПОД — \f, ВОЗ — \r, РАЗ — пробел, КОН — сигнал об окончании, СТО — команда остановки, ВЕР — верхний регистр, shift, ФИК — фиксировать регистр, caps lock, АЛЬ — средний регистр, альтернативное назначение литер, alt, ОТМ — отмена, esc, УПР — управление, начало команды, ctrl. Команды отобраны не самые лучшие, в частности, нет нужной команды ДЕЛ — delete, запроса отклика процесса, но УПР решает вопрос. К тому же, в данной статье не рассматриваются тонкости работы процессора. Важно, что набор управляющих символов целиком расположен в первой строке и соответствует стандарту POSIX. Для управляющих команд не действуют регистры, первые 4 нулевых бита в начале отключают любые переключения остальных.

3. На вторую строку действуют два регистра. Первый, верхний, меняет значение третьего бита слева с 0 на 1 и переводит чтение на четвертую строку. Второй, средний, меняет третий и четвертый биты и переводит на третью. Можно поменять вторую строку с четвертой, тогда «средний» регистр назовётся скорее «нижним», а переключение будет осуществляться одной подменой. Но я расставил строки так как расставил для лучшей читаемости. Для неё же, кстати, левую половину 3 и 4 строк занимают арифметические знаки, а правую — пунктуация. Если кто-то решил с особой тщательностью рассмотреть таблицу, уже заметил отсутствующие в ASCII полезные символы ¬ (логическое НЕ, весьма нужная вещь) и ¤ (знак валюты, для финансовой документации), а ещё родная буква Ё, скрытая без определенной клавиши и два резервных знакоместа.

Порядок символов в строке также имеет значение: один столбец — одна клавиша. То есть, кодирование клавиш клавиатуры полностью соотносится с таблицей. Да, механическая раскладка клавиатуры здесь обычная, но функциональная тоже своя, дело в том, что стандарт QWERTY был разработан для максимального замедления печати. В 1870-х ещё не существовало метода слепой печати, а пишущая машинка Ремингтон 1 уже успели приобрести коммерческий успех. На её предшественниках не было единой раскладки, и при работе на них часто происходило сцепление рычагов друг с другом. Кристофер Шоулз постоянно экспериментировал, стараясь как можно больше нагрузить мизинцы и замедлить скорость печати текста, тем самым предотвратив сцепление. Часто используемые буквы и знаки препинания оказались труднодоступны. С тех пор реалии изменились, современные клавиатуры не страдают механическими болезнями, а стандарт остался, ведь переучиваться печатать на новой раскладке — все равно что поставить клавиши фортепиано в обратном порядке. Впрочем, альтернативы всё же существуют, например, раскладка Дворака. Русская раскладка изначально проектировалась, основываясь на десятипальцевом методе, нам повезло больше. Но знаки препинания всё равно частично унаследовали QWERTY, а запятая и вовсе оказалась в верхнем регистре. В клавиатуре представленной в статье кодировки цифровые клавиши, а потому и знаки арифметики и пунктуации, идут слева направо, При этом учитывается частота их использования.



Возвращаясь к открытым вопросам, вот почему заглавные буквы следуют после прописных, — команда ВЕР опускает нас на две строки ниже для всех строк, кроме первой. Поскольку адресация знаков 3 и 4 строк происходит через регистры второй строки, для них повторное применение регистра обычными методами невозможно (клавиша shift или alt либо нажата, либо нет, увеличение давления пальцев сверху бесполезно). Большую роль играет и восприятие правила: если третий бит слева равен 0, — значит регистра нет, 1 — включен верхний регистр, маленькие буквы сменяются большими.

Благодаря этим правилам, таблицу можно восстановить по памяти буквально после первого прочтения, а свойства попадающего в поток нового символа определяются уже при считывании первых битов, что можно использовать для значительного увеличения производительности. Вряд ли эта кодовая страница найдёт какое-либо применение, программисты всего мира давно привыкли к английскому, а для обычных пользователей существует Юникод, над фундаментальным программированием и архитектурой ПК — работают американские корпорации. Данная статья носит чисто неформальный характер, хотя шустрый интерпретатор ЯП высокого уровня (да и низкого тоже) на русском всё же можно создать. А для ещё большей производительности, в ущерб удобочитаемости, представляю второй вариант таблицы, где средний регистр определяется одним четвёртым слева битом, и оба регистра включаются нулём, а не единицами.

Поделиться публикацией
Ой, у вас баннер убежал!

Ну. И что?
Реклама
Комментарии 134
  • +23
    … а может и не повысить.

    Совершенно не понятно, что значит «может», а также в статье на раскрыто:
    • производительность чего?
    • почему?
    • на сколько?
    • какой ценой?
    • как проверить?
    • где применимо?


    Цель этой критики в том, чтобы вы не зазнавались, когда школьный учитель упадет в обморок в восторге от увиденного и продолжали самосовершенствоваться. Для хорошей технической статьи в ней нет доказательств и исследований, не понятно, зачем это изобретение и на чем основаны ваши предположения.

    В любом случае, для начала, с учетом вашего рода деятельности — хорошо.
    • 0
      Такого же мнения был наш преподаватель по прологу в университете — рекомендовал хоть одну лабораторную написать на кириллице (производительность программиста).

      Ну что же, не знаю как производительность, но в этом была изюминка :)
      • 0
        Самый Короткий Язык Программирования был смешней — там автор хотя бы заявлял что главное у программиста — скорость набора кода и если заменять функции одно-двух символьными обозначениями — получается быстрее (правда, основными функциями у него были «Hello, world!» и факториал), а тут вообще не понятно производительность чего имеется в виду (автор рассматривает интерпретатор как if(cur_char >= 'А') {switch('А':… 'Б')}else{switch('а':… 'б':...)}, иначе не понятно к чему эти деления таблиц пополам для ускорения).
      • +8
        Задумка есть, но основная тема (производительность) не раскрыта.
        • 0
          Спасибо за критику. Да, числовых показателей нет по причине школьного уровня, сейчас изучаю архитектуры ПК. А принцип, по которому планируется увеличить быстродействие — определение свойств получаемого в поток символа одновременно с чтением первых 4 бит (благо букв 32) + простая переадресация, в большинстве случаев по одним и тем же правилам. Например, за командой о верхнем регистре одинаково последует переключение 3 бита. В любом случае, будут точные данные и интересный поворот темы, — отпишусь.
          • +3

            Ускорение интерпретации/компиляции программы? Неактуально. Лексический разбор (или как его там) — "дешевле" даже чтения программы с диска.
            А если уж вернуться в 1980-е — то надо не регистрами играть, а слова укорачивать (вспомните старые бейсики: там оператор — один символ, на спектруме даже вводился одной клавишей).

            • +4
              Если вы под производительность имеете в виду скорость работы программ — то наилучшая производительность будет у кода, который не на русском или английском, а переведен в инструкции процессора. Этот процесс называется компиляцией. Компилирующие языки программирования делают это после написания программы перед исполнением, 1 раз, конечно. Интерпретирующие могут делать это по надобности для тех участков кода, которые сильно «нагружены».

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

              Что касатеся системы команд процессора, которая представляет собой что-то вроде языка, описывающего, к примеру, какие биты должны быть выставляены в команде для того, чтобы она считалась операцией сложения, а какие биты отвечают за указание оператндов — вот там скорее всего использутся похожие оптимизации.

              У Intel, к примеру, есть manual на 10 томов по 2000+ страниц по этой теме: software.intel.com/en-us/articles/intel-sdm

              У AMD, ARM и прочих, несомненно, тоже должны быть.
            • +1
              Программирование на кириллице может повысить производительность
              Может повысить производительность чего?
              • 0
                Производительность производительности :)
                Если серьезно, то т.к. в статье очень много внимания уделяется регистрам и их переключению, то очевидно имелось ввиду прозводительность процессора. Точнее говоря, насколько я понял — компилятора программ, который будет быстрее считывать поступающие символы...
                Перечитал еще раз статью, вообще ничего не понял, что имел ввиду автор.

                upd попытка №3: автор сделал свою кодировку, по типу 1251, где вся кириллица будет представлена 1-байтово + автор проанализировал самые частоиспользуемые символы, и вывел их из 2х байтовости — тоже сюда в свою раскладку. Типа «здесь всё что нужно для русского языка в однобайтовой таблице»
                • 0
                  И вот в чем производительность:
                  свойства попадающего в поток нового символа определяются уже при считывании первых битов, что можно использовать для значительного увеличения производительности
                  • +2
                    Ага, но по прежнему непонятно для увеличения производительности чего. Да еще и значительно, как будто CPU считывает биты последовательно.
                    • 0

                      А представьте что это передача — очень затратна через что-нибудь очень сложное (квантовую запутанность) и вот уже после первых двух бит мы можем стоять на низком старте "да, хозяин" (но всё ещё не понимать зачем), а враги всё равно не догадаются, ибо кириллица.

                      • 0
                        Где-нибудь в микроконтроллерах?
                        • 0
                          Не особо уверен в существовании современных микроконтроллеров, в которых это даст выигрыш. Это был скорее сарказм (или что похуже).
                          • 0
                            См. комментарий ниже. На самом деле, это очень круто, что для определения буквы надо проверить всего один бит, а для определения буквы в конкретном регистре — два бита. Операции по битовым маскам самые быстрые. Сравните, что быстрее: сделать линейный пробег по 26-30 элементам, или просто применить битовую маску (которая применяется на аппаратном уровне).
                            • +1
                              Сравните, что быстрее: сделать линейный пробег по 26-30 элементам,
                              Не могли бы подробнее рассказать, что вы имели в виду?

                              Я это вижу или как
                              bool isLetter = (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); 
                              или так:
                              static const bool letters[256] = { ... (precalculated) ... }; 
                              bool isLetter = letters[c];
                              Первое — 2-5 арифметических инструкций процессора с вероятным лишним прыжком, второе — лишие 256 байт в банарнике, в ОЗУ, зато практически моментально работает в циклах (т.к. легко помещается в кеш) и отлично параллелится внутри процессора, т.к. не использует АЛУ и не содержит ветвлений.
                              • 0
                                А, ну да, наверное Вы правы. Я и позабыл, что сравнение двух числе — для АЛУ такая же простая операция, как и проверка бита. Нет особой выгоды…
                              • +1
                                26 латинских букв, простая проверка бита уже не подходит. 33 кириллические — снова не проходит (выкинуть букву можно, но только для текста программы, скорость интерпретации которого, как выяснили, полезна чуть менее, чем никак, а для обработки текстов произвольно выкидывать буквы — не вариант, тем более проверять буква-не буква — слишком узкий кейс).
                        • 0
                          А мне вот понятно, чего. Парсинг по регуляркам можно здорово ускорить (представьте простой шаблон вроде \w+). Идея интересная, хотя, конечно, по-началу непривычно очень. Да и выпуск особых клавиатур потребуется для этого
                          • +1
                            Парсинг по регуляркам можно здорово ускорить
                            А можно и не ускорить. Или не здорово. Вы пробовали провести тесты?

                            По опыту профайлинга гораздо более сложных арифметических операций, производительность современного CPU в таких рутинных задачах ограничена производительностью доступа к памяти.
                            • 0
                              Ну Вы же тесты тоже не проводили. А вдруг в каких-то сценариях бы выигрыш в пару процентов обнаружился?) Тем более автор не призывает переписать весь существующий код. А вот при разработке новых программных продуктов поддержку новой кодовой страницы можно было бы и внедрять. Добавили же в своё время знак рубля в шрифты? А взять тот же Юникод — на него вообще процесс перехода был долгим и сложным, но перешли. Я в целом за Юникод, но передавать два байта вместо одного — неслабая такая экономия трафика, на самом деле.
                    • +1
                      Интерпретатора бейсик-подобного языка, наверное. Я серьёзно.

                      Теперь для того, чтобы привести символ в верхний регистр достаточно одной операции:
                      верхняя_буква = буква И бит_верхнего_регистра

                      В отличие от существующих для ASCII решений здесь нет ветвлений, что положительно скажется на предсказании переходов процессором, код отлично параллелится (можно даже на GPU приводить к верхнему регистру, в отличие от ASCII, т.к. GPU не любит ветвления) и не засоряется кэш процессора таблицей
                      символ нижний_в_верхний[256] 

                      У автора впереди много интересных открытий, вроде индейского ритуала определения того, является ли данное занятие выражением грубинных стремлений сердца его, а так же: компиляторов, машинного кода и прочего, но по-моему, это забавно и как минимум — неплохая разминка для мозга.
                      • –1
                        Регистр — не ключевая фигура. Важнее четко определенные свойства каждой строки таблицы, как вы сказали, нет лишнего ветвления. Если символ в бинарном коде начался с единицы, компилятор/интерпретатор уже знает, что рассматривать его следует только как литеру, а не как арифметический или управляющий знак. Спасибо за мотивацию, будем учиться и изобретать.
                        • +4
                          Справедливости ради, это было что-то вроде иронии. Скоростной парсинг текста на GPU скорее всего не нужен, или нужен в крайне редких задачах. Я таких придумать не могу.

                          К примеру, у меня дома дохлый CPU (рекомендованная цена $80 в рознице, с учетом коробки, транспортировки и зарплаты всего персонала магазина), использщуемый в HD-плеерах, может перемножить со сложением (скалярное произведение, если что) 1 килобайт вещественных чисел на 4.5 гигабайта таких же чисел за 1 секунду.

                          С какой скоростью он будет обрабатывать текст в какой бы то ни было кодировке? С такой же, т.к. скорость ограничена скоростью передачи данных их памяти в кишки процессора.

                          Чем быстрее он обработает текст (в моем случае — числа) тем… Тем больше он будет ждать поступления из памяти новой порции данных.

                          Т.е. в целом, вы идете по тому пути, который когда-то давным-давно прошли инженеры при проектировании процессоров. Должно быть интересно и забавно, как игра и головоломка. Но на всякий случай, не зацикливайтесь сверх меры и не расстраивайтесь слишком сильно, когда окажется, что эта проблема уже давно решена командами ученых, и за десятилетия исследований найдено гораздо лучшее решение.

                          Это просто игра, причем, не худшая из игр. Советую так к этому и отнестись.
                          • 0
                            Мне кажется, или в эпоху очень медленных процессоров и терминалов ввода такие оптимизации всё же были актуальны?)
                            • +1
                              Возможно, но сейчас-то какая разница?
                              • +1
                                Ну разминка для ума, правильно выше уже ответили. Человек старается, придумывает что-то — здорово же.

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

                                А тут человек вообще со знанием дела подошёл, провёл столько оптимизаций разных, причём не от балды, а мотивировал каждую. Прикольно
                        • 0
                          Теперь для того, чтобы привести символ в верхний регистр достаточно одной операции:

                          Ё против такого к себе обращения.
                          • +1
                            Если будет сильно возражать, заменим её на ≡ и ±, соответственно. Нет буквы — нет проблемы. Тем более, в контексте новых интерфейсов первый символ будет вполне востребован.
                            • 0
                              Тем более, в контексте новых интерфейсов первый символ будет вполне востребован.
                              Тогда сразу ⋮, а не ±. Чтобы и «гамбургер-меню», и «кебаб-меню».
                          • 0

                            Верхняя_буква = буква + смещение. Но в некоторых кириллических кодировках проблемы — разбиты на части.

                            • 0
                              А если буква уже верхняя? В том-то и прикол, что проставить бит на GPU — быстро, а if-ы выливаются в холостые циклы. else-ы, естественно, тоже.

                              EDIT: ну, т.е. снять бит, но не суть.
                              • +1
                                А если это не буква, а цифра? Всё равно надо проверять границы перед установкой бита, тем более букв 33 (менять не только кодировку, но и алфавит — это уже слишком).
                                • 0
                                  Ну как же, вот мы сделали массив:
                                  истинность букваЛиЭто[256]
                                  и дальше в нужном участке интерпретатора проверяем:
                                  если букваЛиЭто[символ] то 
                                    большаяБуква = символ И маска
                                  иначе
                                    эскалировать проблему "не буква"
                                  
                                  ведь проще, чем дополнительно проверять большая ли это буква.

                                  Но можно пойти дальше. В GPU загрузить код:
                                  неизменный целый большаяЛиЭтоБуква[256] = { ... } // ежели большая буква, то 1, иначе 0
                                  
                                  для (а=0; а < длиннаТекста / числоКоробокСПотоками; ++а) 
                                  {
                                     индекс = а * номерКоробкиСПотоками;
                                     преобразованная = текст[индекс] И маска;
                                     текст[индекс] = преобразованная * большаяЛиЭтоБуква[преобразованная]
                                                   + текст[индекс] * (1 - большаяЛиЭтоБуква[преобразованная]);
                                  }
                                  
                                  Этот код без никаких ветвлений переведет все буквы в большие, оставив нетронутыми все не-буквы.

                                  Я не настоящий сварщик, и мог написать неоптимальный с точки зрения коробок с потоками код, но в целом как-то так.
                                  • +3
                                    длиннаТекста

                                    Твоя текста длинна, мастер, осенно длинна… :)

                                    • +1
                                      есть такое, за удвоение согласных там, где не надо мне — двойка.
                                    • +1
                                      Зачем проверять, большая ли это буква? Просто складывайте её побиово с битом верхнего регистра. 1 ИЛИ 1 = 1.
                                      • +1
                                        но это может быть цифра. И бит надо не добавлять, а убирать — тут особенная кодировка.
                                        • 0
                                          Надо проверять «это буква», а большая или маленькая — неважно.
                                          Убрать бит ничуть не труднее, чем прибавить. Вы побитовыми операциями что ли никогда не баловались?
                                          • 0
                                            Вы не внимательно прочитали код или не поняли его. В этом случае нужно проверять результат, он будет большой буквой если изначальный символ был любой буквой, и не большой буквой, если на входе была не буква.

                                            Можно переписать код так, чтобы проверка выполнялась до преобразования, но мне уже надоело баловаться побитовыми операциями.
                                        • 0
                                          хотя, конечно,
                                          большаяЛиЭтоБуква[преобразованная] 
                                          можно заменить на
                                          большаяЛиЭтоБуква = (целый)(преобразованная >= 'A' И преобразованная <= 'Я' )
                                          у меня, к сожалению, нет компилятора с русского на ГПУ, чтобы проверить, как быстрее.
                            • 0
                              Картинки не отображаются — на какой то спам сервис ссылаются. На хабре вроде как только хабрастораж разрешён
                              • +1

                                Зачем всё это? Скорость набора для программиста проблем не создаёт — обычно даже 100 символов в минуту хватит, чтобы успеть за "полётом мысли", доступные без 10-пальцевого метода 200-300 делают программирование комфортным, 10-пальцевый метод — вообще адский оверкилл, делающий любые ускорения набора бессмысленными. "Узкое место" — не скорость набора, а размышление, поиск багов, рысканье по документации.
                                И что получит человек, переучившийся на кириллический ЯП? Посмотрите на 1с-ников — как-то сложилось, что они — самая презираемая каста программистов. Стоит ради этого уходить с мейнстримных языков?

                                • Посмотрите на 1с-ников — как-то сложилось, что они — самая презираемая каста программистов.


                                  Вы презираете из-за собственной некомпетентности.
                                  Потому что не знаете, что обновлять конфигурацию 1С способны и сами бухгалтера. И напрасно называете обновляторов программистами.

                                  Те что занимаются программированием в 1С — самые обычные программисты.
                                  И кириллица там или не кириллица — никак не связано с квалификацией.

                                  P.S.:
                                  То есть вы не знаете, что 1С поддерживает и англоязычный и русскоязычный синтаксис еще с прошлого века?
                                  • 0

                                    Я ничего не сказал про собственное отношение (да и про поддержку латиницы я знаю, как и про многое другое).
                                    А стереотип есть, и то, что вы тут разорались и минуснули — показывает, что вы о нём знаете и обиделись на его упоминание.


                                    Так зачем на ровном месте создавать себе проблемы, переходя на язык, за пользование которым к вам будут относиться свысока?

                                    • –1
                                      Справедливости ради.

                                      Программисты — они обычно просто программисты, а не что-то вроде «программист на javascript». Ясное дело, что существует специализация. Но в целом большой разницы нет на чем писать.

                                      «Программист 1С» (из тех, кто мне встречались в реальном мире) живет в мире 1С. Когда он начинает взаимодействовать с внешним миром — он начинает страдать.

                                      Например, нужно отправить http post запрос внешней системе. Обычному человеку совершенно пофиг, как это сделать — хоть на js/python, хоть на curl, хоть на go отправит этот запрос. Разве что минут 10 погуглит документацию, если язык совершенно не знаком. 1С-ник будет с этим мучиться сутки. Несколько часов на «что такое post запрос, что такое хедеры», несколько на «я отправляю запрос, это у вас не работает» и еще парочку, чтобы осознать нужность логов, без которых человек сидит как в черном ящике — что-то делает, но не понимает, что происходит.

                                      Или вот, был недавно курьезный случай. Человек узнал об алготрейдинге и пытается написать торгового робота криптовалютами с нуля на 1С. Не потому что ему по фану — как тем, кто на брейнфаке пробует что-то написать. А потому реально что не знает другого способа. Не осознает, что есть, к примеру, питон, в котором его 95% будущих граблей уже давно решены.
                                      • +1
                                        Те что занимаются программированием в 1С — самые обычные программисты.

                                        Я имею опыт работы программистом на С, Perl и 1С. К сожалению, на 1С существенно больший. В одиночку программировал 1С в компаниях, в которых админил, в одной компании работал в команде 1Сников и работал во франче. Могу сравнивать и могу утверждать, что «программирование» 1С отличается от программирования настоящего больше, чем застольные песни от оперного исполнения.
                                        • +1
                                          Могу сравнивать и могу утверждать, что «программирование» 1С отличается от программирования настоящего больше, чем застольные песни от оперного исполнения.


                                          Имею опыт программирования с прошлого века и до сих пор: C/C++, C#, assembler Motorola 68 и Intel 86, 1C, Go, JavaScript, Python, Java, Rust.

                                          Согласен с вами. Отличается.
                                          Тем, что в 1С то, что в других системах приходится прикручивать из библиотек в лучшем случае (или писать свое) — уже есть.
                                          И программист 1С сосредоточен на прикладной задаче, за которую собственно заказчик и готов заплатить.
                                          В этом смысле различается. С точки зрения квалификации — никак нет.
                                          Говнокодеры есть везде.
                                  • +1
                                    В 1С так:-)
                                    • +2
                                      Программирование на кириллице в середине 1980-х изобретали уже
                                      Кодировка была придумана для телеграфа ещё раньше. Вообще, кодировок и так слишком много.
                                    • +4
                                      При всей… странности статьи это определённо не худшее, что приходило из песочницы)
                                      • 0
                                        Большинство компиляторов современных ЯВУ справляются с unicode.
                                        Так что хоть на боярском писать можно habrahabr.ru/post/41561
                                        Хоть на YoptaScript
                                        • –3
                                          Писал не только на боярском, а на мунспике забавы ради. Но такой подход все равно переводит макросы, выводя чистый си, только снижается скорость компиляции и растет вес кода. Преимущество от такого кодинга лишь развлечение. А теперь представьте тот же боярский без макросов и с однобайтовой кодировкой.
                                          • 0

                                            А если посмотреть столько времени занимает разбор символов относительно всей JIT-компиляции (причём по факту от такой таблицы ускорения компиляции можно и не получить, а даже наоборот), то становится видно Эталонное Ненужно (а если не JIT, то переход на язык с ним даст кратное/степенное превосходство в скорости без потерь на преобразование в эту кодировку из другой, в которой работают остальные системы, а если нет обмена, то это какой-то бессмысленный учебный проект).

                                            • 0
                                              Ну вот я представил. Плюсов особых не вижу, минусов же — тьма тьмущая.
                                              Из плюсов:
                                              — на пару микросекунд уменьшается время парсинга исходного кода. Это если повезет, так-то компиляторы очень неплохо справляются с оптимизацией строковых операций, да и процессоры в большинстве случаев оборудованы командами быстрой трансляции из кодировки в кодировку (xlat в x86).
                                              — слегка уменьшается расход памяти.

                                              Из минусов:
                                              — поддержку интернационализации придется городить отдельно, как в старые добрые времена. Многоязычный интерфейс у программ нынче — норма.
                                              — юникод удобен не тем, что он как-то там оптимально устроен, а тем, что не надо переключаться между кодировкаами. Это удобство с лихвой компенсирует его недостатки.
                                              — экономия на спичках (этап парсинга) будет практически незаметна на фоне других ресурсоемких задач компиляции. Да, мы, возможно, сэкономим пару микросекунд на парсинге каждого файла, но если сама компиляция занимает секунды — общий выигрыш будет ничтожен.
                                              — как выводить текст в вашей новой кодировке? Современные шрифты или заточены под одну из известных кодовых страниц, или реализуют некое подмножество юникода. Будем на лету перекодировать в юникод? Это ж лишние такты! :)
                                              • 0
                                                А можно, интересно, создать свою кастомную кодовую страницу? И запилить свои шрифты под неё (можно на основе открытых)?
                                                • +1
                                                  Можно, конечно. Кто вам может помешать? :)
                                                  Есть, например, шрифты с редко используемыми алфавитами (видел старославянский со всякими титлами, ударениями, сокращениями и т.п.). Буквы там размещены вместо латиницы и всякой псевдографики — чем не своя кодовая страница? :)

                                                  Только вот работать с этой «кодовой страницей» программе придется вручную. Как минимум — придется подгружать свой шрифт, благо, эта возможность вроде как реализована везде. Вот добавить новую кодовую страницу в систему — задачка уже весьма непростая. А уж реализовать переключения на альтернативные страницы по специальному коду — это вообще, мне кажется, мало реализуемо в современных ОСях.
                                                  • +1
                                                    При чём тут шрифты? Шрифты описывают векторные кривые для символов. Можно использовать существующие, тут имхо даже новый шрифт делать не надо (либо он делается очень просто из существующих путём смены маппинга).

                                                    Насчёт «добавить нетривиально» — полная ерунда. Кодовые страницы лежат в виде обычных файлов, я даже примерно знаю где. Этот файл обычным инсталлером кидается в системную папку, либо руками. Как и со шрифтами, в общем-то, та же схема. Более того, будучи кинутым в эту папку (и возможно прописанным в какую-то ветку реестра дополнительно) он должен в системном диалоге выбора кодовой страницы по умолчанию появиться.

                                                    Кстати, во времена MS-DOS правильную кодовую страницу нужно было указывать не то в загрузочном конфиге, не то в процессе старта — иначе после запуска в консоли при наборе текста выводился полный треш. Я просто с DOS имел дело, когда ставил Win 98 на компы, было дело…
                                                    • 0
                                                      При чём тут шрифты?

                                                      При том, что без шрифтов увидеть что-то осмысленное на экране будет затруднительно.

                                                      Насчёт «добавить нетривиально» — полная ерунда. Кодовые страницы лежат в виде обычных файлов, я даже примерно знаю где.

                                                      В винде надо еще не забыть прописать их в реестре, ЕМНИП.
                                                      А вот в линуксе — куда класть? :)

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

                                                      CHCP 866
                                                      Но для ввода русских букв все равно надо было русификатор ставить. Это если мы про чистый ДОС, а не про режим ДОС в 98-й винде — там-то оно переключалось.
                                                      • 0
                                                        При том, что без шрифтов увидеть что-то осмысленное на экране будет затруднительно.

                                                        Да, но не нужно именно рисовать новые шрифты, достаточно подправить существующие, переупорядочив символы. Хотя мне почему-то кажется, что файл шрифта вообще не хранит такие вещи, а хранит представления символов в некой «дефолтной» последовательности, а дальше уже задача ОС перевести код в номер символа из этой дефолтной последовательности, используя кодовую страницу.

                                                        CHCP 866
                                                        Но для ввода русских букв все равно надо было русификатор ставить.

                                                        Ох, похоже я перепутал с фряхой. Но в общем была проблема именно выставления корректной кодовой страницы где-то :) Решалось указанием koi8-r, кстати.

                                                        А вот в линуксе — куда класть? :)

                                                        А линукс где кодовые страницы хранит? Не поверю, что невозможно туда доложить ещё одну. Уж настолько легче с таймзонами теми же дела в линуксах обстоят, чем в винде… Даже если тот же Андроид взять (да и вообще любой дистрибутив линукс).
                                                        • 0
                                                          Да, но не нужно именно рисовать новые шрифты, достаточно подправить существующие, переупорядочив символы.

                                                          Так это и есть новый шрифт. :)

                                                          Хотя мне почему-то кажется, что файл шрифта вообще не хранит такие вещи, а хранит представления символов в некой «дефолтной» последовательности, а дальше уже задача ОС перевести код в номер символа из этой дефолтной последовательности, используя кодовую страницу.

                                                          Я не сильно разбираюсь в форматах файлов шрифтов, но насколько мне помнится, «дефолтная последовательность» характерна для растровых шрифтов. TrueType шрифты уже имеют внутри кучу параметров — размеры глифов, их коды, то-сё. Не уверен, что внутреннее представление кодов в TrueType завязано именно на Unicode, но очень на то похоже.

                                                          А линукс где кодовые страницы хранит? Не поверю, что невозможно туда доложить ещё одну.

                                                          Хе-хе. Линукс — как обычно — хранит нигде и везде. Для программ на Qt (т.е. для KDE) кодовые страницы хранятся где-то внутри библиотеки Qt — причем они в нее, кажется, жестко вкомпилированы. Для программ, использующих библиотеку libiconv тоже существует некий список заранее вкомпилированных кодировок (можно добавить редкоиспользуемые, пересобрав библиотеку с ключом --enable-extra-encodings или как-то так). Понятно, что никто в здравом уме не будет пересобирать системный libiconv… Кстати, на фряхе, помнится, у libiconv были какие-то странности.
                                                          Что там используют программы, написанные под GTK — вообще не знаю.

                                                          В общем, добавить новую кодовую страницу в линуксе будет не очень просто. :)
                                                          • 0
                                                            Не уверен, что внутреннее представление кодов в TrueType завязано именно на Unicode, но очень на то похоже.

                                                            Не завязано. Уже хотя бы потому, что первая ОС с поддержкой TrueType вышла в мае 1991, а первая версия Unicode — в октябре 1991.
                                                            Внутри шрифта TTF глифы идентифицируются по порядковым номерам; кроме самих глифов, в шрифте может быть произвольное число таблиц соответствия номеров глифов кодам символов в любых кодовых таблицах, включая Unicode, или PostScript-именам.
                                                            • 0
                                                              Вот, спасибо за уточнение) То есть если автор хочет добавить в систему свою кодовую страницу, шрифты править не придётся? Или всё-таки нужно, чтобы добавить привязку кодов к этой странице?
                                                              • 0
                                                                Не знаю точно, но для современных ОС — скорее всего не придётся, потому что в их шрифтах обычно заданы маппинги для Unicode и не заданы для всей кучи кодовых страниц, поддерживаемых ОС.
                                          • 0
                                            Польза есть, если программисту нужно очень глубоко закапываться в предметную область.
                                            Тогда названия переменных, функции и пр. помогут хоть как-то ориентироваться программисту.
                                            • +9

                                              АВТР УПРТ, БИП РАЗ РАЗ

                                            • +5
                                              Хорошая попытка, 1С, но нет.
                                              • 0

                                                Не понятно. В чем повысить? Программирование это не просто ввод символов с помощью клавиатуры.
                                                Работаю с 1с, и могу сказать что это вовсе не так. Да читаемость кода улучшается, значимость переменных яснее, не нужен словарь или хорошее знание английского языка, но сама вариативность русского языка при именовании методов сбивает все на нет — слишком много ходовых синонимов и у каждого разработчика будет своя по своему верная логика именования. Слова "вид", "тип" становятся паразитами в именах. "сформировать", "получить" имеют туже историю. Удлинение имен русскими словами вместо лениво коротких английских так же усложняет жизнь. И это так, просто маленький пример всей той чехорды которая создается русской раскладкой. Да просто введите
                                                "Значение <> неопределено" на русском вместо "value <> nil"

                                                • 0
                                                  слишком много ходовых синонимов

                                                  то ли дело — английский. пример, другой пример. Похоже, это фундаментальная проблема, которая не зависит от языка.
                                                  • то ли дело — английский. пример, другой пример. Похоже, это фундаментальная проблема, которая не зависит от языка.


                                                    Ну а теперь переведите на английский терминологию из предметной области.
                                                    Да так, чтобы и ваши коллеги и вы сами (через три месяца, когда забудете что это) — однозначно поняли о чем там речь.

                                                    Например: «сумма вычета на ребенка с налога на доходы физических лиц» на английском, пожалуйста.
                                                    • +1
                                                      Лично мою производительность программирование на кириллице не раз повышало таким образом — я сам не лез разбираться в предметную область, а показывал бухгалтеру код и она сама разбиралась в математике и логике вычислений налогов.
                                                      • +1
                                                        У меня прямо противоволожная проблема — англоязычная терминология. Слово есть, перевод есть, даже не один, а понимания, где именно в поезде «колодец», «шахта лифта», «добро, благо», «кладезь», «скважина», «отстойник» и «благополучие» в одном лице — очень сложно.

                                                        Проблема, наверное, не зависит от языка и характерна для всей терминологии.
                                                        • 0
                                                          >>Например: «сумма вычета на ребенка с налога на доходы физических лиц» на английском, пожалуйста.

                                                          child tax credit/benefit (в зависимости от типа вычета)
                                                          Статью не читал и не собираюсь, ибо постановка вопроса в заголовке сама по себе выглядит нелепой. Но ваш «например» в английском языке это стандартное выражение
                                                          • child tax credit/benefit (в зависимости от типа вычета)

                                                            Простите, о каком именно налоге идет речь? Где здесь ясно что это НДФЛ?

                                                            Но ваш «например» в английском языке это стандартное выражение

                                                            1) По причине шибко разных налоговых систем стандартным это выражение быть не может.

                                                            2) Вы требуете от программиста вникать в терминологию предметной области не просто на другом языке. А несколько иной предметной области (налогоблажения) в другой стране.
                                                            • +2
                                                              >>Простите, о каком именно налоге идет речь? Где здесь ясно что это НДФЛ?

                                                              child tax credit ВСЕГДА относится с income tax (income tax это в точности то, что вы именуется НДФЛ). Прочие child benefit, тоже относятся к income tax если не указывается иного

                                                              >>По причине шибко разных налоговых систем стандартным это выражение быть не может.

                                                              Я вот не понимаю — почему вы все время что-то придумываете? Ятобы чтото возразить? Но вы ведь просто глупо выглядите. у вас же интернет в вашем распоряжении!

                                                              >>Вы требуете от программиста вникать в терминологию предметной области не просто на другом языке. А несколько иной предметной области (налогоблажения) в другой стране.

                                                              Я ничего не требую. Просто вы являете собой ярчайший пример воинствующего невежества
                                                    • 0
                                                      А переход языка на латинский алфавит повысит всё что только можно повысить…
                                                    • 0
                                                      непонятно зачем оставленный лингвистами

                                                      Это не от лингвистов зависит, а от массы носителей языка. Будут смягчать согласные, вместо разделения — и знак больше не понадобится (исчезнет, конечно, не сразу — орфография всегда консервативнее, чем фонетика).
                                                      • 0
                                                        Вообще-то в данном случае именно от лингвистов. :)
                                                        Реформа орфографии была разработана именно лингвистами. Вот только она оказалась слишком радикальной, чтобы принять ее в царское время, поэтому принята уже большевиками в 1918 году.
                                                        Что касается букв Ъ и Ё — то да, от Ъ предлагали отказаться совсем. Но это было бы слишком радикально даже для такой радикальной реформы, как тогдашняя. Все-таки у Ъ нашлось применение для отделения приставок.
                                                        Буква Ё с самого своего появления была факультативной (напомню, ее ввел Карамзин). В старой орфографии буква Ё была не очень-то и нужна, т.к. была буква ять — а она всегда читалась как «е» и никогда — как «ё». После упразднения «ятей» возможностей для неправильного чтения стало больше. ЕМНИП, в какой-то период буква ё даже была обязательна к применению, но потом опять переведена в разряд факультативных.
                                                        • 0
                                                          Принцесс, драконом заточённых, возможность есть ещё спасти,
                                                          Но вот заточенных драконом — прости.

                                                          Буквы ё не было на некоторых печатных машинках ради экономии клавиш.
                                                          Ещё советские типографы очень любили набирать книги без неё, из-за чего я лично многие новые для себя названия прочитал неправильно и неправильно запомнил.

                                                          Короче, сугубо ИМХО, за неиспользование буквы ё — нужно бить. Больно.
                                                          • 0

                                                            Не совсем про букву ё. У меня есть книжка по дифференциальной геометрии середины 30-х годов. Так там слово дифференциальный пишется с одной ф. А пишется оно на каждой странице, так как в колонтитулах приводится название текущей главы и книги. Уж очень глаз режет, но ничего не поделаешь. :) Как и итти в старых книжках.

                                                            • Как и итти в старых книжках.


                                                              Если речь о художественной литературе и там это употребляется в смысле «стилизация под устную речь» — то «итти» вполне нормально, подчеркивает или социальный статус говорящего или эпоху.
                                                              • 0
                                                                «Итти» — не только в художественных старых книгах.
                                                                Ещё бывает «эксплоатация».
                                                        • 0
                                                          была буква ять — а она всегда читалась как «е» и никогда — как «ё»

                                                          «Никогда» — слишком сильное утверждение:
                                                          Исключения из этого правила (то есть слова с ѣ на месте нынешней «ё»): вдѣжка, вѣшка, гнѣзда, запечатлѣнъ, засѣкъ, звѣзды, зѣвывалъпозѣвывалъ), издѣвка, медвѣдка (сейчас говорят без «ё»: медве́дка), надѣванъ, надѣвывалъ, неумѣха, обрѣлъ, смѣтка, сѣдла, подгнѣта, цвѣлъ и производные.
                                                      • 0
                                                        Такая кодировка может не столько скорость повысить, сколько требуемый объём/энергоёмкость/износ памяти уменьшить за счёт однобайтного представления, это может быть актуально для какого-нибудь микроконтроллера с русским экраном, аналогично проекту Micropython.
                                                        • 0
                                                          А я вот подумал что это больше применимо для архивации. Правда при условии, что текст исключительно на кирилице. Такой специфичный и узконаправленный вариант для литературы.
                                                          Мне идея понравилась, но для остального нужно серьЁзно дорабатывать.

                                                          По оптимизации:
                                                          Если глянуть частотность букв, топ-10 в порядке убывания: о е а и н т с р в л. Возможно не заметил или не прогрузилось что-то, но как именно было предложено сделать раскладку учитывая это?

                                                          По скорости ввода:
                                                          Идея скоростного ввода сейчас в большинстве случаев не заинтересует, потому как не главная в задержках в пересчете набранного текста за трудодень. Даже у секретарей.
                                                          С другой стороны все программисты с которыми я имел дело печатают в диапазоне 250-450 знаков в минуту, причем эта скорость больше из-за чатов и каментов, чем от набора кода, который всё же очень специфичен.
                                                          • 0
                                                            А я вот подумал что это больше применимо для архивации. Правда при условии, что текст исключительно на кирилице. Такой специфичный и узконаправленный вариант для литературы.

                                                            Не имеет абсолютно никаких преимуществ перед любой 8-битной кодировкой. Даже наоборот: в русских книгах встречается и довольно много латиницы, которая имеется в 8-битных кодировках «искаропки». Тут и римские цифры, и цитаты на западноевропейских языках, и т. п. В предлагаемой же там таблице придется использовать переключения на альтернативные кодовые таблицы, если я правильно все понимаю.
                                                            Да, мы экономим один бит. Но что с него толку? Все равно байты во всех системах хранения данных — восьмибитные. :)
                                                            Возможно, текст в такой кодировке будет немножко лучше сжиматься программами-архиваторами. Но стоит ли выигрыш в пару процентов расходов на внедрение еще одной кодировки?

                                                            Идея скоростного ввода сейчас в большинстве случаев не заинтересует, потому как не главная в задержках в пересчете набранного текста за трудодень. Даже у секретарей.

                                                            Читал где-то, что русская раскладка, в отличие от английской, уже достаточно неплохо оптимизирована для скоростного ввода. Правда, выглядит это утверждение странно на фоне того, что в русской раскладке запятую (один из самых часто используемых знаков препинания) приходится набирать с шифтом.
                                                            • 0
                                                              Даже наоборот: в русских книгах встречается и довольно много латиницы
                                                              В проф.литературе, особенно по IT — да. Используется очень часто латинские символы, я б даже добавил, что очень не хватает греческих символов.
                                                              Но если речь, об обычной литературе, подразумевая всякие романы, детективы, фентези — основа кирилица. Да и в данном случае внедрение отдельной кодировки не нужно, проще использовать специализированный формат, где использовать описанное. При особом желании можно сократить ещё один бит, вот только нужно ли это кому-то?
                                                              … русская раскладка, в отличие от английской, уже достаточно неплохо оптимизирована
                                                              Если глянуть на самые частые символы, писал выше:
                                                              … частотность букв, топ-10 в порядке убывания: о е а и н т с р в л.
                                                              То можно заметить, что с нашей раскладкой всё заметно лучше, две самые частые уже лежат под указательными, остальные так же должны нажиматься ими и сгруппированы в центре.
                                                              Далее буквы уходят к «краям» по мере убывания частоты использования. Можно считать, что это оптимизировано под ввод 2/4 пальцами(указательные+средние). Например, сейчас, я так и печатаю, когда не имеет значения скорость.
                                                              Оптимизация под 10 палый ввод будет очень специфична, как варианты средняя строка будет выглядеть: «л р т и е м к о а н с в» или «р т и е л м к в о а н с», но для этого нужно проводить десятки тестов, причем желательно с теми кто ещё не привык к нынешней, и это тянет на целую статью, а то и серию статей.
                                                              • 0
                                                                Но если речь, об обычной литературе, подразумевая всякие романы, детективы, фентези — основа кирилица

                                                                Вот прямо ни одной римской цифры во всём этом не встретится?
                                                                И ни слова про математику?
                                                                • +1
                                                                  Вот прям сейчас взял пару ознакомительных текстов из свободно распространяемых(ознакомительных) и посчитал символы в диапазонах лат.символов 65-90(заглавные латиница) и 97-122(прописные латиница):
                                                                  Донцова — Матрешка в перьях, всего 121240 символов, рус — 94936, пробелы — 16700, лат — 7.
                                                                  Лукьяненко — Черновик, всего 141489 символов, рус — 107892, пробелы — 19765, лат — 31.
                                                                  Пратчетт — Мор, ученик Смерти, всего 119793 символов, рус — 93895, пробелы — 16269, лат — 0.
                                                                  Кстати, во всех проверенных, нет ни одной римской цифры. Само собой они должны быть, если начать искать, но их крайне мало, относительно общего объёма.
                                                                  А учитывая уже точную статистику могу снова повторить — основа кириллица. Учитывая тему обсуждения — архивация с оптимизацией под русский язык, этим можно серьёзно воспользоваться при создании архиватора или препроцессора. Что в этом удивляет?
                                                                  • 0
                                                                    Вот прям сейчас взял пару ознакомительных текстов из свободно распространяемых(ознакомительных)

                                                                    «Войну и мир» читать начинали? :)
                                                                    Навскидку из современного — у Перумова в его фэнтези встречаются целые строчки латиницей, причем с диакритиками.

                                                                    А учитывая уже точную статистику могу снова повторить — основа кириллица.

                                                                    Ну как бы никто и не спорит, что основа — кириллица. Вопрос в том, что вводить альтернативные кодовые страницы для латиницы ради перехода на полностью семибитную кодировку как-то — эммм — странновато.

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

                                                                    Удивляет слово «серьезно».

                                                                    Все уже придумано до нас: ru.wikipedia.org/wiki/PAQ
                                                                    Собственно, даже новый архиватор не надо выдумывать: достаточно взять обычный (g)zip, но использовать не пустой словарь, а предварительно заполненный на основе подборки текстов. В нашем случае — на основе текстов в русской кодировке. И все — у нас специализированный архиватор, который отлично сжимает русские тексты в заранее зашитой в него кодировке. Все остальное он тоже будет сжимать, но хуже.

                                                                    Остается только понять, насколько эти извращения с архивацией текстов вообще нужны. У меня вот весь либрусек, выкачанный и разархивированный, занимает — дай бог памяти — меньше терабайта. Причем это в формате FB2, который не очень-то компактный. Например, картинки там хранятся в текстовом виде, закодированными в Base64.

                                                                    Лично мое мнение — тексты занимают настолько малую долю дискового пространства по сравнению с аудио, видео и картинками, что их объемом можно пренебречь. Архивировать тексты имеет смысл только в крайних случаях (например, для просмотра на мобильных читалках, где память ограничена). Мучиться с кодировками — тоже смысла нет, учитывая, что unicode поддерживается уже везде, где только можно.
                                                                    • 0
                                                                      По порядку:
                                                                      Переход на 7бит это был посыл ТС, я не предлагал это, только сказал, что идею можно развивать.

                                                                      Не согласен, PAQ достаточно тяжелый по сравнению с описанным. А вот далее — да. О том и речь, даже простого хафмана со статичной таблицей, что б получить хорошие результаты.

                                                                      FB2 это особая печаль, картинки часто идут как попало, не оптимизируются. Про Base64 в курсе, это особенности формата, видимо потому они все пережимаются. Собирались двигать fb3, но видимо это мало кому интересно.

                                                                      И снова повторюсь, не предлагал «мучать кодировки», а только лишь направить идею в более полезное русло.
                                                                      • 0
                                                                        Я прогнал скриптами тоже архив либрусека, выкусив там из FB2 всё после текста, ибо всё равно читаю в сугубо текстовой читалке. Ужалось что-то раз в 20 (не помню точно уже), что хорошо не только в плане места, но и при полнотекстовом поиске, который я изредка по тому каталогу гоняю.
                                                                    • 0
                                                                      Но если речь, об обычной литературе, подразумевая всякие романы, детективы, фентези — основа кирилица

                                                                      Вот прямо ни одной римской цифры во всём этом не встретится?

                                                                      Я ещё помню отпечатанные на машинке списки вопросов, где упоминалась «литература ХУШ века» :)
                                                              • 0

                                                                Тут удобнее КОИ-8 использовать. Потому что если экран вдруг окажется нерусским, то легко будет перейти на транслит.

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

                                                                Действительно, не понятно, зачем такое может понадобиться.
                                                                • 0
                                                                  Пропустил этот замечательный момент, учитывая что заглавные==прописные (путают со строчными).
                                                                • 0
                                                                  Русский язык — для общения с людьми.
                                                                  Английский язык — для общения с роботами.
                                                                  :)
                                                                  • +1
                                                                    Благодаря этим правилам, таблицу можно восстановить по памяти буквально после первого прочтения, а свойства попадающего в поток нового символа определяются уже при считывании первых битов, что можно использовать для значительного увеличения производительности
                                                                    Зачем восстанавливать по памяти таблицу? Непонятный навык, можно, к примеру, вызубрить ASCII, но я не понимаю зачем? Писать программу в машинных кодах разве что (было дело), но сейчас так не делают.

                                                                    Какой производительности? Вы о чем вообще? Кто будет считывать какие-то биты? На входе будет байт, а уж как маскировать биты, по вашему, или по «нормальному» (меньше пробела — значит управляющий код) — на производительности особо не скажется.

                                                                    Буду категоричен — это какой-то непонятный бред. Я считаю большой проблемой возможность «школьников» публиковать свои поделки без некоей «цензуры». Мне было бы ужасно стыдно сейчас, в свои 40, читать мои «сочинения» (я писал рассказики) или слушать «песняки» (я делал в IT tracker музончик и накладывал свой голос с микрофона), выложенные где-нибудь публично. Совет: найдите себе ментора: взрослого (~30 лет), который может оценить ваш материал (быть в теме, к примеру, нет смысла рассказывать о кодовых таблицах непрограммисту) и перед публикацией спрашивайте его мнение. Еще лучше, если он будет находить для вас «темы».
                                                                    • +1
                                                                      Я считаю большой проблемой возможность «школьников» публиковать свои поделки без некоей «цензуры».

                                                                      А я считаю это большим благом.
                                                                      И автора считаю большим молодцом, что он на это решился.
                                                                      Фидбек, который автор получил здесь — ценнее любых «менторских» увещеваний.

                                                                      Мне было бы ужасно стыдно сейчас, в свои 40, читать мои «сочинения» (я писал рассказики) или слушать «песняки»

                                                                      А ещё через 20 лет вам будет стыдно читать то, что вы пишете сейчас. А через 40 лет вам будет стыдно читать то, что вы напишете через 20 лет.
                                                                      Это нормально. Не только «школьники», а все люди всю жизнь развиваются.
                                                                      • Мне было бы ужасно стыдно сейчас, в свои 40, читать мои «сочинения» (я писал рассказики) или слушать «песняки» (я делал в IT tracker музончик и накладывал свой голос с микрофона), выложенные где-нибудь публично.


                                                                        Возможно, вы поэтому и не стали признанным писателем или автором/исполнителей песен.
                                                                      • +1
                                                                        Если вспомнить эпоху ПЕРФОКАРТ — то да, в те времена примерно так и имело смысл делать.
                                                                        Только эта эпоха закончилась уже лет 50 назад.

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

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

                                                                        В случае языков интерпретируемых… ну если использовать как базовый компьютер для разработчика компьютер с процессором в 4 бита — толк будет. Только их использовать для разработки перестали еще до рождения автора.
                                                                        • 0
                                                                          Только эта эпоха закончилась уже лет 50 назад.

                                                                          Точно! Вы только что напомнили мне, что есть такая область, как историческая реконструкция.
                                                                        • +1
                                                                          Программирование на кириллице сегодня — это бред сивой кобылы. Все очень просто. Переход на кириллицу для последующего программирования потребует внесение в изменение синтаксиса языка, что в сочетании с переобучением на работу с новой раскладкой подарит вам пару лет обучения. Почти весь программный на планете написан на латинице а это значит, что вам с нуля придется написать все возможные библиотеки и утилиты, так как машинное конвертирование не даст вам уверенности в результате. Тут я думаю лет 7 — 10 надо, так как сомневаюсь, что у вас есть нужный для этой цели объем знаний. И вот, гдето через 8-10 лет вы сможете смело заявить, что способны писать код на 0.001 а может даже и больше процента быстрее. К сожалению, результат ваших стараний не примет международное сообщество, так как у них есть свои взгляды на выбор языка. Да и вообще, у профессионала ввод текста влияет на скорость написания кода не больше чем на 0.000000000000000001%
                                                                          • Программирование на кириллице сегодня — это бред сивой кобылы. Все очень просто. Переход на кириллицу для последующего программирования потребует внесение в изменение синтаксиса языка, что в сочетании с переобучением на работу с новой раскладкой подарит вам пару лет обучения.


                                                                            Переход с скажем JavaScript на Python потребует больше обучения, чем переход
                                                                            с той же кириллицы 1С на английский в той же 1С (что, вы не знали, что 1С поддерживает одновременно два синтаксиса в языке? )

                                                                            Основное — это не синтаксис языка, он как раз запросто учится за недельку.
                                                                            • +1
                                                                              Да и вообще, у профессионала ввод текста влияет на скорость написания кода не больше чем на 0.000000000000000001%


                                                                              Как профессионал, скажу, что вы ошиблись на огромное число порядков.
                                                                              Собственно написание кода занимает 10-20% рабочего времени. habrahabr.ru/post/102620
                                                                              Однако куча времени уходит также на поиски и пробы — а для этого тоже неплох быстро писать слова в той же поисковой строке браузера или в командной строке ОС.
                                                                              В течение рабочего времени программист с клавиатурой взаимодействует постоянно.

                                                                              Но дело еще и в том, что вы прочитали только заголовок, а не саму статью — и ваше замечание вообще не о том, о чем пишет автор.
                                                                            • 0
                                                                              Программирование на кириллице в Perl: Первый Настоящий Укропопарсер
                                                                              • 0
                                                                                Школьник? Есть у меня один знакомый бывший учитель, у которого ученики драйвера писали. Я думал, такого уже не уже не бывает, а оказывается воно оно как — бывает ещё и не такое.
                                                                                В следующей статье покажите нам, пожалуйста, использование вашей таблицы символов в каком-нибудь проекте.
                                                                                • –1

                                                                                  Английский язык идеально подходит для декларации разного рода отношений между сущностями, команд, кратких описаний логики и многого другого. RelationResourcesByUserId — попробуй не вырвиглазно продекларируй это на русском.

                                                                                  • +1
                                                                                    RelationResourcesByUserId — попробуй не вырвиглазно продекларируй это на русском.

                                                                                    Для них звучит также коряво как и для нас.

                                                                                    Дело в том что в английском языке кардинально меняет смысл фразы порядок слов.
                                                                                    Как и в вашем примере — вполне себе вырвиглазно, но по английски.
                                                                                    А еще у них важны фразовые глаголы — не видел, чтобы в коде их корректно с точки зрения языка употребляли, коряво — да, запросто. В том числе и «нэйтивами».
                                                                                  • 0
                                                                                    Помнится, у нас на информатике было что-то агатоподобное, так у него на клавиатуре были кнопки
                                                                                    «ВР» и «НР» для переключения в верхний и нижний регистр соответствнно (шифта и капса не было), а кнопка возврата каретки называлась в стиле КО — «ВК».
                                                                                    • +1
                                                                                      УПР-ДОП-УДЛ!
                                                                                      • 0
                                                                                        А не напомните, что это за клавиатура? Я в детстве не особо интересовался названиями компов, поэтому сейчас по внешнему виду вспоминаю, что это было…
                                                                                        • 0
                                                                                          Наверное, ДВК.
                                                                                          Впрочем, у большинства советских бытовых и учебных компьютеров управляющие клавиши были подписаны по-русски. У меня была 8-битная «Сура» — там были шедевры типа РГ (регистр — т.е. Shift), УПР (Ctrl), ТАБ (Tab), ПРФ (хе-хе… это — внимание! — Esc).
                                                                                          • Во всем этом самое смешное — что это не оригинальные термины. А кальки с английского.
                                                                                            • +1
                                                                                              Надписи на клавишах локализовали не только в СССР: вот правая часть современной немецкой клавиатуры с функциональными клавишами.

                                                                                              • +1
                                                                                                Немцы вообще не очень склонны к заимствованию компьютерных терминов — у них и файл не файл, а Datei, и диск не диск, а Festplatte, и принтер у них Drucker. Клавиатура (Tastatur) вот тоже под национализацию попала. :)
                                                                                                • 0
                                                                                                  Французы смотрят на fichiers и imprimantes своих ordinateurs и не понимают, что же необычного в немецкой языковой политике :)
                                                                                                • 0
                                                                                                  «Pos 1» порадовала.
                                                                                      • +1

                                                                                        Кому любопытно проверить теорию практикой (есть смысл от русского зыка в программировании или нет) оставлю здесь ссылку https://тхаб.рф/wiki/Языки_программирования_с_русским_синтаксисом
                                                                                        Самые профессионально сделанные проекты используют синтаксис 1С. мне больше всех понравились 1Script, Гонец и Яр
                                                                                        OneScript (1C),

                                                                                      • 0
                                                                                        как 1С-ник могу сказать, что код
                                                                                        Данные = Новый ТаблицаЗначений;
                                                                                        смотрится несколько странно для русского человека

                                                                                        • Дело не в русском языке.
                                                                                          Технически ничто не мешало бы сделать и второй вариант, чтобы можно было писать и «Новый» и «Новая» и это означало бы одно и то же.
                                                                                        • 0

                                                                                          А мне нравится статья. Занимательная. Правильно ли я понимаю: упоминание программирования в заголовке намекает на то, что в следующей статье автор собирается выкатить стандарт языка программирования на кирилице? Если же вторая статья уже есть, то прошу дать на неё ссылку. Очень уж хочу почитать.

                                                                                          • 0
                                                                                            Стандарт так быстро не нарисуешь, но кое-что на основе принципа «один бит — одно свойство» представлю в ближайшее время.
                                                                                          • 0

                                                                                            Полезность такой кодировки сомнительна, так как изначальные требования: семибитность и лёгкость запоминания решают проблемы, которые не очень-то актуальны. Я выше упоминал про КОИ-8, вот там достаточно интересное требование было — текст должен оставаться читабельным после обнуления старшего бита. Русские буквы превращаются в транслит. Я думаю, что автор статьи примерно в таком направлении двигался, но ему чуть-чуть не хватило для завершающего шага.


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


                                                                                            Возможно, стоило бы сделать какой-то раздел или пометку для публикаций новичков. Те, кто поопытнее, смогут дать совет или покритиковать. Получится этакое коллективное менторство. Кому же не интересно — просто не будет читать. Надо как-то поощрять самообразование.

                                                                                            • +1
                                                                                              Возможно, стоило бы сделать какой-то раздел или пометку для публикаций новичков. Те, кто поопытнее, смогут дать совет или покритиковать.
                                                                                              А разве пометка «из песочницы» не является пометкой со смыслом «от новичка»?
                                                                                            • 0
                                                                                              Не хватило места только для буквы Ё, не критично, все давно привыкли к её особому статусу «дальнего родственника»

                                                                                              Все кто занят обработкой данных — не привыкли. Сортировка по алфавиту имеет первостепенное значение. Любая дополнительная операция делающаяся вручную, после авто-сортировки это огнромнейшие накладные расходы, дешевле миллион строк обработать, чем потом ифами и курсором одну. Особенно приятно будет обрабатывать данные переданные от других пользователей в которых надо конвертировать кодировку, я так понимаю, вручную надо будет указывать — здесь тест с русскими буквами, а тут просто raw data, а тут мы проглядели — исправьте и т.п.

                                                                                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.