Кроссплатформенный, быстрый, Kotlin-подобный ЯП!

Всё, что касается программирования на старых языках или для старых систем

Кроссплатформенный, быстрый, Kotlin-подобный ЯП!

Сообщение StoYazykov » 01 июл 2026, 13:42

Язык программирования Chkalov
Изображение
27 декабря 2025-го года у меня появилась идея сделать свой язык программирования.
Сначала, я начал делать компилируемый в 16-разрядный код, без использования DOS'овских прерываний, Си-подобный ЯП.
И уже, когда он начал работать, я подумал: "А почему же только под "голый" x86? Вот бы, и под x64, и под Win'ду, и под Linux...". И уже хотел было делать много-много версий компилера для разных ОСей, одновременно представляя себе масштаб работы, как вдруг... Я наткнулся на сию статью на Хабре, прочитал, перечитал, и начал писать другую версию языка. Назвал его "MiPL".
Первая версия вышла 19-го февраля 2026-го. Под Windows.
Код на нём выглядел так:
Код: Выделить всё
ipush 0
spush "Caption"
spush "Text"
ipush 0
ipush 4
ncall user32.MessageBoxA

Разумеется, на этом я не остановился, и начал писать парсер. Наконец, в начале марта компилятор заработал более-менее некриво, и я назвал получившийся ЯП "Chkalov" - ибо, большая его часть была написана в ГЦДТТ имени В. П. Чкалова. Потом в апреле я его допиливал, дорабатывал, произвёл несколько перестроек архитектуры (о них - ниже), и 30 апреля вышел Initial commit.
Сейчас язык уже умеет многое - вызов нативных функций, арифметику, типобезопасность на этапе компиляции и в рантайме, переменные...
Последний раз редактировалось StoYazykov 01 июл 2026, 13:43, всего редактировалось 1 раз.
Самое тёмное дело - это строки в C


Сайт прогр-я: http://revival.narod.ws

Изображение


Штирлиц сидел за компом возле открытого окна. Неожиданно на экране появилось новое мыло. Штирлиц выбросил его обратно и пошёл за мокрой тряпкой - оттирать мыло с клавиатуры.
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 229
Зарегистрирован: 25 дек 2023, 11:25
Откуда: Казань
Железо: Intel Pentium MMX 166 MHz, 8 и 2 ГБ HDD, 80 MB RAM; AMD A8-6410 APU with Radeon R5 Graphics, 16 ГБ

Re: Кроссплатформенный, быстрый, Kotlin-подобный ЯП!

Сообщение IBMForever » 01 июл 2026, 14:12

Интересный язык.
Почему-то со смартфона не могу зарегистрироваться на revival.narod.ws.
Аватара пользователя
IBMForever
Мастер Даунгрейда
 
Сообщения: 217
Зарегистрирован: 24 авг 2022, 00:23
Железо: IBM PC 286 AT

Re: Кроссплатформенный, быстрый, Kotlin-подобный ЯП!

Сообщение StoYazykov » 01 июл 2026, 14:23

Почему-то со смартфона не могу зарегистрироваться на revival.narod.ws.

Вы под каким именем регались? Что говорит? Пришлите в личку скриншот(ы). И, сначала надо жать на "Зарегистрироваться!", а потом уже снова ввести логин/пассворд и уже тапнуть "Войти".
Последний раз редактировалось StoYazykov 01 июл 2026, 14:25, всего редактировалось 1 раз.
Самое тёмное дело - это строки в C


Сайт прогр-я: http://revival.narod.ws

Изображение


Штирлиц сидел за компом возле открытого окна. Неожиданно на экране появилось новое мыло. Штирлиц выбросил его обратно и пошёл за мокрой тряпкой - оттирать мыло с клавиатуры.
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 229
Зарегистрирован: 25 дек 2023, 11:25
Откуда: Казань
Железо: Intel Pentium MMX 166 MHz, 8 и 2 ГБ HDD, 80 MB RAM; AMD A8-6410 APU with Radeon R5 Graphics, 16 ГБ

Re: Кроссплатформенный, быстрый, Kotlin-подобный ЯП!

Сообщение IBMForever » 01 июл 2026, 14:29

StoYazykov писал(а):
Почему-то со смартфона не могу зарегистрироваться на revival.narod.ws.

Вы под каким именем регались? Что говорит? Пришлите в личку скриншот(ы). И, сначала надо жать на "Зарегистрироваться!", а потом уже снова ввести логин/пассворд и уже тапнуть "Войти".

Так и сделал, - нажал зарегистрироваться, потом ввел логин и пароль написано - нет такого юзера!
Аватара пользователя
IBMForever
Мастер Даунгрейда
 
Сообщения: 217
Зарегистрирован: 24 авг 2022, 00:23
Железо: IBM PC 286 AT

Re: Кроссплатформенный, быстрый, Kotlin-подобный ЯП!

Сообщение StoYazykov » 01 июл 2026, 14:33

Повторяю - под каким юзернеймом?
Самое тёмное дело - это строки в C


Сайт прогр-я: http://revival.narod.ws

Изображение


Штирлиц сидел за компом возле открытого окна. Неожиданно на экране появилось новое мыло. Штирлиц выбросил его обратно и пошёл за мокрой тряпкой - оттирать мыло с клавиатуры.
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 229
Зарегистрирован: 25 дек 2023, 11:25
Откуда: Казань
Железо: Intel Pentium MMX 166 MHz, 8 и 2 ГБ HDD, 80 MB RAM; AMD A8-6410 APU with Radeon R5 Graphics, 16 ГБ

Re: Кроссплатформенный, быстрый, Kotlin-подобный ЯП!

Сообщение IBMForever » 01 июл 2026, 14:37

StoYazykov писал(а):Повторяю - под каким юзернеймом?

Написал Вам в ЛС юзернейм. Регистрируюсь впервые.
P.S. спасибо за помощь, на сайт зашел. Сейчас как раз изучаю С/С++ старые версии, и ассемблер, так что сайт мне интересен.
Последний раз редактировалось IBMForever 01 июл 2026, 14:53, всего редактировалось 1 раз.
Аватара пользователя
IBMForever
Мастер Даунгрейда
 
Сообщения: 217
Зарегистрирован: 24 авг 2022, 00:23
Железо: IBM PC 286 AT

Re: Кроссплатформенный, быстрый, Kotlin-подобный ЯП!

Сообщение StoYazykov » 01 июл 2026, 15:01

так что сайт мне интересен.

Увы, пока на сайте нету ничего интересного - просто, руки не доходят.
Сейчас, я фикшу баг с приведением типов строк в Chkalov'е. (уже пофиксил вроде бы). Надо ещё jmp, ifne/ifb/ifbe/ifle/ifl/ifnull допиливать. И разбираться с несчастным типом null.
ЗЫ: Нависает реформа - байтовая переменная type, которая в каждом "пакете" байткода, будет разделена на две части: 4 бита тип, и 4 бита число реально юзаемых байт (просто щас, куча костылей: типы STR1, STR2, STR4, STR8... Всё это строки, но с разными размерами значения (индекса в пуле). Для экономии так). Может, под тип останется 3 бита, а под кол-во байт - 5 бит.
Посмотрим.
Самое тёмное дело - это строки в C


Сайт прогр-я: http://revival.narod.ws

Изображение


Штирлиц сидел за компом возле открытого окна. Неожиданно на экране появилось новое мыло. Штирлиц выбросил его обратно и пошёл за мокрой тряпкой - оттирать мыло с клавиатуры.
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 229
Зарегистрирован: 25 дек 2023, 11:25
Откуда: Казань
Железо: Intel Pentium MMX 166 MHz, 8 и 2 ГБ HDD, 80 MB RAM; AMD A8-6410 APU with Radeon R5 Graphics, 16 ГБ

Re: Кроссплатформенный, быстрый, Kotlin-подобный ЯП!

Сообщение uav » 01 июл 2026, 15:06

StoYazykov, а бинарников пока нет? В Releases пусто.
Аватара пользователя
uav
Мастер Даунгрейда
 
Сообщения: 3140
Зарегистрирован: 22 дек 2008, 14:21

Re: Кроссплатформенный, быстрый, Kotlin-подобный ЯП!

Сообщение StoYazykov » 01 июл 2026, 15:10

uav писал(а):StoYazykov, а бинарников пока нет? В Releases пусто.

Нет. Он ещё не очень стабильный...
ЗЫ: а у вас Linux? Просто, он пока что только под Linux (в одном мааленьком месте, вот тут вот:
 Развернуть:
Код: Выделить всё
           case CALL: {
                if(debug) cout << "Stack size: " << stack.size() << endl;
                for(int i = 0; i < stack.size(); i++) {
                    if(debug) cout << "  [" << i << "] type=" << (int)stack[i].type << " value=" << stack[i].value << endl;
                }
                string m, l, r=pool[v].value; // stdcon.println
                if(debug) cout << r << endl;
                m=r.substr(0, r.find("."));
                l=r.substr(r.find(".")+1);
                string s=env; // /root/chk/
                s+="/"+m+"/lib"+m+".so";
                if(debug) cout << "====LIB CALLED: " << s << endl;
                void *h=dlopen(s.c_str(), RTLD_LAZY);
                typedef Slot (*CFUNC)(size_t argc, Slot *argp);
                CFUNC func = (CFUNC)dlsym(h, l.c_str());
                if(!func) {
                    cerr << "dlsym failed for '" << l << "': " << dlerror() << endl;
                    dlclose(h);
                    break;
                }
                Slot a=pop(stack);
                if(debug) cout << "calling... a.value=" << a.value << " \n";
                if(a.type>=STR1&&a.type<=STR8) a.value=(int64_t)pool[a.value].value.c_str();
                if(debug) cout << "calling... a.value (converted!)=" << a.value << " \n";
                func(1, &a);
                dlclose(h);
                break;
            }

- динамические либы, загружаются линуксовым способом. До виндовой совместимости пока руки не доходят - ибо, у меня нету подопытной винды (Wine как-то неохота).
Самое тёмное дело - это строки в C


Сайт прогр-я: http://revival.narod.ws

Изображение


Штирлиц сидел за компом возле открытого окна. Неожиданно на экране появилось новое мыло. Штирлиц выбросил его обратно и пошёл за мокрой тряпкой - оттирать мыло с клавиатуры.
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 229
Зарегистрирован: 25 дек 2023, 11:25
Откуда: Казань
Железо: Intel Pentium MMX 166 MHz, 8 и 2 ГБ HDD, 80 MB RAM; AMD A8-6410 APU with Radeon R5 Graphics, 16 ГБ

Re: Кроссплатформенный, быстрый, Kotlin-подобный ЯП!

Сообщение uav » 01 июл 2026, 15:13

StoYazykov, ну, я рассчитывал вообще на DOS, честно говоря, учитывая тематику сайта. :-)
Ну или хотя бы Windows до XP включительно.
Аватара пользователя
uav
Мастер Даунгрейда
 
Сообщения: 3140
Зарегистрирован: 22 дек 2008, 14:21

Re: Кроссплатформенный, быстрый, Kotlin-подобный ЯП!

Сообщение StoYazykov » 01 июл 2026, 15:17

Архитектура.

Файл байт-кода CVM начинается с магического числа 05020100h. Далее следует 64-разрядный размер пула и записи в пуле: 1 байт тип, и строка, кончающаяся нулём. После него идёт 64-разрядный размер байт-кода. Потом начинается байт-код.
Структура байт-кода: [1 байт опкод][1 байт тип][N байт значение].
Опкоды и типы, можно увидеть в chkalov/chkalov.h.
Самое тёмное дело - это строки в C


Сайт прогр-я: http://revival.narod.ws

Изображение


Штирлиц сидел за компом возле открытого окна. Неожиданно на экране появилось новое мыло. Штирлиц выбросил его обратно и пошёл за мокрой тряпкой - оттирать мыло с клавиатуры.
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 229
Зарегистрирован: 25 дек 2023, 11:25
Откуда: Казань
Железо: Intel Pentium MMX 166 MHz, 8 и 2 ГБ HDD, 80 MB RAM; AMD A8-6410 APU with Radeon R5 Graphics, 16 ГБ

Re: Кроссплатформенный, быстрый, Kotlin-подобный ЯП!

Сообщение StoYazykov » 01 июл 2026, 15:21

Ну или хотя бы Windows до XP включительно.

По моим расчётам, после добавления #ifdef _WIN32 это запустится даже на Win95 и 486DX с 8-16 МБ ОЗУ. (если б чистый Цы, пошло бы, даже на 386DX/33).
Самое тёмное дело - это строки в C


Сайт прогр-я: http://revival.narod.ws

Изображение


Штирлиц сидел за компом возле открытого окна. Неожиданно на экране появилось новое мыло. Штирлиц выбросил его обратно и пошёл за мокрой тряпкой - оттирать мыло с клавиатуры.
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 229
Зарегистрирован: 25 дек 2023, 11:25
Откуда: Казань
Железо: Intel Pentium MMX 166 MHz, 8 и 2 ГБ HDD, 80 MB RAM; AMD A8-6410 APU with Radeon R5 Graphics, 16 ГБ

Re: Кроссплатформенный, быстрый, Kotlin-подобный ЯП!

Сообщение StoYazykov » 01 июл 2026, 15:31

В общем, с инициативы uav и для ещё большей скорости - перехожу на СИ. По сути, на C++ меня держат, лишь vector'ы и string'и. Но я, просто сделаю структуру vector и Цы-функции, вроде void push(vector *a, void *a). И усё! :)
Последний раз редактировалось StoYazykov 01 июл 2026, 15:31, всего редактировалось 1 раз.
Самое тёмное дело - это строки в C


Сайт прогр-я: http://revival.narod.ws

Изображение


Штирлиц сидел за компом возле открытого окна. Неожиданно на экране появилось новое мыло. Штирлиц выбросил его обратно и пошёл за мокрой тряпкой - оттирать мыло с клавиатуры.
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 229
Зарегистрирован: 25 дек 2023, 11:25
Откуда: Казань
Железо: Intel Pentium MMX 166 MHz, 8 и 2 ГБ HDD, 80 MB RAM; AMD A8-6410 APU with Radeon R5 Graphics, 16 ГБ

Re: Кроссплатформенный, быстрый, Kotlin-подобный ЯП!

Сообщение KPG » 01 июл 2026, 16:26

StoYazykov писал(а):В общем, с инициативы uav и для ещё большей скорости - перехожу на СИ. По сути, на C++ меня держат, лишь vector'ы и string'и. Но я, просто сделаю структуру vector и Цы-функции, вроде void push(vector *a, void *a). И усё! :)

Посмотрите переход на Zig,

P.S.К примеру, ядро Factor языка переписали на Zig, да и уже какое то количество начинаний Форт на нём сдеелали, как и на Rust.
KPG
Мастер Даунгрейда
 
Сообщения: 441
Зарегистрирован: 21 окт 2015, 20:53

Re: Кроссплатформенный, быстрый, Kotlin-подобный ЯП!

Сообщение StoYazykov » 02 июл 2026, 09:38

KPG писал(а):Посмотрите переход на Zig

Нет. Как и на Rust, и на другие навороченые и крутые языки с плюшками-финтифлюшками.
Почему -
1. Это, не классика.
2. Компиляция под Win95 будет сильно затруднена. Да и, собрать ЯП под 95-ой, не выйдет. Компилер Zig'а не запустится на ней.
3. Си лучше, экономичнее и быстрее.
4. Лениво учить новый и чужой язык.
5. Не хочу зависеть, от чужого языка!
Последний раз редактировалось StoYazykov 02 июл 2026, 09:41, всего редактировалось 1 раз.
Самое тёмное дело - это строки в C


Сайт прогр-я: http://revival.narod.ws

Изображение


Штирлиц сидел за компом возле открытого окна. Неожиданно на экране появилось новое мыло. Штирлиц выбросил его обратно и пошёл за мокрой тряпкой - оттирать мыло с клавиатуры.
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 229
Зарегистрирован: 25 дек 2023, 11:25
Откуда: Казань
Железо: Intel Pentium MMX 166 MHz, 8 и 2 ГБ HDD, 80 MB RAM; AMD A8-6410 APU with Radeon R5 Graphics, 16 ГБ

След.

Вернуться в Программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2