Для * nix я обнаружил, что книга Эрика Рэймонда «Искусство программирования Unix» довольно хорошо выражает идеи, лежащие в основе философии Unix. Вся книга в сети, рекомендую эта глава чтобы понять, о чем я говорю. Он в основном излагает объединяющие концепции операционных систем Unix и их приложений. Например:
Затем он рассказывает, как применяются эти правила.
Что составляет философию Windows?
Я никогда по-настоящему не понимал философию операционных систем Windows, и никогда не знал никого, кто знает достаточно, чтобы ответить на этот вопрос. Гугл для меня просто вызывает кучу тирадов. Есть ли книга или набор статей, эквивалентных «Искусству программирования Unix», но для операционных систем Windows?
Мне также было бы интересно, если бы кто-то подумал, что у них есть хороший ответ, но это может быть слишком длинный пост.
Unix, начиная с «трубы» и выше, спроектирован вокруг процессов, взаимодействующих с помощью текстовых протоколов. Следовательно, конструкция различных интернет-протоколов - SMTP, HTTP, IMAP, POP и т. Д. Удобочитаема. Таким образом, разработчики должны писать код для написания и анализа протокола, но часто бывает просто взаимодействовать с программами, которые вы не контролируете.
Windows, напротив, построена на вызове процедуры / вызове метода. COM и его последователи предоставляют способы расширения вызовов процедур в библиотеки DLL, между потоками процесса, между процессами и по сети. Все это довольно прозрачно, особенно в объектно-ориентированных языках. Это упрощает написание очень больших сетевых приложений - при условии, что вы контролируете все компоненты. Это затрудняет замену части сложной взаимосвязанной системы на новый фрагмент кода. Например, формат файла Microsoft Word очень странен как формат файла, но прост как представление объектов в памяти, используемых Word. Проводной протокол Exchange - это MAPI-over-DCOM: с точки зрения разработчиков Outlook, все, что им нужно сделать, это получить объект почтового ящика и вызвать для него методы, тогда как люди, пытающиеся реализовать альтернативные клиенты и серверы, видят проводной протокол. с этим непросто взаимодействовать.
Взгляните на канал MSDN 9. Здесь вы получите невероятное понимание того, что инженеры Microsoft планировали / рассуждали по поводу определенного продукта или функции.
Для Windows: Мне больше всего нравится видеоблог Дэйва Проберта о ядре Windows (с некоторыми замечаниями об отличиях от Unix): http://channel9.msdn.com/shows/Going+Deep/Windows-Part-I-Dave-Probert/ .... и другая часть 2-4 .... (вы также можете посмотреть другие видео "Going Deep" :-).
Радоваться, веселиться.
HTH, Томас
PS: Кроме того, вы найдете очень много информации в книгах "Inside Windows NT", первое издание было весьма замечательным для понимания внутренней работы WIndows NT.
Блог Раймонда Чена (http://blogs.msdn.com/oldnewthing/) является фантастическим источником такой информации, а также предоставляет подробные и грязные подробности о том, почему определенные вещи такие, как они есть в Windows (пример: почему вам нужно нажимать кнопку Пуск, чтобы завершить работу? Потому что во время тестирования когда пользователей просили выключить их ПК, они нажимали именно здесь).
Я думаю, вы можете прилично почувствовать разницу в системах, посмотрев на меню «Пуск» Windows и сравнив его с меню «Пуск» KDE или Gnome. Меню * NIX организованы по задачам или категориям, а меню Windows - по программным компаниям. Это уже многое говорит о различиях в приоритетах создателей.
(Да-да, KDE / Gnome - это не «философия UNIX», но разница все же разительная.)