タグ付けされた質問 「pragmatism」

6
なぜレクサーを2Dアレイと巨大なスイッチとして実装するのですか?
私は学位を取得するためにゆっくりと取り組んでおり、この学期はCompilers 101です。DragonBookを使用しています。まもなくコースに入り、語彙分析と、決定論的有限オートマトン(以下、DFA)を介してそれを実装する方法について説明します。さまざまなレクサーの状態を設定し、それらの間の遷移を定義します。 しかし、教授と本は両方とも、巨大な2D配列(1つの次元としてのさまざまな非終端状態、および他の可能性のある入力シンボル)に相当する遷移テーブルと、すべての端子を処理するswitchステートメントを介して実装することを提案していますまた、非終端状態の場合は遷移テーブルにディスパッチします。 理論はすべて良好で優れていますが、実際にコードを何十年も書いた人として、実装は下手です。それはテスト可能ではなく、保守可能でもなく、読み取り可能でもなく、デバッグするのに苦労します。さらに悪いことに、その言語がUTFに対応していれば、どのように実用的であるかわかりません。非終端状態ごとに100万程度の遷移テーブルエントリがあると、急いで扱いにくくなります。 それで、取引は何ですか?主題に関する決定的な本が、このようにそれをするように言っているのはなぜですか? 関数呼び出しのオーバーヘッドは本当にそれほどですか?これはうまく機能するものですか、文法が事前にわからない場合に必要ですか(正規表現)?または、より具体的なソリューションがより具体的な文法でうまく機能する場合でも、すべてのケースを処理する何かでしょうか? (注:可能性のある重複「なぜ巨大なswitchステートメントの代わりにオブジェクト指向アプローチを使用するのか?」は近いですが、オブジェクト指向については気にしません。機能的アプローチ、またはスタンドアロン関数での賢明な命令型アプローチでも問題ありません。) また、例のために、識別子のみを持つ言語を考えてみましょう[a-zA-Z]+。これらの識別子はです。DFA実装では、次のようなものが得られます。 private enum State { Error = -1, Start = 0, IdentifierInProgress = 1, IdentifierDone = 2 } private static State[][] transition = new State[][]{ ///* Start */ new State[]{ State.Error, State.Error (repeat until 'A'), State.IdentifierInProgress, ... ///* IdentifierInProgress */ new State[]{ State.IdentifierDone, …

11
あなたが実用的な人なら、イデオロギーに苦しむのはいかがですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 私は実用的な人間です(私はそう思います。しかし、ここでもジョンは興味深い点を持っています)。仕事を成し遂げるための問題に対する最も簡単な解決策は、それがまったく冒とく的でなく、設計原則を非難するものでなければ、私に最も適したものです。Stack Overflowでこの質問に対する私の答えをチェックしてください。シンプル。動作します。受け入れられました。改善される可能性があります。明らかに完璧ではなく、あまり精巧でもありません。そしてこの男がやってくる。彼は私に投票し、彼の答えがどのように優れているか、より正確かなどの質問にコメントし、なぜ彼を私に投票させたのかを尋ねると、彼はコメントで私を明白に間違っていると呼びます。この漫画を思い出します。 これをまっすぐにするために:彼の答えは明らかに優れています。しかし、それはポイントではありません! スタックオーバーフローでは、これらの人々は遠く離れているので、私は笑ってこれらのことをあまり気にしませんが、現実の世界では時々イデオロギーに苦しんでいます。ちなみに、私は奇跡的なソフトウェアを作成しているわけではありません。その巨大な遺産を動かし続ける必要があり、それは毎日私にとって冒険です。私はいくつかのことが得意で、他のことは得意ではありません。物事を学びたいです。しかし、システム内の1つまたは2つの欠陥を、それが何であるかとして受け入れることができます。明日は、それらすべてをリファクタリングしますが、まず顧客が望むことを実行してから、ビールを飲みましょう。 私の質問は: あなたが実用的な人であるとき、あなたはどのようにイデオロギー/イデオロギーに対処しますか? あなたがイデオロギーの人であるとき、あなたはプラグマティズム/プラグマティストにどのように対処しますか? 私は両方の観点に興味があります。

9
コードレビュー、利点は何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 私のチームでは、正式なコードレビューは行いません。ペアプログラミングと回転ペアで十分であると考える傾向があります。 正式なコードレビューを検討する必要がありますか?利点は何でしょうか?

6
開業医として、なぜ私はハスケルを気にする必要がありますか?モナドとは何ですか、なぜそれが必要なのですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6年前休業。 彼らがどんな問題を解決するのか分かりません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.