3

プログラミング言語が異なれば、機能も異なるか、特定の機能が不足しています。デザインパターンは、これらの欠点を回避する方法です。静的なオブジェクト指向言語(Java、C ++)のデザインパターンに関する本やリストだけでなく、Pythonのデザインパターンに関するビデオも見てきました。

Forth、Icon、Lispなどの他の言語でのいくつかの一般的なデザインパターンを見ることに興味があります。それらがどのように見えるか、そしてなぜそれらが言語で必要とされるのかについての簡単な説明がいいでしょう。たぶん、デザインパターンなしでこの問題を解決する別の言語との短い比較。

4

5 に答える 5

9

デザインパターンは「イディオム」と呼ばれることもあります。OO 以外の言語 (C、Forth、COBOL など) では、それらは単なる「通常の方法」です。「アルゴリズム」と呼ばれることもあります。すべての言語 (実際、すべての分野) には、ソリューションを設計するためのパターンがあります。

何かを 2、3 回見たことがあれば、パターンを見たことになります。コンテキスト、問題、解決策、および結果を説明できれば、パターンを漠然としたものから具体的かつ具体的なものに引き上げることができます。

OO 以外の言語では、パターンに名前が付けられたりカタログ化されたりすることはあまりありません。なぜそうなるのかはわかりませんが、そのようです。

于 2008-09-24T16:47:09.960 に答える
3

LISP のデザイン パターンについては、Peter Norvig によるこのを参照してください。

このスライドを引用:

23 のデザイン パターンのうち 16 は、目に見えないか、よりシンプルです。

于 2008-09-24T14:25:00.927 に答える
2

Lisp では、使用しているデザイン パターンの代わりに:

  • ラムダとクロージャ (無名関数とキャプチャ環境)
  • 高階関数(関数を扱う関数)
  • マクロ (構文拡張)
  • さまざまな評価戦略 (遅延評価、バックトラッキング)
  • ファースト クラスの関数、クラス、名前空間、モジュールなど。
  • 動的環境 (例: いつでも関数を置き換える)

この文脈でデザインパターンが何を意味するのかよくわかりません。デザイン パターンが特定の問題を解決するために従うべきレシピである場合、それはプログラミング言語または環境の機能の欠如です。コンピューターは反復的なタスクをうまく処理できるため、設計パターンを実装して、実際のパラメーターを使用して呼び出す必要があります。

于 2008-09-24T14:24:06.733 に答える
2

デザイン パターンは、特定の言語に関連付けられることを意図したものではありません。これらは、一般的な問題に対するより一般的な解決策です。

于 2008-09-24T14:29:44.253 に答える
0

C# と .Net のデリゲートとイベントにより、オブザーバー パターンの実装が簡単になります。これは、GUI イベントの処理などによく使用されるためです。

于 2008-09-24T14:30:24.843 に答える