- Спасибо, хорошая ссылочка...
https://habr.com/post/345748/
Можно было бы просмотреть книги разные и список "проблем" выписать.
А вот как по-вашему, что должен сделать чел с кликухой "кодер", чтобы написать очередной архиватор?
- Праэльно, в первую очередь изучить и сгруппировать разнообразие последовательностей бит в одном байте, потом в слове, потом в массиве этих слов и т. д. Однако дальше слова ему уже трудно продвигаться, поскольку этих разнообразий становится всё больше и больше. (аки снежный ком)
Разумеется, кодер выбирает более лёгкий путь, чтобы не запутаться вконец во всём этом многообразии. Сперва, используя все возможности машины, (конъюнкцию, дизъюнкцию, инверсию, левое зеркало, правое зеркало и т. д.) он пишет алгоритмы расстановки битов для одного байта. Дальше идёт работа с именами для каждого из алгоритмов. Вот здесь, как нельзя кстати, очень пригодится язык типа Ассемблера.
Если имена и макросы подобраны правильно и отражают сущность самого алгоритма, то дальнейшую математику можно будет производить лишь над именами, уже не затрагивая "тело" вышеупомянутого байта.
И вот здесь, (именно здесь), наш кодер впервые сталкивается с непродуманностью (применительно к машине) распределения не только букв самого алфавита внутри алфавитного массива, но и принадлежности написания буквы - соответствующему звуку.
Для машины звуки "пфв" - это "родня", поскольку к этой группе применяется один и тот же фильтр - губы произносящего.
То же самое звуки "тсз" - тоже "родня", (по той же причине, просто фильтр сменился на "язык - зубы").
Далее идут звуки "tшж" - аналогично предыдущим, (фильтр - язык у "нёба").
И, наконец, про "кхгх", где "гх" - это украинское произношение буквы "г".
Однако это неполный перечень звуков, произносимых че́л-ом. Есть ещё горловые, наподобие кашля, несправедливо описываемые, как "кхе-кхе" также пренебрежительное "хех" или детское отрицание типа "нека".
А ведь наше "новое" как раз и должно коренным образом отличаться от уже существующих стандартов, дабы не путать внешний вид написанного и нарисованного "стандартным путём" - от придуманного нами "образа написания" и предназначенного исключительно для программирования. Вот здесь нам и карты в руки. Значит следующий наш шаг - "транскрипторно-правильное" написание образов, более точно отражающее издаваемые че́лом звуки...Чтобы отпала сама необходимость использования спец-знаков для отделения спец-скрипта от обычного текста и обычных картинок.
Чтобы фрагменты текста при плавном (анимированном) svg-масштабировании не прыгали со строки на строку, а также плавно, как и другие элементы svg меняли свой размер.
Чтобы и человек и интерпретатор с первых же строк понимали, что это - программный код и не что иное...
Главное - это будет русский язык и написан он будет в русской транскрипции.
И в продолжение к контенту:
Причины падения популярности низкоуровневых языков типа "Ассемблер".
Желание "очеловечить" взаимоотношения с машиной привели к бурному развитию языков более высокого уровня, в которых в первую очередь появились "очеловеченные" операторы ввода/вывода инфории, а также операторы присваивания, перехода, выбора и циклов (как самые необходимые). А на чём же их писали, испытывали и правили? Неужели всё это делалось на машинно-зависимом языке?
- Необязательно. Сначала появились машинно-ориентированные языки типа "Ассемблер", где машинные коды были заменены буквенными обозначениями. Потом появились конструкции типа "макрос", объединяющие в себе целый набор машинных кодов, а к названию языка приросла приставка "Макроассемблер". Вот только производители у машин были разные, поэтому каждая из них отличалась от "собратьев" конструктивными особенностями, что привело к языковому подмножеству ассемблеров. Код, написанный для одной машины - не работал на остальных. Вот здесь и назрел вопрос о создании машинно-независимого языка программирования "ЯВУ". (язык высокого уровня)
Чтобы сохранить возможность работы в разных "осях" и на разном железе - эти языки и их исполняемые файлы стали обрастать многообразием вспомогательных библиотек, при этом каждая фирма желала иметь ещё и собственные компиляторы.
- Ну а для веба нужна была абстрактная, виртуальная машина, у которой функцию машинных кодов выполняет так называемый "байт-код".
И вот появился WASM. А Технология WebAssembly признана готовой для включения в браузерах по умолчанию.
Для разработчиков подготовлен работающий инструментарий для компиляции модулей WebAssembly из кода на языках C/C++. Например, для компиляции С/C++/asm.js в WebAssembly можно использовать Emscripten или созданный на его основе специальный компилятор Binaryen. Для преобразования тестового формата в бинарный поставляется транслятор WABT. Для компиляции приложений в WebAssembly может быть использован инструментарий Emscripten.
Если WASM-у удастся заменить собой другие ASM-ы даже при изготовлении драйверов к любому железу, то бо́льшая часть проблем будет решена. Вот тогда остальные asm-ы действительно смогут уйти на заслуженный отдых с чувством выполненного долга.