78

「プログラミングの慣用句」という言葉が、あたかも一般的に理解されているかのように飛び交っています。それでも、検索結果とstackoverflowにはすべてが表示されます...

マイクロ より:

  • 変数のインクリメント
  • 無限ループの表現
  • 変数値の交換

ミディアムに:

マクロにするには:

「プログラミングイディオム」の単一の共通定義はありますか? 「プログラミングイディオム」は多くのスコープで使用されているため:

  • マイクロ: 構文のニュアンスまたは一般的な構文
  • 中: 一般的なスタイルとパターン
  • マクロ: イディオムとしてのプログラミング パラダイム

これらのスコープのいずれかでフレーズを使用することは有効ですか? これまでの回答は、構文イディオムに焦点を当てています。他のものも有効ですか?

4

10 に答える 10

61

プログラミング イディオムは、特定の言語でタスクをコーディングする通常の方法です。たとえば、ループは C では次のように記述されることがよくあります。

for (i=0; i<10; i++)

PHP は同様の構造を理解します。

for ($i = 1; $i <= 10; $i++)

しかし、PHP では、配列をループすることは推奨されていません。この場合、次を使用します。

foreach ($arr as $value)

一方、Ruby では次のように使用します。

(1..10).each

ループの場合、または:

array.each

これらの言語でループを書く可能性はたくさんあります。イディオムを使用すると、経験豊富な読者がすぐに識別できるようになります。その後、より重要な問題に時間を費やすことができます。

于 2008-11-19T16:49:26.820 に答える
25

(プログラミング以外の)言語の「イディオム」は、特定の言語に固有のことわざまたは表現です。一般に、言語の「ルール」に従わず、ネイティブスピーカーがそれが何を意味するかを「知っている」ために存在するものです。(たとえば、英語では「インライン」と言いますが、「アウトオブライン」と言います。これは慣用句です)

これをプログラミングの分野に移すと、次のようになります。

 if(c=GetValue())
 {...}

これは実際には次のことを意味します。

 c = GetValue();
 if (c != 0)
 {....}

これはすべてのC/C ++プログラマーが理解していますが、異なるプログラミング言語から来た人を完全に困惑させるでしょう。

于 2008-11-19T16:31:15.983 に答える
14

http://en.wikipedia.org/wiki/Programming_idiomを参照してください

プログラミングイディオムは、パターン、アルゴリズム、またはコードを構造化する方法です。プログラミング イディオムについて話すことは、コードで頻繁に繰り返されるパターンについて話したり、新しいパターンを提案したりすることです。

イディオム、特に大きなイディオムに精通していることの利点は、コードを見ると数行のコードが見えることですが、特定のイディオムとしてよく知られているため、コードを精神的に表現し、コードを単一のイディオムとして考えることができます。必然的に各行を個別に読んで理解する必要があります。

コードが慣用的でないと言うことは、人間の読者がコードについて効果的に考えることができるように構造化されていないと言うことです。

于 2008-11-19T16:24:17.230 に答える
3

イディオムは言語学からの用語です。それは文字通り言うことを意味しない単語のグループです。たとえば、気分が悪いときに誰かが「天気が悪い」と言ったとします。その特定のフレーズは、船員が乗客について話していることから来ました。船酔いの乗客は、船の動きが少ない「天気」デッキの下に行きます。しかし、私たちのほとんどは船乗りではなく、フレーズの文字通りの意味を知りません。

多くのプログラミングでは、英語の単語であっても、ほとんどの指示でさえ一般の人々には理解されていません。たとえば、「forループ」。それらはプログラマーには意味がありますが、他のほとんどの人には意味がありません。

于 2008-11-19T16:29:57.403 に答える
3

大きなプログラムは小さなプログラムから成長するため、その正確性が確認された標準的なプログラム構造の武器庫を開発することが重要です。これをイディオムと呼びます。また、価値が証明されている組織化手法を使用して、それらをより大きな構造に結合する方法を学ぶことが重要です。

プログラマーは優れたアルゴリズムとイディオムを習得する必要があります。

Alan J. Perlis - SICP 序文

于 2013-05-14T04:35:45.933 に答える
2

イディオムは、いくつかの場所で識別できる「パターン」です。

特定のプログラミング言語と関係があるとは言えません。

Iterator foo;
foo.reset();
while (foo.next())
{
    print(foo.value());
}

これは、私が「for each」イディオムと呼んでいるものの一部であり、多くの言語でわずかに異なって表現されています。

イディオムのもう 1 つの優れた例はSocketです。ソケットがあると主張するすべてのプラットフォームは、概念的に同じように動作します。つまり、それらはすべてほぼ同じインターフェースを持っています。

于 2009-06-15T12:12:17.713 に答える
2

ウィキペディアから: プログラミング イディオムは、1 つまたは複数のプログラミング言語で繰り返し構造を表現する手段です。

でも、あなたはすでにその道を進んでいると思います!

于 2008-11-19T16:25:27.100 に答える
1

イディオムは、特定の言語に固有のことを言う方法です。たとえば、ここにいくつかの英語のイディオムがあります。

これを外挿して、概念をプログラミングに適用できます。

于 2008-11-19T16:33:25.337 に答える
1

マンネリ化:同じプロセスを同じ方法で行う。イディオムを蓄積します。標準化します。シェイクスピアとあなたの唯一の違い (!) は、語彙の量ではなく、イディオム リストの量でした。

  • ALAN PERLIS、プログラミングのエピグラム

http://www.cs.yale.edu/quotes.html

于 2012-01-13T02:38:23.060 に答える