web-dev-qa-db-ja.com

Windowsのプログラミング哲学はありますか?

UnixとWindowsの両方の環境でプログラミングを行ってきました。ほとんどの場合、私はUnixで働いたことがあります nix Philosophy を学びました。

  • 1つのことを行うプログラムを作成し、それをうまく実行します。
  • 一緒に動作するプログラムを作成します。
  • テキストストリームを処理するプログラムを作成します。これは、汎用インターフェイスであるためです。

たとえば、UnixとWindowsの世界ではプログラミング文化に明確な違いがあるようです。

  • GUI対CLI
  • レジストリと構成ファイル
  • 特定のニーズに特化した多くのツールと組み合わせることができる一般的な直交ツールのグループ

Windowsの世界に「Unixの哲学」に相当するものはありますか?Windowsから学ぶことができるUnixプログラマーは何ですか、またはWindowsでのプログラミングに移行するときに注意する必要がありますか?

Windowsプログラミングのベストプラクティス(WindowsとUnixの間の戦いではない)に焦点を当てる回答をお願いします。

30
Maglob

「Windowsの哲学」のようなものがあります。ほとんどの場合、それは作曲の概念とユーザーインターフェイスの部分に関するものです。他のプログラマー向けではなく、ユーザー向けのプログラムを設計してください。

つまり:

  • シンプルで直感的なユーザーインターフェイス
  • 自然なワークフロー
  • 箱から出して動作する必要があります
  • 必要のない場所では、技術的な知識は必要ありません

これは良い読みです:

バイカルチュラリズム

Windowsの急増に伴い、ハッカーによるコーディングへのアプローチは好まれなくなりました。まず、C/C++プログラムを最も複雑で難読化された方法で記述し、最も難しい脳だけが一種の通過儀礼としてそれらを理解できるようにしました。 Windowsでは、状況が変化し始め、その「コードスタイル」は現在非常に不利になっています。その直接的なWindowsがコード品質の新しいレベルの理解に影響を与えるかどうかはわかりませんが、少なくともタイムリーに一致します。

28
user8685

レイモンドチェンのブログ The Old New Thing そして、彼の 同じ名前の本 はネイティブのWindowsプログラミングの哲学、歴史、ベストプラクティスに対する優れた洞察。

8

質問の中でおっしゃっている違いは、開発者のプログラミングスタイルではなく、これらのシステムのユーザーに関するものだと思います。長い間、* nixはプログラマーまたはコンピューティングマニアのどちらかの分野でした。 「カジュアル」な使用方法はほとんどありませんでした。 Windowsの[ホーム]ユーザー数は桁違いに大きいのですが。

カジュアルなユーザーは、プログラムを実行するための12の異なるコマンドラインフラグを覚えておきたくありません。彼らはボタンをクリックしたいです。

カジュアルなユーザーは、システム構成ファイルや、Fluffy Kittiesがお気に入りのネコ科動物をどのように記憶しているかについて心配したくありません。

カジュアルなユーザーは、「より良い」製品が入手できる場合でも、通常、必要なことを行う限り何かを使用します。

ここでの私の主なポイントは... Windowsはcreatorではなくserのために作成することです。 Windows開発に存在する長年のパラダイムに反対しないでください。ユーザーのマイドキュメントをがらくたで汚したり、理由もなくスタートアップに自分を挿入したりしないでください。

多分同様の重要性:ユーザードキュメントを書く

8
TZHX

妥協とカスタマイズ

それは何でも最高ではありませんが、時間をかけて喜んでいくつかの場所で不愉快な決断をする意思があるなら、そうすることはほとんどできません。現在の動作が気に入らない場合は、おそらく変更できます。方法が1つしかない、または常に最善の方法がある場所はほとんどありません。

ユーザーが開始するのに十分

箱から出しただけで驚異的なものはほとんどありませんが、ほとんどのものは使用可能です。 Unixは、設定するまで何も機能しない方向に向かう傾向があり、Appleはすべてをかなり洗練されていますが、設定可能性/柔軟性を犠牲にしています。

ログサポートの末尾を期待

Windowsユーザーは、新しいバージョンがあるという理由だけではアップグレードしません。脆弱性やバグ修正のため、常にアップグレードされるとは限りません。多くの場合、Windowsユーザーはアップグレードを強制される必要がありますが、ユーザーに迅速なアップグレードを強制すると、代替製品が求められます。

ユーザーは幅広いスキルレベルを持っています

Unixは、カジュアルなホームユーザーの観点から見ると、技術レベルからの参入を妨げていると考えられています。 Appleは必要なスキルレベルが非常に低いと感じていましたが、カジュアルなユーザーがOSをカスタマイズする方法で多くのことを行うことを奨励していません。Windowsはその中間です。使用を開始するのはわずかに難しいだけですよりもApple製品ですが、かなり詳細なシステム構成を変更する方法について、インストール自体の中に、時には簡単な情報がたくさんあります。これはかなりランダムにつながりますユーザーの中間層のスキルレベルは、何かを試すのに十分な自信があれば、その方法を理解できる可能性が高いためです。また、場合によっては、臆病なユーザーが経験を積まないので、私がうまくいかないという警告。

4
Bill

Windowsは、アプリケーション開発をガイドする IBMの共通ユーザーアクセス(CUA)標準 の明示的なサポートを使用して構築されました。

もちろん、これはユーザーにMacのようなエクスペリエンスを作成する試みでした。

3
Steven A. Lowe

昔のUNIXはプログラマーやそのような人々のためのもので、Windowsは常にbashスクリプトの書き方を知らないユーザーのためのものでした。そのため、Windowsではユーザーを気にする必要があります。つまり、すべてのタスクに対して1つのツールを作成し、ユーザーが共同で動作するようにいくつかのプログラムを構成する必要がないようにする必要があります。

2
Dainius

それが哲学なのかどうかはわかりませんが、私見では、Windowsプログラミングには一種の密度の高い思考があります。物事が時々どのように機能するかに驚きの感覚もあります。

Windowsの開発を採用していて、想定にもう少し注意を払っている場合は、忍耐をお勧めします。

1
John Bickers