Для того, чтобы сделать экосистему независимой от английского языка вообще, нужно последовательно реализовать ряд стадий:
1) придумать совсем простой язык ассемблера с минимумом инструкций
написать алгоритм преобразования текста на этом языке в машинный код
выполнить преобразование вручную, ввести машинный код в машину
2) используя этот выполняемый код, можно подать ему на вход текст алгоритма преобразования
и таким образом получить новый выполняемый код, аналогичный исходному (самотрансляция)
3) используя совсем простой язык, написать язык посложнее (с более широким набором инструкций и т.д.)
4) повторять цикл усложнения, добавляя новые возможности.
В опенсорсе это сейчас уровни:
коды -> ассемблер -> компилятор C -> компилятор C++ -> управляемые языки (вроде rust, java, C#)
Сколько минимально нужно инструкций для тьюринг-полного языка?
http://stackoverflow.com/questions/9439 … -to-be-con
говорят что одна:
https://en.wikipedia.org/wiki/One_instr … t_computer
На архитектуре Intel, чтобы не париться, можно взять две - вычитание и условный переход.
Итак нужно:
1) придумать русский синтаксис для ассемблера на 2 инструкции
т.е. что-то вроде дампа из шестнадцатеричных цифр
2) написать в этом синтаксисе программу анализа текста (рекурсивным спуском, хотя и он тут - оверкилл)
(это может быть непросто, но на брайнфаке же пишут, главное - теоретическая возможность)
Этого достаточно, чтобы из одной области памяти странслировать текст программы в виде символов в другую область памяти в байты.
И всё. Можно смело заявлять, что есть русский транслятор, который совсем никак не зависит от иностранных, но умеет разбирать русскую кодировку.
Про фичи-то не обещалось, что их будет много.
Следующий уровень уже можно писать в этой самой кодировке,
можно описать другие инструкции и странслировать новую версию транслятора при помощи старой версии и новых исходников.
Тут важно то, что последующие исходники смогут использовать разнообразные инструкции. Ну и так далее по-нарастающей добавлять возможности.
Как организовать выполнение программы процессором из памяти и как считать результаты из памяти не прибегая к вызовам ядра системы?
Ну, раньше же это делали, и сейчас средства должны быть. Программу с исходными данными прошить в ППЗУ, результаты...,
результаты просматривать каким-нибудь внешним устройством.
Я бы просто выполнял это в эмуляторе и пользовался средствами эмулятора для просмотра памяти.
можно в ПЗУ поместить загрузочный транслятор и цепочку исходников, последовательно реализующих бо́льшее количество возможностей
и передавать управление между ними по мере компиляции следующих версий.
Это будет дольше, чем загрузка сразу нужной предварительно скомпилированной версии, зато из исходников.
(и это нужно будет делать один раз, а на каком-то из этапов прошить новый код в ППЗУ)
К чему я это всё? К тому что одной русскости мало. Не очень сложно сделать очень минимальный русский транслятор.
Важна ещё полнота набора фич языка.