Чи існує філософія програмування Windows? [зачинено]


30

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

  • Пишіть програми, які роблять одне і роблять це добре.
  • Напишіть програми для спільної роботи.
  • Напишіть програми для обробки текстових потоків, оскільки це універсальний інтерфейс.

Здається, існує чітка різниця в програмуванні культур між світами Unix та Windows, наприклад:

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

Чи є еквівалент "філософії Unix" у світі Windows? Про те, що Unix-програміст може навчитися в Windows або про що слід знати, переходячи до програмування в Windows?

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


15
Слід знати про це? "Речі будуть смоктати, погано смоктати".
Орлінг

3
Тільки одна філософія, що, немає філософії. ;)
Мудассір

6
Насправді Powershell вніс частину філософії Unix у Windows, зокрема, написання невеликих програм (насправді командлетів у Powershell), які виконують лише одне, і поєднуючи їх з іншими командлетами, які роблять інші речі. Звичайно, більшість випадкових користувачів досі не знають, як користуватися Powershell, але це залежить від того, яке саме програмне забезпечення ви пишете.
JohnL

4
Ми отримаємо це правильно втретє.
аут

7
Філософія Windows - приносити дохід Microsoft.
dan04

Відповіді:


28

Насправді є щось на кшталт "філософія Windows". Переважно йдеться про концепцію композиції та частину інтерфейсу користувача - програми дизайну для користувачів, а не для інших програмістів.

Це означає:

  • Простий та інтуїтивно зрозумілий інтерфейс користувача
  • Природний робочий процес
  • Має працювати поза коробкою
  • Там не потрібні технічні знання там, де вони не потрібні

Ось добре прочитане:

Бікультуралізм

З розповсюдженням Windows, хакерський підхід до кодування став неприхильним. По-перше, це було написання програм C / C ++ найскладнішим і заплутанішим способом, щоб лише найскладніші мізки могли зрозуміти їх як своєрідний обряд проходження. У Windows все почало змінюватися, і "стиль коду" зараз дуже непривілейований. Не впевнений, чи впливає його прямий Windows чи, скоріше, новий рівень розуміння якості коду, але принаймні своєчасно вони збігаються.


7
Я не думаю, що жодна з цих кульових точок особливо добре стосується Windows.
Том Хотін - тайклін

4
@Tom: Це філософія; це не стосується нічого. Тим не менш, я вважаю, що це дуже добре стосується більшості речей у світі Windows.
Аллон Гуралнек

@Том я згоден з @Allon більше, тому що мені здається, що питання ОП - це більше програмування Console vs GUI.
gideon

6
Що?!? Погляньте на старі добрі джерела BSD та AT&T. Чисто, просто, елегантно. І я ніколи не бачив нічого більш заплутаного, ніж типовий роздутий MFC-код.
SK-логіка

Навіть жорстко немає єдиної правильної відповіді, мені це найбільше сподобалось. Блог Джоеля був чудовим.
Маглоб

8

Я думаю, що розбіжності, з якими ви міркуєте у своєму запитанні, стосуються більше користувачів цих систем, ніж стилів програмування їх розробників. * Nix тривалий час був полем ні програміста, ні комп'ютерного ентузіаста. На шляху до «випадкового» використання було дуже мало. Якщо Windows має [домашнє] число користувачів на порядок більше.

Випадкові користувачі не хочуть згадувати десяток різних прапорів командного рядка для запуску програми. Вони хочуть натиснути на кнопку.

Випадкові користувачі не хочуть турбуватися про файли конфігурації своїх систем або про те, як Fluffy Kitties запам’ятовує свою улюблену породу котячих.

Випадкові користувачі, як правило, використовують щось, якщо вони роблять те, що хочуть, навіть якщо є "кращі" продукти.

Я думаю, що тут головним моїм питанням є: Windows - це дуже багато про створення для користувача , а не для творця . Не йдіть проти давніх парадигм, які існують у розробці Windows. Не забруднюйте користувачів "Мої документи" лайном і не вставляйте себе в їх запуск без жодної причини.

Можливо, подібне значення: написати документацію користувача.


7
Документація користувача? Користувачам успішних програм ніколи не доведеться торкатися жодної документації.

@Developer Art - це правда до певного моменту, але коли ви пишете програмне забезпечення для, скажімо, фізики частинок, яке повинні розуміти люди різних національностей, можливість сказати "натисніть тут, щоб описати, що ми робимо з вашими даними тут ", якщо простіше, ніж написати телепатичний комп'ютер, який зможе витягти з розуму очікування користувачів.
TZHX

3
"Не забруднюйте користувача лайнами." - досить іронічно.
ocodo

1
як так, Сломойо?
TZHX


4

Компроміс та налаштування

Це не найкраще в чому-небудь, але якщо ви готові вкластися вчасно і приймати якісь непомітні рішення в деяких місцях, мало чого, ви не зможете зробити це. Якщо вам не подобається те, що він зараз робить, можливо, ви можете змінити це. Мало місця, де є лише один спосіб чи навіть спосіб, який завжди найкращий.

Достатньо добре для запуску користувача

Дуже мало речей феноменально поза коробкою, але більшість речей є корисними. Unix прагне йти в тому напрямку, де нічого не працює, поки ви не налаштуєте його, і Apple зробить все досить відшліфованим, але ціною певної налаштованості / гнучкості.

Очікуйте, що хвіст підтримує колоду

Користувачі Windows не оновлюються лише тому, що є новіша версія. Вони навіть не завжди оновлюються через вразливість або помилку. Користувачів Windows часто потрібно примушувати до оновлення, але якщо ви змусите їх швидко оновити, вони шукатимуть альтернативних продуктів

Користувачі мають широкий спектр рівнів кваліфікації

У Unix є високий сприйнятий бар'єр для входу з технічного рівня з точки зору випадкового домашнього користувача. Apple мав дуже низький сприйнятий необхідний рівень кваліфікації, але не спонукає випадкового користувача зробити багато чого на шляху налаштування своєї ОС. Windows знаходиться між ними. Починати користуватися лише дещо складніше, ніж продукти Apple, але є багато простої інформації, іноді прямо в самій інсталяції, про те, як іти на зміну деякої досить глибокої конфігурації системи. Це призводить до досить випадкового рівня навичок середнього рівня користувачів, тому що якщо вони досить впевнені, щоб спробувати щось, є хороший шанс, вони можуть зрозуміти, як це зробити. Він також залишає більш боязких користувачів без будь-якого досвіду в деяких випадках, оскільки вони насторожено ставляться до попереджень про те, що мої справи йдуть не так.



2

UNIX давно був для програмістів і таких людей, а Windows завжди був для користувачів, які не знають, як писати bash-скрипти. Для цього у Windows слід дбати про користувачів, це означає зробити один інструмент для всіх завдань, які користувачеві не потрібно хвилюватися, хто налаштувати кілька програм для спільної роботи.


1

Я не впевнений, чи це філософія, але в IMHO є така щільність думок, яка відповідає програмуванню Windows. Також є почуття здивування, як іноді все працює.

Я рекомендую терпіння, якщо ви займаєтесь розробкою Windows та трохи піклуєтесь про свої припущення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.