フェルナンドJ.コルバトーの「制約言語」


13

彼のために1990年チューリング賞を受賞スピーチ、フェルナンド・J・コルバトは、複雑なシステムは、必然的に失敗する理由を記載されています。彼の結論で、彼は失敗の確率を減らすためのいくつかの提案をします。彼は1つのアイデアを次のようにリストしています。

設計または合成のための制約された言語の[U]は強力な方法論です。プログラマーやデザイナーが無関係なアイデアを表現できないようにすることで、起こりうるエラーの領域ははるかに限定されます。

「制約言語」とはどういう意味ですか?

しばらくの間、制約プログラミングを検討しました。ただし、制約プログラミングとは、プログラムのソリューション空間を制限することです。これは、プログラマを支援するツールです。Corbatóが言及している機能は、実際にプログラマを制限するものであるか、または少なくとも彼女がより簡潔なコードを書く傾向があるように思われます。

私の第二の考えは、彼が保守的なプログラミング言語に言及しているということです。コルバトーは、1960年代と1970年代に行われた仕事に対してチューリング賞を受賞しました。彼が多くのパンチカードを扱ったことは私の理解です。私はパンチカードを見たことがないので、どのようにプログラムするかわかりませんが、パンチカードのプログラミングは非常にリベラルだと思うかもしれません。型チェック、静的分析などの概念は単に存在しなかったと思います。だから、Corbatóはおそらく開発者が愚かな間違いをするのを制限する言語のアイデアに言及していますか?これも事実ではないようです。安全性チェックとデータモデリングは簡潔さとは関係がありません。それは、彼が「許可しない...関連性のないアイデア」に言及したときに話しているようです。


@jweyrich Programmers.SEに私を転送してくれてありがとう。ただし、StackOverflowのプログラミング言語タグにアクセスすると、「静的に弱い型付き言語はありますか?」など、私と同じくらい一般的な質問がたくさん見つかります。どこ著者はまた、一般的な読み物を参照する
ザンダー・ダン

5
@thoughtadvancesあなたが言及した質問の日付を確認してください。私はそれらのほとんどがかなり古いものであると確信しています。SOは4歳であり、状況は変化します。一般に、時間の経過とともに厳しくなります。あなたの質問はプログラマー(私はそこにいるMOD)には問題ありませんが、モデレーションの注意を引くためにこれにフラグを立てて、再投稿する代わりに移行するように依頼した方が簡単だったでしょう。移行はあなたに再投稿の手間を保存しているだろうし、それが問題と一緒にプログラマへの答えを持っているだろう。心配しないでください、私はそれを大事にします。
ヤニス

3
例として、(注:if)何らかの理由で特定のアプリケーションに対してmallocのアイデアが「無関係」である場合、C(mallocが存在する)よりもJava(「mallocを持たないことにより制約」)を選択すると「起こりうるエラーのドメイン」が制限されます"mallocに関連付けられる可能性があります
-gnat

@YannisRizos移行していただきありがとうございます。この機能が存在することは知りませんでした。StackOverflowの経験豊富なユーザーは、単にこのパスを閉じるのではなく、このパスを提案した可能性があります。
ザンダーダン

3
パンチされたカードのコーディング」は、プログラムを入力するもう1つの方法です。1960年代後半から1970年代初頭には、現在の言語と同じくらい洗練された言語がありました。プログラミング言語の中核となる概念の多くは、すでに十分に確立された、とALGOL 60は、既に1963年でツールをプログラミングするための標準を設定していた
ロス・パターソン

回答:


8

「制約付きプログラミング言語」とは、言語の目的に関係のないことを行う(簡単な)方法を提供しないものです。

「ダム」、「バカ」、「不正」ではなく、「無関係」であることに注意してください。

これの公正な例はISO / ANSI SQL(SQL-92より前)であるかもしれません。これはクエリ言語で再帰やループなどの多くの手続き型プログラミングアーティファクトを表現する方法がありませんでした。(ただし、現在はそれらを備えており、ベンダーは以前とにかく以前にそれらのカスタム拡張機能を追加しました)。


6
これはまさにCorbatóのポイントです。彼は、システムプログラミングのツールとしてのPL / Iと呼ばれる1969年のDatamationの記事(「5年間の一時的なコンパイラー」)で詳細に説明しました。
ロスパターソン

ありがとう、この答えはとても役に立ちます。このアイデアには興味深い意味があります。これは、プログラマーが1つの言語ですべてを支配するのではなく、さまざまな能力を持つ多種多様な言語へのアクセスを望んでいることを示しているように思われます。
ザンダーダン

@RossPattersonすばらしい!ありがとうございました!Corbatóからこのトピックに関する詳細を探していましたが、あまり見つかりませんでした。
ザンダーダン

1
そのDatamationの記事からの素晴らしい要約引用:「システムを実行する際の私たちの目的は、フロンティアを探求し、設定された目標に到達し、それを満たすシステムを効果的にまとめる方法を見ることにありました。キーデザインのアイデア出しとにかかわらず、彼らは精通しているどのようなシステムの、他の人にこれらを伝える。そのため、ハードウェアの具体的な詳細の上に取得する言語は確かに望ましい、... つまり、それは、デザインに1を強制的にコードをいじるのはやめましょう。そして、これがその強みの1つであることが判明しました
ロスパターソン

2
@thoughtadvances「これは、プログラマーが、すべてを支配する1つの言語ではなく、さまざまな能力を持つ多種多様な言語にアクセスしたいことを示しているように思われます」-これは、ジュニアとシニアプログラマーの違いの1つです 大工にはハンマーが1つしかありません:-)
ロスパターソン


0

まず、スピーチが行われたときのコンピューティングの時代を理解する必要があります(1990)。また、彼が学術的な聴衆と話していること、そしてMITが彼のホームベースであることを理解してください。

その時代、言語を書くための言語(メタ言語)が話題になりました。Art of the Meta-Objectプロトコルは公開されたばかりで、新しい言語の設計を刺激しています。ただし、このすべての豪華さには代償が伴います。複雑さです。

システムの複雑さを軽減し、これらのシステムをチェックできるようにするために、Zなどのメタ言語がテスト可能な仕様を作成するために登場しました。彼はこれらの種類の言語に言及していると思います。


2
Corbatóは、20代後半のMITアカデミックだけではありません。彼は私たちの分野の先駆者の一人です。CTSSに関する彼の研究は独創的で、Multics、Unix、CP / 67、および今日のLinuxおよびz / VMシステムに直接つながりました。そして、問題の声明は、メタオブジェクトプロトコルの芸術と彼のチューリング講義の20年前に彼が公然と説明した原則に関連しています。
ロスパターソン

0

おそらく彼は、把握する概念の数がかなり少ない言語を意味します。図チェックここで Coffescript、RubyとC ++における概念のグラフィック表現を示します。May be Tunerは、言語の概念が少ないほど、無関係なアイデアを表現する可能性が低くなることを意味します。


「...または言語」-これは何かに対するコメントですか?
gnat

コメントのように見えないように、投稿を編集しました。
マノジR
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.