ソフトウェア工学

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

8
数字のリストで「穴」を見つける
並べ替えられていない整数のリストに存在しない(リストの最小値より大きい)最初の(最小の)整数を見つける最も速い方法は何ですか? 私の基本的なアプローチは、それらをソートしてリストをステップすることです、より良い方法はありますか?

4
なぜ「ヒアドキュメント」と呼ばれるのですか?
(これがこれの間違ったSEかどうかを教えてください) ヒアドキュメント(またはHeredoc)がそれを呼び出すのはなぜですか?ウィキペディアには、その特定の主題について何も言うことがありませんでした。「Here is document」を説明するUNIXドキュメントを見つけましたが、それは元のフォームですか?

7
2つの同等のテクノロジーのどちらを使用する必要があるかを尋ねる顧客に何を答えますか?
フリーランサーとして、顧客からよく似た要素のどちらを選ぶべきか尋ねられますが、どちらも他のものより優れているわけではありません。例: 「eコマースWebサイトはPHPまたはASP.NETである必要がありますか?」 「この通常のWebサービスをクラウドでホストする必要がありますか、それとも通常のホスティングサービスを使用する必要がありますか?」 「新しいWebサイトに適しているのは、MySQLとOracleのどちらですか?」 等 選択が関連するケースはせいぜい1%であり、正確な測定基準と研究に基づいて、実際に客観的な理由を使用して別のものを使用する必要があります。他のすべての場合、それはまったく問題ではありません。意味がないため¹、それらの意味が小さすぎて考慮できないため²、または最後に、それらの意味を予測することが不可能であるために、それは完全に、まったく無関係です¹。 あることを知っていて別のことを知らない場合、それらの質問への答えは簡単です。 「C#またはJavaでアプリケーションを書くことができます。どちらもおそらくあなたのケースでは同等です。私はC#開発者なので、Javaを選択した場合、プロジェクトに取り組むことができず、別のフリーランサーを見つける必要があります。」 両方のテクノロジーを知っている場合、それに答えることはできません。 この場合、顧客に尋ねる質問は炎上戦争の対象であり、彼のプロジェクトに実際の影響がないことを顧客に説明する方法は? 言い換えれば、専門的でない、またはプロジェクトを気にしないという印象を与えることなく、人事に関連する理由で、同等の技術ではなく1つの技術を使用することを選択したことを説明する方法 ¹例:毎日2人で楽観的にアクセスできる個人のWebサイトでは、MySQLはOracleよりもパフォーマンスが優れていますか(悪いですか?)。 ²例:特定のプロジェクトについて、有名なASP.NETホスティングプロバイダーで同じアプリケーションをホストするよりもWindows Azureホスティングの方が安いかどうかを尋ねられました。コストはまったく同じであることが明らかになりました。 ³例:顧客は将来のアプリケーションのアイデアを持っています(アイデア自体は非常にあいまいです)。事業計画も要件も何もありません。ただのアイデア。このアプリでは、JavaがC#より優れているかどうかを尋ねられます。何に答えますか?

8
MVCはWebにのみ適用されますか
Model View Controller(MVC)について開発者と話すと、サーバーがエンティティ(MODEL)を構築し、そのモデルの視覚的表現を提供するURLへのリクエストを行うと言うとき、それはほぼ瞬時です。 これは、MVC がWeb専用であることを意味しますか、それともWebアプリケーションを作成するためにMVCを使用する開発者だけの人と会ったことがありますか? デスクトップスタイルのアプリケーションでMVCの使用法はありますか? 私は、パラダイムが初めてであり、MVCのスーパーセットについて知りたい

2
Code Completeのどの部分が時の試練に耐えていませんか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 「神話の月の外で、これは時の試練に耐える数少ない大衆市場ソフトウェア工学の本の一つかもしれない」と考えて、私は棚の上のCode Completeを見ていました。この理由で、私はそれを読み直すために飛び込むことを考えています。 私は興味があります-他の誰かが最近それを再確認しましたか?私は、彼が非常に間違っていることを見ましたか? これは攻撃ではなく、書評の依頼でもありません。長年にわたってどのアイデアが変わったかにもっと興味があります。 そして、どうぞ-「Demarco / Spewak / Zachmanは時の試練に耐えました...」についてのコメントはありません。私はCode Completeに特に興味があります。
14 coding  resources 

7
演算子はキーワードや関数よりも読みやすいですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 それは少し主観的ですが、どの要因がオペレーターを使いやすくするのか、鈍くて難しくするのかをより明確に理解したいと思っています。私は最近、言語の設計を検討してきましたが、私が常に振り返る問題の1つは、言語の重要な操作をいつ演算子にするか、キーワードや関数をいつ使用するかです。 Haskellは、カスタムオペレーターの作成が簡単であり、多くの場合、新しいデータ型が複数のオペレーターで使用できるようにパッケージ化されるため、これについてはやや悪名高いです。たとえば、Parsecライブラリには、パーサーを結合するための多数の演算子が付属して>.おり、.> 今のような宝石を覚えていますが、今の意味を思い出すことさえできませんが、彼らは実際に意味します。などの関数呼び出しleftCompose(parser1, parser2)は改善されましたか?確かにより冗長ですが、いくつかの点で明確です。 Cライクな言語での演算子のオーバーロードも同様の問題ですが、おなじみの演算子のよう+な意味を通常とは異なる新しい意味でオーバーロードするという追加の問題によって混同されます。 新しい言語では、これはかなり難しい問題のように思えます。たとえば、F#では、キャストはC#スタイルのキャスト構文または冗長VBスタイルの代わりに、数学的に導出された型キャスト演算子を使用します。C#:(int32) xVB:CType(x, int32)F#:x :> int32 理論的には、新しい言語にはほとんどの組み込み機能の演算子があります。変数宣言の代わりにdef、decまたはvar変数宣言のために、なぜそうでない! nameか、@ nameまたは類似した何か。それは確かに、宣言に続くバインディングを短縮します。@x := 5代わりに、declare x = 5またはlet x = 5 ほとんどのコードは多くの変数定義を必要とするでしょう。 オペレーターが明確で有用なのはいつですか?

3
TFSを2つのローカルディレクトリにマップする方法[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックソフトウェア工学スタックExchange用。 6年前に閉鎖されました。 TFSを使用して、Webアプリケーションで作業しています。サイトを構築するたびに、再起動に非生産的に長い時間がかかります。私はcドライブ上のサイトの2番目のマッピングを持ちたいと思います。そこでは、最新版を取得して1日に1回だけビルドするので、このバージョンは常に高速です。個人的には編集しないので、これは「読み取り専用」ディレクトリのようになります。 これが可能かどうか、または他に選択肢がある場合はお知らせください。

4
ATMやテレビなどのマシンのソフトウェアはどのように構築されていますか?
初心者プログラマーとして、私はコンピューターベースのアプリケーションのプログラミングでしか仕事をしていませんが、プログラミングを始めてからよく質問があり、適切に答えられません。 機械はそれ自体では動作しません。それはプログラマーの仕事です。彼は何をいつ何をするかを教えてくれますが、私の好奇心はコンピューターの下にあります。この記事ではATMソフトウェアの例を取り上げますが、洗濯機のディスプレイやテレビ、携帯電話など、他にもたくさんあることを覚えておいてください。 この種のマシンのソフトウェアはどのくらい正確に構築されていますか?コンピューターベースのプログラミングと同じになることはないと思います。彼らはそのようなことを機能させるためにどの言語を使用し、どのように仕事を成し遂げますか?この種のプログラミングに特化したプログラマーはいますか?これらのマシンに命を吹き込むプロセスは何ですか?

6
Waterfallソフトウェア開発方法論はまだ実行可能ですか?
私の経験では、Waterfallモデルは柔軟性に欠け、要件の変更に無反応であることが証明されており、ソフトウェア開発の現代世界で実行可能な方法と見なされているようです。より俊敏で反復的な方法の成長と実証済みの実績は、プロジェクトの開始から製品の提供までほとんど変わらないことを前提とするリジッドブロックのプロセスに従う必要がある理由がないことを示しているようです。 ウォーターフォール開発方法論は、時間、コスト、および品質に関して、ソフトウェアシステムを提供するためにまだ実行可能ですか?

5
工場としての基本クラス?
私は週末にいくつかのコードを書いていましたが、ファクトリを基本クラスの静的メソッドとして書きたいと思いました。 私の質問は、これが独創的なアプローチであるかどうかを知ることですか? 基本クラスが派生クラスの知識を持っているという事実からではないかもしれないという私の感覚です。 そうは言っても、同じ結果を得るためのもっと簡単な方法はわかりません。他のファクトリクラス全体は(少なくとも私には)不要な複雑さ(?) 何かのようなもの: class Animal { public static Animal CreateAnimal(string name) { switch(name) { case "Shark": return new SeaAnimal(); break; case "Dog": return new LandAnimal(); break; default: throw new Exception("unknown animal"); } } } class LandAnimal : Animal { } class SeaAnimal : Animal { }
14 c#  class-design 

4
オブジェクト指向プログラミングが主要なプログラミングパラダイムになる歴史的条件は何でしたか?
オブジェクト指向プログラミング言語が影響力を持つようになった経済的(およびその他の歴史的)要因は何でしたか?Simulaが物事を始めたのは知っていますが、ビジネスのニーズが増え続けるためにOOP言語が採用されたのですか?それとも、OOP言語でできる新しいことのせいで採用されたのでしょうか? 編集 私は、言語自体の外で、それらが定着することを可能にするいくつかの要因があったかどうかに本当に興味があります。

3
Github組織のリポジトリ、問題、複数の開発者、および分岐-ワークフローのベストプラクティス
奇妙なタイトル、はい、しかし、私は私が思うにカバーするために少し地面を持っています。 プライベートリポジトリを持つgithubに組織アカウントがあります。githubのネイティブな問題/プルリクエスト機能を使用したいと思います(プルリクエストは、基本的にコードレビューと機能の議論に関する限り正確です)。私たちは、ツール見つかったハブをすることによってディファンクトプル要求に既存の問題を変換し、自動的にそれをあなたの現在のブランチを関連付けることができるというクールなのはほとんどの機能があります。 組織内の各開発者が組織のリポジトリをフォークして、機能の作業/バグ修正などを行うのがベストプラクティスかどうか疑問に思っています。これは非常に堅実なワークフローのように見えます(基本的にはgithubのすべてのオープンソースプロジェクトが行うことです)が、問題を追跡し、組織のリポジトリである1つのソースから要求をプルできることを確認したいと思います。 そこで、いくつか質問があります。 この場合、開発者ごとのフォークのアプローチは適切ですか?それは少しやり過ぎのようです。直接プッシュアクセスを持たず、すべてのコードをレビューする必要がある開発者を紹介しない限り、すべての開発者にフォークが必要かどうかはわかりません。その場合、それらの開発者だけにそのようなポリシーを制定したいと思います。それで、どちらが良いですか?すべての開発者が単一のリポジトリにあるのか、それともみんなの分岐点なのか ハブツール、特にプルリクエスト機能の経験はありますか?開発者ごとにフォークを行う(または特権の低い開発者向け)場合、ハブのプルリクエスト機能は、上流のマスターリポジトリ(組織のリポジトリ?)からのプルリクエストを処理しますか、それとも異なる動作をしますか? 編集 私は問題、フォーク、プルリクエストでいくつかのテストを行い、それを見つけました。組織のリポジトリに問題を作成した場合、組織からリポジトリを自分のgithubアカウントにフォークし、いくつかの変更を行って、フォークのマスターブランチにマージします。実行しようとするhub -i <issue #>と、エラーが発生しますUser is not authorized to modify the issue。したがって、明らかにそのワークフローは機能しません。

1
JavaScript商標の使用の法的影響?
「JavaScript」という名前がOracleの商標であることが広く知られています(以前はSunの商標で、以前はNetscapeの商標でした)。 ただし、JavaScript商標を使用しても問題ないようです。Googleはを参照して、それを使用してV8、Mozillaはを参照して、それを使用していますSpiderMonkeyの、様々な他の場所では、などのMozillaは、その所有者(の底に商標を属性しようとしているようだ唯一のもので、このページ時)、ただしこの記事の記述は、OracleではなくSunに誤って起因しています。 長い間、MicrosoftはECMAScript実装の名前として「JavaScript」ではなく「JScript」を使用していました。これはおそらく商標の侵害を避けるためです。最近(いつになるかわかりません)、Microsoftは「JScript」の名前から「JavaScript」に切り替えたようです。 バージョン履歴に基づいた私の理解では、新しいECMAScript実装を作成し、「JavaScript」という名前を付け、古いものを「JScript」という名前のままにします(「JScript」を「JavaScript」に遡って変更するのではなく)。 私の質問はこれです:JavaScriptは商標であるため、許可なく製品または技術の名前(「Microsoft JavaScript」など)に関連して使用することは侵害ではありませんか?もしそうなら、サードパーティによる商標の使用を許可するOracle / Sun / Netscapeとの契約の記録をどこで見つけることができますか?これらのドキュメントはどこかに公開されていると思いますが、どこにあるのかわかりません。そして最後に、商標が再び変わった場合、以前に作成された契約はまだ有効でしょうか、それとも現在の商標所有者と再構築する必要がありますか? 私が尋ねる理由は、明示的な許可なしにJavaScriptライブラリなどの製品のタイトルに「JavaScript」という単語を使用できるかどうか、およびJavaScriptがOracleの商標であることを示す免責事項を提供する必要があるかどうかを知りたいためです。

5
レクサーのトークンを考え出す
私が作成したマークアップ言語のパーサーを書いています(Pythonで書いていますが、これはこの質問にはあまり関係ありません-実際、これが悪い考えのように思える場合は、より良いパスの提案が欲しいです) 。 私はここでパーサーについて読んでいます:http : //www.ferg.org/parsing/index.html、そして、私が正しく理解すれば、コンテンツをトークンに分割するべきレクサーの作成に取り組んでいます。理解できないのは、どのトークンタイプを使用するか、またはどのように作成するかです。たとえば、リンクした例のトークンタイプは次のとおりです。 ストリング 識別子 数 ホワイトスペース コメント EOF {や(などの多くの記号は、独自のトークンタイプとしてカウントされます 私が抱えている問題は、より一般的なトークンの種類が私にとって少しarbitrary意的であるように見えることです。たとえば、なぜSTRINGは独自のトークンタイプとIDENTIFIERであるのですか。文字列は、STRING_START +(IDENTIFIER | WHITESPACE)+ STRING_STARTとして表すことができます。 これは私の言語の難しさに関係しているかもしれません。たとえば、変数宣言はとして記述され{var-name var value}、でデプロイされ{var-name}ます。それはのように思える'{'し、'}'自分自身のトークンにする必要がありますが、VAR_NAMEとVAR_VALUE資格トークンタイプで、またはこれらの識別子の下で、両方の秋のでしょうか?さらに、VAR_VALUEには実際に空白を含めることができます。後の空白var-nameは、宣言内の値の開始を示すために使用されます。他の空白は値の一部です。この空白は独自のトークンになりますか?空白は、このコンテキストでのみその意味を持ちます。さらに、{変数宣言の始まりではないかもしれません..それはコンテキストに依存します(その言葉が再びあります!)。 {:名前宣言を開始し、{ 値の一部として使用することもできます。 私の言語は、ブロックがインデントで作成されるという点でPythonに似ています。Pythonがlexerを使用してINDENTおよびDEDENTトークンを作成する方法について読んでいました(多かれ少なかれ、他の多くの言語で何{をし、何を}するのか)。Pythonはコンテキストフリーであると主張しています。つまり、少なくとも字句解析者は、トークンの作成中にストリーム内のどこにいるかを気にする必要はありません。Pythonのレクサーは、前の文字を知らずに特定の長さのINDENTトークンを構築していることをどのように認識しますか(たとえば、前の行が改行だったので、INDENTのスペースの作成を開始します)。私もこれを知る必要があるので尋ねます。 私の最後の質問は最も愚かなものです。なぜレクサーが必要なのでしょうか?パーサーは文字ごとに行って、それがどこにあり、何を期待しているかを把握できるように思えます。レクサーは単純さの利点を追加しますか?
14 python  parsing  lexer 

4
C#で動的型を使用する場合の欠点
私は最近、C#の動的型についてさらに研究しています。コードをコンパイルすると理解できる例がいくつかありますが、コードを再コンパイルする必要はありませんが、直接実行できます。 実際にデータ型を自由に変更できるというキーワードが提供する柔軟性は大きな利点であると感じています。 質問、 開発者が実装を開始する前に知っておく必要がある実行時例外をスローする間違った動的メソッド呼び出し以外に、特定の欠点がありますか。

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