Czy istnieje filozofia programowania w systemie Windows? [Zamknięte]

30

Programowałem zarówno w środowisku Unix, jak i Windows. Przeważnie pracowałem w Uniksie, gdzie nauczyłem się filozofii Unix , którą można streścić jako

  • Pisz programy, które robią jedną rzecz i robią to dobrze.
  • Pisz programy do współpracy.
  • Pisz programy do obsługi strumieni tekstowych, ponieważ jest to uniwersalny interfejs.

Wydaje się, że istnieje wyraźna różnica w kulturach programowania między światami Unix i Windows, na przykład:

  • GUI vs CLI
  • Rejestr a pliki konfiguracyjne
  • Wiele narzędzi specjalizujących się w danej potrzebie w porównaniu z grupą ogólnych narzędzi ortogonalnych, które można łączyć

Czy w świecie Windows istnieje odpowiednik „filozofii uniksowej”? Czego programista uniksowy może nauczyć się od systemu Windows lub powinien wiedzieć o przejściu na programowanie w systemie Windows?

Chciałbym, aby odpowiedzi koncentrowały się na najlepszych praktykach programowania w systemie Windows (a nie na walce między Windows i Unixem).

Maglob
źródło
15
Powinieneś być tego świadomy? „Rzeczy będą ssać, ssać źle”.
Orbling
3
Tylko jedna filozofia, że ​​nie ma filozofii. ;)
Mudassir,
6
W rzeczywistości Powershell wprowadził do systemu Windows część filozofii uniksowej, w szczególności pisząc małe programy (właściwie polecenia cmdlet w Powershell), które robią tylko jedną rzecz, i łącząc je z innymi poleceniami cmdlet wykonującymi inne rzeczy. Oczywiście większość zwykłych użytkowników nadal nie wie, jak korzystać z Powershell, ale tego rodzaju zależy od tego, jakie oprogramowanie piszesz.
JohnL
4
Zrobimy to dobrze za trzecim razem.
sierpnia
7
Filozofią systemu Windows jest generowanie przychodów dla firmy Microsoft.
dan04

Odpowiedzi:

28

W rzeczywistości istnieje coś takiego jak „filozofia Windows”. Głównie chodzi o koncepcję kompozycji i część interfejsu użytkownika - projektowanie programów dla użytkowników, a nie dla innych programistów.

To znaczy:

  • Proste i intuicyjne interfejsy użytkownika
  • Naturalny przepływ pracy
  • Powinien działać po wyjęciu z pudełka
  • Tam, gdzie nie jest wymagana, nie jest wymagana wiedza techniczna

Oto dobra lektura:

Dwukulturowość

Wraz z rozprzestrzenianiem się systemu Windows podejście hakerów do kodowania zaczęło być uprzywilejowane. Najpierw pisał programy C / C ++ w najbardziej złożony i zaciemniony sposób, aby tylko najtrudniejsze mózgi mogły je zrozumieć, jako rodzaj rytuału przejścia. W systemie Windows wszystko zaczęło się zmieniać i ten „styl kodu” jest obecnie wysoce nielubiany. Nie jestem pewien, czy jego bezpośredni wpływ na system Windows, a raczej nowy poziom zrozumienia jakości kodu, ale przynajmniej na czas się pokrywają.


źródło
7
Nie sądzę, aby którykolwiek z tych punktów miał zastosowanie szczególnie dobrze w systemie Windows.
Tom Hawtin - tackline
4
@Tom: To filozofia; nie musi mieć zastosowania do niczego. Niemniej jednak uważam, że ma to zastosowanie bardzo do większości rzeczy w świecie Windows.
Allon Guralnek
@Tom W większym stopniu zgadzam się z @Allon, ponieważ wydaje mi się, że pytanie OP to więcej konsol kontra programowanie GUI.
gideon
6
Co?!? Spójrz na stare dobre źródła BSD i AT&T. Czysty, prosty, elegancki. I nigdy nie widziałem nic bardziej zaciemnionego niż typowy rozdęty kod MFC.
SK-logic
Nawet jeśli nie ma jednej poprawnej odpowiedzi, podoba mi się ta jedna. Post na blogu Joela był świetny.
Maglob
8

Myślę, że różnice, które przytaczasz w swoim pytaniu, dotyczą bardziej użytkowników tych systemów niż stylów programowania ich programistów. Przez długi czas * nix zajmował się zarówno programistą, jak i entuzjastą komputerów. Bardzo niewiele było w „zwykłym” użyciu. Gdzie jak Windows ma [domowy] numer użytkownika, rząd wielkości większy.

Zwykli użytkownicy nie chcą pamiętać tuzina różnych flag wiersza poleceń, aby uruchomić program. Chcą kliknąć przycisk.

Przypadkowi użytkownicy nie chcą się martwić plikami konfiguracyjnymi systemu ani tym, jak Fluffy Kitties pamięta swoją ulubioną rasę kotów.

Zwykli użytkownicy zazwyczaj używają czegoś, o ile robi to, czego chcą, nawet jeśli dostępne są „lepsze” produkty.

Myślę, że moim głównym celem jest tutaj ... Windows polega głównie na tworzeniu dla użytkownika , a nie na twórcy . Nie sprzeciwiaj się od dawna paradygmatom, które istnieją w rozwoju Windows. Nie zanieczyszczaj użytkowników My Documents bzdurami, ani nie wkładaj się do ich uruchamiania bez powodu.

Może o podobnym znaczeniu: napisz dokumentację użytkownika.

TZHX
źródło
7
Dokumentacja użytkownika? Użytkownicy udanych programów nigdy nie będą musieli dotykać żadnej dokumentacji.
@Developer Art - jest to do pewnego stopnia prawdziwe, ale kiedy piszesz oprogramowanie, powiedzmy, fizyki cząstek elementarnych, które musi być zrozumiane przez ludzi różnych narodowości, możliwość powiedzenia „kliknij tutaj, aby zobaczyć, co robimy z Twoimi danymi tutaj ”, jeśli łatwiejsze niż pisanie komputera telepatycznego, który będzie w stanie wyodrębnić oczekiwania użytkowników z ich umysłu.
TZHX,
3
„Nie zanieczyszczaj użytkownika badziewiem”. - dość ironiczne.
ocodo
1
jak to jest, Slomojo?
TZHX
4

Kompromis i dostosowanie

W niczym nie jest to najlepsze, ale jeśli jesteś gotów poświęcić czas i podjąć niefortunne decyzje w niektórych miejscach, niewiele możesz zrobić. Jeśli nie podoba ci się to, co obecnie robi, prawdopodobnie możesz to zmienić. Jest kilka miejsc, w których istnieje tylko jeden sposób, a nawet taki, który jest zawsze najlepszy.

Wystarczająco dobre dla użytkownika, aby rozpocząć

Bardzo niewiele rzeczy jest fenomenalnych od razu po wyjęciu z pudełka, ale większość rzeczy nadaje się do użytku. Unix zmierza w kierunku, w którym nic nie działa, dopóki go nie skonfigurujesz, a Apple sprawi, że wszystko będzie dość dopracowane, ale kosztem pewnej konfiguracji / elastyczności.

Spodziewaj się ogona wsparcia dziennika

Użytkownicy systemu Windows nie dokonują aktualizacji tylko dlatego, że istnieje nowsza wersja. Nie zawsze aktualizują się z powodu usterki lub poprawki błędu. Użytkownicy systemu Windows często muszą być zmuszeni do aktualizacji, ale jeśli zmusisz ich do szybkiej aktualizacji, będą szukać alternatywnych produktów

Użytkownicy mają szeroki zakres poziomów umiejętności

Unix ma wysoką postrzeganą barierę wejścia z poziomu technicznego z punktu widzenia zwykłego użytkownika domowego. Apple miał bardzo niski postrzegany wymagany poziom umiejętności, ale nie zachęca przypadkowego użytkownika do zrobienia wiele w zakresie dostosowywania swojego systemu operacyjnego. Windows jest pomiędzy. Korzystanie z produktów Apple jest tylko nieco trudniejsze, ale dostępnych jest wiele prostych informacji, czasem w samej instalacji, na temat zmiany dość szczegółowej konfiguracji systemu. Prowadzi to do raczej losowego poziomu umiejętności na środkowym poziomie użytkowników, ponieważ jeśli są wystarczająco pewni siebie, aby spróbować czegoś, istnieje duża szansa, że ​​mogą wymyślić, jak to zrobić. Pozostawia także bardziej nieśmiałych użytkowników bez doświadczenia w niektórych przypadkach, ponieważ obawiają się ostrzeżeń, że moje błędy się nie udają.

Rachunek
źródło
3

System Windows został zbudowany z wyraźną obsługą standardu IBM Common User Access (CUA) w celu ułatwienia tworzenia aplikacji.

Co oczywiście było próbą stworzenia wrażenia podobnego do Maca dla użytkownika.

Steven A. Lowe
źródło
2

UNIX dawno temu był dla programistów i takich osób, a Windows zawsze był dla użytkowników, którzy nie wiedzą, jak pisać skrypty bash. Dlatego w systemie Windows powinieneś dbać o użytkowników, co oznacza, że ​​stworzysz jedno narzędzie do wszystkich zadań, których użytkownik nie musi się martwić, kto skonfigurować kilka programów do współpracy.

Dainius
źródło
1

Nie jestem pewien, czy jest to filozofia, ale IMHO ma coś w rodzaju myślenia związanego z programowaniem w systemie Windows. Czasami zdarza się również zaskoczenie.

Polecam cierpliwość, jeśli angażujesz się w programowanie systemu Windows i bardziej troszczysz się o swoje założenia.

John Bickers
źródło