4

私はしばしば、いくつかのプログラミング言語は他の言語よりも明確であると読んでおり、抽象的な構文、明確で人間に優しい具体的な構文が与えられた場合に、言語の明確さを測定する客観的な方法があるかどうかを何度か自問しました。可能。おそらく、その目的のためのある種のデザインパターンが存在しますか?

要するに、構文を最大限に明確にするにはどうすればよいでしょうか? 言語の「明瞭さ」または「表現力」を定量化する方法を知っていますか?

これらの側面を測定しようとするのは理にかなっていますか?

ありがとう。

4

7 に答える 7

3

私は、このフレーズがさまざまな言語で不用意に投げかけられているのを何度も聞いてきました。さまざまな人がさまざまな基準に基づいてさまざまな言語を選択します。

Beautiful Codeの中で、松本幸宏 (Ruby のデザイナー) は、Hello World プログラムを Ruby で書く方が Java で書くよりもどれほど簡単かについて論じています。この例は拡大縮小することを意図しているとは思いませんが、著者の要点は、コードに追加しなければならない粗雑さの量は、その言語で書かれたプログラムを理解することの難しさを反映しているということです。つまり、気を散らすものが少ないほど、プログラムはより「読みやすく」なります。

さて、私の経験では、優れたプログラマーはプログラミングに使用するすべての言語で明確なコードを記述しますが、慣れ親しんだ言語ではさらに明確になります。著者の才能とその言語での経験の幅広さは、言語自体の明快さや表現力を圧倒してしまいます。

考慮すべきもう 1 つのポイントは、利用可能なライブラリの量と API の品質です。作業を完了するために「サポート コード」を記述する必要が少ない場合は、結果として得られるプログラムがより明確になる可能性があります。

于 2010-09-25T03:20:59.920 に答える
3

「自然プログラミング」と呼ばれるものについて、興味深い研究がいくつかあります。

http://www.cs.cmu.edu/~NatProg/index.html

彼らは、コンピューターにとって最も単純なものに人々を適合させようとするのではなく、人間の期待に応えるように言語を設計しようとします。そして、彼らはそれを実験に基づいています。たとえば、「リンゴでもナシでもないものを持って帰る」ように指示したときに、果物の箱からナシを持ち帰る人の数を調べます。(私は彼らの結果についていけていませんが、有望なプロジェクトのように思えました。)

とはいえ、「明瞭さ」と「表現力」は漠然としたものです。もちろん、 Computer Language Benchmarks Gameのように、言語を相互に定量的に測定する研究もあります。一部の人々は、そのゲームで提供されたソリューションからデータを取得し、「コード サイズとパフォーマンス」のような傾向をグラフ化しました。

http://blog.gmarceau.qc.ca/2009/05/speed-size-and-dependability-of.html

特定のタスクを効率的に実行するために必要なコード サイズの傾向に基づいて、汎用言語についていくつかの不安定な指標ベースの提案を行うことができる場合があります。しかし、それでは、「明瞭さ」と「表現力」とは何かについて、かなり主観的な概念を突き止めていることになります。(私は、同じ作業をより速く実行する短いプログラムの方がより明確であると信じる傾向がありますが、多くの反例があります。)

したがって、被験者を使ってユーザビリティ研究を行うことができる定義済みのターゲットオーディエンスがなければ、言語について一般化するためのこれらの種類の指標よりもはるかにうまくいくとは言えません.

(注: 私はRebolが好きで、信じられないほど明確で表現力豊かな力を持っていると思います...ただし、DSL の方言を開発しながら特定の方法で使用する場合に限ります。これは、多くの人が考える方法ではありません)彼らがプログラミングするとき. まだ!)

于 2010-09-25T03:28:22.520 に答える
2

ないと思います。明確さは主観的なものであり、デザイン パターンは言語の明確さの良い尺度ではありません (実際、デザイン パターンは通常、言語の制限を回避するために生まれます)。

リッチで簡潔なセマンティックを備えた言語 (perl など) を好み、記号の使用をあまり気にしない人もいれば、自然言語に似た構文を好む人もいます。冗長性やあいまいさはあまり気にしません。

于 2010-09-25T03:15:14.913 に答える
2

このような質問は、通常、衒学的な答えになります。

言語はツールのようなものです。

それらは、特定の目的に合わせて構築されています。ロジック プログラミング言語は、オブジェクト指向プログラムよりも洗練された方法で特定の問題を解決します。同様に、多くのメイン ストリーム ソリューションは、典型的なオブジェクト指向言語または手続き型言語で簡単に実行できます。

ツールのユーザーの気質やその他の要因、この場合はプログラマーも重要です。Perl で気の利いたソリューションを実現した人もいますが、私には常にブラック マジックのように見えました。私は Python の構造の単純さを好みます。一部の人にとっては、空白の使用は忌まわしいものでした.

言語の明瞭さと表現力の評価ができるとすれば、それはせいぜい非常に主観的な評価です。

ただし、明確な兆候は、その言語での豊富なコード生成です。Python や Ruby などが人気を博している一方で、brainfuck などの一部の言語は採用されていません。ただし、これらおよび多くの要因は指標にすぎません。一部の言語は、構成が優れているにもかかわらず、多くの利用者を見つけられない場合があります。

ネットワーク効果も言語の採用に影響を与えます。

于 2010-09-25T03:19:14.597 に答える
1

LOLCODE はそれらすべての中で最も理解しやすい言語だと思います。

HAI
CAN HAS STDIO?
I HAS A VAR
IM IN YR LOOP
    UP VAR!!1
    VISIBLE VAR
    IZ VAR BIGGER THAN 10? KTHXBYE
IM OUTTA YR LOOP
KTHXBYE
于 2010-09-25T03:27:55.727 に答える
0

言語の理解度を測定することは、プログラマーの理解度を測定するほど重要ではありません。

于 2010-09-25T05:06:39.343 に答える
0

最新版、BY RW Sebesta の本「Concepts of Programming Languages」も参照できます。この本には、プログラミング言語を評価するための基準について議論する章があります (第 1 章または第 2 章は正確には覚えていません)。

于 2010-09-25T05:33:21.910 に答える