ソフトウェア工学

システム開発ライフサイクル内で働く専門家、学者、学生向けのQ&A

8
学習に十分なシンプルなOSはありますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 オペレーティングシステムが舞台裏でどのように機能するかを本当に理解したいと思います。しかし、そこにあるほとんどのオープンソースOSのカーネルは、フルタイムのプログラマーが学習するのであっても、学習目的には複雑すぎると思います。学習目的のためだけに作られた「シンプルな」OSはありますか?

4
動的言語での継承とミックスイン?
動的言語のミックスインよりも継承パターンを好むのはいつですか? ミックスインとは、実行時に関数とデータメンバーをオブジェクトに挿入する場合のように、実際に適切にミキシングすることを意味します。 たとえば、いつミックスインの代わりにプロトタイプ継承を使用しますか?mixinが意味することをより明確に説明するために、いくつかの疑似コードを示します。 asCircle(obj) { obj.radius = 0 obj.area = function() { return this.radius * this.radius * 3.14 } myObject = {} asCircle(myObject) myObject.area() // -> 0

6
Java、C ++などの他の言語ではなく、MongoDBとCouchDBでJavascriptが使用されるのはなぜですか?
SOでこの質問をしましたが、ここで試してみることを勧められました。だからここに行く: これまでの私のJavaScriptの理解は、イベントをキャプチャし、Webページを動的にするクライアント側の言語であるということです。 しかし、MongoDBとCouchDBの比較を読むと、どちらもJavascriptを使用していることに気付きました。これは、他の従来の言語よりもJavaScriptを選択した理由を疑問に思います。 JavaScriptの役割と、他の言語に対するJavaScriptの利点を理解しようとしていると思います。 更新:2つのデータベースでサポートされている言語/ドライバーについて質問していません。比較によると: CouchDBとMongoDBはどちらもJavascriptを使用します。CouchDBは、ビューの構築を含むJavascriptを広く使用しています。 MongoDBは、任意のjavascript関数をサーバー側で実行することもサポートし、map / reduce操作にjavascriptを使用します。 私の理解不足は、Javascriptがバックエンド作業にまったく使用されない理由に関係しています。CouchDBでビューを構築するのに、またはmap / reduce操作を使用するのになぜ好まれますか?なぜC / C ++またはJavaが使用されなかったのですか?このようなバックエンド作業にJavascriptを使用する利点は何ですか?
19 java  javascript 

7
Cプログラムのオブジェクト指向ベストプラクティス[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 「オブジェクト指向の砂糖が本当に必要な場合は、C ++を使用してください」 -これを聞いたとき、友人の1人からすぐに返事をもらいました。ここでは2つのことが間違っていることを知っています。最初のOOは「砂糖」ではありません。2番目に、C ++はCを吸収していません。 サーバーをC(Pythonのフロントエンド)で記述する必要があるため、大規模なCプログラムを管理するためのより良い方法を模索しています。 オブジェクトの観点から大規模なシステムをモデリングし、オブジェクトの相互作用により、システムの管理、保守、拡張がより容易になります。しかし、このモデルをオブジェクト(およびそのすべて)を持たないCに変換しようとすると、いくつかの重要な決定に挑戦することになります。 システムに必要なオブジェクト指向の抽象化を提供するカスタムライブラリを作成しますか?オブジェクト、カプセル化、継承、ポリモーフィズム、例外、pub / sub(イベント/シグナル)、名前空間、イントロスペクションなど(GObjectやCOSなど)。 または、基本的なC構造(structおよび関数)を使用して、すべてのオブジェクトクラス(およびその他の抽象化)をアドホックな方法で近似します。(たとえば、SOに関するこの質問に対する回答の一部) 最初のアプローチは、モデル全体をCで実装するための構造化された方法を提供しますが、維持する必要がある複雑さの層も追加します。(複雑さは、最初にオブジェクトを使用することで軽減したかったことを思い出してください)。 2番目のアプローチについては知りません。また、あなたが必要とする可能性のあるすべての抽象化を近似するのにどれほど効果的かはわかりません。 したがって、私の簡単な質問は次のとおりです。Cでオブジェクト指向設計を実現するためのベストプラクティスは何ですか。それを行う方法を求めているのではないことに注意してください。これとこの質問はそれについて話す、とさえあります本は、この上。私がもっと興味を持っているのは、これを解決するときに現れる実際の問題に対処する現実的なアドバイス/例です。 注:C ++を支持してCを使用すべきではない理由をアドバイスしないでください。私たちはその段階を十分に過ぎました。

4
経験の浅いプログラマーのコードを修正するにはどうすればよいですか?
少しのバックグラウンド:私は10人の部門の2人のプログラマーのうちの1人です(残りはアーティストと管理職です)。私たち2人は、物事を順調に進めるために必要なすべてのコーディングを行い、出てくるプロジェクトを開発します。私は約4年前からプログラミングを行っていますが、これが彼の最初の「本当の」仕事です(彼の言うとおりです)。通常、私たちはいつでも異なるプロジェクトに取り組んでいます。 数か月前、私は後のプロジェクトで使用するクラスのセット(決して完璧ではない)を開発しました。そのプロジェクトの大部分は、GUIインターフェースを設計およびプログラムするために(請求のため)彼に委任されました。彼は新しいので、私は設計を少し手伝い、残りの部分で必要な場合は助けを求めるように言いました。彼は数週間前にインターフェースを完成させましたが、それは少し遅いですが、それが機能することを示すためにデモしました。 私が取り組んでいるプロジェクトの次の部分は始まっています。次のステップから始めるためにインターフェースを開いたところ、すぐに問題にぶつかりました(少し遅かったのは、控えめな表現、一般的なアクションのエラーなどでした)。いくつかの問題についてコードを調べ、エラーチェックのないタイプの仮定(Pythonにあります)、元のコードに追加されたGUIへの参照などを見つけるO(n^n)必要がO(n)あります。 今、私は間違いなく彼に何が間違っていたのか、どのようにそれを修正するのかを教えたいと思っていますが、彼はすでに次のプロジェクトに移っており、これは数週間前でした。「戻って正しいことを!」と言って怖いです。(もちろん助かります)厳しすぎるので、その間にやるべき他のプロジェクトがまだあります。私は今のところ自分でコードを修正し、将来的に物事をキャッチしようとする必要がありますか?
19 code-reviews  bug 

7
jQueryを更新するタイミング
この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 jQuery / jQuery UIの更新を推奨する場合 または言い換えると、jQuery / jQuery UIを更新するためのベストプラクティスは何ですか? 私は少なくとも1年以上かかる長いプロジェクトに取り組んでいます。その期間に、jQuery / jQuery UIは何度も更新されると確信しています。 更新プログラムがリリースされるたびに、jQuery / jQuery UIファイルを更新することをお勧めしますか?または、プロジェクトの最後まで特定のバージョンを使用する方が良いですか? 私はコードの変更を「壊す」ことを恐れており、アップデートがリリースされるたびに、すべてをテストする必要があります。それには時間がかかりすぎます。しかし、一方で、もし私が更新しなかったなら、後で私を後から噛ませるバグを恐れています。 プロジェクトはASP.MVCであり、jQueryを頻繁に使用しています。 何かご意見は?

8
抽象化の反対は何ですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 私が理解しているように、抽象化とは、より単純なものから変更せずに、より多くの意味を生み出すときに使用する用語です。これは、ラテン語の動詞abstrahere(「引き離す」)から派生しています。たとえば、テキストは、ビットマップと同様に、バイナリデータの1つの抽象化にすぎません。そのため、コンピューターでは、テキストとビットマップはバイナリデータの上に存在します(バイナリデータの観点から実装されています)。 私の質問は、反対の用語は何ですか?ビットマップをバイナリデータ以外の観点から実装できる、より基本的なもの(モザイクのタイルやパッチワークキルトのファブリックパッチなど)を知りたい場合、何を求めていますか?その言葉はありますか? 抽象化には一般化の意味合いがあり、その逆のプロセスは特殊化です。IDKはそれが役立つかどうか。

9
Windowsにまともなシェルがなかった理由は何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 SOに関するトピックを読んでいた:なぜスクリプト言語(...など)がシェル言語として適していないのですか?。特にJörgW Mittagの答えが好きで、そこから興味深いことを学びましたWindows PowerShell。そのため、20年以上後、Windowsには最終的に適切に設計されたシェルがあります(Windows 1.0-1985、PowerShell安定リリース-2009)。一方、UNIXシステムには1978年のBourne Shell以降、さまざまなシェルが多数あります。MSの就職面接に関する記事を読んだことがありますが、非常に「オタクっぽい」会社の印象があります。私は、コマンドラインツールを使用してすべての作業を行うUnixの人々と比較して、なぜコマンドラインツールを必要としなかったのだろうかと考えています。
19 windows  history  shell 

4
あなたが作成するために雇われたソフトウェアに代わるオープンソースの代替物を作成することは倫理的でしょうか?
特定の学術機関の学生に販売される教育ソフトウェアを作成するために雇われたとしましょう。あなたはこのプロジェクトに取り組んでいる唯一の開発者であり、すべてのコードを書いています。プロジェクトの代替となるオープンソースは、世界中の恵まれない学生に利益をもたらす可能性があります。要するに、無料の代替手段は人類のより良い利益に貢献するでしょう。あなたが開発のために支払われているソフトウェアの代わりにオープンソースを作成することは「OK」でしょうか? PSソフトウェアは、教育機関の学生のみが使用します。商業的に配布する予定はありません。アプリケーションは、他の人の知的財産を利用しません。

7
優れたプログラマーの生産性-10,000倍の違いを考慮していますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 閉じた3年前。 優れた旋盤オペレーターは平均的な旋盤オペレーターの数倍の賃金を命じますが、ソフトウェアコードの優れたライターは平均的なソフトウェアライターの価格の10,000倍の価値があります。- ビルゲイツ 同じチームに「素晴らしい」ソフトウェアエンジニアと「平均的な」ソフトウェアエンジニアがいるとします。1人のエンジニアの生産性を10,000倍高めるにはどうすればよいですか?彼らが機能、バグ、調査のシェアを引き受けており、一貫して品質を提供していることを考えると、私はこれを全く理解できません。私の説明は、おそらくそれらが「平均」を超えることを正当化するでしょうか?"すばらしいです"?

3
Javaおよび.NET:異なるソートアルゴリズムがデフォルトで使用される理由
デフォルトで異なるソートアルゴリズムJavaを.NET Framework使用する理由と疑問に思います。 Java Array.Sort()では、デフォルトでMerge Sortアルゴリズムを使用し、Wikipedia.comが次のように述べています。 Javaでは、Arrays.sort()メソッドは、データ型に応じてマージソートまたは調整されたクイックソートを使用し、実装効率のために7つ未満の配列要素がソートされている場合は挿入ソートに切り替えます .NET Framework Array.Sort/List.Sort()では、クイックソートをデフォルトのソートアルゴリズムとして使用します(MSDN): List.Sort()は、QuickSortアルゴリズムを使用するArray.Sortを使用します。この実装は、不安定なソートを実行します。つまり、2つの要素が等しい場合、それらの順序は保持されない可能性があります。対照的に、安定したソートでは、等しい要素の順序が保持されます。 優れた「アルゴリズムの比較」表を見ると、両方のアルゴリズムの動作がワーストケースとメモリ使用量の観点からかなり異なっていることがわかります。 どちらJavaと.NETエンタープライズ・ソリューション開発のための素晴らしいフレームワークです、両方が組込み開発のためのプラットフォームを持っています。では、なぜ彼らはデフォルトで異なるソートアルゴリズムを使用しているのでしょうか?

5
なぜC ++はDのアプローチをその概念の実装に採用できないのですか?
この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 あなたの多くが知っているように、テンプレート引数の可能な型を制限するためのC ++のアプローチ、概念、C ++ 11には含まれていませんでした。 Dプログラミング言語2.0には、一般的なプログラミングと同様の機能があることがわかりました。その解決策は私には非常にエレガントでシンプルなようです。 私の質問は、C ++が同様のアプローチを使用できない理由です。 C ++の概念の目標は、Dの実装が提供するものよりも大きいでしょうか? または、C ++のレガシーにより、そのようなアプローチを採用できませんか? または他の? ご回答ありがとうございます。 ps Dの汎用プログラミングパワーの例を参照するには、これを参照してください:https : //stackoverflow.com/questions/7300298/metaprogramming-in-c-and-in-d/7303534#7303534
19 c++  templates  d 

5
スクラムでは、プロダクトオーナーとスクラムマスターの役割を組み合わせてはならないのはなぜですか?
私が取り組んできたより伝統的なプロジェクトでは、プロジェクトマネージャー(および、大規模なプロジェクトでは、1人の担当者が利用できない場合、アソシエイト/代理/アシスタントのプロジェクトマネージャーが存在する可能性があります)は、プロジェクトと顧客とのコミュニケーションの責任者ですヘルスとステータスの更新、スケジューリングと予算の決定、プロセスの管理、チームがタスクを完了するために必要なものを確保するなど。 ただし、スクラムでは、これらの責任はプロダクトオーナーとスクラムマスターの間で分割されます。製品所有者は顧客の声です。顧客と直接やり取りし、ユーザーストーリーを作成し、製品バックログやその他のユーザー/顧客が直面する問題を整理して優先順位を付けます。ScrumMasterはプロセスを処理し、会議(推定と計画を含む)を監督し、障害を取り除き、プロジェクトの全体的な健全性を監視し、必要に応じて調整します。 Wikipediaを含む複数の情報源で、ScrumMasterとプロダクトオーナーの役割は2人の異なる人物が担うべきだと読みました。私は読んだだけでなく、両方のアクティビティが1人の個人によって処理される、成功した「伝統的な」スタイルのプロジェクトに取り組みました。実際、1人から3人の人々がプロジェクト(人事/人員を含む)とプロセスレベルのタスクを処理する責任があることは、彼らがしばしば手をつないで行くので、より理にかなっています。プロセスの変更は、スケジューリング、予算編成、品質、およびその他のプロジェクトレベルの目標に影響を与え、プロジェクトの変更はプロセスに影響を与えます。 スクラムがこれらのアクティビティを2つの役割に分離する必要があるのはなぜですか?これは実際にどのような利点を提供しますか?プロダクトオーナーとスクラムマスターが同じ個人であるスクラムプロジェクトで成功した人はいますか?


8
趣味のプロジェクトをせずに、需要の高い会社で仕事を得ることができますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 Googleなどの需要の高い企業の採用チームが、候補者を評価する際に趣味のプロジェクトの欠如を考慮に入れているかどうか、私は興味がありました。 私は40時間/週のまっすぐなプログラマで、プログラミング関連の仕事に月に1時間か2時間費やすことができて幸運です。私は仕事の休憩中にSO / SEに出かけるのが好きで、質問に答えるのが大好きですが、仕事の後はプログラミングの世界を離れて人生に戻ります。 趣味のプロジェクトが優れたプログラマーになる必要はないことは既に理解していますが、趣味のプロジェクトが不足しているため、常に候補者のリストが長い会社に就職するチャンスに影響しますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.