В A2 и по наследству в ЯОС есть "скриптовый язык", точнее, пародия на него. В нём есть вызов команд,
составное предписание (вызвать несколько команд подряд) и вывод строковых литералов на печать. Составное
предписание завершается с ошибкой, как только первая команда завершается с ошибкой.
Подобный язык минимально достаточен для реализации скриптов типа пересборки ОС, но на каждое ветвление количество
файлов скрипта удваивается. Например, уже есть три скрипта для сборки версии BIOS. Очевидно, это плохо. В итоге, скрипты
пишутся наполовину на Обероне, наполовину на Баше. Правда, нет и функции exec, позволяющий запускать другие программы
из ЯОС в режиме приложения, но это уже отдельная песня.
Я уже пробовал делать скрипты на самом АО, который является полноценным ЯП, вот здесь:
https://tvoygit.ru/budden/jaos/src/comm ... 071f877c0a
Скриптование на Обероне
Re: Скриптование на Обероне
Как-то встречал проект, где в качестве скриптового языка для Web использовался Си и компилятор TinyCC, который настолько шустр, что задержка на компиляцию исполняемого модуля не особо заметна. Делал какой-то «наш» человек в Израиле. Самому доводилось делать вместо bat-ников какие-то вызовы из программ на Си.
Я тоже неоднократно пытался делать это через какую-то функцию с очевидным именем, но не получалось. Пока не дошло, что надо пользоваться не ею, а spawnl. Типа того:нет и функции exec
Код: Выделить всё
spawnl(0, exe_name, exe_name, file_full_name, 0);
Re: Скриптование на Обероне
Вызов одной программы из другой - это очень сложный процесс с подводными камнями. На работе я взял код вызова подпроцесса, который был до меня, и в течение 2 лет приходилось к нему пару раз возвращаться, потому что подводные камни ударяли по лодке и ломали её. Это было на Питоне и на Го. ЯОС тяготеет к тому, чтобы быть операционной системой, а не "программой внутри другой операционной системы". Поэтому у меня пока нет планов развивать "скриптование в рамках другой ОС" - речь идёт лишь о той части скриптов, которые уже существуют сейчас, используются в жизненном цикле ЯОС и написаны на System.DoCommands. То, что сейчас написано на bat/bash - так и останется.
Здесь можно было бы добавить, что я бы с удовольствием принял бы доработку, касающуюся вызова процессов из ЯОС в режиме приложения, но это чистая риторика - никто никаких доработок никогда на добровольческих началах не делал.
Здесь можно было бы добавить, что я бы с удовольствием принял бы доработку, касающуюся вызова процессов из ЯОС в режиме приложения, но это чистая риторика - никто никаких доработок никогда на добровольческих началах не делал.