タグ付けされた質問 「pl.programming-languages」

特にプログラミング言語は、そのセマンティクスに焦点を当てています。

1
プログラミング言語理論が答えようとしている「質問」とは何ですか?
私はしばらくの間、結合論理、ラムダ計算、関数型プログラミングなどのさまざまなトピックに興味があり、それらを研究してきました。ただし、「計算能力」の質問、つまりさまざまな制約で計算できる/できないものに答えようとする「計算理論」とは異なり、「プログラミング理論」の類似物を見つけるのに苦労しています。 ウィキペディアはそれを次のように説明しています: プログラミング言語理論(PLT)は、プログラミング言語とその個々の機能の設計、実装、分析、特性評価、および分類を扱うコンピュータサイエンスの一分野です。 これは、実際には特定されていない「すべて」を言うようなものです。 トピックの一般的な進行は通常、次のようになります。 組み合わせ論理>ラムダ計算>マーティンロフ型理論>型付きラムダ計算>(ここで何かが起こる)>開発されたプログラミング言語-CL / λとの接続がほとんどないλλ\lambda 私は、CL / λλ\lambda関連する根本的な「数学」と、チャーチ・ロッサーの定理を含む結果として出てくる興味深い証明を見ることができます。しかし、私はこのすべての事業の「最終目標」を理解するのに苦労していますか?あなたがそうするなら、PLT の聖杯は何ですか?今のところ、それは知的なかゆみを掻くだけのようですが、私は実際に研究/理論から実用的なものへの橋を渡ることはできません。 λλ\lambda

2
削減戦略と評価戦略の違いは何ですか?
ウィキペディアの評価戦略の記事から: ラムダ計算における還元戦略の概念は似ていますが、異なります。 ウィキペディアの削減戦略の記事から: これは、コンピューターサイエンスの評価戦略の概念と似ていますが、微妙に異なります。 これら2つの記事が示唆する評価戦略と削減戦略の微妙な違いは何ですか?それらは、異なるドメインからの2つの類似した概念にすぎませんか?


2
型理論/プログラミング言語理論における代数幾何学の応用
最近、代数幾何学に興味を持ち、読み始めました。私はまだこの分野についてほとんど知りませんが、それが私の主な分野、型理論、プログラミング言語と何らかの関係があるかどうか知りたいです。 代数トポロジーは型理論(ホモトピー型理論など)で多くの用途があることを知っていますが、型理論/ PL理論とAGの両方がカテゴリー理論の良い動機であることに加えて、代数幾何学についてはどうですか?


2
プログラミング言語の抽象解釈の背後にある目標は何ですか?
私は現在、プログラミング言語の「抽象解釈」が何であるかをよりよく理解しようとしています。最小の固定要素でドメインを拡張するアイデア、連続関数の固定小数点を生成する4つの公理などを説明する良い本の章を見つけました。私はこれらの技術的な詳細を理解しています(この全体のスキームで「抽象的な解釈」が正確に何を指しているのかはよくわかりません)。 抽象解釈を使用する動機は何ですか?計算可能な関数の固定点を特定しているだけですか?主な動機は、ほとんどのプログラミング言語で再帰を使用することに由来していますか? また、コンピュータサイエンスの学位を持っている人にとっては技術的に十分に理解できる高レベルの概要が得られれば嬉しいでしょう。私はウィキペディアのページをかなり不安に思っています。

2
抽象化階層の正式な表現
前書き 私は、(「ソフトウェア製品」のように)製品に作用することができる変更(デルタと呼ばれる)の抽象的な代数的記述である抽象デルタモデリング(ADM)に関する博士論文を書いています。これは、一連の関連製品(「製品ライン」)を単純なコア製品および条件付きで適用されるデルタのセットとして編成するために使用できるため、基礎となるアーティファクトをさらに再利用できます。 デルタモデリングの詳細は私の質問にはそれほど重要ではありませんが、ADMは問題を説明する良い例として役立つので、最も重要な概念を紹介します。 バックグラウンド 関心の主な構造は、三角筋 (P,D,⋅,ϵ,[[−]])(P,D,⋅,ϵ,[[−]])(\mathcal P, \mathcal D, \cdot, \epsilon, \mathbf{[\kern-1pt[-]\kern-1pt]})。製品はユニバーサルセットから来ていPP\mathcal Pます。デルタはモノイドから来る(D,⋅,ϵ)(D,⋅,ϵ)(\mathcal D, \cdot, \epsilon)合成作用素と⋅:D×D→D⋅:D×D→D\cdot : \mathcal D \times \mathcal D \to \mathcal Dと中性元素ϵ∈Dϵ∈D\epsilon \in \mathcal D。意味評価演算子[[−]]:D→2P×P[[−]]:D→2P×P\mathbf{[\kern-1pt[-]\kern-1pt]} : \mathcal D \to 2^{\mathcal P \times \mathcal P} '構文'デルタ変換するd∈Dd∈Dd \in \mathcal D関係にどのように決定した dは、製品を変更することができます。[[d]]⊆P×P[[d]]⊆P×P\mathbf{[\kern-1pt[}\,d\,\mathbf{]\kern-1.5pt]} \subseteq \mathcal P \times \mathcal Pddd 質問 ADMは抽象的な代数であるため、私の仕事のほとんどは製品やデルタの具体的な性質から抽象化されており、多くの結果がより具体的なレベルに下ることなく証明されています。これらの結果は、より具体的な領域に引き継がれると予想されますが、これはまだ正式に確定していません。 …

2
Coq / Agdaの認定コンパイラーと最適化
Martin-Löf型理論で公式化された検証済みコンパイラー、つまりCoq / Agdaに興味があります。現在、小さなおもちゃの例を書いています。これにより、私の最適化が正しいことを証明できます。たとえば、ゼロの加算、つまり "x + 0"のような式は削除できます。 通常のコンパイラで実行するのが難しい最適化はありますか?通常のコンパイラでは実行できない最適化を可能にするプログラムの特定のプロパティを証明することは可能ですか?(すなわち、定理証明で可能である推論なしで) 私はアイデアや例に興味があり、またトピックに関する参考文献にも興味があります。 関連する質問: コンパイラの正当性の証明 編集:剛がコメントにうまく書いているように:コンパイラが(たとえば)Cで書かれている場合は実装が困難で、コンパイラが(たとえば)Coqで書かれている場合は実装が容易な最適化手法を探しています。Agdaが(haskellを介して)Cにコンパイルされると、CでもAgdaで可能なすべてのことを実行できます。おそらくCoq / Agdaのような定理証明者の唯一の利点は、コンパイラーと最適化を検証できることです。 edit2:Vijay DIの提案に従って、これまで読んだことを書いてください。私は主にINRIAのXavier LeroyとCompCertプロジェクトに焦点を当てました(80ページの論文があり、読みやすいと思います)。2番目の関心は、インタラクティブプログラムに関するAnton Setzerの作業にありました。私はおそらく、彼の研究はIOプログラムとIOプログラムのバイシミュレーションに関する特性を証明するために使用できると思います。Sewellについて言及していただきありがとうございます。ICFPで彼の "ジャングルからの物語"の話を聞いて、おそらく彼の論文の2〜3冊を読んだ。しかし、私は彼の作品と彼の共著者の作品を具体的には見ていません。 コンパイラーの最適化に関する論文をどこから始めて探すかはまだわかりませんでした。たとえば、検証されたコンパイラの設定でどの最適化を見ると興味深いでしょうか。

1
Martin-LöfType Theoryは、証明可能な正しいコードを作成するためのより大きな能力につながりますか?
この投稿は、カリーハワード同型写像とマーティン・ロフ型理論に言及しています。 ポストは、数学の記述言語とコンピュータプログラミングの操作ベースの言語との間の将来の「統一」の主張をします。 私の質問は: これらのアイデアは、(言語を通じて)証明可能な正しいコードを書くためのより良い能力につながりますか? MLTTの完全な影響が理論的なレベルで発見されましたか? この投稿では、COQやAgdaですでに実行できなかったことが説明されていますか?

3
2つの関数が拡張的に等しいかどうかを計算することは可能ですか?
異なる並べ替えアルゴリズムを実装する2つの関数がある場合、両方が同じ外部プロパティを持っていることをソースコードで推測できますか?それらの両方が入力として可能な未ソートのシーケンスを持ち、出力としてソートされたシーケンスを持つことを意味しますか?これらの外部プロパティは、どのようにしてソースコードによって決定されますか?そして、これらの外部プロパティをどのように説明しますか?どんな表記が使用されますか? 外部プロパティは、たとえば型システム内などで明示的に定義することによって知ることができますが、これを暗黙的に実行できるかどうか疑問に思っています。それとも、この種のセマンティクスを推測することは、どういうわけか理論的に不可能ですか?関数のようなものが常に停止して副作用がないと仮定して、これがソートアルゴリズムだけでなく任意の関数でも可能かどうかに興味があります。 意味論的意味論を見るべきですか、それとも無関係ですか? この分野での研究へのポインタ、および私の文献検索に役立つ可能性がある主題を説明するために使用されるさまざまな用語へのポインタに興味があります。

1
Haskellの型クラスの可能な実装とは何ですか?それらの(欠点)は何ですか?
私の知る限り、型クラスの制約を持つHas​​kell関数は、特定の各型クラスの必要な実装を持つ辞書を受け取る追加の引数を持つ関数に内部的にコンパイルされます。 型クラスをコンパイルする方法は他にありますか? もしそうなら、彼らの(不)利点は何ですか? そして、どのコンパイラがそれらを使用しますか?

2
オブジェクト指向モデルの「オブジェクト」の数学における正式な定義/対応部分
これは数学SEフォーラムで私が尋ねた質問であり、ここで紹介されました。だからここに質問があります 私は正式な数学と理論的なコンピュータサイエンスの両方の初心者です。質問が適切に構成されていない場合は、ご容赦ください。オブジェクト指向モデリングは、現実の世界をシミュレーションするときに複雑な相互作用を定義するのに非常に役立ちます。しかし、それは主にプログラミングで使用されます。数学にも同じような考え方があるのか​​と思っていました。プログラミングをしているとき、「オブジェクト」と「オブジェクト指向プログラミング」の概念を理解し、それを実装するだけです。しかし、集合論の観点から「オブジェクト」の正式な定義はありますか?それとも、他の正式な数学理論はありますか? 3つの主要なオブジェクト指向モデリングの概念を実装/正式に定義できますか?1.カプセル化2.継承3.多態性 質問が広すぎることは承知していますが、これらの概念をよりよく理解できるように、いくつかの指針も提供していただければ幸いです。

2
呼び出しサイトに基づく型推論に関する研究?
(関数本体を使用する標準的なアプローチに加えて)関数呼び出しサイトからの情報を使用して型情報を計算する、プログラム全体の型チェックと型推論システムについて詳しく学びたいと思っています。たとえば、このようなアルゴリズムでは、関数の呼び出しを使用しfoo(1)て、関数in fooが整数の引数をとることを推測する場合があります。明らかにこれは推論を非常に複雑にし、チェックを非モジュラーにします。 とにかく、私がこのアプローチに関する研究を見つけることができなかったのは、おそらく私が話していることを説明する正しい用語がわからないためです。ポインタはありますか?

1
効率的なクエリのためのデータベースクエリ言語
リレーショナルデータベースの一般的なクエリ言語では、回答に多くのリソースを必要とするクエリを作成できるようです。実際には、データベース管理者は、クエリごとのメモリの量を制限し、データベースに速度低下がある場合は長時間実行されているクエリをチェックすることでこれを管理します。これはその場限りのようですが、これに対するTCSソリューションはありますか? 効率的なクエリのみを実装できるクエリ言語はありますか? そのような言語がない場合、これには理論的な理由がありますか? このようなことが存在するか、少なくとも理にかなっていると私が予想するいくつかの理由: 効率的な計算のみを実装するように特別に設計されたプログラミング言語があります(通常、型システムに制限的なロジックがあることにより) 一般的なクエリ言語(SQLなど)は既にロジックに触発されているため、データベースユーザーがより制限的なロジックを検討することは一見のようではありません。 悪意のないデータベースユーザーは、迅速に実行されるクエリの準備を既に試みているため、これらのより制限的なクエリ言語は悪意のあるユーザーのみを妨害すると期待する必要があります。 この質問は、前の2つの質問の交差点に触発されています。 効率的な計算のためのプログラミング言語 答えの発見の理論的な指数関数的複雑さ(クエリのサイズ)を考えると、なぜリレーショナルデータベースがまったく機能しないのですか?

5
ユニバーサル再帰関数の作成[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 理論上のコンピューターサイエンススタック交換のトピックになるように質問を更新します。 3年前休業。 普遍的な再帰関数の短い明示的な構成はありますか?私が見たすべての定義は、何らかの方法でチューリングマシンの番号付けを含んでいます。これは可能ですが、より高いレベルのプログラミング言語(Python、Haskellなど)で書くことは困難で管理しにくいようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.