Сравнение масштабов A2 с другими ОС

Форум про создание российской Open Source версии Windows и про запуск программ, созданных для Windows, из других ОС.
Ответить
смотритель
Site Admin
Сообщения: 20
Зарегистрирован: 25.04.18 15:17

Сравнение масштабов A2 с другими ОС

Сообщение смотритель » 06.01.21 14:39

КротОзёр писал(а):
БудДен писал(а): A2 не относится к семейству BSD. Прежде всего, важен объём - всего 1 млн строк. Чем меньше объём, тем проще проверить. У Линукса только ядро - порядка 10 млн, а проверять надо каждую строчку. Приложения не менее огромны. А речь идёт про ОС для критически важных применений, когда надёжность важнее раскудрявости.
Необходимость поддержки различного оборудования неизбежно увеличивает объём исходных кодов. Не считаю корректным сравнивать ядра по этому критерию. Уж лучше тогда разделять компоненты ОС по назначению.
Предлагается здесь обсудить, как корректно сравнить сложность A2 и Linux (или других альтернатив). Может быть, её простота иллюзорна?

Аватара пользователя
КротОзёр
Сообщения: 54
Зарегистрирован: 05.01.21 02:16

Re: Сравнение масштабов A2 с другими ОС

Сообщение КротОзёр » 06.01.21 17:11

Простота любого сложного механизма иллюзорна. Но в силу не столь явной классификации, часть ПО стала считаться "системным", что резко размыло границу.

Кто-то считает "размер ОС" по объёму данных на установочном накопителе. Я уж не говорю о модулях ядра.
  • То ядро, что установлено и функционирует в дистрибутиве GNU/Linux лишено в своём составе как минимум трети того, что присутствует в общем дереве исходников.
  • Тогда, как то же ядро ntoskrnl у Windows является микроядром, лишённым большей части модулей в своём составе. Всё это подключается в процессе исполнения из состава установленных "драйверов".
Но никто же об этом не задумывается?

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Сравнение масштабов A2 с другими ОС

Сообщение БудДен » 07.01.21 00:11

Да, я не знаю структуру ядра линукс. Но сравнить как-то надо. Понятно, что любая ОС достаточно сложна, но они не все одинаковы. Как я уже сказал, A2 по сути написана на одном языке программирования. Т.е. на двух - обероне и ассемблере. Linux написан как минимум на... сложно посчитать... Если взять тулчейн gcc, то там есть make, bash, есть ли там m4? Си, ассемблер. Если взять apt, то это Питон. bash, кстати, это настоящий язык программирования по его роли - ведь он же отвечает за запуск служб, т.е. по сути дела, запуск линукс написан на нём. И цена ошибки в скрипте на баше (например, продолжение скрипта из-за отсутствия проверки результата вызова программы) огромна. Наверное, всем приходилось отлаживать всякие CI-скрипты, эта задача всегда ужасно надолго. А при том язык сам настолько отстойный, насколько это только можно себе представить. Все умолчания в нём сделаны в форме грабель. Притом, я пытался выработать безопасные соглашения для работы на баше и оказалось, что грабли имеют настолько причудливую форму, что это вообще не получается, есть огромные обсуждения на эту тему, и люди приходят к тому, что решения нет.

Я на самом деле не исключае того, что A2 не проще линукса. Это крайне маловероятно, но может быть и такое. Просто поскольку A2 это был изначально полуучебный проект, там куча студенческого кода, срезанных углов и просто всяких недоделок. Может быть, если их доделать, получится монстр?

Но во всяком случае, наличие всего одного ЯП - это уже некое "измерение" простоты. По-хорошему-то, нужно оценить, из чего состоит ядро Линукса.

Аватара пользователя
КротОзёр
Сообщения: 54
Зарегистрирован: 05.01.21 02:16

Re: Сравнение масштабов A2 с другими ОС

Сообщение КротОзёр » 07.01.21 00:44

Насчёт граблебаша — согласен. В нём ещё есть практически не решённая проблема — экранирование символов в списках. Баш считает, что пробел — это разделитель элементов. Приходится сооружать костыли вроде замены пробелов специально для цикла и их возврат уже внутри итерации. В общем, жуткий интерпретатор.
БудДен писал(а):
07.01.21 00:11
По-хорошему-то, нужно оценить, из чего состоит ядро Линукса.
Видел там Си и Ассемблер. Ничего другого не замечал.

Кстати, ядро Linux ещё имеет неотделимую от его дерева исходников систему сборки KBuild. Там есть подгружаемые модули, встраиваемые, но подгрузка может производиться разными методами: при помощи внешней службы вроде UDEV или в процессе разбора т.н. "дерева устройств" (Device Tree). Для "встраиваемых" систем второй способ просто необходим, но это — опять же следствие недоработки архитектуры ядра.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Сравнение масштабов A2 с другими ОС

Сообщение БудДен » 07.01.21 00:47

Я имел в виду, сколько из 10 млн составляют особенности оборудования.

Monk
Сообщения: 11
Зарегистрирован: 10.10.18 16:41

Re: Сравнение масштабов A2 с другими ОС

Сообщение Monk » 05.02.21 10:05

БудДен писал(а):
07.01.21 00:11
Как я уже сказал, A2 по сути написана на одном языке программирования. Т.е. на двух - обероне и ассемблере. Linux написан как минимум на... сложно посчитать... Если взять тулчейн gcc, то там есть make, bash, есть ли там m4?
В A2 нет командной строки и скриптов? А как делается условная компиляция для разного оборудования?

MihalNik
Сообщения: 244
Зарегистрирован: 05.11.18 11:02

Re: Сравнение масштабов A2 с другими ОС

Сообщение MihalNik » 05.02.21 19:58

Monk писал(а):
05.02.21 10:05
В A2 нет командной строки и скриптов?
В принципе неясно, почему нельзя писать команды на самом ЯП, тем более однопроходном.
И почему не хранить их в скомпилированном виде, когда перекомпиляция ничего не стоит.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Сравнение масштабов A2 с другими ОС

Сообщение БудДен » 06.02.21 23:28

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

Первый вид - для подключения/исключения файлов в файле проекта, в данный момент файл проекта -

https://gitlab.com/budden/ja-o-s/-/blob ... ce/ЯОС.фок

Второй вид - для подключения/исключения фрагментов текста внутри файлов (аналог IFDEF).

Согласен, что скрипты надо писать на основном ЯП, только, возможно, нужно сделать механизм позднего связывания (динамический вызов команд уже есть, но писать так - будет монструозно). Ну и сделать какие-нибудь расширения для манипуляции потоками ввода-вывода.

440440
Сообщения: 37
Зарегистрирован: 20.12.19 22:35

Re: Сравнение масштабов A2 с другими ОС

Сообщение 440440 » 13.02.21 08:12

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

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

А если речь про сложность ядра системы... много ли вы знаете системных программистов линукс? А ведь есть ещё системные программы, библиотеки.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Сравнение масштабов A2 с другими ОС

Сообщение БудДен » 13.02.21 15:22

Имеется в виду сложность как системы. Наверное, есть какая-то наука, которая изучает системы, и там есть метрики сложности. Так вот, если там 10000 драйверов, то эти драйвера между собой не связаны. В этом случае, они делают вклад в объём системы, но не в сложность.

> Все эти горе-линуксоиды, знаете как они работают? Если что-то пошло не по плану, начинают дико стучать по клавишам, якобы что-то делают, и где-то через час-два сдаются со сломанной системой.

Не, они не так работают, хотя смотря кого понимать под "линуксоидами".

Ответить