Gibt es eine Windows-Programmierphilosophie? [geschlossen]

30

Ich habe sowohl in Unix- als auch in Windows-Umgebungen programmiert. Meist habe ich in Unix gearbeitet, wo ich die Unix-Philosophie gelernt habe , die sich wie folgt zusammenfassen lässt

  • Schreiben Sie Programme, die eines können und es gut machen.
  • Schreiben Sie Programme, um zusammenzuarbeiten.
  • Schreiben Sie Programme, um Textströme zu verarbeiten, da dies eine universelle Schnittstelle ist.

Es scheint einen deutlichen Unterschied in der Programmierkultur zwischen Unix- und Windows-Welten zu geben, zum Beispiel:

  • GUI vs CLI
  • Registry vs Konfigurationsdateien
  • Viele Werkzeuge, die sich auf einen bestimmten Bedarf spezialisieren, im Vergleich zu einer Gruppe allgemeiner orthogonaler Werkzeuge, die kombiniert werden können

Gibt es eine Entsprechung zur "Unix-Philosophie" in der Windows-Welt? Was Unix-Programmierer von Windows lernen können oder sollten, wenn Sie auf die Programmierung in Windows umsteigen, beachten?

Ich möchte, dass sich die Antworten auf die Best Practices der Windows-Programmierung konzentrieren (und nicht auf einen Kampf zwischen Windows und Unix).

Maglob
quelle
15
Sollte sich bewusst sein? "Dinge werden saugen, schlecht saugen."
Orbling
3
Nur eine Philosophie, die es nicht gibt. ;)
Mudassir
6
Tatsächlich hat Powershell einige Aspekte der Unix-Philosophie in Windows integriert, insbesondere das Schreiben kleiner Programme (tatsächlich Cmdlets in Powershell), die nur eine Funktion haben, und das Kombinieren dieser mit anderen Cmdlets, die andere Funktionen haben. Natürlich wissen die meisten Gelegenheitsbenutzer immer noch nicht, wie sie Powershell verwenden sollen, aber dies hängt davon ab, welche Art von Software Sie schreiben.
JohnL
4
Wir werden es beim dritten Mal richtig machen.
Aufather
7
Die Philosophie von Windows ist es, Einnahmen für Microsoft zu erzielen.
Dan04

Antworten:

28

Es gibt eigentlich so etwas wie "Windows-Philosophie". Meist geht es um das Kompositionskonzept und die Teilentwurfsprogramme der Benutzeroberfläche für Benutzer, nicht für andere Programmierer.

Das bedeutet:

  • Einfache und intuitive Benutzeroberfläche
  • Natürlicher Workflow
  • Sollte sofort funktionieren
  • Dort, wo es nicht erforderlich ist, sind keine technischen Kenntnisse erforderlich

Hier ist eine gute Lektüre:

Bikulturalismus

Mit der Verbreitung von Windows wurde der Hacker-Ansatz für die Codierung immer ungünstiger. Zuerst wurden C / C ++ - Programme auf die komplexeste und verschleierte Weise geschrieben, so dass nur die härtesten Köpfe sie als eine Art Übergangsritus verstehen konnten. Unter Windows begannen sich die Dinge zu ändern und dieser "Codestil" ist nun sehr ungünstig. Ich bin mir nicht sicher, ob der direkte Einfluss von Windows bzw. das neue Verständnis der Codequalität darauf zurückzuführen ist, aber zumindest zeitnah stimmen sie überein.


quelle
7
Ich denke nicht, dass einer dieser Punkte besonders gut auf Windows zutrifft.
Tom Hawtin - Tackline
4
@ Tom: Es ist eine Philosophie; es muss auf nichts zutreffen. Trotzdem glaube ich, dass es für die meisten Dinge in der Windows-Welt sehr gut gilt.
Allon Guralnek
@Tom Ich stimme @Allon eher zu, weil es mir so scheint, als ob die Frage des OP mehr die Programmierung von Konsole vs. GUI ist.
Gideon
6
Was?!? Werfen Sie einen Blick auf gute alte BSD- und AT & T-Quellen. Sauber, einfach und elegant. Und ich habe noch nie etwas Verschleierteres als einen typischen aufgeblähten MFC-Code gesehen.
SK-logic
Auch wenn es keine einzige richtige Antwort gibt, hat mir diese am besten gefallen. Joels Blogpost war großartig.
Maglob
8

Ich denke, die Unterschiede, die Sie in Ihrer Frage erkennen, betreffen eher die Benutzer dieser Systeme als die Programmierstile ihrer Entwickler. * Nix war lange Zeit das Gebiet des Programmierers oder des Computerenthusiasten. Es gab sehr wenig in der Art der "Gelegenheitsnutzung". Wobei Windows [home] Benutzerzahlen hat, die um Größenordnungen größer sind.

Gelegenheitsbenutzer möchten sich nicht ein Dutzend verschiedener Befehlszeilenflags merken, um ein Programm auszuführen. Sie wollen auf eine Schaltfläche klicken.

Gelegenheitsbenutzer möchten sich keine Gedanken über die Konfigurationsdateien ihres Systems machen oder darüber, wie sich Fluffy Kitties an ihre Lieblingskatzenrasse erinnert.

Gelegenheitsbenutzer verwenden in der Regel etwas, solange es das tut, was sie wollen, auch wenn es "bessere" Produkte gibt.

Ich denke, mein wichtigster Punkt hier ist ... Bei Windows geht es eher um das Erstellen für den Benutzer als um den Ersteller . Gehen Sie nicht gegen die langjährigen Paradigmen der Windows-Entwicklung vor. Verschmutzen Sie die Benutzer "Eigene Dateien" nicht mit Mist, und fügen Sie sich nicht ohne Grund in deren Startup ein.

Vielleicht von ähnlicher Bedeutung: Schreiben Sie eine Benutzerdokumentation.

TZHX
quelle
7
Benutzerdokumentation? Benutzer erfolgreicher Programme müssen niemals Dokumente anfassen.
@Developer Art - das ist bis zu einem gewissen Punkt wahr, aber wenn Sie Software schreiben, zum Beispiel Teilchenphysik, die von Menschen verschiedener Nationalitäten verstanden werden muss, die Fähigkeit zu sagen ", klicken Sie hier, um zu beschreiben, was wir mit Ihren Daten machen hier ", wenn es einfacher ist, als einen telepathischen Computer zu schreiben, der die Erwartungen der Benutzer aus ihrem Kopf herausholen kann.
TZHX
3
"Verunreinige den Benutzer nicht mit Mist." - ziemlich ironisch.
ocodo
1
wie so, Slomojo?
TZHX
8

Raymond Chens Blog The Old New Thing und sein gleichnamiges Buch bieten einen großartigen Einblick in die Philosophie, die Geschichte und die bewährten Methoden der nativen Windows-Programmierung.

Andreas Rejbrand
quelle
4

Kompromisse eingehen und anpassen

Es ist überhaupt nicht das Beste, aber wenn Sie bereit sind, Zeit zu investieren und an manchen Orten unangenehme Entscheidungen zu treffen, gibt es wenig, was Sie nicht tun können. Wenn Ihnen das, was es gerade tut, nicht gefällt, können Sie es wahrscheinlich ändern. Es gibt nur wenige Orte, an denen es nur einen oder sogar den besten Weg gibt.

Gut genug für den Benutzer zu starten

Sehr wenige Dinge sind phänomenal, aber die meisten Dinge sind brauchbar. Unix tendiert dazu, in die Richtung zu gehen, in die nichts funktioniert, bis Sie es konfigurieren und Apple alles hübsch poliert, aber auf Kosten einiger Konfigurierbarkeit / Flexibilität.

Erwarten Sie einen Protokollunterstützungsschwanz

Windows-Benutzer aktualisieren nicht, nur weil es eine neuere Version gibt. Sie aktualisieren aufgrund einer Sicherheitsanfälligkeit oder eines Bugfixes nicht immer. Windows-Benutzer müssen häufig zu einem Upgrade gezwungen werden. Wenn Sie sie jedoch zu einem schnellen Upgrade zwingen, suchen sie nach alternativen Produkten

Benutzer haben eine breite Palette von Qualifikationsstufen

Unix hat aus Sicht eines gelegentlichen Heimanwenders eine hohe wahrgenommene Eintrittsbarriere auf technischer Ebene. Apple hatte ein sehr geringes erachtetes erforderliches Fähigkeitsniveau, ermutigt den Gelegenheitsbenutzer jedoch nicht, viel in der Art und Weise zu tun, wie sein Betriebssystem angepasst wird. Windows ist dazwischen. Der Einstieg in die Verwendung von Apple-Produkten ist nur geringfügig schwieriger als bei Apple-Produkten. Es stehen jedoch viele einfache Informationen zur Verfügung, die manchmal direkt bei der Installation zur Verfügung stehen, um eine gründliche Systemkonfiguration zu ändern. Dies führt zu einer eher zufälligen Fähigkeitsstufe in der Mittelschicht der Benutzer, denn wenn sie sicher genug sind, etwas auszuprobieren, besteht eine gute Chance, dass sie herausfinden, wie dies zu tun ist. Es lässt auch die schüchterneren Benutzer ohne Erfahrung in einigen Fällen, weil sie der Warnung, dass Dinge schief gehen, vorsichtig sind.

Rechnung
quelle
2

UNIX war vor langer Zeit für Programmierer und solche Leute gedacht, und Windows war immer für Benutzer, die nicht wissen, wie man Bash-Skripte schreibt. Daher sollten Sie sich in Windows um Benutzer kümmern, dh ein Tool für alle Aufgaben erstellen, bei denen sich der Benutzer nicht darum kümmern muss, wer wenige Programme für die Zusammenarbeit konfiguriert.

Dainius
quelle
1

Ich bin nicht sicher, ob es eine Philosophie ist, aber meiner Meinung nach gibt es eine Art Denkdichte, die mit der Windows-Programmierung zusammenhängt. Es ist auch ein Gefühl der Überraschung, wie die Dinge manchmal funktionieren.

Ich würde Geduld empfehlen, wenn Sie sich für die Windows-Entwicklung interessieren und etwas mehr auf Ihre Annahmen achten.

John Bickers
quelle