czarker
|
Monday 07.02.2005 20:06
|
|
|
Зарегистрирован: Monday 10.01.2005 17:26
Местоположение: Москва, т.д.
Сообщений - 48
|
Хорошо, что я не пошёл в медицински. Вы представляете хирурга, радостно и с предвкушением потирающего руки перед операцией?
Vadim Ushakov писал(а): ... а знают ли уважаемые разработчики, что в Юникс-системах принято не исправлять баги, а документировать их? Загляните в любой man page, если не верите. Все очень просто: документированный баг - это не баг. Это фича. Откуда оно всё такое берётся?
Ну вот кто Вам эту чушь сказал? Откройте любой changelog с Sourceforge.net и посмотрите последнюю строчку за кажду дату. Не помогло?
Vadim Ushakov писал(а): ... Однако команда разработчиков так и не ответила на заданные в этой ветке форума вопросы. Если попытаться задать вопросы, а не высказаться в стиле: "Я Пастернака не читал, но хочу сказать", шансы получить ответы существенно вырастут.
Vadim Ushakov писал(а): ... 1. Почему было принято решение о целесообразности использования существующего ядра? Любой программист согласится с тем, что написать свой код для конкретного проекта легче, чем адаптировать существующий. Любой приличный программист скажет, что ни в коем случае нельзя писать новый код, если можно безболезненно применить имеющийся.
Vadim Ushakov писал(а): ... 2. Почему в качестве базы была выбрана Linux - система, которая уходит своими корнями и идеологией в 70-е годы и которая давно устарела. Существует куча open-source ядер - так почему был выбран самый худший вариант? Каждая система относится к той или иной традиции, которых сейчас осталось две: VMS и UNIX. Первая представлена OpenVMS и современными ОС семейства Windows, а вторые - всеми остальными (кроме FreeDOS, Windows 9x и несколькими другими проектами оживления трупов). Специфика проекта требует модульное ядро, так что выбор резко сужается. Можете назвать хорошее современное модульное ядро?
Vadim Ushakov писал(а): ... 4. Как сочетается существование каталогов /dev и /proc с концепцией "все есть объект"? Как вы представляете реализацию объектного слоя поверх ext2? А что Вы понимаете под объектным слоем? ЧТо вообще не так-то? [ Редактирование Monday 07.02.2005 20:09 ]
Но это всё, конечно, моё сугубо личное мнение.
|
Наверх
|
|
Vadim Ushakov
|
Tuesday 08.02.2005 09:04
|
|
|
Зарегистрирован: Monday 07.02.2005 04:57
Местоположение: Россия, Красноярск
Сообщений - 35
|
To Roman I Khimov:
Несмотря на то, что я просил аргументировать ответы... Ведущий разработчик прав не потому, что он разработчик, а потому, что ведущий. Извините, Роман, но это не ответы, а отписки.
1. Статья, на которую вы дали ссылку, очень популярно объясняет почему надо-таки использовать существующий код, несмотря на то, что никто уже не понимает как он работает (и работает ли вообще). Интересная точка зрения, если учесть, что программист - это прежде всего инженер. Вы где-нибудь видели инженера, который согласен включить в проектируемое устройство механизм, который неизвестно как и почему работает, неизвестно кем спроектирован, и имеет неизвестно какие эксплутационные характеристики? Однако речь о другом. В мире разработки ПО существует магическая формула: Повторное Использование Кода. Побеждает тот, кто сумеет раньше конкурентов собрать готовый к продаже продукт из кусков старых программ. Но ведь ВЫ (разработчики 3ОС) не занимаетесь адаптированием старого ПО. Вы пишете АБСОЛЮТНО НОВУЮ систему (по крайней мере, собирались писать до недавнего времени). При этом такие вещи, как поддержка железа, наличие прикладных программ отходят на второй план. Поскольку концепция новая - вам просто не на что опереться, ведь ТАКОГО ЕЩЕ НЕ БЫЛО. Какое уж тут, к черту, повторное использование кода. Если вам так необходимо готовое ядро - возьмите Nаtive Oberon, или AOS.
2. По поводу поддержки железа я уже высказался абзацем выше. По поводу лицензии - спорить не буду. Вы говорите "лучшее рабочее свободное ядро", но именно об этом я и спрашивал. Почему Linux лучше подходит в качестве базы проекта? Какие другие ядра рассматривались? По каким критериям шел отбор? Вы просто достали из письменного стола последний дистрибутив SUSE и сказали: "Вот наше ядро." Не так ли?
3. Производительность. Я не стану приводить "аргументы" типа "а у моего друга оно тормозит на P4, RAM 1024Мб", поскольку это не аргументы. Проводить тесты у меня особого желания нет. Хорошо, будем считать, что Linux быстрее других ядер. Этот вопрос снят.
4. Почему для функционирования кодеков нужно специально на это рассчитанное ядро, я вам на e-mail напишу через пару дней, если вы не против. Это, так сказать, не форумная тема - объем великоват.
To czarker:
Не получится "безболезненно применить имеющийся" код - идеология системы помешает.
По вашему мнению Nаtive Oberon - это тоже система семейства Unix или VMS?
Когда-то в 80-х в Berkeley написали глючную утилиту make. Глюк состоял в том, что она требовала табуляции, там, где по идее можно ставить пробелы. Глюк был исправлен хакерами из BBN и исправления отосланы в Berkeley. Berkeley в следующем релизе системы снова оставляет глючную версию. Хакеры снова все исправляют. Однако Berkeley и в третий раз выпускает глючную программу. Хакеры сдались.
Я не знаю существует ли этот баг и в теперешних Юниксах, однако в Red Hat Linux 5.0 он есть - даже через десять лет никто не стремится его исправить.
Этот пример не имеет отношения к ядру Linux, однако показывает каким образом ведется "проектирование" open-source программ.
|
Наверх
|
|
Linker
|
Tuesday 08.02.2005 09:40
|
|
|
Зарегистрирован: Friday 06.08.2004 14:48
Сообщений - 12
|
czarker писал(а): ... Любой приличный программист скажет, что ни в коем случае нельзя писать новый код, если можно безболезненно применить имеющийся.
Интересное дело, как это можно наживую препарировать Линуксовое ядро, чтобы вложить туда концепцию 3ОС и при этом операция бы прошла быстро, успешно и безболезненно? Торвальдса наверное хватил бы удар, узнай какими тут извращениями собираются заняться с его детищем.
czarker писал(а): ... Специфика проекта требует модульное ядро, так что выбор резко сужается. Можете назвать хорошее современное модульное ядро?
Хе-х, да запросто - QNX Neutrino. Современное модульное микроядро.
|
Наверх
|
|
Vadim Ushakov
|
Tuesday 08.02.2005 11:18
|
|
|
Зарегистрирован: Monday 07.02.2005 04:57
Местоположение: Россия, Красноярск
Сообщений - 35
|
czarker писал(а): ... Специфика проекта требует модульное ядро, так что выбор резко сужается. Можете назвать хорошее современное модульное ядро?
На мой взгляд специфика проекта требует микроядро, либо даже экзоядро, поверх которого работает объектно-ориентированная runtime-среда.
"Хорошее современное модульное ядро" я назвать не могу, если понимать под этим понятием модульно-монолитное ядро (такое как Linux). NT-ядро было попыткой реализовать модульно-микроядерную концепцию. Как всем известно, попытка провалилась. Я бы назвал NT не очень прохим ядром (до хорошего ему далеко). Хорошего модульно-монолитного ядра я еще не видел.
|
Наверх
|
|
czarker
|
Tuesday 08.02.2005 17:01
|
|
|
Зарегистрирован: Monday 10.01.2005 17:26
Местоположение: Москва, т.д.
Сообщений - 48
|
Vadim Ushakov
В первую очередь, хочу поблагодарить Вас, что Вы правильно меня поняли и дали конструктивный ответ. Я боялся, что Вы обидетесь.
Однако, я во многом не согласен с Вами: Vadim Ushakov писал(а): ... По вашему мнению Nаtive Oberon - это тоже система семейства Unix или VMS? Честно? По-моему, это просто мёртвый проект. Vadim Ushakov писал(а): ... Когда-то в 80-х в Berkeley написали глючную утилиту make. Это не глюк. Это - плохой дизайн. И его нельзя исправлять, поскольку нужна совместимость. Поэтому этот плохой дизайн останется в make до конца жизненного цикла этой утилиты. Vadim Ushakov писал(а): ... Этот пример не имеет отношения к ядру Linux, однако показывает каким образом ведется "проектирование" open-source программ. Так проектируется любая система. В Windows есть более классический и острый пример - WinAPI32. Vadim Ushakov писал(а): ... На мой взгляд специфика проекта требует микроядро, либо даже экзоядро, поверх которого работает объектно-ориентированная runtime-среда. На мой взгляд, микроядро полностью теряет преимущества, если оно требует внешнего агента для выполнения своих функций. Сама концепция микроядра (а позже нано- и экзо-) предполагает, что ядро занимается только вопросам IPC. Решить вопросы IPC для платформы .NET можно, IMHO, только с помощью runtime-элементов в ядре. Никакое ядро не останется микроядром, если его интегрировать с runtime для .NET языков. Так зачем трогать микроядра? Vadim Ushakov писал(а): ... "Хорошее современное модульное ядро" я назвать не могу, если понимать под этим понятием модульно-монолитное ядро (такое как Linux). Я твёрдо уверен, что концепция модульно-монолитного ядра - это крупный провал, идея, отягощённая внутренним противоречием.
Linker
Linker писал(а): ... как это можно наживую препарировать Линуксовое ядро, чтобы вложить туда концепцию 3ОС и при этом операция бы прошла быстро, успешно и безболезненно? Что касается безболезненного наращивания - то, IMHO, пока можно и так. Лучше использовать другое модульное ядро, но раз так... Linker писал(а): ... Хе-х, да запросто - QNX Neutrino. Современное модульное микроядро. Здесь считают, что Вы не правы как в том, что оно модульно, так и в том, что оно современное в том смысле, который вложен в вопрос Vadim Ushakov и мой ему ответ. [ Редактирование Tuesday 08.02.2005 19:31 ]
Но это всё, конечно, моё сугубо личное мнение.
|
Наверх
|
|
Vadim Ushakov
|
Tuesday 08.02.2005 19:00
|
|
|
Зарегистрирован: Monday 07.02.2005 04:57
Местоположение: Россия, Красноярск
Сообщений - 35
|
czarker писал(а): ...
Это не глюк. Это - плохой дизайн.
Это не пролохой дизайн, это - отсутствие дизайна. "Лишь три вещи делаются без заранее приготовленного плана: дети, картины и программы" (А.И. Легалов). 3ОС не "растет", она вполне сознательно проектируется. Именно поэтому я против использования любого кода, который "вырос" (и баги росли вместе с ним), а не был спроектирован. Против вообще, в принципе, и без компромисов.
czarker писал(а): ...
На мой взгляд, микроядро полностью теряет преимущества, если оно требует внешнего агента для выполнения своих функций.
Возможно я не совсем точно выразился, когда говорил "микроядро, либо даже экзоядро, поверх которого работает объектно-ориентированная runtime-среда". Микроядро конечно самодостаточно - в этом его суть, и именно поэтому я склоняюсь к модели exokernel + runtime library. Экзоядро в том виде, в каком оно было предложено Энглером - это просто менеджер, регламентирующий доступ к аппаратным ресурсам. Вся так называемая "система" - это просто одна или несколько библиотек, работающих в 3-м кольце. Энглер указал преимущества такой модели: производительность (особенно на мультипроцессоре), простота, расширяемость, возможность одновременной работы на одной машине нескольких "операционных систем." Если вы еще не знакомы со следующими работами, то рекомендую ознакомиться: "Exokernel: an operating system architecture for application-level resource management" (Dawson R. Engler, M. Frans Kaashoek), "Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism" (Thomas E. Anderson, Brian N. Bershad). Ссылок дать немогу - не помню откуда скачивал.
czarker писал(а): ...
Я твёрдо уверен, что концепция модульно-монолитного ядра - это крупный провал, идея, отягощённая внутренним противоречием.
Именно это я и имел ввиду.
|
Наверх
|
|
czarker
|
Tuesday 08.02.2005 19:56
|
|
|
Зарегистрирован: Monday 10.01.2005 17:26
Местоположение: Москва, т.д.
Сообщений - 48
|
Vadim Ushakov писал(а): ... Это не пролохой дизайн, это - отсутствие дизайна. к/ф "Несколько хороших парней" писал(а): ... - Каффи, Вы когда-нибудь были в суде?
- Однажды у меня отобрали права. Если это дело дойдёт до суда, им скорее понадобится священник, чем адвокат...
- Нет, им понадобится адвокат. Утилита make в учебниках по программированию для UNIX-like систем описывается как типичный пример плохого дизайна приложения. И, главное, никаких реальных плохих последствий из этого плохого дизайна нет. Единственный его минус - это то, что он плохой. Vadim Ushakov писал(а): ... 3ОС не "растет", она вполне сознательно проектируется. Именно поэтому я против использования любого кода, который "вырос" (и баги росли вместе с ним), а не был спроектирован. Ну на счёт "вырастающего" кода - это мысль интересная. Видимо на окошках в Bell Labs стоят горшки с прорастающим оттуда кодом...
Так или иначе, код, который уже отладили, будет стабильней неотлаженного. Это первая аксиома. Код можно при необходимости заменить другим кодом. Это вторая аксиома. Код легче отлаживать когда он запущен в дружественной среде, а не в эмуляторе. Это третья аксиома. Vadim Ushakov писал(а): ... Возможно я не совсем точно выразился, когда говорил "микроядро, либо даже экзоядро, поверх которого работает объектно-ориентированная runtime-среда". Я так и понял. Однако такие вещи как производительность - материи абстрактные, тем более что достаточно высокая производительность возможна на ядре, относящемся к любому классу.
Я же писал про то, что функционально ядро и runtime для .NET представляют единое целое и должны выполняться с одинаковым приоритетом. Микроядро этого не позволит, или, по крайней мере, с ним будет невозможно сделать это красиво.
Но это всё, конечно, моё сугубо личное мнение.
|
Наверх
|
|
Vadim Ushakov
|
Wednesday 09.02.2005 06:18
|
|
|
Зарегистрирован: Monday 07.02.2005 04:57
Местоположение: Россия, Красноярск
Сообщений - 35
|
czarker писал(а): ... Видимо на окошках в Bell Labs стоят горшки с прорастающим оттуда кодом... А что, это мысль... Мне почему-то представился небритый и хмурый с похмелья Торвальдс, который высаживает в горшки трехдюймовые дискеты и поливает их прокисшим позавчерашним пивом...
Если серьезно, то большинство программистов просто НЕ УМЕЕТ проектировать код. Если есть поставленная задача, значит есть математически точный алгоритм, решающий эту задачу (надеюсь, никто не будет спорить с тем, что информатика имеет непосредственное отношение к математике и математической логике). Если есть алгоритм, то программа - это всего лишь форма записи этого алгоритма. Цель программиста - решить задачу и составить алгоритм, а не заниматься бесконечными отладками кода, полагаясь на интуицию, опыт, "шестое чуство" и другие ненаучные методы. (В математике алгоритм принято доказывать, в программировании - тестировать. Увы.) К сожалению, большая часть программ работает по принципу, который точно подметил Максим Коротков: Максим Коротков писал(а): ... Школа, два одиннадцатиклассника за компьютером. Слышу следующий разговор:
- «Ты написал топологическую сортировку?»
- «Да»
- «Она работает?»
- «Да, но я не уверен, что она делает топологическую сортировку...»
czarker писал(а): ... Так или иначе, код, который уже отладили, будет стабильней неотлаженного. Это первая аксиома.
Есть такое мнение: хорошо спроектированная программа в отладке не нуждается. Но даже если алгоритм верен, отладка может понадобиться если мы неправильно записали алгоритм на языке программирования. Поэтому желательно автоматизировать процесс трансляции алгоритма (представленного в виде диаграмм машины состояний, блок-схем, формул и других форм записи, понятных человеку) в текст программы (который человеку далеко не очевиден). Для этого не нужно изобретать велосипед - все уже изобрели до нас. Интересующихся отсылаю к следующим сайтам:
http://is.ifmo.ru/projects/
http://www.softcraft.ru/
Это все немного не по теме этой ветки форума... Извините. Czarker нечаянно наступил на мою любимую мозоль, вот меня и понесло.
|
Наверх
|
|
czarker
|
Wednesday 09.02.2005 15:43
|
|
|
Зарегистрирован: Monday 10.01.2005 17:26
Местоположение: Москва, т.д.
Сообщений - 48
|
Vadim Ushakov
Вы упустили из вида один момент: компиляторы/трансляторы и прочее ПО тоже несовершенно, так что идеальный алгоритм, абсолютно корректно переведённый в код языка программирования тоже может нуждаться в отладке.
Да и ошибки в дизайне программы может допустить любой специалист, а опыт участников проекта 3ОС, судя по всему, не настолько велик, чтобы они могли быть твёрдо уверены в том, что спроектировали систему оптимальным образом.
Но это всё, конечно, моё сугубо личное мнение.
|
Наверх
|
|
Модераторы: Roman I Khimov, netwizard. |
|
|