Есть ли в Windows философия программирования? [закрыто]

30

Я программировал как в среде Unix, так и в среде Windows. В основном я работал в Unix, где я изучил философию Unix , которую можно обобщить как

  • Напишите программы, которые делают одно и делают это хорошо.
  • Напишите программы для совместной работы.
  • Написание программ для обработки текстовых потоков, потому что это универсальный интерфейс.

Кажется, есть четкое различие в культурах программирования между мирами Unix и Windows, например:

  • GUI против CLI
  • Реестр против конфигурационных файлов
  • Множество инструментов, специализирующихся на любой конкретной потребности, против группы общих ортогональных инструментов, которые могут комбинироваться

Есть ли эквивалент "философии Unix" в мире Windows? Чему Unix-программист может научиться у Windows или о чем нужно знать при переходе на программирование в Windows?

Я хотел бы, чтобы ответы были сосредоточены на лучших практиках программирования Windows (а не на борьбе между Windows и Unix).

Maglob
источник
15
Должны быть в курсе? "Вещи будут сосать, плохо сосать".
Orbling
3
Только одна философия, что нет философии. ;)
Мудассир
6
На самом деле Powershell привнес в Windows некоторые принципы Unix, в частности, написание небольших программ (фактически, командлетов в Powershell), которые выполняют только одну задачу, и объединение их с другими командлетами, которые выполняют другие задачи. Конечно, большинство случайных пользователей все еще не знают, как использовать Powershell, но это зависит от того, какое программное обеспечение вы пишете.
JohnL
4
Мы сделаем это правильно в третий раз.
aufather
7
Философия Windows заключается в том, чтобы приносить доход Microsoft.
Ден04

Ответы:

28

На самом деле есть что-то вроде «философии Windows». В основном речь идет о концепции композиции и части пользовательского интерфейса - программах проектирования для пользователей, а не для других программистов.

Это означает:

  • Простой и интуитивно понятный пользовательский интерфейс
  • Естественный рабочий процесс
  • Должен работать из коробки
  • Никаких технических знаний не требуется там, где это не требуется

Вот хорошее чтение:

бикультурализм

С распространением Windows хакерский подход к кодированию начал становиться неприемлемым. Сначала он писал программы на C / C ++ самым сложным и запутанным образом, чтобы их могли понять только самые умные люди, как своего рода обряд. Под Windows все начало меняться, и этот «стиль кода» сейчас крайне не популярен. Не уверен, что его прямое влияние Windows или, скорее, новый уровень понимания качества кода, но, по крайней мере, своевременно они совпадают.


источник
7
Я не думаю, что какие-либо из этих пунктов применимы к Windows.
Том Хотин - тэклайн
4
@Tom: это философия; это не должно относиться ни к чему. Тем не менее, я считаю, что это очень хорошо подходит для большинства вещей в мире Windows.
Аллон Гуралнек
@ Я больше согласен с @Allon, потому что мне кажется, что вопрос OP - это скорее консоль, чем программирование GUI.
Гидеон
6
Какая?!? Взгляните на старые добрые BSD и AT & T источники. Чисто, просто, элегантно. И я никогда не видел ничего более запутанного, чем типичный раздутый код MFC.
SK-logic
Даже несмотря на то, что нет единого правильного ответа, мне больше всего понравился этот. Блог Джоэла был великолепен.
Маглоб
8

Я думаю, что различия, о которых вы говорите в своем вопросе, касаются больше пользователей этих систем, чем стилей программирования их разработчиков. В течение долгого времени * nix был сферой деятельности как программиста, так и компьютерного энтузиаста. Было очень мало способов «случайного» использования. Где, поскольку Windows имеет [home] число пользователей на порядок больше.

Обычные пользователи не хотят запоминать дюжину различных флагов командной строки для запуска программы. Они хотят нажать на кнопку.

Обычные пользователи не хотят беспокоиться о файлах конфигурации своих систем или о том, как пушистые котята помнят свою любимую породу кошачьих.

Обычные пользователи обычно используют что-то, пока оно делает то, что они хотят, даже если есть «лучшие» продукты.

Я думаю, что моя главная мысль заключается в том, что ... Windows - это скорее создание для пользователя , а не для создателя . Не идите вразрез с давнишними парадигмами, которые существуют в разработке Windows. Не загрязняйте пользователей My Documents дерьмом и не вставляйте себя в их стартапы без причины.

Может быть, аналогичной важности: написать пользовательскую документацию.

TZHX
источник
7
Пользовательская документация? Пользователям успешных программ никогда не придется трогать какую-либо документацию.
@Developer Art - это в какой-то мере верно, но когда вы пишете программное обеспечение, скажем, физику элементарных частиц, которая должна быть понятна людям разных национальностей, вы можете сказать «нажмите здесь для описания того, что мы делаем с вашими данными» здесь », если это проще, чем написать телепатический компьютер, который сможет извлечь ожидания пользователей из их разума.
TZHX
3
«Не загрязняйте пользователя дерьмом». - довольно иронично.
ocodo
1
как так, Сломохо?
TZHX
4

Компромисс и настройка

Это не лучшее в чем-либо, но если вы готовы потратить время и принять некоторые неприятные решения в некоторых местах, мало что вы не можете сделать это. Если вам не нравится то, что он делает в настоящее время, вы можете изменить его. Есть несколько мест, где есть только один или даже самый лучший способ.

Достаточно хорошо для пользователя, чтобы начать

Очень мало вещей феноменально из коробки, но большинство вещей можно использовать. Unix имеет тенденцию идти в том направлении, где ничего не работает, пока вы не сконфигурируете его, и Apple сделает все довольно хорошо, но за счет некоторой конфигурируемости / гибкости.

Ожидать хвост поддержки журнала

Пользователи Windows не обновляются только потому, что есть более новая версия. Они даже не всегда обновляются из-за уязвимости или исправления. Пользователям Windows часто приходится обновляться, но если вы заставите их быстро обновиться, они будут искать альтернативные продукты.

Пользователи имеют широкий диапазон уровней квалификации

Unix имеет высокий воспринимаемый барьер для входа с технического уровня с точки зрения обычного домашнего пользователя. У Apple был очень низкий воспринимаемый требуемый уровень квалификации, но он не поощряет обычного пользователя делать многое для настройки своей ОС. Windows находится между ними. Начать использовать его чуть сложнее, чем продукты Apple, но есть много простой информации, иногда прямо в самой установке, о том, как изменить довольно глубокую конфигурацию системы. Это приводит к довольно случайному уровню навыков у пользователей среднего уровня, потому что, если они достаточно уверены в себе, чтобы попробовать что-то, есть хороший шанс, что они могут понять, как это сделать. Это также оставляет в некоторых случаях более робких пользователей без какого-либо опыта, потому что они опасаются предупреждений о том, что все может пойти не так.

Билл
источник
3

Windows была построена с явной поддержкой стандарта IBM Common User Access (CUA) для руководства разработкой приложений.

Что, конечно, было попыткой создать для пользователя опыт в стиле Mac.

Стивен А. Лоу
источник
2

UNIX давно был для программистов и подобных людей, а windows всегда был для пользователей, которые не знают, как писать bash-скрипты. Поэтому в Windows вы должны заботиться о пользователях, то есть создать единый инструмент для всех задач, чтобы пользователю не нужно было беспокоиться о том, кто настроит несколько программ для совместной работы.

Дайниус
источник
1

Я не уверен, является ли это философией, но ИМХО, есть какая-то плотность мысли, которая идет с программированием Windows. Есть также чувство удивления от того, как все работает иногда.

Я бы рекомендовал терпение, если вы занимаетесь разработкой Windows и немного больше заботитесь о своих предположениях.

Джон Биккерс
источник