Как стать автором
Обновить

Комментарии 72

чтобы переписать Linux с нуля, требуется работа 200 программистов в течение полугода и обойдётся это в $268 млн (при средней зарплате программиста)

Это где же средняя зарплата программиста больше двух миллионов долларов в год? ( $268 mio / 200 человек / 0,5 года )
Математик… Делим не на 0.5, а на 6, т. к. зарплата каждый месяц. Это 223 тысячи с хвостиком в месяц. Но учтите, что это не сухая зарплата, а ещё офисы, инфраструктура и всё сопутсвующее. Хотя согласен, даже за вычетов всего нехилая зарплата, хочу такую :)
Математик… 0,5 года — это и есть 6 месяцев. Если делишь на 6, то получаешь зарплату за месяц, умножай потом на 12 или 13, чтобы получить за год. 223 тысячи с хвостиком в месяц — это и будет больше двух миллионов долларов в год.
Предположим, что офисы, инфраструктура и всё сопутсвующее обойдётся пусть в 15 тысяч долларов в месяц на человека.
Остаток получится больше двух миллионов долларов в год.
Интересно, кто же платит разработчикам бесплатного ядра Linux такие зарплаты?
всего-то почти полторы штуки баксов в час :)
и 26,8$ за одну строчку кода
с такой системой оплаты все бы срузу начали нормально комментов писать отступы делать… выгодно
Индийцы так и делают :) Даже на Хабре уже был скриншот
как Маяковский
единственно разумное объяснение — это 180 человеко-дней (т. е. с графиком 24/7), а не просто 180 рабочий дней.
один человеко-день — это 8 рабочих часов

хотя, быть может, автор статьи считал по вашему методу :)
ну вы ведь поняли все-таки, о чем речь? :)
Тоже очень интересно=)
Хочу среднюю зарплату!!! Ну или хотяб половину!!! Даже на 1/10 от средней зарплаты согласен!!!
А у меня зарплата в 300 раз меньше «средней» :)))
Там не полгода, а 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).

Поправьте перевод.
ты разрушил нашу мечту получать среднюю зарплату в 2 млн долларов
Всё равно неплохо получается

267 000 000 делить на 206 сотрудников делить на 115 месяцев — около 10k в месяц=)
НЛО прилетело и опубликовало эту надпись здесь
всего лишь очень хорошие вспомогательные скрипты для разработчиков :)
Заказывают пиццу через них как в Гугле?
нет, в основном проверяют правильность кода, патчей
тоже вариант :)
а сколько потратили наши «сами знаете кто» на внедрение пингвинов в школы? похоже за эти деньги можно было с нуля переписать все. хм. и сделать что-то типо сами знаете чего;)
эти деньги были потрачены на закупку продуктов Microsoft %)
А главное, что этот код стремительно устаревает — давно нужно было переходить на C++ и объектную модель. Ядро всё сложнее, документации отстаёт всё больше, некоторые ошибки исправляются годами. Совместимость между версиями ядра достаточно слабая. Есть мнение, что ядро нужно срочно переделывать с ноля, но это никому не нужно.
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
Кстати, сильный аргумент :) Но во-первых с 1992 года технологии программировании ушли далего вперёд. А во вторых, я всё же имею ввду не C++, как средство разработки, а скорее как среду позволяющию добиться большей структурированности и унифицированости кода.
Кстати, сильный аргумент :) Но, во-первых с 1992 года технологии программировании ушли далего вперёд и сейчас мыы имеем достаточно приммернов очень сложных проектов разработаных на C++. А во вторых, я всё же имею в виду не C++, как средство разработки, а скорее как инструмент позволяющию добиться большей структурированности и унифицированости кода. В принципе, можно и С использовать, но структура ядра должна быть объектная с жёсткой иерархией и не менее жёсткими требованиями по соместимости, в т. ч. бинарной. Хотя в целом, я всё же за C++ :)
Кстати, сильный аргумент :) Но, во-первых с 1992 года технологии программировании ушли далего вперёд и сейчас мыы имеем достаточно приммернов очень сложных проектов разработаных на C++. А во вторых, я всё же имею в виду не C++, как средство разработки, а скорее, как инструмент позволяющию добиться большей структурированности и унифицированости кода. В принципе, можно и С использовать, но структура ядра должна быть объектная с жёсткой иерархией и не менее жёсткими требованиями по соместимости, в т. ч. бинарной. Хотя в целом, я всё же за C++ :)
Я это мнение слышу уже лет десять. И где говорившие и где ядро?
> Совместимость между версиями ядра достаточно слабая.

Укажите мне систему с лучшей совместимостью между, скажем, последовательными версиями ядра. Либо, между версиями ядра за такой же промежуток времени.
Гхм… WIndows? Я могу на XP запустить половину драйверов от системы десятилетней давности и 100% драйверов от системы восьмилетней давности. И это без всякой пересборки ядра или самих драйверов. На Линуксе в лучшем случае драйвера нужно пересобирать, что вызывает проблеммы у производителей не желающий открывать программынй интерфейс или архитектуру своего железа (например, производители видеокарт). В худшем — вообще ничего не работает. Живой пример — попытайтесь поставить драйвера от VMWare — с удивлением обнаружите что в ядрах отличающихся последней цифрой ревиизии чудесным образом появляются и исежазают поля структур, менябтся парметры функций и т. п. В резульате имеет монстрический код на все возможные варианты ядер, плюс полная неопределённость в будующем — с новыми ядрами драйвера просто не работают. Объектная модель ядра совместно с чем-то вроде COM кроме того, что сильно упрощает отладку и разработку модулей ядра, но и позволяет добиться крайне высокой обратной соместимости — изменения ядра производтся только путём расширения существующих интерфейсов и механизмы наследования. Ну про неизмеримо большую прозрачность и проверяемость кода я вообще молчу.
Восьмилетней давности? Окстись, вообще-то сама 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.
«нет смысла рассматривать закрытые драйвера»?! Что прикажете делать разработчикам уникального железа? Стоимость разработки совего видочипа огромна, а вот скопировать архитектуру можно очень быстро. Это во-первых. А во-вторых на уровне исходников совместимость всё равно очень и очень слабая. Для того же примера — посмотри, что есть драйвера от NVidia — там два вагона заплаток на все мыслимые версии ядер. И всё равно приходится танцевать с бубном. Это я к тому, что берём любой более-менее сложный драйвер и видим целый зоопарк. Но это только часть проблеммы.
Я же не говорю, что Линукс невозможно использовать, я имею смелость утверждать, что ядро линукса начинает отставать от современных требований. И это отставание будет увеличиваться. А причина отставания — крайняя консервативность сообщества и holywar на тему «деды наши так делали и мы будем».
Всякие вопли о том, что «на С можно написать всё, что моэно написать на C++» это сплошная профанация — на ассемблере вообще можно написать всё — так давайте всё на нём писать. Вот только сложность, проверяемость и понятность кода получаются сильно разные.
Если бы Линукс был коммерческим проектом, то ядро уже отчаяно начали модернизировать.
Вы дочитали до конца? Я повторю ту часть, которую вы пропустили:

«Закрытые» драйвера для Linux на самом деле имеют закрытый алгоритмический модуль (да пожалуйста, не открывайте, раз стыдно показать этот кошмар), и открытый интерфейсный модуль. Который отлично собирается под достаточно длинный ряд ядер (нужно только иметь конфигурацию ядра и заголовочные файлы, т. е. определение интерфейса). Для примера — NVidia и уже упомянутый VMWare.

Мне не приходится танцевать с бубном, когда я работаю с ними. Сколько ни юзал разных видеокарт от NVidia, или версий VMWare (сейчас отказался в пользу Xen) — всегда emerge nvidia-drivers или vmware-modules, и всё сразу же работает. Повторю, это как раз те вещи, которые работают сразу и без вопросов. Есть более другие железки, с которыми проблемы, но и тут вопросы постепенно разрешаются.

Линукс — это очень даже коммерческий продукт. Кстати, вот вам и пример как «скопировать архитектуру легко»: вот она, открытая популярная архитектура. Много копий насчитаете? Их нет вообще.
А вот вам другой пример популярной открытой архитектуры — Windows NT (да, именно открытой, потому, что API опубликован и доступен). Есть попытка скопировать — это ReactOS. Как вам копия? А ещё есть попытка эмулировать эту архитектуру на базе другой — Wine. Тоже классно.
С оборудованием то же самое: никто не просит производителей железа раскрывать внутреннее устройство их гениальных видеочипов. Речь идёт об открытии интерфейса к этим видеочипам. Мне вполне хватит чёрного ящика, про который я только знаю, что если ему сказать «Ав» он на выходе нарисует собачку, и всё. Это абсолютно не раскроет мне деталей, как это он делает.

И, в довершение — к теме «почему не C++»: а у вас никогда не было мысли, а почему же в Windows серии NT ядро не на C++? Там ведь тоже в основном C и немного ассемблера.
А где появился C++ в ядре — появились и требования «1Гб ОЗУ и 3D-ускоритель для запуска голой операционки». Очень современные требования.
эээ… с чего бы это C++ был медленнее чем C? Хотя, 5% потери производительности я допускаю — если не сильно связываться с оптимизация и не усложнять структуру.
Но чёрт с ним с C и C++. Вот скажите мне, дорогой товарищ, Вы не считаете ядро Linux чрезвычайно сложным, запутаным и практическине документированым?
Сделай патч (тм)
Ядро Linux, разумеется, сложное, запутанное и слабодокументированное. Последнее — бич открытых проектов, первое — фактически неизбежность: любое практически используемое ядро в конце концов становится сложным и запутанным ибо ядро, разработчики которого неизменно отвечающие «шашечки» на вопрос «вам шашечки или ехать?» рано или поздно теряют всех пользователей.
«нет смысла рассматривать закрытые драйвера»?! Что прикажете делать разработчикам уникального железа?
Давайте не будем рассказывать сказок. Для уникального железа вполне можно писать драйвера и включать их в ядро (там есть поддержка экспериментальных систем SGI, которых и 100 штук выпущено не было, к примеру).

Стоимость разработки совего видочипа огромна, а вот скопировать архитектуру можно очень быстро.
Восстановление чипа по драйверу — бред. Заметьте что Intel и AMD (выпускающие вполне конкурентоспособные железки, особенно последняя) этого не боятся и понятно даже почему не боятся: новое железо на этот рынок выходит раз в год-полтора, а для того чтобы вопроизвести железяку нужно года два-три. В своё время на этом советский союз погорел со своими знаменитыми шлифовальными станками.

А во-вторых на уровне исходников совместимость всё равно очень и очень слабая.
Совместимость на уровне исходников замечательная: много вы можете назвать драйверов, которые бы были выкинуты из ядра и перестали работать? Если они не включены в официальное ядро — вы сами себе злобный вредитель.

Это я к тому, что берём любой более-менее сложный драйвер и видим целый зоопарк.
Это вы о каком драйвере? Когда он был включён в ядро? Иногда экспериментальные драйвера включаются до того, как код будет почищен в достаточной мере, но это редкость. Обычно со временем это исправляется.

Я же не говорю, что Линукс невозможно использовать, я имею смелость утверждать, что ядро линукса начинает отставать от современных требований.
И какие же это требования, извините? Можете привести пример ядра, которое удолетворяет им лучше?
Можете пинать меня ногами, но ядром WinXP — на голову лучше. Оно конечно далеко не идеал, но гораздо более структурирвано и имеет бОльший потенциал развития.
Это из какого же места тогда растут руки у программистов в Microsoft, что они более структурированное ядро с «бо́льшим потенциалом» портируют на новую платформу (x86-64) вдвое дольше, чем кривое и косое ядро под названием Linux?

Я скорее поверю что в WinXP ядро кривое чем в то, что у Microsoft'а денег нет, чтобы нанять нормальных разработчиков. Оно, может, красиво смотрится в рекламных проспектах и на доске в учебной аудитории с высоты птичьего полёта (такие красивые подсистемы, замечательные концепции — прелесть), но если сравнить хотя бы интерфейс CreateProcessAsUser с набором соотвествующих Linux'овых функций (clone, exec, setuid/setgid, ...), то как-то не видно этой стойности нифига. А если чуток копнуть, то там вообще волосы дыбом становятся. Как ядро с таким количеством заплаток, ненужного дублирования кода и «особых случаев» вообще запускается — загадка.
Linux 64 имеет полную бинарную соместимость с 32-ой верснией? Дравера/модули ядра 32-бита грузить можно? (На случай, если драйвер 64-бита ещё не вышел). К 64-битному линуксу есть полное описание всех системых функций? Всего вдвое дольше? :)
А теперь посмотрите, как обстоит дело с бинарной совместимостью драйверов у семейства Windows. И как эти дравйвера пишутся. Да, там своих граблей полный огрод, но ядро NT, есть мнение, одной из самые перспектиынх и мощных ядер. Куда заведёт Vista не понятно, но Linux'у имело смысл взять лучшее от NT, а не упорно совершать те же ошибки, что Микрософт.
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 просто и элегантно: драйвера включены в само ядро и их поддержка осуществляется разработчиками ядра. Работает неплохо. За исключением тех железок, производители которых становятся «в позу» и сами себе устраивают проблемы.
«Что значит «не вышел»? Их все портировали вместе с остальным ядром. Если что-то не компируется/не работает — сообщите разработчикам, они подобные вещи быстро фиксят.»
Не вышел значит не вышел. Не все драйвера включены в ядро. Есть масса железа, дравйвера которого поставляет производитель.

«Угу. И именно поэтому железа оно поддерживает меньше, чем Linux, ресурсов ему требуется раза в два больше, а простые операции (скажем создание нити) занимают куда больше времени чем в Linux. Ну и кому эта «мощща» нужна?»
Про железо — не правда. Вы хотите скахть, что любое купленное мною китайское барахло, вроде графического планшета или сканера заработает с Linux? :) Про нити — не надо путать хрен с морковкой — нити линукса и потоки windows это соврешенно разные вещи. Моща нужна тем, кто активно использует и/или проивзодит нестандартное железо, например.
«Внутриядерный API» на пару с бинарной совместимостью и неплохим централизованым документированием позволил микрсофту иметь поддержку совершенно любого железа — любой самый китайский производитель может позволить себе написать драйвера под эту ОС. «Моделей драйверов» у Микрософт всего три (с половиной). У Линукса вообще такого понятия нет — интерфейсы нещадно правятся самым неожиданным. С драйверами и микрософта чудеса бывают, но в целом — имеется очень не плохая совместимость. Скажите, а вот если я делаю свою уникальное железо — мне тоже драйвера в ядро включать? А если я этого железа два десятка делаю? А если я не хочу код раскрывать? Давайте посмотрим сколько веб камер или USB-сетевый карт или WiFi-адаптеров из всеобщего зоопарка заработают под Linux? Включать драйвера в ядро — вообще дурная идея, желаза слишком много и они слишком активно меняется. Можно говорить о пользе поддержик некоторого базового наиболее поплуярного железа, чтобы можно было поставить система «из коробки», но не более того. У меня дома есть, как минимум десят устройств, о существовании которых, Линукс не подозревает.
Но мне кажется, что мы скатываемся к холивору на тему как я ось лучше, а вопрос вроде стоял сугубо по ядру.

Лично персонально мне кажется, что для линукса нужно было бы заморозить ядро, определиться в каком направлении будет идти развитие, определить интерфейсы, которые будут поддерживаться и не будут меняться и максимально документировать то, что есть. Вместо этого мы видим со трашной силой выходящие версии ядра, таинственным образом меняющиеся программные интерфейсы, о которых не знает никто кроме пары человек и какое-то метание от одной реализации к другой.
Живой пример — скачал я недавно новое «стабильное» ядро. Попытался собрать драйвера от VmWare. Не собралось. Стал копать — изменены некоторые стрктуры, выховы функций и т. п. Вот в яре на диницу меньше всё было, а тут — нет! Стал копать в интернете — ничего! Каким-то чудом нашёл переписку Торвальда где он упомянал, ч то не плохо было бы пару структур поменять. Заодно вообще идеологию изменить. Это прекрансно. А если я маленькая фирма разработчик джелеза? Выпустил железку. Напрягся и написал драйвер под Линукс. Мне теперь всю жизнь все ядра испытывать и драйвера под каждый релиз переписывать? При этом об изменениях я должен сам догадываться уже после выхода ядра? И о том, как теперь это все работает — лично Тордвальда спрашивать? А если штат всего десять человек из которых только три программиста? Бросить всё и заниматься непрерывным переписыванием старых драйверов? Шантажом и угрозами требовать, чтоб коре-дивелоперы включили мои драйвера в ядро и сами их правили? Или что?
Не вышел значит не вышел. Не все драйвера включены в ядро.
А почему нет?

Есть масса железа, дравйвера которого поставляет производитель.
И кто в этом виноват?

Про железо — не правда. Вы хотите скахть, что любое купленное мною китайское барахло, вроде графического планшета или сканера заработает с 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» — что явно не порадует пользователей…
И как можно под линукс создать аналог потока 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? :)
А зачем?
Не процесс, не нить, а имено поток в пределах процесса? У них разные модели многопоточности.
Ещё раз: какую задачу вы хотите решить? Можно подумать вы этого не читали. Какую цель я преследую создавая новый поток в Linux я понимаю: я хочу обработать, скажем, запрос от пользователя. Получаю запрос, запускаю отдельный процесс (в отдельном потоке, то есть, возможно, на другом ядре или процессоре), готов принимать следующий запрос. Распространённая архитектура. Работает и в Linux и в Windows, но в Windows — хуже ибо создание потоков там дороже, чем создание процесса в Linux, а отсутствие поддержки COW затрюдняет высвобождение ресурсов после окончания работы вспомогательного потока. А зачем вам «аналог потока Windows»? Какую высокоуровневую задачу вы можете решать с его помощью?

Вот Вы когда-нибдь под Windows писали?
Да, имел несчастье. Правда с Vista дело не имел и, надеюсь, уже не буду.

Ниодну из написанных по WIndows программ в нашей компании не пришлось даже перекомпилировать за восемь лет. Под Линукс регулярно приходится править и пересобирать код, т. к. после очередного обновления системы выясняется что-то то не работает.
И о чём это говорит? О том, что вы не можете выбрать стабильный дистрибутив и пытаетесь использовать какую-нибудь Fedora не по назначению?

Нужно очень сильно постараться и очень не внимательно читать MSDN чтобы написать программу работающую ТОЛЬКО под SP1.
Поищите в Google Pinnacle Dv500 и SP2 — увидите кучу страдальцев, которые с этим маются. Есть неофициальные патчи, сделанные добрыми инженерами и выложенные на форуме. Найти их не так-то просто, а официальная позиция Pinnacle: мы поддерживаем только Windows XP SP1, хотите работать с более новыми версиями — покупайте другую железку. Вроде как не самая «китайская» фирма.

Мне кажется, что Вы либо, не работали и не писали под Windows, либо сознательно искажается факты.
А мне кажется что вы выставляете критерием совершенства системы её похожесть на Windows.
«Не вышел значит не вышел. Не все драйвера включены в ядро.
А почему нет?

Есть масса железа, дравйвера которого поставляет производитель.
И кто в этом виноват?»

Повторяю — наша конторая производит некую железку — нам что теперь, требовать включения наших драйверов в ядро? А железку у нас меняется раз в пол года — рынок знаете ли — заказчики требуют. Или нам переписывать драйвера под каждый релиз?

«Да ради бога — возьмите одну конкретную версию ядра, напишите под неё драйвер и используйте. Зачем вам в этом случае поддержка всего зоопарка (Ubuntu, Fedora, etc)?»
Я не говорю о совместимости между дистрибутивами — это отделаная песня, но дистрибутивы могут отличатсья и это понятно. Я говорю несоместимости в предалх дистрибутива. Вот мы напсиали свой некий софт под Linux. Большой и сложный. Поставили заказчику систму с системой и этим софтом. Проходит год — в ядре и системе обнаружен некотрое кол-во уязвимостей и нужно обновляться. Обновляемся. Всё перестаёт работать. Т. к. изменилось ядро, изменились версии билиотек. Не обновляться? А как же безопасность? Да путём танцем с бубнами можно всё заставить работать. Но закачик не хочет нанимать программистов — ему нужно чтобы его насосы работали. Приходится высылать специалистов. В результате стоимость обслуживания сильно превышает Windows.

«А зачем они меняются? Чем отличаются бесчисленные китайские поделки сделанные на одном чипсете?»
Повторяю кроме чипсета есть множетсво устройств — от USB-камер и WiFi до промшленного железа. Все они сделаны на своих собственных чипах. Предалагете зконодательно запретить делать несовместимое железо? :) Откуда будет брать новое?

"«Любое китайское барахло» может и с Windows не заработать. Старое — не заведётся под Vista, новое — под XP. В совокупности Linux поддерживает железа строго больше, чем любая одиночная версия Windows."
Т. е. за последние 10+ лет мы имеем только один порог не соместимости? По-моему это прекрасный результат. Я же Вам говорю — возбмите любой компьютерный магазин и посмотрите, что будет работь под Линуск, а что — нет. 30% не заработает. Под Windows получаем 100% заработает.

Повторяю — наша конторая производит некую железку — нам что теперь, требовать включения наших драйверов в ядро?
Ну типа того.

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

Вот мы напсиали свой некий софт под 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% заработает. А если с драйверами — то при чём тут «техническое совершенство» и «перспективность»? Это от работы маркетологов зависит, не от программистов.
НЛО прилетело и опубликовало эту надпись здесь
Йоп, какие объектные модели, в моде же уже pure functional для беспроблемного распарраллеливания. А завтра будет какое-нибудь генерик-программирование, потом вылезет еще и еще.
Ядро оно на то и ядро, чтобы быть стабильным и низкоуровневым.
Это только подтверждает мою точку зрения :) «в моде же уже pure functional для беспроблемного распарраллеливания», а тут 10 миллионов строк pure C :) Собственно это и есть отставание.
Это просто парраллельное движение)
Pure functional языки, увы и ах, для общения с железом требуют прослойку. Linux — это как раз такая прослойка и есть.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Поздравляем разработчиков с очередным рубежем. Пускай и количественным.
1340 баксов в час зарплата у среднего программиста! :-D
Главное чтобы качество не падало.
Если бы работа программистов измерялась в строках кода, их всех давно бы на кодирующих роботов заменили. Так что эти цифры и расчёты ничего не говорят. Разве что: «нас много и мы в тельняжках!» ^_^
НЛО прилетело и опубликовало эту надпись здесь
тоже самое хотел спросить, но тут увидел твой комент :)
я думаю точный ответ вам никто не даст.
так точный и не нужен, достаточно порядка.

И скажем про 2003 server и 2008 server интереснее было бы знать.
Пару лет назад 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.
«Vista состоит из 50 миллионов строк кода, в XP было 35 миллионов строк на момент релиза, затем она выросла примерно до 40 миллионов.» взято отсюда
НЛО прилетело и опубликовало эту надпись здесь
Здравствуйте, я зануда. Итак...

Поправьте, пожалуйста, тег стоимость Lunux, а то обидно. :)
интересно, хоть кто-нибудь из запостивших на лор, хабр и опеннет и многие другие ресурсы задумывался над орректностью цифр?
НЛО прилетело и опубликовало эту надпись здесь
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.