ソフトウェア工学

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

3
プログラミング言語が戻り値の型に関係なくメソッドシグネチャを生成するのはなぜですか?
戻り値の型に基づいてメソッドシグネチャを生成しない多くの言語で作業しました。私はまた、それと一緒に働いたことがあります。過去に私に問題を与えていないもの(ここのような)。プログラミング言語が戻り値の型に関係なくメソッドシグネチャを生成するのはなぜですか? 更新:コンパイル済みの静的に型指定された言語を具体的に参照しています

11
プログラミングは繰り返し作業ではないことをプログラマ以外に説明するにはどうすればよいですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 一部の人々は、それがキーボード上で繰り返し入力するだけであるというプログラミングの見方をしています。これは真実ではありません。まず第一に、設計アーキテクチャなど、実際にコードを入力するよりも多くの作業が必要です。第二に、非常に多様で非反復的なタスクであり、常に新しい課題が発生する可能性があります。 プログラミングは非プログラマーにとって反復的な作業ではないことをどのように説明すべきですか?

7
SQLインジェクションに対して脆弱なコードの記述をプログラマーに停止させるにはどうすればよいですか?
時々忙しくなり、小さなタスクをジュニアプログラマに委任します。しかし、十分に注意を払わないと、この種のコードを本番環境で使用することになります。 class DivtoggleController extends Zend_Controller_Action { public function closeAction() { /* ... code removed for brevity ... */ $req = $this->getRequest(); $formData = $req->getPost(); $d = $formData['div']; $i = $formData['id']; $dm = new Model_DivtoggleManager(); $rs = $dm->setDivToggleById($d, $i); } } class Model_DivtoggleManager extends Zend_Db_Table { public function setDivToggleById($div, $id) { …
11 php  sql  training 

4
動的で弱く型付けされた言語では、デザインパターンとOOPプラクティスに関する考え方がどのように変わりますか?
これらの線に沿ってすでにかなり役立つ質問があります(「非OOPデザインパターン?」)が、動的で型付けの弱い言語を始めたばかりの人の移行の観点について、私はもっと興味があります。 つまり、C ++、C#、またはJavaで長年プログラミングしており、GoFデザインパターン、エンタープライズアプリケーションアーキテクチャのファウラーパターン、SOLID原則などに沿って多くの知恵を吸収したとしましょう。 m Ruby、Python、JavaScriptなどに手を出し、自分の知識がどのように適用されるのか疑問に思う。おそらく私は多くの場合に直接翻訳を行うことができますが、ほとんど確実にそれは私の新しい設定を十分に活用していないでしょう。アヒルのタイピングだけでも、私のインターフェースベースの考え方の多くが頭に浮かびます。 何が変わりませんか?何が変わりますか?動的言語初心者が知っておくべき、SOLIDや標準パターン(おそらくまったく新しいパターン)などの基本原則はありますか?

4
JavaのクロージャはJavaコミュニティにどのような影響を与えますか?
これは、Javaで計画されている機能について最も話題の1つであるClosuresです。私たちの多くは彼らを切望しています。私たちの中には(Iを含む)少し我慢できず、スクリプティング言語を利用してその空白を埋めています。 しかし、クロージャがついにJavaに到達すると、Javaコミュニティにどのように影響しますか?VMをターゲットとするスクリプト言語の進歩は、クロールの速度を落とすのか、そのままにするのか、それとも容認するのか?人々は新しいクロージャー構文に群がり、Javaコードベースをより機能的に構造化された実装に変えますか?Java全体にクロージャが散在するのを見るだけでしょうか ツール/ IDEサポートにどのような影響がありますか?パフォーマンスはどうですか?そして最後に、人気が高まっている他の言語と比較して、Javaが言語として継続的に採用されることはどういう意味ですか? 提案されている最新のJava Closure構文仕様の1つの例を提供するには: public interface StringOperation { String invoke(String s); } // ... (new StringOperation() { public invoke(String s) { new StringBuilder(s).reverse().toString(); } }).invoke("abcd"); になるだろう... String reversed = { String s => new StringBuilder(s).reverse().toString() }.invoke("abcd"); [ソース:http://tronicek.blogspot.com/2007/12/closures-closure-is-form-of-anonymous_28.html]
11 java  closures 

3
Javaで非推奨にするタイミングと削除するタイミング
リファクタリングの努力または継続的な開発の一環として、特定のメソッドまたはクラス全体が何らかの意味で廃止される可能性があります。Javaは@Deprecated注釈をサポートして、問題の機能を処理するより良い方法があることを示します。これは、APIの一部を削除した場合の影響がわからないかもしれないパブリックAPIで特に役立つと思います。非パブリックAPIおよびリビジョン管理システムを使用するプロジェクトの場合(削除は何らかの意味で元に戻すことができます)、廃止された要素を削除するのではなく、廃止するのが適切なのはいつですか?

5
RESTfulデザインをWebサイト全体に適用していますか?
これらはすべて非常に新しいものに出くわすかもしれませんが、完全にRESTfulなWebサイトの設計に頭を包もうとしています。私は、ユーザー、写真、ブログ投稿などのようなものにRESTfulデザインを適用することを理解しています。なぜなら、それらは「オブジェクト」のようなものだと思うからです。 しかし、「私たちについて」ページについてはどうでしょう。それはどのようなリソースですか?それは言葉のRESTfulな意味でのリソースでもありますか?また、「http://www.example.com/」というURLにアクセスするとします。どのリソースを要求していますか?インデックスリソース?

12
オフショアのバグ修正
将来の雇用主から「開発者はバグの修正が嫌いなため、バグ修正を外部委託している」と言われたら、どう思いますか?あなたの懸念は何ですか?
11 bug  offshore 

6
再現性のない/ランダムに発生するバグを修正するにはどうすればよいですか?
数日前にバグが発見された多言語のウェブサイトがあります。他の言語のデータを他の言語で表示し、英語などのデータの混合も選択されていましたが、ページにも他の言語のデータが表示されていました。それはまれですが、ウェブサイトに存在します。これは常に発生するわけではないため、コードを調べても役に立ちません。 問題をタイムリーに見つけるための提案はありますか?ここで戦略を求めています。

10
Pythonプログラマーは空白の問題を不便だと感じていますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 多くのプログラマーは、最初にPythonに遭遇すると、空白の重要性にすぐに先送りされます。これが不便であるというさまざまな理由を聞いたことがありますが、Pythonプログラマーから苦情を聞いたことはありません。 もちろん、私は自分のキャリアをJavaの世界で過ごしてきたので、多くのPythonプログラマーに会ったことはありません。 だから私の質問は、大規模なPythonプロジェクト(Pythonが使用されている主要な言語である3か月以上)に参加している人たちに対するものです。それとも、フローに入ったら問題ではなかったのですか? Pythonに賛成か反対か、またはPythonの空白の使用に賛成または反対なので、私は質問をしていません。私はたまたまPythonが好きですが、私はPythonを大きなものに使ったことはありません。 Pythonの経験がない場合は、推測を提供しないでください。

4
スクラムのプロジェクトクロージャ
典型的なソフトウェア開発環境では、プロジェクトの終了はプロジェクトの終了を示します。 プロジェクトの記録が完成してアーカイブされ、 解放されたリソース、 問題と教訓が文書化されている お祝いのために開催される正式なディナー/パーティー。 最後のステップはオプションですが、参加者にとって非常にやる気になります。:-) これをスクラムと比較してください。スクラムはバックログのストーリーで実行されることを知っています。したがって、技術的には、すべての反復が特定のストーリーを閉じます。したがって、ここには2つの質問があります。 複数の同時プロジェクトに取り組むグループの場合、プロジェクトクロージャはどのように適合しますか? 複数のグループを含むプロジェクトの場合、この概念はどのように適用されますか? または、プロジェクト終了期間はT&Mプロジェクトにはまったく適用されませんか?
11 scrum 

6
ほとんどの言語でバインディングがネイティブ機能ではないのはなぜですか?
変数を別の変数または式にバインドするIMHOは、数学の非常に一般的なシナリオです。実際、最初は、多くの学生が割り当て演算子(=)が何らかの拘束力を持つと考えています。しかし、ほとんどの言語では、バインディングはネイティブ機能としてサポートされていません。C#などの一部の言語では、いくつかの条件が満たされている場合にバインドがサポートされる場合があります。 しかし、これをネイティブ機能として実装するIMHOは、次のコードを変更するのと同じくらい簡単でした。 int a,b,sum; sum := a + b; a = 10; b = 20; a++; これに int a,b,sum; a = 10; sum = a + b; b = 20; sum = a + b; a++; sum = a + b; 右側の式に含まれる変数の値を変更するすべての命令の後に、割り当て命令としてバインディング命令を配置することを意味します。この後、冗長な命令のトリミング(またはコンパイル後のアセンブリの最適化)が行われます。 そのため、ほとんどの言語でネイティブにサポートされていない理由。特にCファミリーの言語ですか? 更新: さまざまな意見から、この提案された「バインディング」をより正確に定義すべきだと思います。 これは一方向のバインディングです。合計のみがa + bにバインドされ、その逆はありません。 バインディングのスコープはローカルです。 バインドが確立されると、変更できません。つまり、合計がa …

7
XMLを解析するためのテクニック
私は常にXMLの処理がやや面倒だと感じてきました。私はXMLパーサーの実装について話しているのではなく、ノードごとにXMLを処理するSAXパーサーのような既存のストリームベースのパーサーの使用について話しているのです。 はい、これらのパーサーのさまざまなAPIを学ぶのは非常に簡単ですが、XMLを処理するコードを見ると、常に多少複雑になることがわかります。本質的な問題は、XMLドキュメントが個々のノードに論理的に分離されているにもかかわらず、データの種類と属性が実際のデータから分離されていることが多いことです。したがって、特定のノードを個別に処理する場合、現在の場所と次に何をする必要があるかを判断するために、多くの余分な状態を維持する必要があります。 たとえば、典型的なXMLドキュメントからスニペットが与えられた場合: <book> <title>Blah blah</title> <author>Blah blah</author> <price>15 USD</price> </book> ...本のタイトルを含むテキストノードに出会ったとき、どのように判断しますか?イテレータのように動作し、を呼び出すたびにXMLドキュメントの次のノードを提供する単純なXMLパーサーがあるとしますXMLParser.getNextNode()。私は必然的に次のようなコードを書くことに気づきます。 boolean insideBookNode = false; boolean insideTitleNode = false; while (!XMLParser.finished()) { .... XMLNode n = XMLParser.getNextNode(); if (n.type() == XMLTextNode) { if (insideBookNode && insideTitleNode) { // We have a book title, so do something with it } …

7
構造化プログラミングとオブジェクト指向プログラミング
私は構造プログラミングとオブジェクト指向プログラミングの違いを示すプレゼンテーションを行っていますが、OOPの概念を適用することでコーディングが非常に簡単になり、OOPが本当に必要であると視聴者に感じられる例を挙げて、人々がOOPを必要とする理由を説明したいと思います。 何か案は ??

1
ソフトウェアトランザクションメモリの構成可能性の例
常に言及されるソフトウェアトランザクションメモリの主な利点の1つは、構成可能性とモジュール性です。異なるフラグメントを組み合わせて、より大きなコンポーネントを作成できます。ロックベースのプログラムでは、多くの場合そうではありません。 これを実際のコードで説明する簡単な例を探しています。私はClojureの例を好むが、Haskellも大丈夫だ。サンプルが、簡単に構成できないロックベースのコードを示している場合のボーナスポイント。
11 haskell  clojure  stm 

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