Здравствуйте, Ночной Смотрящий, Вы писали:
S>> Один может начать разработку ОС только в одном случае — если сойдет с ума. Получится что-то типа https://ru.wikipedia.org/wiki/TempleOS НС>Ну так получилось же даже у психа.
Во-первых, ничего хорошего не получилось.
Во-вторых, думаете психом быть так уж легко? Он же все свободное время ей уделял и больше ничем не занимался. У нормального чела нет таких возможностей.
Здравствуйте, Shmj, Вы писали:
S>чтобы переписать Linux с нуля...
Имелось ввиду ЗАКОПАТЬ?
S> если 1 чел. в среднем пишет около 15 строк кода в день...
Это кто так пишет? Безрукобезногий инвалид, набирающий носом? Ныне как-то побыстрее код пишется, IDE помогает в полный рост.
S> Если все сделать с чистого листа...
Но беда в том, что если строить башню на фундаменте из навоза (это я про архитектуру PC), то ничего кроме навозной кучи вы не получите. Как правильно сказали в комментах, железо тоже достигло своего апогея безалаберности и хаоса — нужно категорически менять. Писать ОС для существующего павлиноуткоежа — обидная трата времени.
S> А так же разработать единые стандарты для девайсов, чтобы и драйвера не нужно было писать отдельно для каждого производителя.
В идеальном мире прогеров — да, это прекрасно. Но судя по вывертасам производителей типагеймерских клавиатур (как пример), им нафик не нужна ваша "не нужно было писать" — ровно наоборот: чем уникальнее экосистема, тем больше людей можно на неё подсадить навечно (как у Эппла). Увы, такое решается исключительно жёстким контролем государства — никаких судов, оправданий — просто фирма, лепящая выкрутасы на ровном месте, признаётся "идущей вразрез с общепринятыми стандартами" и штрафуется с запретом реализации продукции на локальном рынке.
У принтера, клавиатуры, мыши, должен быть свой ОДИН драйвер.
S>И вопрос в том, возможно ли это?
Те, у кого есть сила и деньги это сделать, меньше всего в этом заинтересованы. ( Так что даже через 10 лет будет всё тот же бардак и уныние.
Показательный пример: оптоволокно. ОДИН стандарт мог заменить все эти USB, HDMI, SATA, COM, LPT и т.п. Никто даже чесаться не стал воплощать одно решение на 50 лет — куда удобнее лепить USB 1-2-3-4-...100 и продавать новые шняги на бестолковом, вечно "улучшаемом" стандарте.
Бизнес — это вообще никогда не было про "прогресс", это всегда стагнация и раздрай.
Здравствуйте, AlexRK, Вы писали:
vsb>>Другой вопрос — зачем это всё? Чем текущие ядра не устраивают?
ARK>Почему именно ядра? Операционные системы — это не только ядра.
ARK>А ядра... Ну, они насквозь дырявые, например. По причине использования небезопасных С/C++ по всей кодовой базе.
Честно говоря, не понимаю смайликов.
Вот недавно IID постил:
Можно только догадываться, сколько подобных ошибок разбросано по кодовой базе в миллионы строк. А можно почитать отчеты PVS-studio и убедиться, что их действительно тьма.
До тех пор, пока порядок операндов будет определяться только программистом исходя из их "говорящих" названий buf & rbuf, таких ошибок будет море. И никакие многоуровневые собеседования, задачи про гномиков, кодревью и тесты тут не помогут.
Здравствуйте, Kolesiki, Вы писали:
S>> если 1 чел. в среднем пишет около 15 строк кода в день...
K>Это кто так пишет? Безрукобезногий инвалид, набирающий носом?
Наверное имеется в виду — чистый код для проекта. Под него еще пишутся тесты, размер которых немного другой.
K>Ныне как-то побыстрее код пишется, IDE помогает в полный рост.
Ага. Вот так вот привыкнешь к этой помощи, а она (IDE) тебе, скатина, не то подставит. Ты и не заметишь
Сегодня обнаружил "багу", скорее всего созданную из-за этой помощи. Вместо
S>Плохой совет. Может предложишь еще и самолет самому спроектировать? S>Это не для одного человека. Один может начать разработку ОС только в одном случае — если сойдет с ума.
Вообще-то это разные вещи.
Спроектировать (т.е. описать концепцию, функционал, технические характеристики, модули и их связи) — вполне можно одному.
Разработка... в ряде случаев тоже можно сделать одному. Ну или небольшой командой. Сколько там человек пилят ReactOS? Но у них с самого начала была ясная цель — сделать открытую копию WinXP. А у тебя какая цель?
Здравствуйте, ltc, Вы писали:
ARK>>А ядра... Ну, они насквозь дырявые, например. По причине использования небезопасных С/C++ по всей кодовой базе. ltc>Честно говоря, не понимаю смайликов.
Так смех без причины — признак дурачины. Старо, как мир.
ltc>Вот недавно IID постил: ltc>Можно только догадываться, сколько подобных ошибок разбросано по кодовой базе в миллионы строк. А можно почитать отчеты PVS-studio и убедиться, что их действительно тьма. ltc>До тех пор, пока порядок операндов будет определяться только программистом исходя из их "говорящих" названий buf & rbuf, таких ошибок будет море. И никакие многоуровневые собеседования, задачи про гномиков, кодревью и тесты тут не помогут.
О том и речь. Просто в, хм, субстанцию, которую из себя представляют ядра Windows/Linux/BSD, вложена уйма человеколет. Переписывать их дорого и эти дуршлаги просто латают, внося попутно новые дырки. Пипл хавает.
Я щетаю, надо брать базовый слой совместимости с виндовыми приложениями а-ля Wine (_без_ совместимости до драйверов) и писать под этот вариант чистое и небольшое, без свиста и пердежа, ядро.
UPD. Ах да, писать надо, разумеется, ни в коем случае не на Ц/Ц++ (быть может только самый низкоуровневый кусок тыщ на 10 строк, не больше).
Здравствуйте, Shmj, Вы писали:
S>А так же разработать единые стандарты для девайсов, чтобы и драйвера не нужно было писать отдельно для каждого производителя.
За гранью фантастики.
S>И вопрос в том, возможно ли это? Ну хорошо, возможно ли это лет через 10?
Google Fuchsia
Здравствуйте, Kolesiki, Вы писали:
S>> если 1 чел. в среднем пишет около 15 строк кода в день... K>Это кто так пишет? Безрукобезногий инвалид, набирающий носом? Ныне как-то побыстрее код пишется, IDE помогает в полный рост.
Так пишут высококлассные спецы, которые получают от $140 тыс. в год.
Говнокодеры пишут по 100500 строк в день и получают со скрипом $20 тыс. в год.
Здравствуйте, pagid, Вы писали:
P>Здравствуйте, Shmj, Вы писали:
S>>Ну, это по срокам кода (коих 6399191 полезных) — если 1 чел. в среднем пишет около 15 строк кода в день при зарплате $ 140 тыс. в год. Понятно что строки низкоуровневые, это не вам не C#. На C 15 строк в день на такой зарплате — это норма. S>>И вопрос в том, возможно ли это? Ну хорошо, возможно ли это лет через 10?
P>Зачем?
Потому что затрахала всех нынешняя чехарда с драйверами.
Правда, проблема тут не в ОС, а в устройствах.
Здравствуйте, Shmj, Вы писали:
S>Вопрос в другом. По большей части такой большой объем ядра — легаси-код. Если все сделать с чистого листа, чистое ядро без поддержки старья. А так же разработать единые стандарты для девайсов, чтобы и драйвера не нужно было писать отдельно для каждого производителя.
S>И вопрос в том, возможно ли это? Ну хорошо, возможно ли это лет через 10?
Нет, невозможно. Считать строки — неправильно. Нужно отталкиваться от строк когда либо написаных для этого линуса. Строки те, что есть сейчас — это идеальный результат. Но этот вариант недостижим, т.к. разработчики обязательно будут переизобретать велосипеды, ошибаться, исправлять и тд. Соответсвенно начальную оценку надо увеличить раз в десять по минимуму.
Здравствуйте, Mamut, Вы писали:
M>>>Иииии. Дальше что? На ней магическим образом появится все то, что людям нужно? A>>Не магическим образом, а методом перекомпиляции.
M>Что-то методом перекомпиляции в Линуксе не появился магическим образом Фотошоп, а на Маке и Линуксе игры в каком-либо значительном количестве 🤔
Насколько я понимаю, ТС говорил про замену Линукса. Там всё делается перекомпиляцией. Я проверял.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>>>Как я мог забыть. Да, сперва надо написать компилятор. LK>>Для начала нужна принципиально новая аппаратная архитектура. НС>О да! Но начать следует с принципиально новых транзисторов.
Так есть уже — вакуум-канальные, графеновые и т.д.
На терагерцах работают, т.е. на порядок быстрее лучших кремниевых.
Но им еще предстоит пройти путь своего развития.
На мой взгляд — человечеству новая серьёзная ОС нужна. Для десктопов и серверов.
Прошло довольно много времени, ландшафт IT изменился. Появились куча вещей.
Многое в операционках можно сделать по-другому. Обеспечить большую надёжность, безглючность работы. Защиту приложений друг от друга. Надо ещё выкинуть вот этот вот x86. Даёшь новую OS и другую аппаратную платформу!
Помнится, когда мне было лет 16-17, я всё сам размышлял на тему — если мне самому писать ОС, что бы я в ней сделал? Мой друг, кстати, ОС писал. Он контрибьютил в одну open-source операционку (вот этот вот ReactOS). Правда говнокодил сильно. Я ему говорил про недостатки кода, а он и слышать не хотел
Я вот додумался до того, чтобы уйти от концепции файлов. Т.е. даже так — вот ты ставишь приложение в ОС, оно в каких-то файлах на диске размещается. Которые потом могут быть прочитаны левыми сторонами (юзером или приложениями). Могут быть модифицированы или удалены. Плюс ещё зависимости между аппликейшенами. Вот этот вот DLL-hell. Это всё источник глюков. Надо ставить приложения не пофайлово, а некими кусками. Ссылающимися друг на друга. Ну и garbage collection сделать.
Виндовый реестр, я тоже бы видоизменил. Вот эта вот иерархия — довольно неудачный подход. надо как-то более индивидуально хранить конфигурацию. Чтобы чётче было бы видно — где чьи настройки. Чтобы никто не мог влезть куда не следует.
Транзакционность изменений в конфигурации, записи файлов — тоже круто. Убрать всякое legacy — надо.
Ещё я бы поставил под вопрос саму концепцию файлов как таковых (т.е. последовательности байтов). Вот это не очень круто, когда мы все вынуждены бесконечно сериализовывать/десериализовывать данные. Какие-то более структурированные форматы хочется иметь.
Можно, кстати, вообще — сделать "frozen" файлы для приложений. Суть в том, что когда ты ставишь приложение, оно появляется в виде неких "виртуальных" файлов на чем-то вроде device-fs. Которые можно только прочитать. Ни переместить, ни удалить, ни изменить их невозможно.
Ещё, на мой взгляд, виндовый подход с наличием множества отдельных дисков лучше монолитного дерева в unix-ах.
Только я бы не диски бы делал, а некие обобщённые разделы. С label-ами в качестве названия, вместо букв.
Тогда, например, когда несколько юзеров сидят на машине, им можно выдать свой собственный набор разделов каждому.
Например — системный, общий для всех. Ну и личный юзерский — каждому свой. Т.е. не единый набор дисков для всей системы.
Надо выкинуть вот это вот досовское наследие: зарезервированные имена COM, AUX, LPT, и иже с ними.
Ещё, как-то надо продумать переносимость, и как её применяют в разных девайсах. Android же, он linux, ведь так?
А MacOS использует BSD код? Вряд ли на девайсах нужны всякие фишки, уместные на десктопах.
Ещё, на мой взгляд, windows хороша тем что драйвера подключаемые, а не как там монолитное ядро linux.
И при загрузке DLL, там как я помню, адреса правятся. А в linux там relocatable code, который вызывает доп. проблемы с производительностью, из-за появляющихся команд вызова. Я не помню детали, давно читал об этом.
Эх, не тем я занимаюсь, не тем... Какой же кайф покодить системный софт, а жизнь мне не даёт подобной возможности.
В те времена, такое воодушевление было...
Тебе лет 14 (год где-то 2001), ты пробуешь всякие там API винды. Ваяешь DLL-ку, пробуешь COM, пробуешь DirectX, пробуешь 3D графику, пробуешь игры писать, пробуешь сетевой код. Сплошной кайф. А другие спрашивают — что ты там в своём компьтере сидишь? Нет, им не понять.
Честно говоря, я считаю что в жизни у меня, пожалуй, слишком много хорошего. А времени столь мало, чтобы всё это попробовать.
Здравствуйте, Sinclair, Вы писали:
LK>>Для начала нужна принципиально новая аппаратная архитектура. S>Отож. Смысла её делать на морально устаревшем кремнии нет никакого.
Тут, на самом деле, всё именно так — на смену кремнию начинает подходить нитрид галлия.
Здравствуйте, Kolesiki, Вы писали:
K>Показательный пример: оптоволокно. ОДИН стандарт мог заменить все эти USB, HDMI, SATA, COM, LPT и т.п. Никто даже чесаться не стал воплощать одно решение на 50 лет — куда удобнее лепить USB 1-2-3-4-...100 и продавать новые шняги на бестолковом, вечно "улучшаемом" стандарте.
На остальное даже отвечать не хочется, но вы в курсе что "оптоволокно" — это физическая среда, а не стандарт? А стандатров на эту среду хоть ж***й ешь. Начиная с коннекторов.
Здравствуйте, Cyberax, Вы писали:
LK>>>Для начала нужна принципиально новая аппаратная архитектура. S>>Отож. Смысла её делать на морально устаревшем кремнии нет никакого. C>Тут, на самом деле, всё именно так — на смену кремнию начинает подходить нитрид галлия.
Это всё-равно традиционный подход, т.е. тупиковый.
И да, у нитрида галлия высокий порог, для низковольтной техники лучше арсениды галлия.
Они используются давно, но выходят сильно дороже кремния.