Comments 72
чтобы переписать Linux с нуля, требуется работа 200 программистов в течение полугода и обойдётся это в $268 млн (при средней зарплате программиста)
Это где же средняя зарплата программиста больше двух миллионов долларов в год? ( $268 mio / 200 человек / 0,5 года )
+2
Математик… Делим не на 0.5, а на 6, т. к. зарплата каждый месяц. Это 223 тысячи с хвостиком в месяц. Но учтите, что это не сухая зарплата, а ещё офисы, инфраструктура и всё сопутсвующее. Хотя согласен, даже за вычетов всего нехилая зарплата, хочу такую :)
-11
Математик… 0,5 года — это и есть 6 месяцев. Если делишь на 6, то получаешь зарплату за месяц, умножай потом на 12 или 13, чтобы получить за год. 223 тысячи с хвостиком в месяц — это и будет больше двух миллионов долларов в год.
Предположим, что офисы, инфраструктура и всё сопутсвующее обойдётся пусть в 15 тысяч долларов в месяц на человека.
Остаток получится больше двух миллионов долларов в год.
Интересно, кто же платит разработчикам бесплатного ядра Linux такие зарплаты?
Предположим, что офисы, инфраструктура и всё сопутсвующее обойдётся пусть в 15 тысяч долларов в месяц на человека.
Остаток получится больше двух миллионов долларов в год.
Интересно, кто же платит разработчикам бесплатного ядра Linux такие зарплаты?
+8
всего-то почти полторы штуки баксов в час :)
+3
единственно разумное объяснение — это 180 человеко-дней (т. е. с графиком 24/7), а не просто 180 рабочий дней.
0
Тоже очень интересно=)
0
Хочу среднюю зарплату!!! Ну или хотяб половину!!! Даже на 1/10 от средней зарплаты согласен!!!
+2
Там не полгода, а 10 лет:
Total Physical Source Lines of Code (SLOC) = 6,399,191
Schedule Estimate, Years (Months) = 9.59 (115.10)
Estimated Average Number of Developers (Effort/Schedule) = 206.81
Total Estimated Cost to Develop = $ 267,961,839 (average salary = $56,286/year, overhead = 2.40).
Поправьте перевод.
Total Physical Source Lines of Code (SLOC) = 6,399,191
Schedule Estimate, Years (Months) = 9.59 (115.10)
Estimated Average Number of Developers (Effort/Schedule) = 206.81
Total Estimated Cost to Develop = $ 267,961,839 (average salary = $56,286/year, overhead = 2.40).
Поправьте перевод.
+2
UFO just landed and posted this here
а сколько потратили наши «сами знаете кто» на внедрение пингвинов в школы? похоже за эти деньги можно было с нуля переписать все. хм. и сделать что-то типо сами знаете чего;)
0
А главное, что этот код стремительно устаревает — давно нужно было переходить на C++ и объектную модель. Ядро всё сложнее, документации отстаёт всё больше, некоторые ошибки исправляются годами. Совместимость между версиями ядра достаточно слабая. Есть мнение, что ядро нужно срочно переделывать с ноля, но это никому не нужно.
-7
In fact, in Linux we did try C++ once already, back in 1992. It sucks. Trust me — writing kernel code in C++ is a BLOODY STUPID IDEA.
kerneltrap.org/node/2067
kerneltrap.org/node/2067
+13
Кстати, сильный аргумент :) Но во-первых с 1992 года технологии программировании ушли далего вперёд. А во вторых, я всё же имею ввду не C++, как средство разработки, а скорее как среду позволяющию добиться большей структурированности и унифицированости кода.
0
Кстати, сильный аргумент :) Но, во-первых с 1992 года технологии программировании ушли далего вперёд и сейчас мыы имеем достаточно приммернов очень сложных проектов разработаных на C++. А во вторых, я всё же имею в виду не C++, как средство разработки, а скорее как инструмент позволяющию добиться большей структурированности и унифицированости кода. В принципе, можно и С использовать, но структура ядра должна быть объектная с жёсткой иерархией и не менее жёсткими требованиями по соместимости, в т. ч. бинарной. Хотя в целом, я всё же за C++ :)
0
Кстати, сильный аргумент :) Но, во-первых с 1992 года технологии программировании ушли далего вперёд и сейчас мыы имеем достаточно приммернов очень сложных проектов разработаных на C++. А во вторых, я всё же имею в виду не C++, как средство разработки, а скорее, как инструмент позволяющию добиться большей структурированности и унифицированости кода. В принципе, можно и С использовать, но структура ядра должна быть объектная с жёсткой иерархией и не менее жёсткими требованиями по соместимости, в т. ч. бинарной. Хотя в целом, я всё же за C++ :)
0
Линус Торвальдс с вами не согласен насчет С++
thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918
thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918
0
Я это мнение слышу уже лет десять. И где говорившие и где ядро?
0
> Совместимость между версиями ядра достаточно слабая.
Укажите мне систему с лучшей совместимостью между, скажем, последовательными версиями ядра. Либо, между версиями ядра за такой же промежуток времени.
Укажите мне систему с лучшей совместимостью между, скажем, последовательными версиями ядра. Либо, между версиями ядра за такой же промежуток времени.
0
Гхм… WIndows? Я могу на XP запустить половину драйверов от системы десятилетней давности и 100% драйверов от системы восьмилетней давности. И это без всякой пересборки ядра или самих драйверов. На Линуксе в лучшем случае драйвера нужно пересобирать, что вызывает проблеммы у производителей не желающий открывать программынй интерфейс или архитектуру своего железа (например, производители видеокарт). В худшем — вообще ничего не работает. Живой пример — попытайтесь поставить драйвера от VMWare — с удивлением обнаружите что в ядрах отличающихся последней цифрой ревиизии чудесным образом появляются и исежазают поля структур, менябтся парметры функций и т. п. В резульате имеет монстрический код на все возможные варианты ядер, плюс полная неопределённость в будующем — с новыми ядрами драйвера просто не работают. Объектная модель ядра совместно с чем-то вроде COM кроме того, что сильно упрощает отладку и разработку модулей ядра, но и позволяет добиться крайне высокой обратной соместимости — изменения ядра производтся только путём расширения существующих интерфейсов и механизмы наследования. Ну про неизмеримо большую прозрачность и проверяемость кода я вообще молчу.
0
Восьмилетней давности? Окстись, вообще-то сама XP и есть восьмилетней давности. Чего тут удивляться, что те драйвера в ней работают? Это нормально, хотя даже и это не всегда так. Известны случаи нарушения работы драйверов в разных Service Pack, что формально считается всё-таки одной и той же версией ядра (куча драйверов для специального железа просто не работает на XP SP3, хотя на SP2 работало отлично).
Уж про совместимость драйверов между разными версиями ядра — скажем, XP и Vista — и говорить не приходится.
Если бы ты драйвера восьмилетней давности в Vista запустил — был бы другой разговор. А по факту, с таким оборудованием Vista и не работает — считает, что «устарело и не нужно». (Для тех, кто не знает — в индустрии сейчас всё ещё широко используются устройства для шины ISA, 20-летней давности — видел даже материнскую плату под Core2 — на ней размещены 1 PCIe 16x, 3 PCI 2.1 и 1 ISA слоты).
В линуксе с драйверами ситуация просто совсем другая, здесь (т. к. система открытая) не имеет смысла рассматривать закрытые драйвера. А открытые вообще не меняются от версии к версии и работают. Даже зачастую можно драйвер, собранный для другой версии ядра, запустить.
«Закрытые» драйвера для Linux на самом деле имеют закрытый алгоритмический модуль (да пожалуйста, не открывайте, раз стыдно показать этот кошмар), и открытый интерфейсный модуль. Который отлично собирается под достаточно длинный ряд ядер (нужно только иметь конфигурацию ядра и заголовочные файлы, т. е. определение интерфейса). Для примера — NVidia и уже упомянутый VMWare.
Уж про совместимость драйверов между разными версиями ядра — скажем, XP и Vista — и говорить не приходится.
Если бы ты драйвера восьмилетней давности в Vista запустил — был бы другой разговор. А по факту, с таким оборудованием Vista и не работает — считает, что «устарело и не нужно». (Для тех, кто не знает — в индустрии сейчас всё ещё широко используются устройства для шины ISA, 20-летней давности — видел даже материнскую плату под Core2 — на ней размещены 1 PCIe 16x, 3 PCI 2.1 и 1 ISA слоты).
В линуксе с драйверами ситуация просто совсем другая, здесь (т. к. система открытая) не имеет смысла рассматривать закрытые драйвера. А открытые вообще не меняются от версии к версии и работают. Даже зачастую можно драйвер, собранный для другой версии ядра, запустить.
«Закрытые» драйвера для Linux на самом деле имеют закрытый алгоритмический модуль (да пожалуйста, не открывайте, раз стыдно показать этот кошмар), и открытый интерфейсный модуль. Который отлично собирается под достаточно длинный ряд ядер (нужно только иметь конфигурацию ядра и заголовочные файлы, т. е. определение интерфейса). Для примера — NVidia и уже упомянутый VMWare.
0
«нет смысла рассматривать закрытые драйвера»?! Что прикажете делать разработчикам уникального железа? Стоимость разработки совего видочипа огромна, а вот скопировать архитектуру можно очень быстро. Это во-первых. А во-вторых на уровне исходников совместимость всё равно очень и очень слабая. Для того же примера — посмотри, что есть драйвера от NVidia — там два вагона заплаток на все мыслимые версии ядер. И всё равно приходится танцевать с бубном. Это я к тому, что берём любой более-менее сложный драйвер и видим целый зоопарк. Но это только часть проблеммы.
Я же не говорю, что Линукс невозможно использовать, я имею смелость утверждать, что ядро линукса начинает отставать от современных требований. И это отставание будет увеличиваться. А причина отставания — крайняя консервативность сообщества и holywar на тему «деды наши так делали и мы будем».
Всякие вопли о том, что «на С можно написать всё, что моэно написать на C++» это сплошная профанация — на ассемблере вообще можно написать всё — так давайте всё на нём писать. Вот только сложность, проверяемость и понятность кода получаются сильно разные.
Если бы Линукс был коммерческим проектом, то ядро уже отчаяно начали модернизировать.
Я же не говорю, что Линукс невозможно использовать, я имею смелость утверждать, что ядро линукса начинает отставать от современных требований. И это отставание будет увеличиваться. А причина отставания — крайняя консервативность сообщества и holywar на тему «деды наши так делали и мы будем».
Всякие вопли о том, что «на С можно написать всё, что моэно написать на C++» это сплошная профанация — на ассемблере вообще можно написать всё — так давайте всё на нём писать. Вот только сложность, проверяемость и понятность кода получаются сильно разные.
Если бы Линукс был коммерческим проектом, то ядро уже отчаяно начали модернизировать.
0
Вы дочитали до конца? Я повторю ту часть, которую вы пропустили:
«Закрытые» драйвера для Linux на самом деле имеют закрытый алгоритмический модуль (да пожалуйста, не открывайте, раз стыдно показать этот кошмар), и открытый интерфейсный модуль. Который отлично собирается под достаточно длинный ряд ядер (нужно только иметь конфигурацию ядра и заголовочные файлы, т. е. определение интерфейса). Для примера — NVidia и уже упомянутый VMWare.
Мне не приходится танцевать с бубном, когда я работаю с ними. Сколько ни юзал разных видеокарт от NVidia, или версий VMWare (сейчас отказался в пользу Xen) — всегда emerge nvidia-drivers или vmware-modules, и всё сразу же работает. Повторю, это как раз те вещи, которые работают сразу и без вопросов. Есть более другие железки, с которыми проблемы, но и тут вопросы постепенно разрешаются.
Линукс — это очень даже коммерческий продукт. Кстати, вот вам и пример как «скопировать архитектуру легко»: вот она, открытая популярная архитектура. Много копий насчитаете? Их нет вообще.
А вот вам другой пример популярной открытой архитектуры — Windows NT (да, именно открытой, потому, что API опубликован и доступен). Есть попытка скопировать — это ReactOS. Как вам копия? А ещё есть попытка эмулировать эту архитектуру на базе другой — Wine. Тоже классно.
С оборудованием то же самое: никто не просит производителей железа раскрывать внутреннее устройство их гениальных видеочипов. Речь идёт об открытии интерфейса к этим видеочипам. Мне вполне хватит чёрного ящика, про который я только знаю, что если ему сказать «Ав» он на выходе нарисует собачку, и всё. Это абсолютно не раскроет мне деталей, как это он делает.
И, в довершение — к теме «почему не C++»: а у вас никогда не было мысли, а почему же в Windows серии NT ядро не на C++? Там ведь тоже в основном C и немного ассемблера.
А где появился C++ в ядре — появились и требования «1Гб ОЗУ и 3D-ускоритель для запуска голой операционки». Очень современные требования.
«Закрытые» драйвера для Linux на самом деле имеют закрытый алгоритмический модуль (да пожалуйста, не открывайте, раз стыдно показать этот кошмар), и открытый интерфейсный модуль. Который отлично собирается под достаточно длинный ряд ядер (нужно только иметь конфигурацию ядра и заголовочные файлы, т. е. определение интерфейса). Для примера — NVidia и уже упомянутый VMWare.
Мне не приходится танцевать с бубном, когда я работаю с ними. Сколько ни юзал разных видеокарт от NVidia, или версий VMWare (сейчас отказался в пользу Xen) — всегда emerge nvidia-drivers или vmware-modules, и всё сразу же работает. Повторю, это как раз те вещи, которые работают сразу и без вопросов. Есть более другие железки, с которыми проблемы, но и тут вопросы постепенно разрешаются.
Линукс — это очень даже коммерческий продукт. Кстати, вот вам и пример как «скопировать архитектуру легко»: вот она, открытая популярная архитектура. Много копий насчитаете? Их нет вообще.
А вот вам другой пример популярной открытой архитектуры — Windows NT (да, именно открытой, потому, что API опубликован и доступен). Есть попытка скопировать — это ReactOS. Как вам копия? А ещё есть попытка эмулировать эту архитектуру на базе другой — Wine. Тоже классно.
С оборудованием то же самое: никто не просит производителей железа раскрывать внутреннее устройство их гениальных видеочипов. Речь идёт об открытии интерфейса к этим видеочипам. Мне вполне хватит чёрного ящика, про который я только знаю, что если ему сказать «Ав» он на выходе нарисует собачку, и всё. Это абсолютно не раскроет мне деталей, как это он делает.
И, в довершение — к теме «почему не C++»: а у вас никогда не было мысли, а почему же в Windows серии NT ядро не на C++? Там ведь тоже в основном C и немного ассемблера.
А где появился C++ в ядре — появились и требования «1Гб ОЗУ и 3D-ускоритель для запуска голой операционки». Очень современные требования.
0
эээ… с чего бы это C++ был медленнее чем C? Хотя, 5% потери производительности я допускаю — если не сильно связываться с оптимизация и не усложнять структуру.
Но чёрт с ним с C и C++. Вот скажите мне, дорогой товарищ, Вы не считаете ядро Linux чрезвычайно сложным, запутаным и практическине документированым?
Но чёрт с ним с C и C++. Вот скажите мне, дорогой товарищ, Вы не считаете ядро Linux чрезвычайно сложным, запутаным и практическине документированым?
0
Сделай патч (тм)
0
Ядро Linux, разумеется, сложное, запутанное и слабодокументированное. Последнее — бич открытых проектов, первое — фактически неизбежность: любое практически используемое ядро в конце концов становится сложным и запутанным ибо ядро, разработчики которого неизменно отвечающие «шашечки» на вопрос «вам шашечки или ехать?» рано или поздно теряют всех пользователей.
0
«нет смысла рассматривать закрытые драйвера»?! Что прикажете делать разработчикам уникального железа?Давайте не будем рассказывать сказок. Для уникального железа вполне можно писать драйвера и включать их в ядро (там есть поддержка экспериментальных систем SGI, которых и 100 штук выпущено не было, к примеру).
Стоимость разработки совего видочипа огромна, а вот скопировать архитектуру можно очень быстро.Восстановление чипа по драйверу — бред. Заметьте что Intel и AMD (выпускающие вполне конкурентоспособные железки, особенно последняя) этого не боятся и понятно даже почему не боятся: новое железо на этот рынок выходит раз в год-полтора, а для того чтобы вопроизвести железяку нужно года два-три. В своё время на этом советский союз погорел со своими знаменитыми шлифовальными станками.
А во-вторых на уровне исходников совместимость всё равно очень и очень слабая.Совместимость на уровне исходников замечательная: много вы можете назвать драйверов, которые бы были выкинуты из ядра и перестали работать? Если они не включены в официальное ядро — вы сами себе злобный вредитель.
Это я к тому, что берём любой более-менее сложный драйвер и видим целый зоопарк.Это вы о каком драйвере? Когда он был включён в ядро? Иногда экспериментальные драйвера включаются до того, как код будет почищен в достаточной мере, но это редкость. Обычно со временем это исправляется.
Я же не говорю, что Линукс невозможно использовать, я имею смелость утверждать, что ядро линукса начинает отставать от современных требований.И какие же это требования, извините? Можете привести пример ядра, которое удолетворяет им лучше?
0
Можете пинать меня ногами, но ядром WinXP — на голову лучше. Оно конечно далеко не идеал, но гораздо более структурирвано и имеет бОльший потенциал развития.
-1
Это из какого же места тогда растут руки у программистов в Microsoft, что они более структурированное ядро с «бо́льшим потенциалом» портируют на новую платформу (x86-64) вдвое дольше, чем кривое и косое ядро под названием Linux?
Я скорее поверю что в WinXP ядро кривое чем в то, что у Microsoft'а денег нет, чтобы нанять нормальных разработчиков. Оно, может, красиво смотрится в рекламных проспектах и на доске в учебной аудитории с высоты птичьего полёта (такие красивые подсистемы, замечательные концепции — прелесть), но если сравнить хотя бы интерфейс CreateProcessAsUser с набором соотвествующих Linux'овых функций (clone, exec, setuid/setgid, ...), то как-то не видно этой стойности нифига. А если чуток копнуть, то там вообще волосы дыбом становятся. Как ядро с таким количеством заплаток, ненужного дублирования кода и «особых случаев» вообще запускается — загадка.
Я скорее поверю что в WinXP ядро кривое чем в то, что у Microsoft'а денег нет, чтобы нанять нормальных разработчиков. Оно, может, красиво смотрится в рекламных проспектах и на доске в учебной аудитории с высоты птичьего полёта (такие красивые подсистемы, замечательные концепции — прелесть), но если сравнить хотя бы интерфейс CreateProcessAsUser с набором соотвествующих Linux'овых функций (clone, exec, setuid/setgid, ...), то как-то не видно этой стойности нифига. А если чуток копнуть, то там вообще волосы дыбом становятся. Как ядро с таким количеством заплаток, ненужного дублирования кода и «особых случаев» вообще запускается — загадка.
0
Linux 64 имеет полную бинарную соместимость с 32-ой верснией? Дравера/модули ядра 32-бита грузить можно? (На случай, если драйвер 64-бита ещё не вышел). К 64-битному линуксу есть полное описание всех системых функций? Всего вдвое дольше? :)
А теперь посмотрите, как обстоит дело с бинарной совместимостью драйверов у семейства Windows. И как эти дравйвера пишутся. Да, там своих граблей полный огрод, но ядро NT, есть мнение, одной из самые перспектиынх и мощных ядер. Куда заведёт Vista не понятно, но Linux'у имело смысл взять лучшее от NT, а не упорно совершать те же ошибки, что Микрософт.
А теперь посмотрите, как обстоит дело с бинарной совместимостью драйверов у семейства Windows. И как эти дравйвера пишутся. Да, там своих граблей полный огрод, но ядро NT, есть мнение, одной из самые перспектиынх и мощных ядер. Куда заведёт Vista не понятно, но Linux'у имело смысл взять лучшее от NT, а не упорно совершать те же ошибки, что Микрософт.
0
Linux 64 имеет полную бинарную соместимость с 32-ой верснией?Абсолютной совместимости нет ни в Windows, ни в Linux, но да, совместимость неплохая, старые игрушки ходят «на ура».
Дравера/модули ядра 32-бита грузить можно? (На случай, если драйвер 64-бита ещё не вышел).Что значит «не вышел»? Их все портировали вместе с остальным ядром. Если что-то не компируется/не работает — сообщите разработчикам, они подобные вещи быстро фиксят.
К 64-битному линуксу есть полное описание всех системых функций?А в Windows есть? Не подскажите где написано как отличить раскладку Дворака от обычной QWERTY используя функцию GetKeyboardLayout (или любую другую)?
А теперь посмотрите, как обстоит дело с бинарной совместимостью драйверов у семейства WindowsОтвратительно. При переходе с Windows2000 на WindowsXP у меня перестал работать USB'шный IrDA адаптер. На сайте производителя нифига не было, пришлось разыскивать японские драйвера для какой-то другой железяки, править .inf файл… бррр. Linux опознал железяку сразу же.
И как эти дравйвера пишутся.Как только не пишутся. Что ни драйвер — то «шедевр». Даже если они WHQL-сертифицированные.
Да, там своих граблей полный огрод, но ядро NT, есть мнение, одной из самые перспектиынх и мощных ядер.Угу. И именно поэтому железа оно поддерживает меньше, чем Linux, ресурсов ему требуется раза в два больше, а простые операции (скажем создание нити) занимают куда больше времени чем в Linux. Ну и кому эта «мощща» нужна?
Куда заведёт Vista не понятно, но Linux'у имело смысл взять лучшее от NT, а не упорно совершать те же ошибки, что Микрософт.Не очень понятно как можно «взять всё лучшее», если этого лицензия не позволяет. А ошибок Microsoft'овских они не повторяют. Ну по крайней мере стараются не повторять. Самая главная ошибка Microsoft: попытка создать и поддерживать внутриядерный API. Не работает это. Появляются всё новые и новые «модели драйверов», а поддержка старых глючит со вренемем всё больше и больше, так что драйвера даже от Windows2000 к WindowXP не всегда подходят, а исправить их Microsoft не может, так как у него исходников нет.
Решение, использованное разработчиками Linux просто и элегантно: драйвера включены в само ядро и их поддержка осуществляется разработчиками ядра. Работает неплохо. За исключением тех железок, производители которых становятся «в позу» и сами себе устраивают проблемы.
0
«Что значит «не вышел»? Их все портировали вместе с остальным ядром. Если что-то не компируется/не работает — сообщите разработчикам, они подобные вещи быстро фиксят.»
Не вышел значит не вышел. Не все драйвера включены в ядро. Есть масса железа, дравйвера которого поставляет производитель.
«Угу. И именно поэтому железа оно поддерживает меньше, чем Linux, ресурсов ему требуется раза в два больше, а простые операции (скажем создание нити) занимают куда больше времени чем в Linux. Ну и кому эта «мощща» нужна?»
Про железо — не правда. Вы хотите скахть, что любое купленное мною китайское барахло, вроде графического планшета или сканера заработает с Linux? :) Про нити — не надо путать хрен с морковкой — нити линукса и потоки windows это соврешенно разные вещи. Моща нужна тем, кто активно использует и/или проивзодит нестандартное железо, например.
«Внутриядерный API» на пару с бинарной совместимостью и неплохим централизованым документированием позволил микрсофту иметь поддержку совершенно любого железа — любой самый китайский производитель может позволить себе написать драйвера под эту ОС. «Моделей драйверов» у Микрософт всего три (с половиной). У Линукса вообще такого понятия нет — интерфейсы нещадно правятся самым неожиданным. С драйверами и микрософта чудеса бывают, но в целом — имеется очень не плохая совместимость. Скажите, а вот если я делаю свою уникальное железо — мне тоже драйвера в ядро включать? А если я этого железа два десятка делаю? А если я не хочу код раскрывать? Давайте посмотрим сколько веб камер или USB-сетевый карт или WiFi-адаптеров из всеобщего зоопарка заработают под Linux? Включать драйвера в ядро — вообще дурная идея, желаза слишком много и они слишком активно меняется. Можно говорить о пользе поддержик некоторого базового наиболее поплуярного железа, чтобы можно было поставить система «из коробки», но не более того. У меня дома есть, как минимум десят устройств, о существовании которых, Линукс не подозревает.
Но мне кажется, что мы скатываемся к холивору на тему как я ось лучше, а вопрос вроде стоял сугубо по ядру.
Лично персонально мне кажется, что для линукса нужно было бы заморозить ядро, определиться в каком направлении будет идти развитие, определить интерфейсы, которые будут поддерживаться и не будут меняться и максимально документировать то, что есть. Вместо этого мы видим со трашной силой выходящие версии ядра, таинственным образом меняющиеся программные интерфейсы, о которых не знает никто кроме пары человек и какое-то метание от одной реализации к другой.
Живой пример — скачал я недавно новое «стабильное» ядро. Попытался собрать драйвера от VmWare. Не собралось. Стал копать — изменены некоторые стрктуры, выховы функций и т. п. Вот в яре на диницу меньше всё было, а тут — нет! Стал копать в интернете — ничего! Каким-то чудом нашёл переписку Торвальда где он упомянал, ч то не плохо было бы пару структур поменять. Заодно вообще идеологию изменить. Это прекрансно. А если я маленькая фирма разработчик джелеза? Выпустил железку. Напрягся и написал драйвер под Линукс. Мне теперь всю жизнь все ядра испытывать и драйвера под каждый релиз переписывать? При этом об изменениях я должен сам догадываться уже после выхода ядра? И о том, как теперь это все работает — лично Тордвальда спрашивать? А если штат всего десять человек из которых только три программиста? Бросить всё и заниматься непрерывным переписыванием старых драйверов? Шантажом и угрозами требовать, чтоб коре-дивелоперы включили мои драйвера в ядро и сами их правили? Или что?
Не вышел значит не вышел. Не все драйвера включены в ядро. Есть масса железа, дравйвера которого поставляет производитель.
«Угу. И именно поэтому железа оно поддерживает меньше, чем Linux, ресурсов ему требуется раза в два больше, а простые операции (скажем создание нити) занимают куда больше времени чем в Linux. Ну и кому эта «мощща» нужна?»
Про железо — не правда. Вы хотите скахть, что любое купленное мною китайское барахло, вроде графического планшета или сканера заработает с Linux? :) Про нити — не надо путать хрен с морковкой — нити линукса и потоки windows это соврешенно разные вещи. Моща нужна тем, кто активно использует и/или проивзодит нестандартное железо, например.
«Внутриядерный API» на пару с бинарной совместимостью и неплохим централизованым документированием позволил микрсофту иметь поддержку совершенно любого железа — любой самый китайский производитель может позволить себе написать драйвера под эту ОС. «Моделей драйверов» у Микрософт всего три (с половиной). У Линукса вообще такого понятия нет — интерфейсы нещадно правятся самым неожиданным. С драйверами и микрософта чудеса бывают, но в целом — имеется очень не плохая совместимость. Скажите, а вот если я делаю свою уникальное железо — мне тоже драйвера в ядро включать? А если я этого железа два десятка делаю? А если я не хочу код раскрывать? Давайте посмотрим сколько веб камер или USB-сетевый карт или WiFi-адаптеров из всеобщего зоопарка заработают под Linux? Включать драйвера в ядро — вообще дурная идея, желаза слишком много и они слишком активно меняется. Можно говорить о пользе поддержик некоторого базового наиболее поплуярного железа, чтобы можно было поставить система «из коробки», но не более того. У меня дома есть, как минимум десят устройств, о существовании которых, Линукс не подозревает.
Но мне кажется, что мы скатываемся к холивору на тему как я ось лучше, а вопрос вроде стоял сугубо по ядру.
Лично персонально мне кажется, что для линукса нужно было бы заморозить ядро, определиться в каком направлении будет идти развитие, определить интерфейсы, которые будут поддерживаться и не будут меняться и максимально документировать то, что есть. Вместо этого мы видим со трашной силой выходящие версии ядра, таинственным образом меняющиеся программные интерфейсы, о которых не знает никто кроме пары человек и какое-то метание от одной реализации к другой.
Живой пример — скачал я недавно новое «стабильное» ядро. Попытался собрать драйвера от VmWare. Не собралось. Стал копать — изменены некоторые стрктуры, выховы функций и т. п. Вот в яре на диницу меньше всё было, а тут — нет! Стал копать в интернете — ничего! Каким-то чудом нашёл переписку Торвальда где он упомянал, ч то не плохо было бы пару структур поменять. Заодно вообще идеологию изменить. Это прекрансно. А если я маленькая фирма разработчик джелеза? Выпустил железку. Напрягся и написал драйвер под Линукс. Мне теперь всю жизнь все ядра испытывать и драйвера под каждый релиз переписывать? При этом об изменениях я должен сам догадываться уже после выхода ядра? И о том, как теперь это все работает — лично Тордвальда спрашивать? А если штат всего десять человек из которых только три программиста? Бросить всё и заниматься непрерывным переписыванием старых драйверов? Шантажом и угрозами требовать, чтоб коре-дивелоперы включили мои драйвера в ядро и сами их правили? Или что?
0
Не вышел значит не вышел. Не все драйвера включены в ядро.А почему нет?
Есть масса железа, дравйвера которого поставляет производитель.И кто в этом виноват?
Про железо — не правда. Вы хотите скахть, что любое купленное мною китайское барахло, вроде графического планшета или сканера заработает с Linux? :)«Любое китайское барахло» может и с Windows не заработать. Старое — не заведётся под Vista, новое — под XP. В совокупности Linux поддерживает железа строго больше, чем любая одиночная версия Windows.
Про нити — не надо путать хрен с морковкой — нити линукса и потоки windows это соврешенно разные вещи.О как. И как же мне сделать простую, обычную нить в Windows, которую можно было бы сравнить с Linux'овой?
Моща нужна тем, кто активно использует и/или проивзодит нестандартное железо, например.Вот как раз среди них Linux почему-то более популярен чем Windows.
Скажите, а вот если я делаю свою уникальное железо — мне тоже драйвера в ядро включать? А если я этого железа два десятка делаю? А если я не хочу код раскрывать?Да ради бога — возьмите одну конкретную версию ядра, напишите под неё драйвер и используйте. Зачем вам в этом случае поддержка всего зоопарка (Ubuntu, Fedora, etc)?
Давайте посмотрим сколько веб камер или USB-сетевый карт или WiFi-адаптеров из всеобщего зоопарка заработают под Linux?Давайте. И сравним это это с тем, что переварит Vista. Только чур: железо возьмём, ну, скажем, 2003 года выпуска. То что разработчики железа выпускают драйвера под Windows, но не под Linux вряд ли можно отнести к достоинствам собственно самой операционки. Под что хотят — под то и выпускают. А вот как эти драйвера работают по прошествии некоторого времени — тут от операционки таки многое зависит…
Включать драйвера в ядро — вообще дурная идея, желаза слишком много и они слишком активно меняется.А зачем они меняются? Чем отличаются бесчисленные китайские поделки сделанные на одном чипсете? По-моему эта проблема высосана из пальца: разных несовместимых железок неоправданно много потому, что Windows разрешает производителям там себя везти. Отчего, в конечном итоге, страдают рядовые покупатели. Когда производитель вместо поддержки, ну скажем, второго сервис-пака для Windows XP предлагает купить у него новую железку (пример, опять-таки, из личного опыта — как раз со специализированным железом).
Лично персонально мне кажется, что для линукса нужно было бы заморозить ядро, определиться в каком направлении будет идти развитие, определить интерфейсы, которые будут поддерживаться и не будут меняться и максимально документировать то, что есть.Эту технологию пробовала куча фирм: Microsoft, Sun, Apple. Не работает. Либо глючит, либо не работает вообще.
А если штат всего десять человек из которых только три программиста?И вот эти три программиста освоили те самые «три с половиной модели драйверов», написали драйвера, протестировали их с десятком конфигураций Windows (Windows XP SP2/3;Windows Vista SP1/2; Windows 2003, Windows 2008 — всё это 32bit/64bit) плюс ещё разные Hotfix'ы? Вы сами в это верите? Вы в любом случае сделаете поддержку только пары самых распространённых конфигураций — и не более того. Но в Linux у вас есть шанс: если ваш драйвер включат в ядро, то дальше уже сами пользователи и разработчики ядра будут разбираться с возникающими в нём проблемами. А вот как раз в Windows — да, вам придётся либо «до гроба» заниматься его поддержкой, либо заявить что-нибудь типа «мы поддерживаем только Windows XP и Windows XP SP1» — что явно не порадует пользователей…
0
И как можно под линукс создать аналог потока Windows? :) Не процесс, не нить, а имено поток в пределах процесса? У них разные модели многопоточности.
«И вот эти три программиста освоили те самые «три с половиной модели драйверов», написали драйвера, протестировали их с десятком конфигураций Windows (Windows XP SP2/3;Windows Vista SP1/2; Windows 2003, Windows 2008 — всё это 32bit/64bit) плюс ещё разные Hotfix'ы? »
Вот Вы когда-нибдь под Windows писали? Hot-fix'ы влияются на стабильность и безопасноть ситемы и практически не влияют на совместимость. Ниодну из написанных по WIndows программ в нашей компании не пришлось даже перекомпилировать за восемь лет. Под Линукс регулярно приходится править и пересобирать код, т. к. после очередного обновления системы выясняется что-то то не работает.
«А вот как раз в Windows — да, вам придётся либо «до гроба» заниматься его поддержкой, либо заявить что-нибудь типа «мы поддерживаем только Windows XP и Windows XP SP1»»
Нужно очень сильно постараться и очень не внимательно читать MSDN чтобы написать программу работающую ТОЛЬКО под SP1. 90% программ заработают под Win95. Для сетевых програм придётся обновить TCP/IP. 100% правильно написаных заработают под Win Nt/2k/XP. 90% заработает под Vista. Виста имеет очень не плохую обратную совместимость с XP/2k — пока что все правильно написаные прогрммы заработали и там и там. Таким образом покрываются все ОС за последний 10 лет. Драйвера достаточно писать под Win2k и Vista. Мне кажется, что Вы либо, не работали и не писали под Windows, либо сознательно искажается факты.
«И вот эти три программиста освоили те самые «три с половиной модели драйверов», написали драйвера, протестировали их с десятком конфигураций Windows (Windows XP SP2/3;Windows Vista SP1/2; Windows 2003, Windows 2008 — всё это 32bit/64bit) плюс ещё разные Hotfix'ы? »
Вот Вы когда-нибдь под Windows писали? Hot-fix'ы влияются на стабильность и безопасноть ситемы и практически не влияют на совместимость. Ниодну из написанных по WIndows программ в нашей компании не пришлось даже перекомпилировать за восемь лет. Под Линукс регулярно приходится править и пересобирать код, т. к. после очередного обновления системы выясняется что-то то не работает.
«А вот как раз в Windows — да, вам придётся либо «до гроба» заниматься его поддержкой, либо заявить что-нибудь типа «мы поддерживаем только Windows XP и Windows XP SP1»»
Нужно очень сильно постараться и очень не внимательно читать MSDN чтобы написать программу работающую ТОЛЬКО под SP1. 90% программ заработают под Win95. Для сетевых програм придётся обновить TCP/IP. 100% правильно написаных заработают под Win Nt/2k/XP. 90% заработает под Vista. Виста имеет очень не плохую обратную совместимость с XP/2k — пока что все правильно написаные прогрммы заработали и там и там. Таким образом покрываются все ОС за последний 10 лет. Драйвера достаточно писать под Win2k и Vista. Мне кажется, что Вы либо, не работали и не писали под Windows, либо сознательно искажается факты.
0
И как можно под линукс создать аналог потока Windows? :)А зачем?
Не процесс, не нить, а имено поток в пределах процесса? У них разные модели многопоточности.Ещё раз: какую задачу вы хотите решить? Можно подумать вы этого не читали. Какую цель я преследую создавая новый поток в Linux я понимаю: я хочу обработать, скажем, запрос от пользователя. Получаю запрос, запускаю отдельный процесс (в отдельном потоке, то есть, возможно, на другом ядре или процессоре), готов принимать следующий запрос. Распространённая архитектура. Работает и в Linux и в Windows, но в Windows — хуже ибо создание потоков там дороже, чем создание процесса в Linux, а отсутствие поддержки COW затрюдняет высвобождение ресурсов после окончания работы вспомогательного потока. А зачем вам «аналог потока Windows»? Какую высокоуровневую задачу вы можете решать с его помощью?
Вот Вы когда-нибдь под Windows писали?Да, имел несчастье. Правда с Vista дело не имел и, надеюсь, уже не буду.
Ниодну из написанных по WIndows программ в нашей компании не пришлось даже перекомпилировать за восемь лет. Под Линукс регулярно приходится править и пересобирать код, т. к. после очередного обновления системы выясняется что-то то не работает.И о чём это говорит? О том, что вы не можете выбрать стабильный дистрибутив и пытаетесь использовать какую-нибудь Fedora не по назначению?
Нужно очень сильно постараться и очень не внимательно читать MSDN чтобы написать программу работающую ТОЛЬКО под SP1.Поищите в Google Pinnacle Dv500 и SP2 — увидите кучу страдальцев, которые с этим маются. Есть неофициальные патчи, сделанные добрыми инженерами и выложенные на форуме. Найти их не так-то просто, а официальная позиция Pinnacle: мы поддерживаем только Windows XP SP1, хотите работать с более новыми версиями — покупайте другую железку. Вроде как не самая «китайская» фирма.
Мне кажется, что Вы либо, не работали и не писали под Windows, либо сознательно искажается факты.А мне кажется что вы выставляете критерием совершенства системы её похожесть на Windows.
0
«Не вышел значит не вышел. Не все драйвера включены в ядро.
А почему нет?
Есть масса железа, дравйвера которого поставляет производитель.
И кто в этом виноват?»
Повторяю — наша конторая производит некую железку — нам что теперь, требовать включения наших драйверов в ядро? А железку у нас меняется раз в пол года — рынок знаете ли — заказчики требуют. Или нам переписывать драйвера под каждый релиз?
«Да ради бога — возьмите одну конкретную версию ядра, напишите под неё драйвер и используйте. Зачем вам в этом случае поддержка всего зоопарка (Ubuntu, Fedora, etc)?»
Я не говорю о совместимости между дистрибутивами — это отделаная песня, но дистрибутивы могут отличатсья и это понятно. Я говорю несоместимости в предалх дистрибутива. Вот мы напсиали свой некий софт под Linux. Большой и сложный. Поставили заказчику систму с системой и этим софтом. Проходит год — в ядре и системе обнаружен некотрое кол-во уязвимостей и нужно обновляться. Обновляемся. Всё перестаёт работать. Т. к. изменилось ядро, изменились версии билиотек. Не обновляться? А как же безопасность? Да путём танцем с бубнами можно всё заставить работать. Но закачик не хочет нанимать программистов — ему нужно чтобы его насосы работали. Приходится высылать специалистов. В результате стоимость обслуживания сильно превышает Windows.
«А зачем они меняются? Чем отличаются бесчисленные китайские поделки сделанные на одном чипсете?»
Повторяю кроме чипсета есть множетсво устройств — от USB-камер и WiFi до промшленного железа. Все они сделаны на своих собственных чипах. Предалагете зконодательно запретить делать несовместимое железо? :) Откуда будет брать новое?
"«Любое китайское барахло» может и с Windows не заработать. Старое — не заведётся под Vista, новое — под XP. В совокупности Linux поддерживает железа строго больше, чем любая одиночная версия Windows."
Т. е. за последние 10+ лет мы имеем только один порог не соместимости? По-моему это прекрасный результат. Я же Вам говорю — возбмите любой компьютерный магазин и посмотрите, что будет работь под Линуск, а что — нет. 30% не заработает. Под Windows получаем 100% заработает.
А почему нет?
Есть масса железа, дравйвера которого поставляет производитель.
И кто в этом виноват?»
Повторяю — наша конторая производит некую железку — нам что теперь, требовать включения наших драйверов в ядро? А железку у нас меняется раз в пол года — рынок знаете ли — заказчики требуют. Или нам переписывать драйвера под каждый релиз?
«Да ради бога — возьмите одну конкретную версию ядра, напишите под неё драйвер и используйте. Зачем вам в этом случае поддержка всего зоопарка (Ubuntu, Fedora, etc)?»
Я не говорю о совместимости между дистрибутивами — это отделаная песня, но дистрибутивы могут отличатсья и это понятно. Я говорю несоместимости в предалх дистрибутива. Вот мы напсиали свой некий софт под Linux. Большой и сложный. Поставили заказчику систму с системой и этим софтом. Проходит год — в ядре и системе обнаружен некотрое кол-во уязвимостей и нужно обновляться. Обновляемся. Всё перестаёт работать. Т. к. изменилось ядро, изменились версии билиотек. Не обновляться? А как же безопасность? Да путём танцем с бубнами можно всё заставить работать. Но закачик не хочет нанимать программистов — ему нужно чтобы его насосы работали. Приходится высылать специалистов. В результате стоимость обслуживания сильно превышает Windows.
«А зачем они меняются? Чем отличаются бесчисленные китайские поделки сделанные на одном чипсете?»
Повторяю кроме чипсета есть множетсво устройств — от USB-камер и WiFi до промшленного железа. Все они сделаны на своих собственных чипах. Предалагете зконодательно запретить делать несовместимое железо? :) Откуда будет брать новое?
"«Любое китайское барахло» может и с Windows не заработать. Старое — не заведётся под Vista, новое — под XP. В совокупности Linux поддерживает железа строго больше, чем любая одиночная версия Windows."
Т. е. за последние 10+ лет мы имеем только один порог не соместимости? По-моему это прекрасный результат. Я же Вам говорю — возбмите любой компьютерный магазин и посмотрите, что будет работь под Линуск, а что — нет. 30% не заработает. Под Windows получаем 100% заработает.
0
Повторяю — наша конторая производит некую железку — нам что теперь, требовать включения наших драйверов в ядро?Ну типа того.
А железку у нас меняется раз в пол года — рынок знаете ли — заказчики требуют.То есть вы каждые полгода создаёте новую железку с нуля, драйвера к которой нужно тоже писать с нуля? Слабо верится, честное слово.
Вот мы напсиали свой некий софт под Linux. Большой и сложный.Это у вас три человека на фирме написали некий «большой и сложный софт под Linux»?
Проходит год — в ядре и системе обнаружен некотрое кол-во уязвимостей и нужно обновляться. Обновляемся. Всё перестаёт работать. Т. к. изменилось ядро, изменились версии билиотек. Не обновляться? А как же безопасность?Вы уверены что вы использовали адекватную версию Linux? Ядро 2.4.9, glibc 2.2.4. Проблемы возникают не чаще, чем при установке сервис-пака на Windows. Если же вы сами выбрали версию Linux, которая не гаратнирует стабильности — то кто ж вам виноват?
Повторяю кроме чипсета есть множетсво устройств — от USB-камер и WiFi до промшленного железа. Все они сделаны на своих собственных чипах. Предалагете зконодательно запретить делать несовместимое железо? :) Откуда будет брать новое?Я не предлагаю ничего запрещать. Я просто хочу сказать что изменения интерфейсов с железом — это зачастую попытка разработчиков переложить свои проблемы на плечи разработчиков OS. Сейчас железо, в большинстве случаев, это всё равно процессор со своим firmware (ARM или MIPS — неважно). Кто мешает вам сделать стабильный API? И почему вы считаете что кто-то, кто в глаза не видел ни вашей железки ни ваших насосов справится с этим лучше???
Т. е. за последние 10+ лет мы имеем только один порог не соместимости?За последние 10 лет мы имеем, по большому счёту, одну новую OS. Но да, вы правы — предметов несовместимости гораздо больше: я видел и железо работавшее с Windows2000, но не с Windows XP и железо не поддерживающее Windows XP SP2 (как бы вам не хотелось выдать желаемое за действительное).
Я же Вам говорю — возбмите любой компьютерный магазин и посмотрите, что будет работь под Линуск, а что — нет. 30% не заработает. Под Windows получаем 100% заработает.Без драйверов от производителя? Хорошо если 10% заработает. А если с драйверами — то при чём тут «техническое совершенство» и «перспективность»? Это от работы маркетологов зависит, не от программистов.
0
UFO just landed and posted this here
Йоп, какие объектные модели, в моде же уже pure functional для беспроблемного распарраллеливания. А завтра будет какое-нибудь генерик-программирование, потом вылезет еще и еще.
Ядро оно на то и ядро, чтобы быть стабильным и низкоуровневым.
Ядро оно на то и ядро, чтобы быть стабильным и низкоуровневым.
+1
UFO just landed and posted this here
Поздравляем разработчиков с очередным рубежем. Пускай и количественным.
0
Вот еще интересные цифры www.opennet.ru/opennews/art.shtml?num=18532
0
1340 баксов в час зарплата у среднего программиста! :-D
-2
Главное чтобы качество не падало.
0
Если бы работа программистов измерялась в строках кода, их всех давно бы на кодирующих роботов заменили. Так что эти цифры и расчёты ничего не говорят. Разве что: «нас много и мы в тельняжках!» ^_^
+3
UFO just landed and posted this here
тоже самое хотел спросить, но тут увидел твой комент :)
0
я думаю точный ответ вам никто не даст.
0
так точный и не нужен, достаточно порядка.
И скажем про 2003 server и 2008 server интереснее было бы знать.
И скажем про 2003 server и 2008 server интереснее было бы знать.
0
Пару лет назад source code Windows утек в сеть — news.cnet.com/2100-7349_3-5158496.html
Microsoft is investigating how a file containing some protected source code to Windows 2000 was posted to several underground sites and chat rooms.
Microsoft is investigating how a file containing some protected source code to Windows 2000 was posted to several underground sites and chat rooms.
0
«Vista состоит из 50 миллионов строк кода, в XP было 35 миллионов строк на момент релиза, затем она выросла примерно до 40 миллионов.» взято отсюда
0
Здравствуйте, я зануда. Итак...
Поправьте, пожалуйста, тег стоимость Lunux, а то обидно. :)
Поправьте, пожалуйста, тег стоимость Lunux, а то обидно. :)
+1
интересно, хоть кто-нибудь из запостивших на лор, хабр и опеннет и многие другие ресурсы задумывался над орректностью цифр?
0
Sign up to leave a comment.
Ядро Linux перевалило за 10 млн строк