ソフトウェア工学

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

6
FortranコンパイラはCコンパイラよりも実際に高速なコードを生成しますか?
大学で勉強していたとき、Fortranコンパイラは同等のプログラムのCコンパイラよりも速いコードを生成するという考えをよく耳にしました。 主な理由は次のとおりです。Fortranコンパイラはコード1行あたり平均1,1プロセッサ命令を発行しますが、Cコンパイラはコード1行あたり平均1,6プロセッサ命令を発行します -正確な数字は覚えていませんが、アイデアは、Cコンパイラが著しく多くのマシンコードを出力し、そのためより遅いプログラムを生成するというものでした。 そのような比較はどの程度有効ですか?FortranコンパイラーはCコンパイラーよりも高速なプログラムを生成する、またはその逆と言えますか?なぜこの違いが存在するのですか?

5
MVC、WCF、EF、LINQ-それは私だけですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 8年前に閉鎖されました。 ...または、より複雑になっていますか? 最近、MS Webアプリを「適切に」開発するには、多くのことを知る必要があるように思えます。よくわからない悪い昔、データベーステーブル、ASP.NET、ADO.NETがあり、比較的単純な概念を使用してWebアプリを構築しました。 最近では、「正しい」ことを「手助け」するためのフレームワークがたくさんあるように見えますが、これがすべてをより簡単に、より良くすることを確信していません。私はこの感情でかなり小さな少数派になるだろうと感じていますが、物事が少し狂っていると思う他の誰かがそこにいますか?

4
Scala開発者へのインタビュー方法[非公開]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 Scalaプログラマーはどのようにインタビューを受けていますか?Scala開発者にインタビューするときにインタビュアーが探す側面は何ですか?
17 interview  scala 

3
Ur / Web Webプログラミング用の新しい純粋に機能的な言語ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 Haskellのような言語のWebフレームワークを検索中に、Ur / Webプロジェクトに出会いました。一人が行った非常に興味深いプロジェクトのようです。 基本的に、これはWebプログラミング用のドメイン固有の純粋に機能的な言語であり、MLとHaskellを最大限に活用しています。構文はMLですが、Haskellの型クラスとモナドがあり、厳密に評価されています。サーバー側はネイティブコードにコンパイルされ、クライアントはJavascriptにコンパイルされます。他のアドバタイズされた利点については、スライドとFAQページを参照してください。 見てデモやそのソースコードは、私はこのプロジェクトは非常に有望であると思います。最新バージョンは20110123であるため、現時点では活発に開発中のようです。 ここで誰かがそれをさらに経験したことがありますか?MLのやや冗長な構文とは別に、Haskellと比較して問題/迷惑はありますか?

9
統計が内側の方法か外側の方法か
これらのデザインのどれが優れていますか?それぞれの長所と短所は何ですか?どちらを使用しますか?のようなメソッドを処理する方法に関する他の提案を歓迎します。 Draw()が他の描画メソッドが呼び出される唯一の場所であると仮定するのは合理的です。これは、ここに示した3つだけでなく、さらに多くのDraw *メソッドとShow *プロパティに拡張する必要があります。 public void Draw() { if (ShowAxis) { DrawAxis(); } if (ShowLegend) { DrawLegend(); } if (ShowPoints && Points.Count > 0) { DrawPoints(); } } private void DrawAxis() { // Draw things. } private void DrawLegend() { // Draw things. } private void DrawPoints() { // Draw …
17 c# 

14
プログラマーとしてのキャリアを目指す若い学生として、オープンソースソフトウェアについてどのように感じるべきですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 一部のテクノロジーWebサイトでは、次のような見出しが時々表示されます:http : //www.osor.eu/news/nl-moving-to-open-source-would-save-government-one-to-four 10億 政府や組織がオープンソースソフトウェアに移行することについて最初に考えたのは、多くのプログラマーが仕事を失い、業界が縮小するだろうということです。同時に、多くのプログラミングコミュニティでオープンソースソフトウェアの普及と使用が大いに奨励されているようです。 どこでもオープンソースソフトウェアを完全に取り入れることは、ソフトウェア業界を傷つけるだろうという私の考えは誤解ですか?そうでない場合、なぜ多くのプログラマーがオープンソースソフトウェアを愛するのでしょうか?

13
間違ったトラックに費やした時間をクライアントに請求すべきですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 閉じた3年前。 私はクライアントのために解決するために小さなCSSチャレンジを取り上げ、時間給で支払います。最終的にそれを解決しましたが、5時間かかりましたが、約25%の時間を間違ったトラックに費やし、最近のブラウザーでしか動作しないCSS3ソリューションを試し、最終的にJSを介してフォールバックが不可能であることを発見しました(当初考えていたように)。25%をクライアントに請求する必要がありますか? 詳細:見積もりを提供しなかったので、チャレンジ自体が好きだったので、見積もりを出す前に作業を開始しました(ただし、以前に彼と一緒に仕事をしたことがあるので、彼は非現実的な期待を持つ人ではないことがわかります)。最悪の場合、私は興味をそそられるCSSチャレンジに5時間の無給費を費やしていたでしょう。そして、私はすでに作業を完了しているので、私たちの両方に可能な限り公平な見積もりをします。:) 編集:ありがとうございました、私は私が複数の答えを受け入れることができればいいのに!私は結局彼に余分な時間を請求しませんでした(私は彼に3年半の請求をしました)が、私は彼に請求したよりも私がそれに取り組んだことを知っているように彼に言及しました。たぶんそれが彼がすぐに「推定値」を受け入れた理由かもしれません(その場合、それは推定値ではなかったので、引用です)。

7
GUIから開始してアプリケーションを構築すると便利ですか?
アプリケーションの設計と開発の傾向は、「ガッツ」から始まっているようです。ドメイン、データアクセス、インフラストラクチャなどです。通常、GUIはプロセスの後半に来るようです。最初にGUIを構築するのが役に立つのではないかと思います... 私の理論的根拠は、少なくともプロトタイプGUIを構築することで、舞台裏で何が起こる必要があるかをよりよく理解できるため、ドメインとサポートコードで作業を開始するためのより良い位置にいるということです。 サポートコードがまだ記述されていない場合、GUIレイヤーが実際に行うことはあまりないという点で、このプラクティスの問題を見ることができます。おそらく、モックオブジェクトまたはスローアウェイクラス(ユニットテストで行われているようなもの)を構築すると、最初にGUIを構築するのに十分な基盤が提供されます。 これは実際のプロジェクトにとって実行可能なアイデアかもしれませんか?GDD(GUI Driven Development)を頭字語stableに追加できるかもしれません...

11
他の人が作ったバグを修正するのは良いアプローチですか?
4人の開発者から成るチームがアプリケーションを構築している状況を想定しましょう。テスト段階では、バグがユーザーから報告されます。誰がそれらを修正する必要がありますか?エラーのあるコードをコミットした人、それとも無料の人? アジャイル開発で好ましいアプローチは何ですか(スクラム)?
17 agile  debugging 

3
IoCコンテナで販売してください
コードでIoCコンテナを使用することをお勧めします。動機は簡単です。次の依存性注入コードを取得します。 class UnitUnderTest { std::auto_ptr<Dependency> d_; public: UnitUnderTest( std::auto_ptr<Dependency> d = std::auto_ptr<Dependency>(new ConcreteDependency) ) : d_(d) { } }; TEST(UnitUnderTest, Example) { std::auto_ptr<Dependency> dep(new MockDependency); UnitUnderTest uut(dep); //Test here } に: class UnitUnderTest { std::auto_ptr<Dependency> d_; public: UnitUnderTest() { d_.reset(static_cast<Dependency *>(IocContainer::Get("Dependency"))); } }; TEST(UnitUnderTest, Example) { UnitUnderTest uut; //Test here …

6
この時点で、Javaのパブリックフィールドは悲劇的な歴史的な設計上の欠陥にすぎませんか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 この時点では、オブジェクトの状態にパブリックフィールドを使用することは基本的に決してすべきではないというのは、Javaの正統性のようです。(必ずしも同意するわけではありませんが、それは私の質問とは関係ありません。)それを考えると、今日からJavaのパブリックフィールドが言語設計の誤り/欠陥であったことは明らかです。それとも、今日でも言語の有用かつ重要な部分であるという合理的な議論がありますか? ありがとう! 更新: C#、Python、Groovyなどのよりエレガントなアプローチについて知っています。これらの例を直接探しているわけではありません。バンカーの奥深くにまだ誰かがいるのではないかと思っているだけで、公共の場がどれほど素晴らしいのか、大衆はただの羊なのかなどについてつぶやいています。 更新2:明らかに静的な最終公開フィールドは、公開定数を作成する標準的な方法です。オブジェクトの状態(不変の状態でさえ)にパブリックフィールドを使用することについてもっと言及していました。パブリックフィールドを定数ではなく、状態ではなく使用する必要があるという設計上の欠陥のように思えます。言語のルールは、ガイドラインではなく構文によって自然に実施されるべきです。

4
プログラミング言語が冗長か簡潔かを判断する方法は?
プログラミング言語は、多くの場合、冗長または簡潔であると説明できます。 私の理解では、冗長言語は読みやすく、理解しやすく、簡潔な言語は簡潔で簡潔ですが、読むのはより困難です。定義で考慮すべき他のものがありますか? 今日の一般的なプログラミング言語の多くは冗長であるように思われ、これらの用語2つの用語は、ある言語を他の言語と比較して多かれ少なかれと表現するためにのみ使用されます。 プログラミング言語が他の言語よりも冗長/簡潔であるかどうかをどのように判断しますか? 例:C#はJavaより冗長ですか?

8
「編集者」インラインコメントは、改訂管理を使用するショップの標準ですか?
私たちのショップの上級開発者は、コードが変更されるたびに、責任のあるプログラマーが自分が何をしたかを示すインラインコメントを追加する必要があると主張しています。これらのコメントは通常次のようになります// YYYY-MM-DD <User ID> Added this IF block per bug 1234. リビジョン管理にはTFSを使用しますが、この種のコメントは、インラインノイズよりもチェックインメモとしてはるかに適切であると思われます。TFSでは、チェックインを1つ以上のバグに関連付けることもできます。古い、よく変更されるクラスファイルの一部は、コメントとLOCの比率が1:1に近いように見えます。私の目には、これらのコメントによりコードの読み取りとゼロ値の追加が難しくなります。 これは他のショップでの標準的な(または少なくとも一般的な)慣行ですか?

6
メソッド連鎖とカプセル化
メソッドチェーンと「単一アクセスポイント」メソッドの古典的なOOP問題があります。 main.getA().getB().getC().transmogrify(x, y) 対 main.getA().transmogrifyMyC(x, y) 最初の方法には、各クラスがより小さな操作セットのみを担当し、すべてをよりモジュール化するという利点があるようです-Cにメソッドを追加しても、A、B、またはCでそれを公開する労力は必要ありません。 もちろん、欠点はカプセル化が弱いことです。これは2番目のコードで解決されます。これで、Aはそれを通過するすべてのメソッドを制御し、必要に応じてフィールドに委任できます。 単一の解決策はなく、もちろんコンテキストに依存することはわかっていますが、2つのスタイルのその他の重要な違いについて、またどのような状況でどちらを好むべきかについて、いくつかの意見を聞きたいと思います。いくつかのコードを設計するために、引数を使用してどちらかの方法を決定していないように感じます。

8
柔軟性のないプログラマーに対処する
長い間プロジェクトに取り組んでいるプログラマーは柔軟性に欠けることがあり、それらを推論することが難しくなります。たとえ彼らを納得させたとしても、彼らは私たちの提案を実行する可能性は低いでしょう。 たとえば、最近、ビルドとリリースのプロセスが複雑すぎて不要な障害物があるプロジェクトに参加しました。 欠陥管理ツールとバージョン管理ツールを統合するだけで、いくつかの開発オーバーヘッド(いくつかのスプレッドシートを埋めるなど)を取り除くことを提案しました(どちらもIBM-Rationalツールであるため、統合は非常に簡単な1回限りの作業です)。また、Maven&Antなどのツールを使用すると(プロジェクトにはJavaといくつかのCOTS製品が含まれます)、ビルドとリリースを簡略化でき、手動のエラーと介入を減らすことができます。 私は何とか他の人を納得させ、概念実証を開発する努力をする準備ができています。しかし、「シニア」開発者は喜んではありません。おそらく、現在のプロセスが彼の価値を高めているからでしょう。 チーム内で摩擦を発生させずにこの状況をどのように処理しますか?

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