問題タブ [procedural-programming]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
programming-languages - 手続き型と機能型の違いを真に理解する
手続き型プログラミングと関数型プログラミングのパラダイムの違いを理解するのに本当に苦労しています。
関数型プログラミングに関するウィキペディアのエントリの最初の2つの段落は次のとおりです。
コンピュータサイエンスでは、関数型プログラミングは、計算を数学関数の評価として扱い、状態データや可変データを回避するプログラミングパラダイムです。状態の変化を強調する命令型プログラミングスタイルとは対照的に、関数の適用を強調します。関数型プログラミングのルーツはラムダ計算です。ラムダ計算は、関数の定義、関数の適用、および再帰を調査するために1930年代に開発された形式的なシステムです。多くの関数型プログラミング言語は、ラムダ計算の詳細と見なすことができます。
実際には、数学関数と命令型プログラミングで使用される「関数」の概念との違いは、命令型関数には副作用があり、プログラム状態の値が変わる可能性があることです。このため、参照透過性が不足しています。つまり、同じ言語式では、実行中のプログラムの状態に応じて、異なる時間に異なる値が生成される可能性があります。逆に、関数型コードでは、関数の出力値は関数に入力された引数のみに依存する
f
ため、引数に同じ値を指定して関数を2回呼び出すとx
、同じ結果が生成されます。f(x)
両方の時間。副作用を排除することで、関数型プログラミングの開発の主な動機の1つである、プログラムの動作の理解と予測がはるかに容易になります。
それが言うパラグラフ2で
逆に、関数型コードでは、関数の出力値は関数に入力された引数のみに依存する
f
ため、引数に同じ値を指定して関数を2回呼び出すと、両方の時間x
で同じ結果が生成されます。f(x)
手続き型プログラミングの場合とまったく同じではありませんか?
目立つ手続き型と機能型で何を探すべきですか?
php - 関数定義の順序は重要ですか?
以下のスクリプトで、アイテムが宣言される順序は重要ですか?
たとえば、add_action がまだ定義されていない関数を指している場合はどうなりますか? それは重要ですか、それとも関数宣言は常に呼び出されたコードの前に置くべきですか?
dependency-injection - 手続き型プログラミングの依存性注入
C またはその他の手続き型プログラミング言語で大規模なアプリケーションを作成することにしたとします。次のような呼び出し依存関係を持つ関数があります。
明らかに、リーフ関数 C11、C12、C21、および C22 の単体テストは非常に簡単です。入力をセットアップし、関数を呼び出し、出力をアサートします。
しかし、B1、B2、および A の適切な単体テストを有効にするための適切な戦略は何ですか?
依存性注入B1
は、 (B2
また) 次のように宣言することを示唆していますか?
しかし、呼び出しのレイヤーが多数ある場合、その戦略はスケーラブルではないようです。A
の宣言がどのようになるか想像してみてください。
うん!もっと良い方法があるはずです。
モジュール性とメンテナンスの容易さを促進すると主張する DI やその他の同様のパターンが、実際にはコードの明瞭さを妨げ、単純なコーディングであるべきものを無意味な抽象化と複雑な間接化に複雑化させていると感じることがあります。
Perl や Ruby のような大規模な C のソフトウェア プロジェクトでは、単体テストはどのように処理されますか?
unit-testing - 手続き型または関数型プログラミング言語での単体テスト
関連する質問をしましたが、満足のいく回答が得られませんでした。だから、おそらく私はそれを別の方法で尋ねるべきです。
PerlやRuby、さらにはLinuxカーネルなどの大規模なCプロジェクトは、ユニットテストをどのように処理しますか?または、関数型言語でも?
私はOOPでのテストのための依存性注入と抽象ファクトリに精通していますが、非OOPでのスケーラブルで管理しやすい同等性は見当たりません。たとえば、CやHaskellでは、関数のレイヤーの上にレイヤーがあり、上位のレイヤーは暗黙的に下位のレイヤーを呼び出します。すべての依存関係ではなく、コードの単位だけをテストするための継ぎ目を見つけるにはどうすればよいですか?
シームの必要性をすべて一緒に回避する1つの方法は、呼び出し依存グラフの深さを非常に低く保つことです。いわば、垂直方向ではなく水平方向にコーディングします。「leaf」関数で可能な限り多くのアプリケーションロジックを保持します。そして、「ノード」関数が他のノード/リーフ関数にデータを配管する以外に機能しないことを確認してください。次に、「リーフ」機能のみをテストします。「ノード」機能は統合テストに任せてください。そのアプローチは効果的ですか?
今日の最大のソフトウェアは、今でも手続き型言語で書かれています。うまくいくいくつかの方法論が採用されているに違いありません。優れたユニットテストを備えた手続き型言語の大規模ソフトウェアの経験がある人はコメントできますか?
java - 私のコードは手続き型すぎますか?
最近、誰かが私のコードを見て、手続き型すぎるとコメントしました。明確にするために、それは彼らが見たコードの多くではありませんでした-アプリケーションで取られた論理的なステップを明確に概説するセクションだけです。
次に、これらのさまざまなメソッドは、さまざまなオブジェクトの全体を作成し、必要に応じてこれらのオブジェクトに対してさまざまなメソッドを呼び出します。
私の質問は-手続き型プログラミングを示す、このようなアプリケーションを明確に駆動するコードのセクションです。もしそうなら、同じ結果を達成するためのよりOOな方法は何でしょうか?
すべてのコメントは大歓迎です!
oop - プロシージャとグローバル変数のみを使用して、オブジェクト指向プログラミングの 4 つの原則すべてを実装することは可能ですか?
これは、長い間私を悩ませてきた質問です。
プロシージャとグローバル変数のみを使用して、C のような非 OO 言語でポリモーフィズムや継承などの OOP 原則を実装することは可能ですか? そのために、低レベルの抽象化から特別な処理が必要ですか?
この質問はまったく意味がありますか?!
php - 手続き型プログラマーのためのOOP
私は過去10年間、PHPで記述されたいくつかの手続き型アプリケーションに縛られてきました。これらのうちの2つは間もなくなくなります。私は、OOP手法に慣れる必要があります。
熟練した手続き型コーダーである人々のために書かれた良いチュートリアルや本はありますか?熟練した人は、関数を多用し、さまざまなインクルードファイルを介して関数を分類します。私はクリーンでわかりやすいコードが好きです(そしてそれに応じて文書化します)。私の脳は手続き的に考えるように訓練されていますが、経験から、コードを再利用可能な部分に分解することができました(保守と更新が簡単です)。OOPは同じ考えに基づいていることは理解していますが、この新しい(私にとって)手法を学ぶというハードルを克服するための助けが必要です。
android - AndroidフォンからAsp.netサーバーに画像をアップロードします
多くのリンクを検索しましたが、解決策を見つけることができませんでした。私は Asp.net のコーディングについてあまり考えていません。imageview から Asp.net サーバーに画像をアップロードする手順の例を教えてください。
前もって感謝します
javascript - ダンジョン アルゴリズムを Java から JavaScript に変換できない
このダンジョン アルゴリズムを Java から JavaScript に変換しようとしていますが、私のスクリプトは 70% の確率で動作します。それが機能する場合、問題は次のとおりです。部屋の片側に壁がなく、一部の部屋にはまったくアクセスできません。うまくいかないときは無限ループに陥ります。
(画像が小さくてすみません。jfiddle を更新したところ、出力が大きくなりましたhttp://jsfiddle.net/gUmH7/1/ )
私は makeRoom() が問題だと推測しています。そうでない場合は、間違いなく createDungeon() です。したがって、アルゴリズムが機能すると、最初の makeRoom() 呼び出しの後、dungeon_map 配列に 1 と 2 が取得されます。ここで、1 は茶色の壁、2 は黄色の床です。アルゴリズムが機能しない場合、dungeon_map 配列に 1 または 2 が存在しないため、無限ループが発生します。
ここに出力 online があるため、Javaコードが機能すると確信しています。そして、これがオリジナルです。
私のコードと他のコードとの唯一の違いは getRand() メソッドです。これは、渡された最小値と最大値の間の数値を返すだけだと確信しています。
私のコード全体:
とjfiddle。
java - 選択に応じて州名と都市名を取得するための簡単なコードが必要
私はアンドロイドとジャバの両方に不慣れです。スピナーが選んだ国、州、都市を含むシンプルなアプリを開発しています。ここで、国(インド)を選択しているときに、インドの州のみを取得する必要があると考えてください。そして、任意の州(アンドラプラデシュ)を選択している間、APの都市が次のスピナーに表示されます。誰かがサンプルコードで私を提案できますか?
前もって感謝します