Я программировал как в среде Unix, так и в среде Windows. В основном я работал в Unix, где я изучил философию Unix , которую можно обобщить как
- Напишите программы, которые делают одно и делают это хорошо.
- Напишите программы для совместной работы.
- Написание программ для обработки текстовых потоков, потому что это универсальный интерфейс.
Кажется, есть четкое различие в культурах программирования между мирами Unix и Windows, например:
- GUI против CLI
- Реестр против конфигурационных файлов
- Множество инструментов, специализирующихся на любой конкретной потребности, против группы общих ортогональных инструментов, которые могут комбинироваться
Есть ли эквивалент "философии Unix" в мире Windows? Чему Unix-программист может научиться у Windows или о чем нужно знать при переходе на программирование в Windows?
Я хотел бы, чтобы ответы были сосредоточены на лучших практиках программирования Windows (а не на борьбе между Windows и Unix).
windows
philosophy
unix
Maglob
источник
источник
Ответы:
На самом деле есть что-то вроде «философии Windows». В основном речь идет о концепции композиции и части пользовательского интерфейса - программах проектирования для пользователей, а не для других программистов.
Это означает:
Вот хорошее чтение:
бикультурализм
С распространением Windows хакерский подход к кодированию начал становиться неприемлемым. Сначала он писал программы на C / C ++ самым сложным и запутанным образом, чтобы их могли понять только самые умные люди, как своего рода обряд. Под Windows все начало меняться, и этот «стиль кода» сейчас крайне не популярен. Не уверен, что его прямое влияние Windows или, скорее, новый уровень понимания качества кода, но, по крайней мере, своевременно они совпадают.
источник
Я думаю, что различия, о которых вы говорите в своем вопросе, касаются больше пользователей этих систем, чем стилей программирования их разработчиков. В течение долгого времени * nix был сферой деятельности как программиста, так и компьютерного энтузиаста. Было очень мало способов «случайного» использования. Где, поскольку Windows имеет [home] число пользователей на порядок больше.
Обычные пользователи не хотят запоминать дюжину различных флагов командной строки для запуска программы. Они хотят нажать на кнопку.
Обычные пользователи не хотят беспокоиться о файлах конфигурации своих систем или о том, как пушистые котята помнят свою любимую породу кошачьих.
Обычные пользователи обычно используют что-то, пока оно делает то, что они хотят, даже если есть «лучшие» продукты.
Я думаю, что моя главная мысль заключается в том, что ... Windows - это скорее создание для пользователя , а не для создателя . Не идите вразрез с давнишними парадигмами, которые существуют в разработке Windows. Не загрязняйте пользователей My Documents дерьмом и не вставляйте себя в их стартапы без причины.
Может быть, аналогичной важности: написать пользовательскую документацию.
источник
Блог Рэймонда Чена « Старое новое» и его одноименная книга - отличное понимание философии, истории и лучших практик нативного программирования для Windows.
источник
Компромисс и настройка
Это не лучшее в чем-либо, но если вы готовы потратить время и принять некоторые неприятные решения в некоторых местах, мало что вы не можете сделать это. Если вам не нравится то, что он делает в настоящее время, вы можете изменить его. Есть несколько мест, где есть только один или даже самый лучший способ.
Достаточно хорошо для пользователя, чтобы начать
Очень мало вещей феноменально из коробки, но большинство вещей можно использовать. Unix имеет тенденцию идти в том направлении, где ничего не работает, пока вы не сконфигурируете его, и Apple сделает все довольно хорошо, но за счет некоторой конфигурируемости / гибкости.
Ожидать хвост поддержки журнала
Пользователи Windows не обновляются только потому, что есть более новая версия. Они даже не всегда обновляются из-за уязвимости или исправления. Пользователям Windows часто приходится обновляться, но если вы заставите их быстро обновиться, они будут искать альтернативные продукты.
Пользователи имеют широкий диапазон уровней квалификации
Unix имеет высокий воспринимаемый барьер для входа с технического уровня с точки зрения обычного домашнего пользователя. У Apple был очень низкий воспринимаемый требуемый уровень квалификации, но он не поощряет обычного пользователя делать многое для настройки своей ОС. Windows находится между ними. Начать использовать его чуть сложнее, чем продукты Apple, но есть много простой информации, иногда прямо в самой установке, о том, как изменить довольно глубокую конфигурацию системы. Это приводит к довольно случайному уровню навыков у пользователей среднего уровня, потому что, если они достаточно уверены в себе, чтобы попробовать что-то, есть хороший шанс, что они могут понять, как это сделать. Это также оставляет в некоторых случаях более робких пользователей без какого-либо опыта, потому что они опасаются предупреждений о том, что все может пойти не так.
источник
Windows была построена с явной поддержкой стандарта IBM Common User Access (CUA) для руководства разработкой приложений.
Что, конечно, было попыткой создать для пользователя опыт в стиле Mac.
источник
UNIX давно был для программистов и подобных людей, а windows всегда был для пользователей, которые не знают, как писать bash-скрипты. Поэтому в Windows вы должны заботиться о пользователях, то есть создать единый инструмент для всех задач, чтобы пользователю не нужно было беспокоиться о том, кто настроит несколько программ для совместной работы.
источник
Я не уверен, является ли это философией, но ИМХО, есть какая-то плотность мысли, которая идет с программированием Windows. Есть также чувство удивления от того, как все работает иногда.
Я бы рекомендовал терпение, если вы занимаетесь разработкой Windows и немного больше заботитесь о своих предположениях.
источник