Re[12]: Windows vs Lunux (люди)
От: Plutonia Experiment Беларусь http://blogs.rsdn.org/ikemefula
Дата: 08.08.03 09:30
Оценка: 3 (1)
Здравствуйте, fAX, Вы писали:

Раз пошла такая пьянка, то расскажу, что имеется в виду под двоичной совместимостью.

Чтобы написать программу, которая будет использоваться на всех Виндовсах, нужно безо всякой статической линковки ! использовать набор стандартных билиотек.
1. Эти библтотеки ВСЕГДА имеют одинаковые имена: kernel32 user32 gdi32 shell32 advapi32 ole32 oleaut32 shlwapi
winmm winsock commctl32 commdlg32 даже, если имеются разные версии.
Многие программы напрямую зависят только от этих иблиотек. Например аутлук экспресс. apollo, winamp
Проверить можно так : depends msimn.exe
Это далеко не полный список — запустите компарер файлов на 98й(ранние версии винды не суппортятся) и XP
получите приблизительный список. Все эти бибилотеки покрывают основные возможности
2. Большинство функций в этих либах одинаковы по функциональности, по имени и тд. В ряде случаев дя совуместимости переносятся баги старых версий. Это не шутка.
3. Проблема может быть с msvcrt,MFC,atl — их приходится распространять самому. Начиная с 2000й эти длл идут с ситемой.
4. Функции в либах бывают и специфические, в kernel32
5. Есть API, которое не треует прявязки к именам ДЛЛ и именам функций. Называется COM.
Примерно половина ПО для винды написана с использованием COM.
6. COM-программы нельзя распространять простым копированием — нужно регистрировать ДЛЛ.
7. Требование, которое почти неуклонно солюдается разраотчиками для виндовсе — более новая версия должна поддерживать функциональность старой. Но есть ряд случаев, когда это невозможно сделать.

Что это дает ?

1. Возможность распространения программ в бинарном виде — наиболее быстрое распространенеие во мноих сучаях.
Пришел чел к другу, скопировал Аполло и Фар и наслаждается. То же самое к играм — Q,Q2,Q3,HL,CS
Много программ можно перенести только простым копированием.
2. Облегчается посторение дистрибутива программ и операционной системы
3. Облегчается суппорт, в большинстве случаев для поиска бага не нужно знать версию системы, потому что стандартные функции работаю стандартно.
4. Упрощается разработка. Все различия, по крайне мере большинство, описаны в документации и тд, коей Билли плодит очень много(но не все).
5. Не смысkа распространять исходники — ребилд ничего не даст
6. Многие программы для старых виндовсов вполне подходит для новых без проблем.
Я уже приводил список. Но это далеко не полный ваприант.
Если хотите оспорить — приводите примеры таких программ.
Только не нужно приводить в пример драйвера или программы, привязанные к ядру системы и которые позиционируются как программы для одной системы.

Какие минусы ?

1. Вирусы ! Не будь в винде такой двоичной совместимости, вирусов было ьы очень мало. Как вы знаете, вирусы — это двоичный существа в большинстве случаев.
2. Не всегда программы хорошо работают, испоравить это не всегда возможно. Билли это исправляет апдейтами.
3. Не всегда все хорошо документировано. Есть многие разделы АПИ, которые документированы очен плохо.
Но это не значит, что вся винда документирована плохо. По качеству документации с виндой модет поспорить тольк IBM.
4. Программы, писаные с использованием COM нельзя просто так распространять — надо регистрировать.

Впрочем поседний минус легко обходится. Пиратские дистрибы делаются так

1. Собирает список файлов до и посе инсталяции
2. Делаем снапшот реестра до и после
3. Делаем свой инсталятор
4. Вставляем в него троян или вирус. Это снова минус.

Для всего этого есть масса программ.

Что это дает ? Обилие пиратских версий коммерческих программ.
Независимо от того, что за программа, пользователь устанавливает ее щелчком мыши или просто копирует.


Как обстоит дело с Линуксом ?

Стандартный набор либ есть, но они имеют разные имена на разные версии например. Мало того, одна и таже либа может в разных дистрибах называться по разному(иногда с дистрибом идет несколько версий либы). Все это вынуждает использовать один из двух способов распространения — исходники или статическая линковка.
Исходники требует предустановленные средства для компиляции, аутотулсы, заголовочные файлы, библиотеки для разработки и тд. Также это треует от пользователя навыков компиляции. Это же усиливает требования к установочным пакетам. Пакет должен уметь отбилдить себя на всех патформах, на которые он позиционируется.
Статическая линковка — все статически не слинкуешь к сожалению и в любом случае это дает огромный размер файла.
Также это портит кровь создателям дистрибутива.
В конце концов это так или иначе ограничивает способы распространения программ.
Завтра я иду на рынок и посчитаю, сколько программ для линукса идет вне дистрибутива.
Не нужно думать, что в дистриб можно всунуть все
Все это усиливает привязку пользователя к системе и интернету.

Есть большой плюс — между одинаковыми системами можно копировать все, что захочется.
Но это гипотетическое преимущество. У нас на работе только штуки три линукса, слабо совместимые между собой.
Шапка 7 и шапка 9 например имеют кучу либ одинаковых по функционаьности, но разных по версиям, и как следствие, по именам. Мой друг любит Кнопикс, а брату Дебиан. Мне нравится Шапка, а знакому — ALT 2.2.
Все это рельные примеры.
Если вы захотите распространять программу на болванках на рынке линуксовом, то нужно
1. Обязательно вставить исходники не только программы
2. Желательно вставить исходники библиотек
3. Желательно отбилдить для самых распространенных версий линуксов
4. Нужно обязательно завести сайт, с которого можно скачать версию.
5. Хорошо бы подумать о статической линковке для лютителей маленьких линуксов.

К сожалению,linuxconf в таком виде занимает далеко не 4 мега. А лучшей тулсы для линуха я пока не видел.



PE>>Только ответь на вопрос — почему 14 из 15 дисков разного софта от 95й работает аж на XP и 2003 сервер ?

fAX>А можно твой вариант? А заодно и ответ, почему 1 из 15 не работает?
fAX>(Да... и так... для размышления... что такое работают? Не падают при запуске? Или тот же note/word-pad держат юникод? Или русский + иврит одновременно? ЧТО ЗНАЧИТ "РАБОТАЮТ"?!!!)

PE>>И почему проги для шапки 73 не работают под шапкой 9 ?

PE>>ЛИБЫ !!!!!!!!!!!!!!!!
fAX>Прям-таки... Ну, даже если так, почему ты можешь выкачать программу под ХР или 98 отдельно, а вдруг для разных версий — не можешь? К тому же, не у каждого человека эти системы стоят одновременно.

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



PE>>>>Под виндой я просто копирую файла, билдить для установки не надо.

V>>>Да? А я вот взял, да и попробовал скопировть с машины на машину
V>>>devenv.exe, и чего то он у меня не пошёл..
V>>>ты не знаешь почему?

PE>>Знаю. А Винамп, Аполло, ФАр, Акробат, Стартед,Винкомандер, Фримем, ХТМЛченджер, путти , Асидиси, Маусимп, архиваторы, Твеакуи, MSXML, XML Notepad , Cdpalyer работают просто так.

fAX>Вау! Классно. А то, что наверняка они или статик-линк или свои либы с собой тянут — это нормально. Почему на линукс кидаешь?

PE>>Почему ? Покажи мне столько же софта такогоже плана, только под Линукс. Чтоб я мог просто скопировать и запускать без билда, без установки.

fAX>... и с правами админа, а то вирусов не хватает.. Хорошо, давай так — какого рпм-а тебе ты не нашёл под КШ 9? А любое статически слинкованное приложение запустится без проблем, как и в виндовсе.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.