人間が読めるプログラミング言語はありますか? [閉まっている]

StackOverflow https://stackoverflow.com/questions/202750

  •  03-07-2019
  •  | 
  •  

質問

つまり、ヒューマンスタイルコーディングのコーディング言語はありますか? 例:

Create an object called MyVar and initialize it to 10;
Take MyVar and call MyMethod() with parameters. . .

それほど有用ではないことはわかっていますが、そのような文法を作成することは興味深い場合があります。

役に立ちましたか?

解決

COBOL はそのようなものです。

SET MYVAR TO 10.
EXECUTE MYMETHOD with 10, MYVAR.

ウィキペディアの別のサンプル:

ADD YEARS TO AGE.
MULTIPLY PRICE BY QUANTITY GIVING COST.
SUBTRACT DISCOUNT FROM COST GIVING FINAL-COST.

しかし奇妙なことに、英語のように読めるように設計されているにもかかわらず、ほとんどのプログラマーは奇妙な命名規則でこれを完全に弱めました:

SET VAR_00_MYVAR_PIC99 TO 10.
EXECUTE PROC_10_MYMETHOD with 10, VAR_00_MYVAR_PIC99.

他のヒント

LOLCODE はどうですか?

HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE

シンプルさそのもの!

Inform 7

Inform 7は、おそらく人間の言語のやり方で最も適切に設計されていると思う言語です。アドベンチャーゲームを書くための非常に特定のアプリケーションです。

これはルールベースのセマンティクスに基づいており、オブジェクトとその場所の関係を記述するルールを多数記述します。たとえば、以下のセクションはInform 7プログラムです:

"Hello Deductible" by "I.F. Author"

The story headline is "An Interactive Example".

The Living Room is a room. "A comfortably furnished living room."
The Kitchen is north of the Living Room.
The Front Door is south of the Living Room.
The Front Door is a door. The Front Door is closed and locked.

The insurance salesman is a man in the Living Room. The description is "An insurance salesman in a tacky polyester suit. He seems eager to speak to you." Understand "man" as the insurance salesman.

A briefcase is carried by the insurance salesman. The description is "A slightly worn, black briefcase."  Understand "case" as the briefcase.

The insurance paperwork is in the briefcase. The description is "Page after page of small legalese." Understand "papers" or "documents" or "forms" as the paperwork.

Instead of listening to the insurance salesman: 
    say "The salesman bores you with a discussion of life  insurance policies.  From his briefcase he pulls some paperwork which he hands to you.";
    move the insurance paperwork to the player.

ウィキペディアから引用された例

AppleScriptはプラットフォームにかなり依存していますが、それにほぼ近いです。

iTunesを開いてプレイリストを再生するためのスクリプト

tell application "iTunes"
    activate
    play playlist "Party Shuffle"
end tell

出典: AppleScriptの例

  

でプログラミングを促進するプロジェクト   「自然言語」本質的に   失敗する運命にあります。

-Edsger W.Dijkstra、どのように真実を伝えるか傷つく可能性がありますか?

これは「次の大きなもの」でした1980年代初頭頃、私は最初の2、3年のほとんどを「NATURAL」でコーダーとして過ごしました。これは、データアクセスを行うために設計された4GL(第4世代言語)この場合は、ADABASデータベース)人間が読める形式です。

もちろん、それはまったく何もしませんでした。最終的には、冗長で構造の悪いコードだけでした。これらの製品は両方ともまだ存在しますが、聞いたことがないので、それが行き止まりだったことを証明しています。

実際には、その期間には、「プログラミング」を超えて、ある種の2001年にインスパイアされたAIの天国に移行したいという一般的な要望があるように見えました。オラクルはコード生成に非常に熱心で、「最後の製品」と呼ばれる製品を興味を持って覚えています。これは、必要なプログラムを自動的に生成し、すべてのプログラミングスタッフを冗長にする製品としてマネージャーに販売されていました。期待通りではなかったようです;-)

SQLは、管理者がデータを直接クエリできるようにする方法として、元々いくつかの四半期に販売されていたことを覚えておく価値があります。基本的なクエリツールを手に入れる計画があったため、ジュニア管理タイプが含まれる基本的なSQL(鉄道で走る大規模な全国輸送機関-鉄鋼の種類)を学ぶためのコースに送られました。なんて惨事だった。

たぶん50年で異なるかもしれませんが、プレイコーディングの現在の段階では、特定の明確な思考と実装が要求されます。不明瞭であいまいです。最も近い近似は、対象の本質が使用される数学(物理学のプログラミング言語を考えてください)にある物理学であり、冗長な言葉遣いではありません。

追加

COBOLとは別にPL / 1もあり、NASAが人間を月に乗せることができると信じられていたことを忘れていました。それはCOBOLと同じくらい冗長で、「マネージャーが読める」ようにさらに努力しました。だから誰も今それを聞いたことがない人もいる:-)

シェフ!誰でもレシピを読むことができますか? hello world をご覧ください!

Ingredients.
72 g haricot beans
101 eggs
108 g lard
111 cups oil
32 zucchinis
119 ml water
114 g red salmon
100 g dijon mustard
33 potatoes

Method.
Put potatoes into the mixing bowl. Put dijon mustard into the mixing bowl. 
Put lard into the mixing bowl. Put red salmon into the mixing bowl. Put oil into the mixing bowl. 
Put water into the mixing bowl. Put zucchinis into the mixing bowl. Put oil into the mixing bowl. 
Put lard into the mixing bowl. Put lard into the mixing bowl. Put eggs into the mixing bowl. 
Put haricot beans into the mixing bowl. Liquefy contents of the mixing bowl. 
Pour contents of the mixing bowl into the baking dish.

それが深刻な答えではない場合は申し訳ありませんが、これはとても素晴らしい方法です。 :-)

すべての言語は「人間が読める」言語です。 :)他に誰かがそれを作成できるでしょうか?とはいえ、 Boo のように、DSLをサポートする言語は非常に直感的です。

プログラミング言語を(冗長な)通常の言語のように読むことは、人々が法律で常に会話することを要求するようなものです。余分な言葉遣いはすべて邪魔になります。

理想的なプログラミング言語は、可能な限り透過的な構文を持ち、プログラムの背後にある概念を際立たせる必要があります。明らかに、簡単な学習曲線を持つことと、最小限ではあるがあいまいな構文(Perl、またはKも考えてください)との間にはトレードオフがあります。

一連のルールを作成することで、プロローグでロジックプログラミングを行うことができます。この。特定のドメインの文法を作成(またはダウンロード)して、知識ベースを作成してからクエリを実行できます。文法を定義したら、次のようなことができます:

bob is a parent of tim.
mary is a parent of bob.

?- X is a grandparent of tim.
X = mary

?- jim is a parent of bob.
false

シェイクスピアプログラミング言語はまだ言及されていません。

これらのプログラムはシェイクスピア劇のようにコード化されており、劇中の個々のキャラクターは数字を保持できる変数であり、劇中のさまざまなフレーズはキャラクターと数字を操作します。たとえば、「心を話す」文字を注文して値を出力します。

Applescript

tell application "Finder"
 set the percent_free to ¬
 (((the free space of the startup disk) / (the capacity of the startup disk)) * 100) div 1
end tell
if the percent_free is less than 10 then
 tell application (path to frontmost application as text)
 display dialog "The startup disk has only " & the percent_free & ¬
 " percent of its capacity available." & return & return & ¬
 "Should this script continue?" with icon 1
 end tell
end if

Cを読むことができます。つまり、人間が読めるということです(私は人間だからです)。それは平均的な人にはあまりにも簡潔です。プログラミング言語の一般的な概念は、コンピューターが特定の行でどのように動作するかについての情報を最大化することです。

これが、Rubyがとても人気がある理由です。最小限のテキストで機能を最大化します。英語(または他の自然言語)は、かなり不正確で情報量の少ない文字言語です。

要約すると、それは:(i)前に行われ、(ii)既知のより弱いアイデアです。

これは実際にホットなトピックです。

初心者向け-人間が読めるものは何ですか?

中国語の読者はロシア語を読むことができず、その逆もできません。 たとえば、漢字を書いている中国の薬剤師にドメインを絞り込んで、その周辺の言語を設計できます。そして、それは人間が読めるでしょう。

言語がドメイン固有言語の傘下にある場合。

SQL

SELECT name, address FROM customers WHERE region = 'Europe'

はい。これは COBOL と呼ばれ、一般的に嫌われています。

Inform 7 は、私が見た中で最も成功したシステムです。ここの他の回答に記載されている粗野なシステムに比べて2つの利点があります:自然言語(インタラクティブフィクション)に特に適したドメイン用であり、従来の方法だけでなく、より多くの計算言語の知識に基づいて入力コードのより洗練された分析を行いますかっこなどの代わりに英語の単語を使用するプログラミング言語の文法

Perl、一部の人々は主張しています。

print "hello!" and open my $File, '<', $path or die "Couldn't open the file after saying hello!";

「自然言語プログラミング」のGoogle検索を行うたくさんの情報が見つかります(これが悪い考えである理由を含む)。

表現の明快さは重要です。

しかし、思考の明瞭さははるかに重要です。

HyperTalk およびその子孫 AppleScript は、英語に類似するように設計されています。

VBは、私が考えられる限り近いものです:

MyLife.Sucks Then MyLife.End Else MyLife.Continue

もちろん、アーラン。

-module(listsort).
-export([by_length/1]).

 by_length(Lists) ->
    F = fun(A,B) when is_list(A), is_list(B) ->
            length(A) < length(B)
        end,
    qsort(Lists, F).

 qsort([], _)-> [];
 qsort([Pivot|Rest], Smaller) ->
     qsort([ X || X <- Rest, Smaller(X,Pivot)], Smaller)
     ++ [Pivot] ++
     qsort([ Y ||Y <- Rest, not(Smaller(Y, Pivot))], Smaller).

私は人間であり、プログラミング言語であり、読むことができます。私はそれが何を意味するのか分かりませんが、そこにはたくさんの英語の単語があります。

(舌を頬にしっかりと固定します。)

DSLは非常に自然に見えることがあります。 この例を参照してください。 = "http://msdn.microsoft.com/en-us/library/dd129869.aspx" rel = "nofollow noreferrer"> MGrammar :

test "Searching google for watin"
    goto "http://www.google.se"
    type "watin" into "q"
    click "btnG"
    assert that text "WatiN Home" exists
    assert that element "res" exists
end

COBOL は管理者が読むことを目的としており、「ノイズワード」があります。読みやすくします。

おもしろいのは、それが冗長なDSLのように見えることです。

Adaの初期のセールスポイントの1つは、ほとんどのものよりも人間が読みやすいことでした。 任意の言語で十分に複雑なタスクを行うには、有能な実務家が理解する必要があるため、最近では馬鹿げた議論になっています。ただし、C構文の言語のうち、bejeezusに勝るものはありません。その主要なコーディングスタイルは、この効果も強化できます。たとえば、ifステートメントのループを比較する場合: エイダ:

if Time_To_Loop then
   for i in Some_Array loop
      Some_Array(i) := i;
   end loop;
end if;

C:

if (timeToLoop != 0) {
   for (int i=0;i<SOME_ARRAY_LENGTH;i++) {
      someArray[i] = i;
   }
}

Microsoftのようなハンガリー語の表記を使用すると、Cコードはさらに悪くなりますが、私はうまくやろうとしています。 :-)

興味深い質問。あなたの質問は、「人間が簡単に読めるプログラミング言語はありますか」、または「プログラミングに使用できる人間の言語はありますか?&quot;。ここでのすべての答えは前者に焦点を合わせているので、後者に答えてみましょう。

サンスクリット語を聞いたことがありますか?これは、ヒンディー語などの現代インド語の基礎となっている古代インド語です。

wiki / Sanskrit

何年もの間、コンピューターの高水準言語としてそのまま使用できるほど正確で完全であると聞いてきました。もちろん、サンスクリット語の命令を機械語に変換するコンパイラーが必要です。スクリプト&amp;を知っていますはい、それは正確です(完全に音声なので、「どうやってそれをつづりますか」と尋ねる必要はありません)。

これは完全な逸話であるため、この正確性を保証しません。これに関して私が知っていることを共有したかっただけです。 :-)

ここでの一般的なコンセンサスに同意します。 「人間が読める」 汎用プログラミング言語はほとんど悪い考えですが、人間が読めるドメイン固有言語は非常に価値があります。

REBOLには、DSLを作成するための優れたシステムがあります。

GradStudent

ステートメントは1つだけです:&quot;あなた-xを実行するプログラムを書いてください&quot;
Xのすべての値に有効であり、xを定義する必要がなく、プログラムの作成後に変更できるという利点があります。

インターンと呼ばれる商用の方言が利用可能です。開発コストは低くなりますが、動作が保証されるわけではありません

Cobol はそのようなものでした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top