ソフトウェア工学

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

7
なぜstd :: stringに直面して非常に多くの文字列クラスがあるのですか?
多くのより大きなC ++ライブラリが独自の文字列型を作成することになります。クライアントコードでは、(ライブラリからいずれかを使用する必要があるのいずれかQString、CString、fbstringまたは時間のほとんどが含まれている(標準タイプと1の間のライブラリの使用を変換しておく、私は誰もがいくつかに名前を付けることができます確信しているなど)少なくとも1つのコピー)。 だから、特定の誤機能または何か悪い点がありますかstd::string(auto_ptrセマンティクスが悪いように)?C ++ 11で変更されましたか?
56 c++ 

9
IntelコンパイラはMicrosoftコンパイラより本当に優れていますか?[閉まっている]
数年前、IntelがVisual Studio互換コンパイラを販売していることを発見したとき、私は驚きました。私は特にC / C ++および素晴らしい診断ツールでそれを試しました。しかし、コードは、違いに気付くほど計算集約的ではありませんでした。唯一の印象は、Intelがまさに今私のためにそれを行ったのか、すごい、ナノ秒の解像度を備えた驚くべきツール、信じられないほどでした。しかし、トライアルは終了し、チームは真剣に購入を検討しませんでした。 あなたの経験から、ライセンス費用が問題にならない場合、どのベンダーが勝者ですか? 神聖な戦争を引き起こすのは、広範で曖昧な質問や態度ではありません。この種の質問は、非常に目に見える2つのツールに関するものです。ツールに謎や驚きがあるときは誰も好きではありません。そして最高と最高の間の選択は常に痛みです。また、草は常に環境に優しい議論であることも理解しています。すべての「what ifs」ストーリーを聞きたいです。 Intelが今月のチップステッピング用にローカルに最適化し、すべてのハードウェアターゲットがMicrosoftのコンパイルと同じように実際に動作するとは限らない場合はどうなりますか?AMDハードウェアがターゲットであり、すべてが理由なくスローダウンする場合はどうなりますか?または、一方で、Intelのハードウェアに気付かないほど多くの機会があり、Microsoftコンパイラライターが採用するには遅すぎて、コンパイラに実装できない場合はどうでしょうか。両方が正確に同じ場合、実際には単一のコードベースが2つの異なるボックスにラップされ、サードパーティショップによって両方のベンダーにライセンスされている場合はどうでしょうか。 等々。しかし、誰かがいくつかの答えを知っています。
56 compiler 

13
反復の終了時にダウンタイムを短縮するにはどうすればよいですか?
私が働いているところでは、3週間の反復でスクラム駆動のアジャイルを実践しています。はい、繰り返しが短くなればいいのですが、それを変更することは現時点では選択肢ではありません。 繰り返しの終わりに、私は通常、最終日が非常にゆっくりと進むことに気付きます。実際の作業はすでに完了し、受け入れられています。いくつかの会議(回顧と次の反復計画)がありますが、それ以外はあまり進行していません。 チームが最終日まで勢いを維持するためにどのようなテクニックを使用できますか?欠陥に対処する必要がありますか?とにかく次のイテレーションの作業を早期に開始しますか?他に何か?

11
インターンとして尋ねるのに適切な質問はいくつありますか?[閉まっている]
だから、インターンシップを始めたばかりで、あまりにも多くの質問をしているのではないかと心配しています。メンターは私にプロジェクトを割り当て、会社のすべての技術と方法論を学ぶのを助けます。しかし、このプロジェクトを行っている間に学ぶべき新しい資料が非常に多いため、多くの質問があります。私は通常、インスタントメッセージまたは電子メールで質問します(これらは私の会社の主要なコミュニケーションモードです)。 質問をしすぎないように気をつけています。面倒なことや馬鹿げたことはありません。尋ねるべき質問はいくつありますか?1時間に1回?もっと?もっと少なく?私のメンターは、彼自身の責任を持つ仲間のプログラマーでもあります。
56 internship 

11
動的言語用のIDE-どこまで入手できますか?
動的言語が提供すべき開発の速度が、IDEが静的な同等物で提供する補完やその他の資産の欠如によって著しく損なわれるのは、イライラすることです。 入力するだけではありません-生産性が向上し、エディターに統合されていないドキュメントを常に参照することなく、APIを閲覧することで得られる楽しさです。 これまでのところ、IDEと動的言語のすべての組み合わせ-公平であるとは言えませんが、-を試しました。 バギー スロー 無知/熱狂的(これまでに可能なすべての完了を示す) または単にEclipse + Javaほど完全ではありません。 動的コード分析は簡単な作業ではないことを認識しています。しかし、不思議に思わずにはいられません- このコードは非常にわかりにくいのでしょうか? だから私の質問は: 特定のIDE(またはオールインワンセットアップ)が動的言語の完全に優れたサポートを達成したことがありますか、それとも「未解決」の問題ですか?

9
ジュニア開発者を雇う、私は何を尋ねるべきですか?[閉まっている]
現在、私が管理できるプロジェクトよりも多くのプロジェクトがあるため、私は私を助けるためにジュニア開発者を雇っています。私は友人や少なくとも知り合いではない人を雇ったことはありません。実際に(紙の上で)目立った唯一の応募者との電話インタビューがありますが、これまでに行ったことはありません。 私たちのプロジェクトはすべて、複数のサーバーとクライアントで1時間に数百万のトランザクションを処理する、高度なスケーラビリティとデータ集約型のWebアプリケーションです。言語/スタック固有であるために、ASP.Net MVC2、WebForms、C#4、MSSQL 2008 R2を使用し、すべてWindows Server 2008 R2上で実行します 彼に何を聞いたらいいですか?電話をどのように構成すればよいですか?

3
ラムダとは何ですか、なぜ有用なのでしょうか?[閉まっている]
これまで私は聞いた: ラムダ計算 ラムダプログラミング ラムダ式 ラムダ関数 すべてが関数型プログラミングに関連しているようです... どうやらそれはC ++ 1xに統合されるので、今よりよく理解するかもしれません: http://en.wikipedia.org/wiki/C%2B%2B0x#Lambda_functions_and_expressions 誰かがラムダのことを簡単に定義して、それがどこで役立つかを教えてもらえますか?

13
Windowsレジストリが必要な理由
私はcomの問題を横並びでデバッグし、dllの地獄に対処しましたが、Windowsレジストリを情熱的に嫌っていましたが、なぜそれが必要なのか疑問に思っていました。 レジストリのベストプラクティスに関する本全体を読んで、それを「取得」することを余儀なくされたわけではありません。 しかし、LinuxとMac OSを使用し、同じ* nixコンピューターに複数のバージョンのPythonとそのライブラリーをインストールする方法を調べました。 レジストリはいくぶんfreeい(しかしalい)形式であり、あらゆる種類の目的に使用されるため、レジストリが解決しようとしている本質的な問題を理解したことはありません。 たとえば、Microsoftは、2つの異なるバージョンのMS Officeを並べてインストールすることを望んでいません。彼らはインストール中にこれを強制するためにレジストリを使用します。私の意見では、この制限は人為的なものです。異なる動作を許可することに本当に気を配っていれば、それに応じてアーキテクチャを調整できたはずです。 Mac OSでは、特定のフォルダーにアプリをドロップするだけで、アプリをインストールおよび削除できます。 そう、 A)解決しようとしている本質的な問題は何ですか?B)他のオペレーティングシステムはどのようにそれを解決しますか?


19
OOPはコードの再利用という約束を果たしていますか?コードの再利用を実現するための代替手段はありますか?
おそらく、オブジェクト指向のパラダイムを使用する最大の約束は、コードの再利用です。これが達成されたという論争もある。なぜ達成されたのか(達成されなかったのか)? OOPが定義するとおりにコードを再利用し、プロジェクトの生産性を高めますか? それとも管理しやすいですか?または保守が簡単ですか?または、より品質が高いですか? おそらく、コードの再利用は良いことですが、この目標を達成する方法はいくつかあります。問題は、OOPが提供するコード再利用の方法です。良かった?オブジェクト指向、サブクラス化、ポリモーフィズムなどよりも優れたコード再利用を実現する方法はありますか?より良い方法は何ですか?なんで? OOPの再利用や他のパラダイムの再利用の経験を教えてください。

30
プログラミング/思考スキルの開発を支援するために、プログラマはどのような非プログラミング本を読むべきですか?[閉まっている]
プログラマの本棚には、どのようなプログラミングの本があるべきかについて多く の質問があります。あなたがより良いプログラマーまたは開発者になるのを助けることができる非プログラミング関連の本はどうですか?また、なぜ彼らが役立つのかを知ることも興味深いでしょう。 私の最初の選択は、Sun Tzuの「Art of War」(ただし決まり文句)です。これは、プロジェクトの成功がその最も弱いリンクの強さに依存することを明らかにしたためです(そして、戦争は大きなプロジェクトです)。

3
Java 8でラムダ構文の代わりにメソッド参照構文を使用すると、パフォーマンス上の利点はありますか?
メソッド参照はラムダラッパーのオーバーヘッドをスキップしますか?将来的にはそうなるのでしょうか? メソッド参照に関するJavaチュートリアルによると: 時々...ラムダ式は既存のメソッドを呼び出すだけです。これらの場合、既存のメソッドを名前で参照する方が明確な場合がよくあります。メソッド参照により、これを行うことができます。これらは、既に名前を持っているメソッドのコンパクトで読みやすいラムダ式です。 いくつかの理由から、メソッド参照構文よりもラムダ構文の方が好きです。 ラムダはより明確です Oracleの主張にもかかわらず、メソッド参照構文があいまいであるため、ラムダ構文はオブジェクトメソッド参照の速記より読みやすいと思います。 Bar::foo xのクラスで静的な1引数のメソッドを呼び出してxを渡しますか? x -> Bar.foo(x) または、xで引数のないインスタンスメソッドを呼び出していますか? x -> x.foo() メソッド参照構文は、どちらの代わりにもなります。コードが実際に行っていることを隠します。 ラムダはより安全です クラスメソッドとしてBar :: fooを参照し、Barが後で同じ名前のインスタンスメソッドを追加した場合(またはその逆)、コードはコンパイルされなくなります。 ラムダを一貫して使用できます 任意の関数をラムダでラップできます。そのため、どこでも同じ構文を一貫して使用できます。メソッド参照構文は、プリミティブ配列を取得または返すメソッド、チェックされた例外をスローするメソッド、またはインスタンスと静的メソッドとして使用されるメソッド名が同じメソッドでは機能しません(メソッド参照構文が呼び出されるメソッドについて曖昧だからです) 。同じ数の引数を持つメソッドをオーバーロードした場合は機能しませんが、とにかくそれを行うべきではないため(Josh Blochの項目41を参照)、メソッド参照に対してそれを保持することはできません。 結論 パフォーマンスの低下がない場合は、IDEで警告をオフにし、メソッド参照をコードに散在させることなくラムダ構文を一貫して使用したいと思います。 PS ここでもそこでもありませんが、私の夢では、オブジェクトメソッドの参照は次のように見え、ラムダラッパーなしでメソッドに対してinvoke-dynamicを直接適用します。 _.foo()

3
多くのブール状態を1つの数値に格納/パックするための名前は何ですか?
これは、1つの数値変数を使用して多くのブール値/バイナリ状態を格納する単純な圧縮の一種です。倍増と、倍増数はすべて1 +前のすべての合計であるという事実を使用します。 私はそれが古い、よく知られたテクニックでなければならないと確信しています、私はそれを適切に参照するために何と呼ばれるか知りたいです。私はそれを説明するために考えられるあらゆる方法でいくつかの検索を行いましたが、記事の著者が自分でこれを理解していると思われるいくつかのブログ記事以外には何も見つかりませんでした(例1、例2)。 たとえば、概念を説明するための非常に単純な実装を次に示します。 packStatesIntoNumber () { let num = 0 if (this.stateA) num += 1 if (this.stateB) num += 2 if (this.stateC) num += 4 if (this.stateD) num += 8 if (this.stateE) num += 16 if (this.stateF) num += 32 return num } unpackStatesFromNumber (num) { assert(num < 64) …
55 terminology  bit 

10
どのような場合に、コードが少ないほど良くないのですか?[閉まっている]
私は最近仕事でいくつかのコードをリファクタリングしました、そして私は良い仕事をしたと思いました。980行のコードを450行に落とし、クラスの数を半分にしました。 これを同僚に見せたとき、これが改善であることに同意しなかった人もいました。 彼らは言った-「より少ないコード行が必ずしも良いとは限らない」 人々が本当に長い行を書いたり、いくつかの行を保存するためにすべてを単一のメソッドに入れたりする極端なケースがあるかもしれませんが、それは私がやったことではありません。私の意見では、コードは適切に構造化されており、サイズが半分であるため、理解/保守が簡単です。 仕事を遂行するために必要なコードを2倍にしたい人がいる理由を理解するのに苦労しています。 ?

4
辞書WebサイトにMySQLを使用するのはなぜ悪い考えですか?
辞書のエントリ(通常は単一の単語)とその意味を別の言語で保存するデータベースを設計および設定する予定です。したがって、たとえば、テーブル用語集にはエントリと定義が必要であり、各テーブルレコードには、格納されているレコードのIDへの参照がありますTag(各エントリにはタグまたはカテゴリが必要です)。 私のデータは構造を持っているので、SQLデータベース(MySQLなど)を使用することは悪い考えではありません。しかし、人々はMongoDBの方がパフォーマンスがはるかに優れていると言います。 クライアント側では、アプリケーションは、バックエンドが提供するREST APIを使用するオートコンプリートを備えた検索ボックスを提供できる必要があります。このようなシナリオでMySQLを使用するのは安全ですか?または、これに他のソリューションのMongoDBまたはElasticSearchを使用する必要がありますか?このようにして、数十万件のレコードが保存およびアクセスされることになっています。

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