Esiste una filosofia di programmazione di Windows? [chiuso]


30

Ho programmato sia in ambiente Unix che Windows. Principalmente ho lavorato in Unix, dove ho imparato Unix Philosophy , che può essere sintetizzato come

  • Scrivi programmi che fanno una cosa e la fanno bene.
  • Scrivi programmi per lavorare insieme.
  • Scrivi programmi per gestire i flussi di testo, perché questa è un'interfaccia universale.

Sembra esserci una chiara differenza nelle culture di programmazione tra i mondi Unix e Windows, ad esempio:

  • GUI vs CLI
  • File di registro vs file di configurazione
  • Molti strumenti specializzati per ogni esigenza rispetto a un gruppo di strumenti ortogonali generici che possono essere combinati

Esiste un equivalente della "filosofia Unix" nel mondo Windows? Cosa può imparare il programmatore Unix da Windows o dovrebbe essere consapevole quando si passa alla programmazione in Windows?

Vorrei che le risposte si concentrassero sulle migliori pratiche di programmazione di Windows (e non su una lotta tra Windows e Unix).


15
Dovrebbe essere consapevole? "Le cose fanno schifo, fanno schifo."
Orbling

3
Solo una filosofia che non esiste filosofia. ;)
Mudassir,

6
In realtà Powershell ha portato parte della filosofia Unix in Windows, in particolare scrivendo piccoli programmi (in realtà cmdlet in Powershell) che fanno solo una cosa e combinandoli con altri cmdlet che fanno altre cose. Naturalmente, la maggior parte degli utenti occasionali non sa ancora come utilizzare Powershell, ma questo tipo di dipende dal tipo di software che stai scrivendo.
Giovanni

4
Ci riusciremo la terza volta.
aufather

7
La filosofia di Windows è quella di portare entrate a Microsoft.
dan04,

Risposte:


28

In realtà esiste qualcosa come "filosofia di Windows". Principalmente riguarda il concetto di composizione e la parte dell'interfaccia utente - progettare programmi per utenti non per altri programmatori.

Questo significa:

  • Interfacce utente semplici ed intuitive
  • Flusso di lavoro naturale
  • Dovrebbe funzionare fuori dalla scatola
  • Nessuna conoscenza tecnica richiesta là dove non è richiesta

Ecco una buona lettura:

biculturalismo

Con la proliferazione di Windows, l'approccio degli hacker alla codifica ha iniziato a diventare sfavorevole. Innanzitutto stava scrivendo i programmi C / C ++ nel modo più complesso e offuscato, in modo che solo i cervelli più difficili potessero capirli, come una sorta di rito di passaggio. Sotto Windows le cose hanno iniziato a cambiare e quello "stile di codice" è ora molto sfavorevole. Non sono sicuro se la sua influenza diretta su Windows o piuttosto il nuovo livello di comprensione della qualità del codice, ma almeno tempestivamente coincidono.


7
Non credo che nessuno di quei punti elenco si applichi particolarmente bene a Windows.
Tom Hawtin - affronta il

4
@ Tom: è una filosofia; non è necessario applicare a nulla. Tuttavia, credo che si applichi molto bene alla maggior parte delle cose nel mondo di Windows.
Allon Guralnek,

@Tom Sono d'accordo con @Allon di più perché a me sembra che la domanda dell'OP sia più la programmazione Console vs GUI.
Gideon,

6
Che cosa?!? Dai un'occhiata alle buone vecchie fonti BSD e AT&T. Pulito, semplice, elegante. E non ho mai visto nulla di più offuscato di un tipico codice MFC gonfio.
Logica SK

Anche difficile non c'è una sola risposta corretta, questa mi è piaciuta di più. Il post sul blog di Joel è stato fantastico.
Maglob,

8

Penso che le differenze a cui alludi nella tua domanda riguardino più gli utenti di questi sistemi che gli stili di programmazione dei loro sviluppatori. Per molto tempo, * nix è stato il campo del programmatore o dell'appassionato di informatica. C'era ben poco in termini di uso "casuale". Dove come Windows ha [home] l'utente numera gli ordini di grandezza maggiore.

Gli utenti occasionali non vogliono ricordare una dozzina di flag di riga di comando diversi per eseguire un programma. Vogliono fare clic su un pulsante.

Gli utenti occasionali non vogliono preoccuparsi dei file di configurazione dei loro sistemi o di come Fluffy Kitties ricordi la loro razza preferita di felini.

Gli utenti occasionali generalmente usano qualcosa fintanto che fa quello che vogliono, anche se ci sono prodotti "migliori" disponibili.

Penso che il mio punto principale qui sia ... Windows è molto sulla creazione per l' utente , piuttosto che per il creatore . Non andare contro i paradigmi di vecchia data che esistono nello sviluppo di Windows. Non inquinare i Documenti degli utenti con merda, o inserirti nel loro avvio senza motivo.

Forse di importanza simile: scrivere la documentazione per l'utente.


7
Documentazione per l'utente? Gli utenti di programmi di successo non dovranno mai toccare alcuna documentazione.

@Developer Art - questo è vero fino a un certo punto, ma quando scrivi software per esempio, fisica delle particelle che deve essere compresa da persone di varie nazionalità, la capacità di dire "fai clic qui per la descrizione di ciò che facciamo con i tuoi dati qui "se più facile che scrivere un computer telepatico che sarà in grado di estrarre le aspettative degli utenti dalla loro mente.
TZHX,

3
"Non inquinare l'utente con merda." - abbastanza ironico.
ottobre

1
come, Slomojo?
TZHX,


4

Compromettere e personalizzare

Non è il migliore in assoluto, ma se sei disposto a prenderti il ​​tempo e prendere delle decisioni sgradevoli in alcuni posti, c'è poco che non puoi farcela. Se non ti piace quello che sta facendo, probabilmente puoi cambiarlo. Ci sono pochi posti in cui esiste un solo modo o anche un modo che è sempre il migliore.

Abbastanza buono per l'utente di iniziare

Pochissime cose sono fenomenali fuori dalla scatola, ma molte cose sono utilizzabili. Unix tende ad andare nella direzione in cui nulla funziona fino a quando non lo si configura e Apple rende tutto abbastanza lucido, ma a costo di una certa configurabilità / flessibilità.

Aspettatevi una coda di supporto del registro

Gli utenti Windows non eseguono l'aggiornamento solo perché esiste una versione più recente. Non si aggiornano nemmeno sempre a causa di una vulnerabilità o correzione di bug. Gli utenti di Windows devono spesso essere costretti ad aggiornare, ma se li costringi ad aggiornare rapidamente cercheranno prodotti alternativi

Gli utenti hanno una vasta gamma di livelli di abilità

Unix presenta un'elevata barriera all'ingresso da un livello tecnico dal punto di vista di un utente domestico occasionale. Apple aveva un livello di abilità richiesto percepito molto basso, ma non incoraggia l'utente occasionale a fare molto nel modo di personalizzare il proprio sistema operativo. Windows è nel mezzo. È solo leggermente più difficile iniziare a utilizzare rispetto ai prodotti Apple, ma ci sono molte semplici informazioni disponibili, a volte proprio nell'installazione stessa, su come procedere per modificare una configurazione di sistema piuttosto approfondita. Questo porta a un livello di abilità piuttosto casuale nel livello intermedio degli utenti perché se sono abbastanza sicuri di provare qualcosa, ci sono buone possibilità che possano capire come farlo. Inoltre lascia gli utenti più timidi senza alcuna esperienza in alcuni casi perché diffidano degli avvertimenti che le cose vanno male.



2

UNIX molto tempo fa era per programmatori e persone del genere e Windows lo era sempre per utenti che non sapevano scrivere script bash. Pertanto in Windows dovresti preoccuparti degli utenti, questo significa creare uno strumento per tutte le attività che l'utente non deve preoccuparsi di chi configurare pochi programmi per lavorare insieme.


1

Non sono sicuro che si tratti di una filosofia, ma IMHO ha una sorta di densità di pensiero che si accompagna alla programmazione di Windows. C'è anche un senso di sorpresa su come funzionano le cose a volte.

Consiglierei la pazienza se stai abbracciando lo sviluppo di Windows e stai prendendo un po 'più di attenzione sui tuoi presupposti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.