1

意図的または「言語指向」プログラミングから何か役に立つものはありますか?

これは修辞的な質問ではありません。これらのツールを試して (つまり、プログラムを単なるテキストよりも「高レベル」な形式で表現し、さまざまなドメイン固有のサブセットにさまざまなエディターを使用して)、それがどのようだったかについてコメントを持っている人を探しています。ツール。

( http://www.onboard.jetbrains.com/is1/articles/04/10/lop/意図的なプログラミングとは正確には何ですか)

4

4 に答える 4

4

「単なるテキスト」という用語は、ここで突っ込みたくなる。

言語は、構文、セマンティクス、および意味を持つシンボルのシステムです。キーボードのクリック、マウスのクリック、聴覚信号、または情報を伝達できるあらゆるモダリティの形を取ることができます。

その適合性は、その送信モードの関数ではなく、表現するために使用されている精神的概念へのマッピングの直接性の関数です。

その率直さの簡単な尺度は、気が変わったときに発見されます。「バグ」を導入せずに「コード」を変更するのはどれほど難しいでしょうか。

これを見てください。

追加: Simonyi の内容を見てきたので、それについて何が役立つかについて意見を述べることができるかもしれません。

マイナス面としては、WYSIWYG と非コーダーがアプリを構築できることに重点が置かれていることに感銘を受けません。特にカリフォルニアにいる場合、人々はピクセル、特に色付きの動くピクセルが大好きです。確かに、おもちゃの領域で何かを行うことはできますが、問題を解決したいと思うとすぐにがっかりするでしょう。これは AI の問題であり、取り組む価値があります。達成に近づいていると主張するのは不誠実です。

良い面としては、言語指向プログラミングによく似た言語メソッドについて語った本を書きました。私は理論に基づいて物事を進めるのが好きなので、大まかにアルゴリズム情報理論に基づいてアプローチしました。恐ろしく聞こえるかもしれませんが、基本的には、プログラムを含む情報の単位の最もコンパクトな (それでも意味のある) 表現にアプローチする方法についてです。

私はそこから接線を取りました。コンパクトなプログラム (これは優れています) を探すのではなく、人間の脳から指/目を通ってコンピューターに至る最もコンパクトな編集の流れを探しました。これには、プログラムの作成だけでなく、要件の変更が発生するまでのメンテナンスも含まれます。

基本的にメンテナンス編集ストリームを最小限に抑えようとする場合、言語をドメイン固有と呼べるレベルまで改善する必要があるという考えに至りました。これは積極的に行う価値があり、人気のあるものに逆らって泳ぐことを厭わないのです。

私は多くの例を挙げましたし、これからも挙げ続けますが、それらはすべて実用的なものであり、次にかなりのものです。それらは特定の仕事を成し遂げる方法ですが、プログラマーが切望しているように見える派手な時流の1つを開始するのは得意ではありません.

ですから、それは時間の無駄だからです。しかし、言語指向プログラミングが有用であると考える理由については、少し説明できたかもしれません。

于 2009-03-03T18:54:40.533 に答える
3

ビジネスアナリストだけでなく、あなた自身/あなたのチームのために、テストケースをより明確にするための非常に便利な使用法.

時間が経ち、正確なテスト ケースが何であるかを忘れてしまった場合、LOP があると非常に役立ちます。仕様を手元に置いて、ソース コードのコメントにルールを文書化することもできますが、それらのアーティファクトは実行されません。コードは!

プログラムを非常に明確にすることもできますが、「言語指向」の記述よりも明確にすることはほとんど不可能です。

この架空の断片について考えてみましょう。

Java が LOP であるということではありませんが、次のようなことを意図しているフレームワークがいくつかあります。つまり、テスト ケースを理解しやすくすることです。

package a;
import static a.Help.*;

public class Test { 

    public void test(){
        Object value = "";
        Object obtained = "";
        assert that( expected( value , isEqualTo( obtained ) ) );
    }
}

これは非常に簡単な例です。このコードの値は、実行される行であり、テストの内容を示しています。

            assert that( expected( value , isEqualTo( obtained ) ) );

それは非常に明確で、次のように書かれています。

期待値が取得済みと等しいことをアサートする

これは非常に簡単です。しかし、文字通り読むだけで、どんな種類のビジネスルールでも持つことができます。

クライアントの住宅ローンが処理されたときにアサートする...などなど

Martin Fowler はこれについて説明し、Hamcrestがこれを行うためのフレームワークであることに言及しています。

ここにリンク があります(これが彼がハムクレストについて話している場所なのか、それとも別の場所なのかは完全にはわかりません:P申し訳ありません)

于 2009-01-03T00:13:09.870 に答える
0

これがあなたの質問の内容かどうかはわかりませんが、AppleScript を数回試してみて、本当にイライラしました。英語では、何かを表現する方法が非常に多く、基本的な構成要素の構文を覚えるのが本当に難しいと感じました。

優れたプログラミング言語は自然に感じられると思いますが、それでも構造に制約されているようです。

于 2009-01-03T00:16:35.150 に答える