LINUX.ORG.RU

яролит - реализация на javascript

 , транслитерация,


0

1

Думаю, кто-то помнит тему Новая версия Яролита (форк ГОСТ 16876-71, табл 2)

На страничке http://программирование-по-русски.рф/яролит.яргт/ можно попробовать ещё более новую версию реализации яролита. Наконец-то я сделал обратное, а не только прямое преобразование.

Кодировка на данный момент такова:

Русский алфавит:

a b v g d e jo zh z i jj k l m n o p r s t u f kh c ch sh shh jq y q eh ju ja

(Соответствует ГОСТ 16876-71, таблица 2, кроме Ь = Q и Ъ = JQ - в госте эти значки превращаются в небуквенные литеры)

Английские буквы:

xe - переключение в английский режим. В частности, «xeRussia» раскодируется как «Russia», а не как «Руссиа».

В английском режиме «x» кодируется как «xx», а «w» - как «ww»

xr - переключение обратно на русский

Суммарно, JAxeRxrJA == ЯRЯ

Не ASCII, не кириллица = xuNNNNNNx, где NNNNNN - 16-ричный код символа.

Исходники функций прямого и обратного преобразования - https://bitbucket.org/budden/ppr/src/master/static/jarolit/

Буду благодарен за код ревью. Пока речь не идёт об упаковке в тот или иной «пакет». Наиболее интересно на данный момент, как сделать код более быстрым. Например, имеет ли смысл делать case по коду символа, а не по строковым значениями? С точки зрения правильности код выглядит правильным, но если увидите баги - пишите.

★★★★★

Последнее исправление: den73 (всего исправлений: 1)

Ответ на: комментарий от gremlin_the_red

Как мне теперь развидеть и разслышать это?

Заслушай какого-нибудь Басту или Тупак Шакура. После этого Леди Гага тебе будет казаться верхом гармонии, но вот разслышать рэп уже не получится.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: Перепощу пару гениальных мыслей от deadplace

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

Напомнило совещание с участием моего бывшего начальника.

-- Кто не читал ISO 12207 — те, по-моему, просто мудаки!

Через 5 минут, он же:

-- Вот кто из присутствующих читал ISO 12207?

Молчание...

hobbit ★★★★★
()
Ответ на: комментарий от gremlin_the_red

Господи, и зачем я загуглил, кто это. Как мне теперь развидеть и разслышать это?

Блек и дет метал помогают расслышать что угодно. Они как dd.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)

Я исхожу из двух постулатов:

Опора на глобальный Open Source - ошибка. Ключевые Open Source проекты контролируются США. Найти все закладки в них технически невозможно. Используя Open Source, мы минируем свою страну.

Уже удалил linux со всех подконтрольных машин? Что поставил взамен? Windows? OH SHI-

andalevor ★★
()
Ответ на: комментарий от den73

Короче, берешь делать split(" ") и у тебя получается массив слов
Этот массив перегоняешь в объект и делаешь свой транслит - получаешь уникальный набор слов с переводом
Потом по этому набору заменяешь в массиве слова
Делаешь join(" ") этого массива или сшиваешь строку прямо в прошлом цикле
PROFIT!

Упарываться так по полной.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)

Буду благодарен за код ревью

function ПреобразуйСтрокуИзЛатиницы(s) {
...
var sb = '';
...
var Зб = function (бб) {
    sb = sb + бб;
    ...
}
...дохера кода...
Зб();

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

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)
var DveH = (следующаяБуква == 'H');

Что за вопиющая беспринципиальность!

crutch_master ★★★★★
()
var текущийЯзык = 0; // 0 - русский, 1 - английский

Строковая константа не даёт оверхеда на js. Это не си, где строки принято сравнивать побайтово. Тут будут все строки завернут в хеши и сравнивать будут их. Циферки не нужны.

crutch_master ★★★★★
()
if (i == slength) {
        следующаяБуква = '';
      } else {
        следующаяБуква = s[i];
      }

А можно было дописать пробел в конец уменьшить длину на 1 и не делать лишнюю проверку.

crutch_master ★★★★★
()
        case '1': КодЮникод += 1; break;
        case '2': КодЮникод += 2; break;
...
        case 'E': case 'e': КодЮникод += 0xE; break;
        case 'F': case 'f': КодЮникод += 0xF; break;

Смотри прикол.

> +"0x2"
2
> +"0xB"
11
+ кастует строку в число. Я думаю функции движка будут шустрее твоей switch-case портянки. И вообще switch-case - это почти всегда говно.

crutch_master ★★★★★
()

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

Посмотри в сторону объектов, может оказаться быстрее, чем тупой перебор в switch.

Наиболее интересно на данный момент, как сделать код более быстрым.

Не перегонять одни и те же слова несколько раз - см выше.

crutch_master ★★★★★
()
Ответ на: комментарий от crutch_master

... чем тупой перебор в switch

Что-то в консерватории не так /в алгоритме/.

anonymous
()

Горловщина какая-то.

яролит

(Яроврат + Монолит)/2?

rebforce
()
Ответ на: комментарий от hobbit

После Фейса и Каспийского Груза Тупак будет казаться… Нутыпонел.

rebforce
()
Ответ на: комментарий от den73

Они на битбукете, и хочу переехать на гитлаб.

Какой гитлаб? Только православный сервер под кроватью!

crutch_master ★★★★★
()
Ответ на: комментарий от hobbit

Тупак Шакура

О мёртвых либо хорошо, либо ничего. Тупак мёртв, и это хорошо.

gremlin_the_red ★★★★★
()
Ответ на: комментарий от anonymous

Ну во имя справедливости — это «верхний» международный стандарт, нужный просто для того, чтобы участники разработки ПО говорили на одном языке. Без воды такое не напишешь.

Это не стандарт стиля кодирования на языке Java в АО «Галера №6», да.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от den73

сам бы внутри себя динамически и на данной платформе вычислил бы коды букв

Коды всех строк вычисляются как только попадают в вм и никого не волнует сколько там символов. Свитч проходится по порядку, т.к. там могут быть break где попало. Хеш ищется дольше, но теоретически он должен давать прирост на больших объёмах.

crutch_master ★★★★★
()
Ответ на: комментарий от den73

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

Нет. Суммирование строки в js не настолько конченое.

crutch_master ★★★★★
()

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

crutch_master ★★★★★
()
Ответ на: комментарий от anonymous

Интересно как быстро на JavaScript происходит конкатенация миллиона букв ...

У меня ~150 мс по одному символу. ~5мс по 10 символов.

Intel(R) Core(TM) i3-6300 CPU @ 3.80GHz

crutch_master ★★★★★
()
Ответ на: комментарий от deadplace

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

Вот, блин, да, меня такие заявы реально вымораживают.

Если что, я нормально отношусь и к русским языкам программирования, и в целом к теме «программирование по-русски». ЕМНИП, в своё время аж в международном стандарте на Алгол-60 было прописано, что у языка могут быть разные реализации, в том числе с национальными ключевыми словами. Уже потом были язык академика Ершова и 1С.

Русский язык программирования (в определённых сферах применения) — это нормально. Так же как итальянский, французский и далее по тексту.

Но почему-то люди, форсирующие тему «программирование по-русски», начинают с наездов на опенсорс. И не они первые, Горлов со своей РусОС тоже декларировал, что код РусОС открываться не будет. После чего мне этот проект перестал быть интересен. Это не «русская ОС», это очередная проприетарная недоось, правообладатель которой по случайному стечению событий оказался русскоязычным. Завтра ему это надоест, он проект закопает или продаст какому-нибудь зарубежному олигарху (да, есть вопрос, захочет ли олигарх проект купить, но это вопрос немножко отдельный), и всё, проект перестанет быть «русским» даже по чисто формальному признаку.

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

hobbit ★★★★★
()
Ответ на: комментарий от crutch_master

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

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

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от anonymous

По букве - 21228 ms, при этом хорошо так подтекает (правда потом чистится). По 10 букв - 1896 ms и уже не так течёт. Судя по всему таки хеширует новые строки и куда-то это складывает. Хотя, как мне кажется, сложение строк у неё работает быстрее, чем в jvm.

crutch_master ★★★★★
()
Ответ на: комментарий от hobbit

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

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

crutch_master ★★★★★
()
Ответ на: комментарий от den73

V chashhakh juga zhil by citrus?

В чащах жуга жил бай цитрус? Какой интересный язык. Российский?

Deleted
()
Ответ на: комментарий от crutch_master

Спасибо!

Немножко «настольжи» /когда был молод и рост был 2.50 метра/.

Так вот Foxpro 2.6 очень медленно работал с строками ...
Поэтому реализовал перекомпоновку расчетных листков в несколько столбцов /для экономии бумаги/ на Perl /
динамически вызывал его из программы на Foxpro/.
Почему?
Потому что Fox выполнял алгоритм перекомпоновки где-то за три минуты, а Perl за секунду.

anonymous
()
Ответ на: комментарий от anonymous

Немножко «настольжи»

У кого-то «настольжи» а у кого-то этот фокс за стенкой и дышит в спину и трясётся на подпорках, стоя на оракле. Я тут вообще дикий хипстор со своим js и java.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)

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

Шизоид. :D

Deleted
()

Зашёл на. Пациент всегда так пишет?

А потом лоровские мамкины гуру на JS клевещут. ЯП не виноват в том, что столько говнокодеров развелось вокруг.

rebforce
()
Ответ на: комментарий от crutch_master

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

Функция специально названа коротко, т.к. вызывается много раз, и там есть комментарий, который объясняет её смысл. Зачем ты его вырезал? sb и бб надо переименовать, ты прав.

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

Функция специально названа коротко, т.к. вызывается много раз, и там есть комментарий, который объясняет её смысл.

Дело не в том, что функция названа коротко-непонятно, а в том, что её пришлось так назвать и много много раз дёргать. А еще там всё на сайд эффектах.

crutch_master ★★★★★
()
Ответ на: комментарий от abs

Всё правильно ему влом каждый раз писать «прочитатьСледующуюБуквуИНайтиСледующуюЗаНей()»

crutch_master ★★★★★
()
Ответ на: комментарий от hobbit

Но почему-то люди, форсирующие тему «программирование по-русски», начинают с наездов на опенсорс.

Вы потеряли в моём высказывании слово «глобальный». Если код контролируется Россией, то я за опенсорс.

den73 ★★★★★
() автор топика
Ответ на: комментарий от crutch_master

Да и у нас зарплата на Foxpro /не моя/ ...

anonymous
()
Ответ на: комментарий от abs

никак не связанные вещи

99% людей не способны понять, в чём тут связь. Извини, я не буду даже пытаться. О, правда, crutch_master понял. Обычно человек или изначально это понимает, либо никогда не поймёт.

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 2)

Все ошибки типа

ош(«Неверная конструкция x...»)

говно, потому что не дают никакой информации о том где именно косяк.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от crutch_master

не дают никакой информации о том где именно косяк.

Эта инфа добавляется внутри функции ош.

den73 ★★★★★
() автор топика
Ответ на: комментарий от crutch_master

Функция Зб вообще не нужна, делай просто +=

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

den73 ★★★★★
() автор топика
Ответ на: комментарий от crutch_master

А еще там всё на сайд эффектах.

В Си это была бы запись в поток. Строка - это костыль, имитирующий поток, и кстати, она с этим плохо справляется, т.к. когда строка разрастается, добавление становится главным тормозом. Как ты представляешь себе запись в поток без сайд-эффектов?

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

switch-case нормально будет переписать на массив. Кириллицу из utf перегоняй минимумом операций в какой-нибудь удобный 0-255 индекс и делай массив соответствий по нему. Где «ПреобразуйСтрокуИзЛатиницы» я бы сделал кучку массивов, бегал по ним и сравнивал заместо мерзкой switch-case копипасты.

crutch_master ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.