プログラミングパターン
7530 ワード
🍉 コマンドプログラミング
プログラミング状態と状態を変える文法の観点から演算の仕方を説明する.
これは問題をどのように解決するかを説明するプログラミング方法です.
プログラミング
プログラムプログラミングは、シーケンスコマンドを実行するだけでなく、プログラム、サブプログラム、メソッド、関数(プロシージャと総称)も含まれます.使用するプログラミングモードを表す
本質は、プロシージャ呼び出し(すなわち関数呼び出し)によって抽象的で再利用可能である.
関数式プログラミングの観点は純粋な関数と1級オブジェクト関数に興味があり,プログラム性プログラミングは関数(およびそれを管理するモジュール)の再利用性に重点を置いているため,2つの概念には違いがある.
これは,データの順序を把握し,必要な機能を関数とし,プログラムに従って行う方法である.
逆に,オブジェクト向けプログラミングは機能を1つのオブジェクトに組み合わせる.
オブジェクト向けプログラミング
これは,プログラミングにおいて必要なデータを抽象化し,状態と動作を持つオブジェクトを作成し,これらのオブジェクト間の有機的なインタラクションによって論理を構築するプログラミング方法である.
長所
カプセル化によりコードの再利用性が高い.
コードの変更は簡単です.
直感的なコード解析が可能です.
開発のスピードが上がる.
継承によって利点を最大化します.
短所
処理速度が比較的遅い
オブジェクトが多いと容量が大きくなります.
設計には相対的に多くの時間がかかります.
🍉 宣言プログラミング
宣言プログラミングは、アプリケーションの構造を構築するために、必要なコンテンツを記述するのではなく、実装に必要なプロセスを記述することに着目したプログラミング構造です.
ページは宣言型です.ページはタイトル、フォント、本文、画像などの「何」が現れるべきかを記述しているので、「どんな方法で」パソコンの画面にページを表示するのではありません.
コマンド・プログラムはアルゴリズムを示し、ターゲットを示さず、宣言・プログラムはターゲットを示し、アルゴリズムを示さない.
どのように操作すべきかを示すよりも、どのように実行するかを説明します.
宣言方式を正常に動作させるためには,命令式で表される「どのように」を抽象化しなければならない.
次はコマンドプログラミングです.
// 배열을 파라미터로 받고 각 요소들의 값에 2를 곱하는 함수
function double (arr) {
let results = []
for (let i = 0; i < arr.length; i++){
results.push(arr[i] * 2)
}
return results
}
// 배열을 파라미터로 받고 각 요소들을 합한 값을 반환하는 함수
function add (arr) {
let result = 0
for (let i = 0; i < arr.length; i++){
result += arr[i]
}
return result
}
みんな「どうですか」と説明しています.必要な機能を並べ替えたり実行したりする手順を明確に説明しています.宣言的なプログラミングで修復しようとすると、
function double (arr) { return arr.map((item) => item * 2) }
function add (arr) { return arr.reduce((prev, current) => prev + current, 0) }
JavaScriptに組み込まれているmapとreduceメソッドを利用しました.これは命令式方式の抽象である.宣言プログラミングの重要な解決策の一つは、コマンド実装の抽象である.「希望」より「何」を実現するかを説明します.(mapとreduceがどのように構成されているのか分からないし、気を使う必要もありません)そして、すべての変更状態の点がmapとreduceメソッドの内部に抽象化されており、私は直接状態を変更しません.また、上記の例の方が可読性が高い.
長所
:コマンド型コードは、現在のステータスのコンテキストに依存することが多いため、再利用が困難です.
:ただし、宣言コードには、コードが達成するターゲットのみがリストされているため、他のプログラムで同じコードを再利用するのは容易です.
かんすうしきプログラミング
これは、純粋な関数(pure function)、共有状態(sharedstate)、変更可能なデータ(mutable data)、および副作用を回避する基本原則を組み合わせてソフトウェアのプログラミングパターンを構築するものである.
かんすうしきプログラミングとくせい
1.純関数(純関数)
純関数とは、常に同じ入力の同じ出力を返す関数で、次の条件を満たします.マルチスレッドセキュリティ、並列処理、計算.
同じ入力の場合、
->関数のパラメータやプログラムの状態は変更しません.
2.高次関数
一級関数のサブセットは、次の条件を満たす関数です.
関数型プログラムこの言語では、関数は1級オブジェクトです.
(変数への割り当て、パラメータとしての渡し、戻り値)
3.非状態、不変性
関数プログラミングのデータは不変の不変性を維持しなければならない.
データを変更する必要がある場合は、元のデータ構造を変更せずにデータのコピーを作成し、変更後のコピーを使用して操作できます.
長所
高度な抽象化の提供
関数ユニットコードの再利用は簡単です
指向性が不変なのでプログラムの動きを予測しやすい
短所
純粋な関数を実現するために、コードの可読性が悪い可能性があります.
関数プログラミングでは、文ではなく再帰によって繰り返され、再帰コードスタイルが無限ループに陥る可能性があります.
純粋な関数を使用するのは簡単かもしれませんが、組み合わせるのは容易ではありません.
リファレンス
コマンドプログラミングVS宣言プログラミング
かんすうしきプログラミング
プログラミング
Reference
この問題について(プログラミングパターン), 我々は、より多くの情報をここで見つけました https://velog.io/@ellie12/프로그래밍-패러다임テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol