ソフトウェア工学

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

14
スクリプト言語はジュニアプログラマーにどのような影響を与えますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 先日、先生の一人と話し合いました。 シンプルなスクリプト言語(PythonやRubyなど)がジュニアプログラマーに与える影響について議論しました。 彼は、初心者が「内部」で何が起こっているのか理解していないので、スクリプト言語がずさんなコーディング技術を生むと主張した。彼はまた、スクリプト言語がプログラマーに効率、メモリ管理、操作の複雑さなどに関する懸念を無視させることが多い方法の他の例を引用しました。 低レベルの言語は一部の人々にとっては多すぎるかもしれず、プログラミングへの情熱を開発する前にgiveめるかもしれないと主張しました。最初のプログラミング言語(C)を学び始めたとき、私は指針に行き着き、概念が難しすぎるためにgaveめました(私の防御では、私はまだ14歳でした)。Javaがなかったら、私はプログラマーにならなかったかもしれません!もっとシンプルな言語から始めて、深く掘り下げていたら、あきらめずに、Cで始めたのと同じくらい学んだと思います。 どちらかの側が完全に探検される前に、クラスは終了しました。 ここまで、初心者はスクリプト言語から始めて、深く掘り下げるべきだと説教してきました。しかし、その議論の後、私はこれが誤った思考であるかどうか疑問に思い始めました。 それでは、スクリプト言語はジュニアプログラマにどのような影響を与えますか?


5
「クロスファンクショナルチーム」とは実際には何ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 「クロスファンクショナルチーム」の一般的な意味は、目標を達成するために必要なさまざまな分野の専門家を組み合わせたチームです。 しかし、アジャイルのクロス機能性とは、異なる専門家を組み合わせるだけでなく、それらを混合させることを意味するように見えます。Henrik Kniberg は、クロスファンクショナルチームを次のように定義しています。 しかし、線はどこに描かれていますか?必要な場合、開発者に反復のテスターに​​なるように依頼するのは普通ですか?

10
なぜ継承とポリモーフィズムがそれほど広く使用されているのですか?
関数型プログラミングなどのさまざまなプログラミングパラダイムについて学べば学ぶほど、継承やポリモーフィズムなどのOOPコンセプトの知恵に疑問を持ち始めます。私は最初に学校での継承とポリモーフィズムについて学びましたが、当時、ポリモーフィズムは簡単な拡張性を可能にする汎用コードを書く素晴らしい方法のように思えました。 しかし、カモタイピング(動的および静的の両方)および高次関数などの機能的特徴に直面して、継承とポリモーフィズムを、オブジェクト間の脆弱な一連の関係に基づいて不必要な制限を課すように見始めました。多態性の背後にある一般的な考え方は、関数を一度書くだけで、後で元の関数を変更せずにプログラムに新しい機能を追加できるということです。必要なメソッドを実装する別の派生クラスを作成するだけです。 しかし、これは、Pythonのような動的言語であろうと、C ++のような静的言語であろうと、アヒルの型付けによって達成するのがはるかに簡単です。 例として、次のPython関数とそれに続く静的なC ++の機能を考えてみましょう。 def foo(obj): obj.doSomething() template <class Obj> void foo(Obj& obj) { obj.doSomething(); } OOPに相当するものは、次のJavaコードのようなものです。 public void foo(DoSomethingable obj) { obj.doSomething(); } もちろん、大きな違いは、Javaバージョンが機能する前に、インターフェイスまたは継承階層を作成する必要があることです。したがって、Javaバージョンはより多くの作業を必要とし、柔軟性が低くなります。さらに、ほとんどの実際の継承階層はやや不安定であることがわかりました。シェイプとアニマルの不自然な例を見てきましたが、現実の世界では、ビジネス要件の変更と新しい機能の追加に伴い、「is-a」関係を実際に伸ばす前に作業を完了することは困難です。サブクラス、または階層をリモデリング/リファクタリングして、新しい要件に対応するために、さらに基本クラスまたはインターフェイスを追加します。アヒルのタイピングでは、モデリングのことを心配する必要はありません- 必要な機能を心配するだけです。 しかし、継承とポリモーフィズムは非常に人気があるため、拡張性とコードの再利用のための支配的な戦略と呼ぶのは誇張ではないでしょうか。それでは、なぜ継承とポリモーフィズムはそれほど成功しているのでしょうか?継承/ポリモーフィズムがアヒルのタイピングよりも優れているいくつかの重大な利点を見落としていますか?

4
Web APIの廃止:ベストプラクティス?
最終的に、パブリックWeb APIの一部を減価償却する必要があります。しかし、私はそれを行うための最良の方法が何であるかについて混乱しています。大規模なサードパーティアプリベースがある場合、ほとんどすべてのアプリが一晩で失敗するため、古いバージョンのAPIをヤンクするだけでは間違った方法のように思えます。ただし、古くなったWeb APIを永久に使用できる状態に維持することはできません。 古いWeb APIを廃止するためのベストプラクティスは何ですか?
18 api 

5
アジャイルショップは、ジョエルテストで本当に12点を獲得できますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 私はジョエルのテストが本当に好きで、自分でそれを使って、スタッフとインタビューする人にそれを注意深く検討するように勧めています。しかし、いくつかの点が私の世界の基盤であるアジャイルマニフェスト、XP、TDDと矛盾しているように見えるので、9点以上を獲得できるとは思いません。 具体的には、スケジュール、仕様、テスター、静かな労働条件に関する質問は、私たちが作成しようとしているものや、真にアジャイルであることで採用した価値に反します。 私の質問は、真のアジャイルショップが12点を獲得できるかどうかです。 編集: 以下の回答者からの推薦で、私はこのことについて最初に書いたブログへのリンクを追加し、ここに質問を投稿したいと思いました。 http://simonpalmer.com/2011/03/16/why-i-will-never-score-more-than-9-on-the-joel-test/ 以下に述べられていることの多くに同意し、自分の完全な立場を宣言したかったので、私はこれを入れています。
18 joel-test 

6
Web開発に関しては、「バックエンド/サーバーサイド」が本当に理解できませんか?
Web開発の世界では、バックエンド/サーバー側のプログラマーは正確に何をしますか?私は概念全体を本当に理解していないと思います。 HTML / CSSレイアウトとWebサイトのデザインを行い、PHPで少しSQLを実行しました(スキルをさらに向上させていますが、それは私にとってはサイドプロジェクトのようなものです)。少量のJavaScript / JQueryも実行しました。 しかし、スクリプト言語(Rails / Python / etc)などの「バックエンド」の仕事は理解していません。あなたは彼らと一体何を「する」のですか?

2
Mercurialを使用したコードレビューの推奨プロセス
通常はPerforceとSmartBearのCode CollaboratorをBig Corp使用していましたが、特定のプロジェクトではMercurialを使用する予定です。 Code CollaboratorはMercurial(バージョン5を使用しています)をサポートしており、コードレビューの最適な時間(サーバーへのコミット/プッシュ中)プロセスが最適な時間であるかどうかを判断しようとしています。 ありがとう

26
チューリングテストの候補者に質問を投げかけることができたら、それは何でしょうか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 男と機械をどのように区別しますか?

10
}の後のコードブロックの最後にある「//…」コメント-良いか悪いか [閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 私はしばしばそのようなコメントが使用されるのを見ました: function foo() { ... } // foo while (...) { ... } // while if (...) { ... } // if そして時には if (condition) { ... } // if (condition) 私はこのプラクティスを理解したことがないため、適用しませんでした。コードが非常に長いため、このエンディング}が何であるかを知る必要がある場合は、おそらくコードを個別の機能に分割することを検討する必要があります。また、ほとんどの開発者ツールは、一致するブラケットにジャンプできます。最後に、最後の点は、私にとって、DRY原則への明らかな違反です。条件を変更する場合は、コメントも変更することを忘れないでください(そうしないと、メンテナーやあなたにとっても面倒になります)。 なぜ人々はこれを使用するのですか?それを使うべきですか、それとも悪い習慣ですか?


3
職場のソフトウェアにアワードポイントやゲーム機能を追加することは、プログラミングコミュニティの間ではあまり見られないでしょうか?
仕事での私の責任の1つは、労働者がすべての情報を入力するのに役立つ内部ツールを構築することです。Windowsフォームデータベースツールに似たエンタープライズアプリケーションです。 したがって、Word + Excelのコンボアプリケーションを開発するのとそれほど違いはありませんが、このワークグループの平均的な人は20〜40歳の女性またはおしゃべりな男性タイプです。加えて、私はこれらの人々全員が日常的にFacebookに深く関わっていることを知っています。 新しいインターフェイスをFacebookの機能に似せてスタイル設定すると、どれほど悪いことでしょう。人々は、さまざまな種類のフォームに記入し、基本的にゲームのように互いに競い合うと、アワードポイントやスタッフを獲得できます。人々がそれを完成したとき、それは彼らの壁に投稿され、誰もがFacebookのようにコメント/いいねをすることができます。そして、彼らは楽しみのためにピアレビューをしているようです。 報酬は、私が想像するほど素晴らしいでしょう。これらの人々はFacebookやFacebookゲームに夢中なので、ポイントや実績を競い合って獲得しようとするため、生産性が向上します。 これは、人々に「ゲームを提供することにより、彼らをより熱心に働かせること」を利用しているのでしょうか、それとも職場での幸福を改善する何かと見なされますか?

1
MITとBoostオープンソースライセンスの基本的な違いは何ですか?
MITオープンソースライセンスの基本的な違いは何ですか: これにより、このソフトウェアおよび関連ドキュメントファイル(「ソフトウェア」)のコピーを取得するすべての人に、使用、コピー、変更、マージの権利を含むがこれらに限定されないソフトウェアを許可する許可が無料で付与されます。ソフトウェアのコピーを発行、配布、サブライセンス、および/または販売し、以下の条件に従って、ソフトウェアの提供先にソフトウェアの提供を許可します。 上記の著作権表示およびこの許可通知は、ソフトウェアのすべてのコピーまたは大部分に含まれるものとします。 本ソフトウェアは、商品性、特定の目的への適合性、および非侵害の保証を含むが、これに限らず、明示または黙示を問わず、いかなる保証もなしに「現状のまま」提供されます。いかなる場合でも、作者または著作権者は、契約、不法行為、またはその他の行為、ソフトウェアまたは使用またはその他の取引に起因する、または関連するいかなる請求、損害またはその他の責任についても責任を負わないものとしますソフトウェア。 およびBoostオープンソースライセンス: これにより、ソフトウェアの使用、複製、表示、配布、実行、および送信を行うために、このライセンス(「ソフトウェア」)の対象となるソフトウェアおよび付属文書のコピーを取得する個人または組織に許可が無料で付与されます。ソフトウェアの二次的著作物を準備し、ソフトウェアの提供先であるサードパーティにそのようにすることを許可すること。 ソフトウェアの著作権表示および上記のライセンス交付、この制限および以下の免責事項を含むこの声明全体は、ソフトウェアのすべてまたはすべてのコピー、およびソフトウェアのすべての派生物に含まれなければなりません。コピーまたは二次的著作物は、ソース言語プロセッサによって生成されたマシン実行可能オブジェクトコードの形式のみです。 本ソフトウェアは、商品性、特定の目的への適合性、権利、および権利の非侵害の保証を含むがこれに限らず、明示または黙示を問わず、いかなる種類の保証もなしに「現状のまま」提供されます。いかなる場合においても、著作権者またはソフトウェアを配布する人は、契約、不法行為、その他のいずれにおいても、ソフトウェアまたはソフトウェアの使用または他の取引に起因または関連する責任を負わないものとします。 「この著作権表示を保持する」ビットの例外を受け入れます。

14
プログラミング言語のパフォーマンスが遅いのは本当に悪いことですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 ここに私がそれを見る方法があります。 マシンコードがあり、コンピューターが何かを実行するために必要なのはそれだけです。コンピューターはプログラミング言語を気にしません。マシンコードがPerl、Python、またはPHPのどれであるかは関係ありません。プログラミング言語はコンピューターに役立ちません。プログラマーに役立ちます。 一部のプログラミング言語は他のプログラミング言語よりも動作が遅くなりますが、それは必ずしも問題があるためではありません。多くの場合、それは、プログラマーがしなければならないこと(つまり、メモリ管理)をより多く行うためであり、これらのことを行うことにより、プログラマーにサービスを提供することになります。 それでは、プログラミング言語のパフォーマンスの低下は、本当に悪いことですか?

21
コードのどこで次に続行したいかをどのように覚えていますか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 何らかのコードの作業を中断する場合(他の作業をする必要があるか、休暇をとる必要があるか、単に1日の終わりであるため)、そのVisual Studioプロジェクトを閉じた後、覚えておくべき望ましい方法は何ですかそのコードで再び作業を開始したときに次に何をしたいのか。 Visual Studioのブックマークを設定しますか、// TODO: continue here next timeそれとも何か書き留めますか?たぶん、あなたは次のような特別なタグを持ってい// NEXT:ますか?モニターに付箋を置きますか?知っておくべきクールなツールまたはVisual Studioプラグインを使用していますか? コードで最後に作業したときに中断した場所をコードで見つけるのに役立つ個人的なトリックはありますか?

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