タグ付けされた質問 「philosophy」

7
より強力な貢献者によって忘却に分岐することを避ける方法は?
ここで最近報告されたように: Xamarinは、2D / 3Dゲーム開発フレームワークであるCocos2D-XNAを分岐させ、PCLプロジェクトに含めることができるクロスプラットフォームライブラリを作成しました。 ただし、分岐したプロジェクトの創設者は次のように述べています。 MITライセンスの目的は、公正使用を妨げないことです。あなたが言うように、ソフトウェアを自分のものとしてブランド変更し、それから「新しい方向に持って行く」ことを奨励しないでください。 違法ではありませんが、非倫理的です。 新しいプロジェクトのGitHub ページでは、それが典型的なGitHubのようにフォークであることさえ示していないようで、代わりに簡単に取り外し可能な履歴セクションを選択しています(下を参照)。 だから私の質問は: Xamarinのアクションとアクションの実行方法は倫理的でしたか? あなたが独身の開発者または小さな資金のない開発者グループである場合、そのような状況を避けることは可能ですか? これがwikiの質問になるか、現代のOSS倫理/哲学に基づいた客観的な答えがあることを望んでいます。

13
未定義行動の背後にある哲学
C \ C ++仕様では、コンパイラが独自の方法で実装するための多数の動作が公開されていません。同じことについて常にここで質問され続ける多くの質問があり、それに関するいくつかの素晴らしい投稿があります: https://stackoverflow.com/questions/367633/what-are-all-the-common-undefined-behaviour-that-ac-programmer-should-know-abo https://stackoverflow.com/questions/4105120/what-is-undefined-behavior https://stackoverflow.com/questions/4176328/undefined-behavior-and-sequence-points 私の質問は、未定義の振る舞いについてではなく、本当に悪いことです。危険と標準からの関連する未定義の動作の引用のほとんどを知っているので、それがどれほど悪いかについての回答を投稿することは控えてください。この質問は、コンパイラ実装のために非常に多くの動作を開いたままにすることの背後にある哲学に関するものです。 パフォーマンスが主な理由であると述べている素晴らしいブログ記事を読みました。パフォーマンスがそれを許可するための唯一の基準であるのか、それともコンパイラー実装のためにオープンなままにする決定に影響する他の要因があるのか​​疑問に思っていましたか? 特定の未定義の動作がコンパイラが最適化するのに十分な余地を提供する方法について引用する例がある場合は、それらをリストしてください。パフォーマンス以外の他の要因を知っている場合は、十分な詳細を含めて回答を返してください。 質問を理解していないか、回答を裏付ける十分な証拠/情報源がない場合は、広く推測する回答を投稿しないでください。

7
固い原則とヤグニ
ソリッド原則はいつYAGNIになりますか? プログラマとして、複雑さ、保守性、構築時間などの間で常にトレードオフを行います。とりわけ、選択を行うための最も賢明なガイドラインの2つは、SOLID原則とYAGNIです。必要ない場合; ビルドせず、クリーンに保ちます。 たとえば、SOLIDのダイムキャストシリーズを見ると、かなり単純なプログラムとして始まり、非常に複雑なプログラムになります(最後にはい複雑さも見る人の目にあります)。私は不思議に思う:いつ固い原則はあなたが必要としない何かに変わるのか?すべての堅固な原則は、後の段階で使用して変更を加えることを可能にする作業方法です。しかし、解決すべき問題が非常に単純で、使い捨てのアプリケーションである場合はどうでしょうか?または、SOLID原則は常に適用されるものですか? コメントで尋ねられたように: 固い原則 ヤグニ

26
言語デザイナーに何に注意してもらいたいですか?[閉まっている]
この質問の目的は、それなしでは生きていけない、または選択したメイン言語で望んでいたプログラミング言語機能のランドリーリストを組み立てることではありません。この質問の目的は、ほとんどの言語設計者が考えていないかもしれない言語設計の隅を明らかにすることです。したがって、言語機能Xについて考える代わりに、もう少し哲学的に考えてください。 私の偏見の1つであり、おそらく議論の余地があるかもしれませんが、エンジニアリングのより柔らかい側面(理由と理由)が、より具体的な側面よりも何倍も重要であるということです。たとえば、Rubyは、開発者の幸福を改善するという目標を掲げて設計されました。それが実現したかどうかについてあなたの意見はまちまちかもしれませんが、目標であったという事実は、言語設計の選択のいくつかがその哲学によって影響を受けたことを意味します。 投稿しないでください: 構文フレーム戦争。それに直面しましょう、私たちには好みがあり、言語設計に関係する構文が重要です。私は、emacs vs. VI(最近では多くの人が何も知らない)の性質の壮大な戦いを避けたいだけです。 「機能Xを持たない言語は存在するに値しない」とコメントを入力します。すべてのプログラミング言語が存在する理由は、少なくとも1つあります。良いか悪いかです。 してください行うポスト: 言語デザイナーが見逃していると思われる哲学的アイデア。 実装頻度が低いと思われる技術的概念。それが引き起こす痛みの例を提供してください、そしてあなたがそれが機能するのを好む方法のアイデアがあれば。 希望するものはプラットフォームの共通ライブラリにありましたが、めったにありません。同じトークンがありますが、通常は共通ライブラリにあるものはそうではありません。 すべてのプログラミング言語が適切に実装され、適切に定義されることを望む、組み込みのテスト/アサーション/契約/エラー処理サポートなどの概念的な機能。 私の希望は、これが楽しく刺激的なトピックになることです。 編集: Syntax Flame Warsの意味を明確にしました。特に構文はプログラム言語設計の基本的な部分であるため、構文のすべての議論を避けようとはしていません。

4
Pythonの「それを行う唯一の方法」格言の具体例[終了]
私はPythonを学んでおり、PEP 20 The Zen of Pythonの次の点に興味があります。 明白な方法が1つあり、できれば1つだけである必要があります。オランダ人でない限り、その方法は最初は明らかではないかもしれませんが。 誰もこの格言の具体的な例を提供できますか?Rubyなどの他の言語とのコントラストに特に興味があります。Rubyの設計哲学の一部(Perlを起源とするのでしょうか?)は、それを行う複数の方法が良いことであるということです。誰もが各アプローチの長所と短所を示すいくつかの例を提供できますか。注:私はどちらが良いか(おそらく主観的すぎて答えられない)の答えではなく、2つのスタイルの公平な比較を求めています。

10
早期出荷、出荷なし[クローズ]
これは「自己への注意」として始まったので、欲求不満があまりにも明白であり、文章が星よりも少ない場合はごめんなさい... 最近、私の心の最前線にいた3つの主要なテーマ: 動機 学習(好奇心) 実行(作成) 私は今、モチベーションとインセンティブを数ヶ月間研究しています。人々が物事を行うために持っているかもしれないさまざまな動機が無数にあるようです(私はそれは些細な音に聞こえますが、私と一緒に耐えます)。なぜ自分がすることをするのか、やりたいがしないのはなぜしないのかを知るのに必死だから、私はそれに本当に惹かれました。 私はポール・グラハムの優れたハッカーと画家の本を読んでいる最中です。彼は、ハッカーと画家はどちらも「メーカー」であるため、非常に似ていると主張しています。画家は絵を描きます。ハッカーはソフトウェアを作成します。画家は、必ずしも美しい絵を描くために塗料の化学組成を理解する必要はありません。そして、ハッカーは必ずしも美しいソフトウェアを作成するために1と0を知る必要はありません。 グラハムは、異なるコンピューターサイエンスの分野を区別します。 一部の人々は数学を勉強しているようです 一部の人々はコンピュータ自体を勉強しているようです ハッカーはソフトウェアを作成しています。 違いは非常に重要です。一部の人の動機は、美しいものを作ることです。そして、他の人の動機は好奇心から学ぶことです。特定の動機は私には明らかですが、好奇心は少し明白ではないようです。私は確かに、自分ができることすべてについて学ぶことを一見して切望できない渇きを持つ好奇心の強い人だと考えています。しかし、これはまさに問題が発生する場所です。 とても怖いのは、必死に物を作りたいということです。私は必死に物事をしたいです。本を書きたいです。絵を描きたいです。歌を作りたいです。私がしたいん旅のようなものを。しかし、奇妙なことは、私も物事を学びたいということです。私はギターを弾くことを学びたいです。美術史について学びたいです。哲学と文学についてもっと学びたいです。 重要なのは、学習と実行のバランス、つまり学習と作成のバランスです。 ある事柄について、それを行う前にどれだけ学ぶべきかはわかりませんが、私は自分が常に反対側ではなく常に片側にいることを確信しています。今のところ(そして、私がいつもそうであったと言える限り)、私は学習者であり、実行者ではありません。私は素晴らしい本を読みました。私は何年もギターを練習してきました。私はプログラミングの勉強に数え切れないほどの時間を費やしました。 しかし、私は本を0冊書いています。私は0曲を作曲しました。0個の美しいプログラムをコーディングしました。私は0個の美しい絵を描きました。0の実行可能なビジネスを開始しました。 このすべての恐ろしい部分は、おそらく世界中に無数の未完成の芸術作品があることです。これは、私が始めた芸術作品の制作や完成を決して行わないという、社会と文化に対する私の反人道的な復ven ですか?おそらく最悪の部分(これは私の自然な傾向であることを除いて)は、私がf *** ingがよりよく知っているという事実です。「Getting Things Done」や「Making Ideas Happen」のような本を完成させたばかりです。私は、物事を行う方法と物を作る方法についての無数の知恵の言葉を集めて合成しました。 あなたがやりたいことをすることができずに人生を経験することの恐怖を想像してください。これがあなたが苦労している(そしてうまくいけば克服する)ものであるなら、共有してください。そうでない場合...おそらくいくつかのおいしい同情は私が気分が良くなります。 [更新:考えを共有してくれたすべての人に迅速に感謝したいだけです。ディスカッションを奨励し、他の人が同様の経験に関連する中心的な問題を作り直すことを期待して、私は意図的に質問を幾分自由に残しました。うまくいくと思います...役に立ちました。再度、感謝します。]

5
UNIX哲学のプログラミングは、関数型プログラミングと同じですか?
UNIXプログラミング環境(古典的なテキスト)は、プログラミングに対するUNIXのアプローチは、より複雑な問題を解決するために組み合わせることができる、小さく明確に定義されたツールを構築することであると述べています。CとBashシェルを学習する中で、これは広範なプログラミングの問題に対処するために使用できる強力な概念であることがわかりました。 Linuxプラットフォームを使用するだけで、コンセプトは非常に明確であり、常に使用されています。I / Oをリダイレクトし、ls、grepなどのシステムツールをリンクするコマンドラインで形成される式は、この概念がいかに強力かを示しています。 私を混乱させているのは、これらのプログラムの多くが命令型/手続き型プログラミングスタイルを使用してCで書かれていることですが、コマンドラインでの使用方法と結合方法は、各プログラムが機能的なプログラミングに似ているようです結合される可能性のある他のプログラムの状態に依存しない孤立した関数。 これは正確であり、UNIXプログラミングの哲学を理解することは、基本的に命令型プログラミングスタイルを使用して構築されたツールを使用した機能プログラミングです。

7
Windowsプログラミングの哲学はありますか?[閉まっている]
UnixとWindowsの両方の環境でプログラミングを行ってきました。私は主にUnixで働いており、そこでUnix Philosophyを学びました。 1つのことを行うプログラムを作成し、それをうまく実行します。 連携して動作するプログラムを作成します。 テキストストリームを処理するプログラムを作成します。これはユニバーサルインターフェースであるためです。 UnixとWindowsの世界では、プログラミングの文化に明らかな違いがあるようです。例えば: GUIとCLI レジストリと設定ファイル 特定のニーズに特化した多くのツールと組み合わせることができる汎用直交ツールのグループ Windowsの世界には「Unix哲学」に相当するものがありますか?Windowsからプログラミングに移行する際に、UnixプログラマーがWindowsから学習できること、または知っておくべきことは何ですか? Windowsプログラミングのベストプラクティス(およびWindowsとUnixの戦いではない)に焦点を当てた回答をお願いします。

8
Emacs-as-OS:時代遅れ?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 そのような伝説的なエディターで少なくとも初心者の地位に到達するために、私は過去2か月間Emacsでコーディングしてきました。私は心を開いておくようにしていますが、私は、Emacsがそのユーザーが決して離れることを許さないという1つのコア設計選択に絶えず反対していることに気づきます。2010年の世界では、Emacsのすべてのサイド機能が専用ソフトウェアの背後に絶望的にあると思います。 私は組み込みのブラウザを決して使用しません。Chromeは何年も先です。 私はその悲惨な機能を決して使用しません。Path Finder(Mac OS X)は私のニーズに合っています。 組み込みの電子メールは使用しません。Gmailのウェブインターフェースには、優先トレイなどの関連性の高い機能があります。 等。 確かに、上記のタスクの1つに正規表現などを使用するためにEmacsに浸ることがあるかもしれませんが、正規表現以外では、これらの副次的な機能に触れる理由はありません。私は完全に初心者ですが、Emacs-as-an-OSは時代遅れであるという強い直感を持っています。 Emacsの専門家、Emacsが包括的な環境を選択することは、2010年と将来にとって正しい選択だと思いますか?代替品と比較して、まだ時代を先取りした特定の周辺機能がありますか?

7
プログラミングに関しては、どの自然言語に利点がありますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 言語相対性とは、言語が私たちの考え方を形作るという考え方です。私の質問は、これがプログラミングにどのくらい、そしてどの程度まで適用されるのかということです。 一部のネイティブの自然言語は、プログラミングについて考えるのに他の言語よりも適していますか?たとえば、以下を英語以外の言語でより簡潔に述べることができますか? Select a pivot. Move all the items less than the pivot to one side of the list, and all the items greater than the pivot to the other side. 中国語を話すプログラマーは、英語を話すプログラマーとは根本的に異なるレンズでプログラミングを見るのですか、それとも両方が主題に没頭しているときに違いが消えますか? 一部のプログラミング言語とドメインは、ある言語または別の言語で考えるのが簡単ですか?たとえば、Rubyの作成者が日本人であるため、日本人の場合はRubyを理解するのは簡単ですか この質問は、「プログラミング言語がプログラミングの考え方にどのように影響するか」ではなく、「自然言語がプログラミングの考え方にどのように影響するか」に焦点を当てていることに注意してください。 邪魔にならないように、明らかに実用的な利点がある言語は英語です。私は利点は次のように英語のキーワードを選択するプログラミング言語とはほとんど持っていると思うif、for、while、とdo、ちょうどイタリア語話せないミュージシャンとしてのような言葉でアップトリップされていない強みを。少なくともプログラミングの世界では、英語が最近の共通語であるため、他のプログラマとのアイデアのコミュニケーションに関係しています。たとえば、StackOverflowで質問をするには、本当に英語を知っている必要があり、適切な回答が必要な場合は英語をかなりよく知っている必要があります。これは帝国主義的な態度のように聞こえますが、実際には実際に真実です。 それはさておき、言語の固有の特性は、言語を話すプログラマーがデータ構造やアルゴリズムなどについてどう考えるかに影響しますか?ロジックやプログラミングについて話すときに特に簡潔な言語はありますか?それらの言語のネイティブスピーカーがより速く考えることができますか?
21 philosophy 

8
「あなたはそれを必要としない」と「今は絶対にない」が一緒にプレイするにはどうすればいいですか?
デザインの乾燥を進めているとき、「今は絶対にない」ということをよく受け入れます。通常、私は、他の知識のシステムのコンテキストで、ある知識についての1つの信頼できる場所の理解を深める必要があると感じています。したがって、私はシステムを「今」設計する傾向があります。 反対に、このプラクティスにより、私はそれを必要としない合理的なチャンスにもかかわらず、かなり前もって構築することになります。 これら2つのパターンはどのように正方形になりますか それらがうまく動作することを保証するためにどのようなプラクティスを使用しますか? 混乱を招くことなくそれらをどのように教えますか?

7
コンピューターサイエンスはどの分野に属しますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 コンピューターサイエンスは、応用数学、工学、芸術、哲学ですか?「その他」? 背景を説明するために、Scientific Americanに関するSteven Wartikのブログ投稿「私は本当の科学者ではありません、それでいいです」と題しています。この記事では、この質問に役立ついくつかのトピックを取り上げていますが、答えよりも多くの情報を公開しています。 規律について考えることができたら、コンピューターサイエンスはその定義にどのように適合しますか?コンピューターサイエンスの分野は、プログラマーが行うこと、または学者が行うことに基づいているべきですか?これについて深く考えていると思われる人々からどのような答えが得られますか?どんな理由がありますか?

5
ソフトウェアの設計をより効果的にキャプチャできないのはなぜですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 エンジニアとして、私たちは皆、アーティファクト(建物、プログラム、回路、分子など)を「設計」します。それは、何らかの結果(design-the-noun)を生成するアクティビティ(design-the-verb)です。 私たちは皆、design-the-nounがアーティファクト自体とは異なるエンティティであることに同意すると思います。 ソフトウェアビジネス(実際、製品成果物の強化が必要なビジネス)の主要な活動は、「デザイン(名詞)」を理解することです。しかし、私たちは、コミュニティとして、コードベースに関する事実を再発見するために人々が注いだ努力の量によって証明されるように、それを記録するのにほとんど完全に失敗しているように見えます。誰かにコードの設計を見せて、何が得られるかを見てもらいます。 ソフトウェアの設計には次のようなものがあると思います。 ソフトウェアが何をすべきか、およびそれがどれだけうまく機能するかについての明示的な仕様 コードの明示的なバージョン(この部分は簡単で、誰もが持っています) コードの各部分が仕様を達成するためにどのように機能するかについての説明(例えば、仕様フラグメントとコードフラグメント間の関係) 根拠のコードは、それがある方法です理由として(例えば、なぜ特定の選択ではなく別のものより) デザインではないものは、コードに関する特定の観点です。たとえば、[特に選択しない] UMLダイアグラムは設計ではありません。むしろ、これらはコードから派生できるプロパティ、または間違いなくコードから派生したいプロパティです。ただし、一般的なルールとして、UMLからコードを派生させることはできません。 なぜ50年以上ソフトウェアを構築してきたのに、これを定期的に表現する方法がないのでしょうか?(明示的な例で私と矛盾することをお気軽に!) たとえそうだとしても、コミュニティのほとんどは「コード」を取得することに集中しているようで、とにかくdesign-the-nounは失われます。(私見、デザインがエンジニアリングの目的になり、デザインからアーティファクトが抽出されるまで、これを回避するつもりはありません)。 デザインを記録するための手段としてあなたは何を見ましたか(私がそれを説明した意味で)?論文への明示的な言及は良いでしょう。特定の一般的な手段が成功しなかったのはなぜだと思いますか?これをどのように変更できますか? [ 上記の箇条書きの視点を具体化する独自のアイデアを持っていますが、他の人の答えに興味があります...そして私のスキームを実装するのは難しいです[そしておそらくそれが本当の問題です:-]] EDIT 2011/1/3:answer-threadsは、「文書化」(おそらくテキスト形式、特に非形式的)が適切である可能性があることを示唆しています。私はこれを信じていないことを明確にする必要があると思います。CASEツールは80年代からシーンに登場しましたが、初期のツールはほとんど、あなたが描いたものの図のピクセルをキャプチャしただけでした。ツールはほぼ間違いなく商業的に成功しましたが、実際にはあまり役に立ちませんでした。重要な洞察は、追加の「設計」アーティファクトが正式に解釈可能でない場合、深刻なツールヘルプを取得できないことでした。同じ洞察は、デザインキャプチャの長期的に有用な形式にも当てはまると思います。形式的な構造がなければ、実際に使用することはできません。テキスト文書はこのテストにほとんど失敗します。

3
システムエラー、例外処理(Java、C ++、Perl、PHPなど)を公開/許容/回復するための設計パターン/アプローチを推奨する
システムエラー、例外処理(Java、C ++、Perl、PHP)を公開/許容/回復するための設計パターン/アプローチを推奨できますか? いくつかのエラーを報告する必要があります。 一部のエラーは、内部的に処理することができます(再試行によるか、重要ではありません(無視できます)。 それらをキャッチするコードをどのように構成しますか? ただし、すべてのエラーを記録する必要があります。 どんなベストプラクティスがありますか? そして、それらの影響を受けるコンポーネントを完全にテストできるようにそれらをシミュレートするには? いくつかの現代のプログラミング言語に適用可能な一般的な非プログラミング言語固有の質問ですが、Java、C ++、PHP、およびPerlのパターン、アプローチ、哲学の例図を歓迎します。 (stackoverflowでも尋ねました:https ://stackoverflow.com/questions/7432596/recommend-a-design-pattern-approach-to-exposing-tolerating-recovering-from-systemです が、プログラマーにも尋ねるべきだと思いましたプログラマーのQ&Aは、より広範なソフトウェア/プログラミングの問題をカバーしているのに対し、stackoverflowは技術的な実装に関するものです(IMHO)。

2
すべてのメソッドが仮想ではないのか、各クラスに少なくとも1つのインターフェイスがないのはなぜですか?
これは.NETプラットフォームに関するより哲学的な質問ですが、他の言語でも役立つかもしれません。私は多くの単体テストを行っていますが、特に私がしばしば苦労しているサードパーティのコンポーネントを使用している場合はそうです。.NETでは、コンポーネントの設計者に、どのメソッドを仮想化するかどうかを選択するという大きな主張があります。1つはコンポーネントの使用方法(仮想化する意味がある)、もう1つはコンポーネントのモック機能です。Shimsを使用してサードパーティのコンポーネントをモックアップできますが、これは多くの場合、設計や複雑さを悪化させます。.NETでのすべてのメソッドの仮想化(JAVAには最初からあります)についての議論は、パフォーマンスに関するものでした。しかし、それはまだ問題ですか?なぜすべてのメソッドが.NET virtualではないのか、または各クラスに少なくとも1つのインターフェイスがないのはなぜですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.