| パラダイム | マルチパラダイム:命令型、手続き型、構造化、オブジェクト指向 |
|---|---|
| デザイン: | (ジャック)ジェイコブ・T・シュワルツ |
| 開発者 | クーラント数学研究所 |
| 初登場 | 1969年 |
| 安定リリース | 1.1 / 2005年1月7日 |
| タイピングの規律 | 動的 |
| Webサイト | org/ja/setl.org 日本語 |
| 影響を受けた | |
| アルゴル60 | |
| 影響を受けた | |
| SETL2、ISETL、SETLX、スターセット、ABC | |
SETL(SET言語)は、数学的な集合論に基づいた非常に高水準なプログラミング言語です。 [ 1] [2] [3]もともとは1960年代後半にニューヨーク大学(NYU)のクーラント数学研究所で、(ジャック)ジェイコブ・T・シュワルツ、[1] [3] RBK・デュワー、E・ショーンベルクを含むグループによって開発されました。[1]シュワルツがこの言語を設計したとされています。[4]
デザイン
SETL は、2 つの基本的な集約データ型を提供します: (順序なし)セットとタプル。[1] [2] [5]セットとタプルの要素は、未定義の値om [1] (大文字で表記されることもある: OM ) を除き、セットとタプル自体を含む任意の型にすることができます。[6] マップはペアのセット (つまり、長さ 2 のタプル) として提供され、任意のドメイン型と範囲型を持つことができます。[1] [5] SETL の基本的な操作には、セットのメンバーシップ、和集合、積集合、およびべき乗集合の構築などがあります。[1] [7]
SETLは、一階述語論理の普遍量指定子と存在量指定子を使用して構築された量化ブール式を提供します。[1] [7]
SETLは、集約データ構造に対してさまざまなループを生成するためのいくつかの反復子を提供します。 [1] [8]
例
2 からNまでのすべての素数を出力します。
print([n in [2..N] | forall m in {2..n - 1} | n mod m > 0]);
表記法はリスト内包表記に似ています。
階乗手順の定義:
手順 factorial(n); -- 階乗 n を計算します。 n = 1 の場合は 1 を返し、そうでない場合は n * factorial(n - 1) を返します。 階乗を終了します。
階乗 (n > 0) のより一般的な SETL 式:
*/[1..n]
用途
SETLの実装はDEC VAX、IBM/370、SUNワークステーション、APOLLOで利用可能でした。[9] 1970年代には、SETLはBESM-6、ES EVM、その他のロシアのコンピュータシステムに移植されました。[10]
SETLはプログラミング言語Adaの初期の実装に使用され、NYU Ada/EDトランスレータと呼ばれました。[11]これは後に最初の検証済みAda実装となり、1983年4月11日に認定されました。[12]
グイド・ヴァン・ロッサムによれば、「Pythonの前身であるABCはSETLに触発された。ランバート・ミーテンスは最終的なABCの設計を思いつく前にニューヨーク大学のSETLグループで1年間過ごしたのだ!」[13]
言語のバリエーション
SET言語2(SETL2)は、SETLの下位互換性のない後継言語であり、1980年代後半にニューヨーク大学クーラント数学研究所のカーク・スナイダーによって作成されました。 [14]前身と同様に、有限集合の理論と表記法に基づいていますが、構文とスタイルはAda言語の影響も受けています。[14]
対話型SET言語(ISETL)は離散数学で使用されるSETLの変種である。[15]
GNU SETLはSETLを拡張し実装するコマンドラインユーティリティです。[16]
参考文献
- ^ abcdefghi Schwartz, JT; Dewar, RBK; Schonberg, E.; Dubinsky, E. (1986). 「セットを使ったプログラミング」SpringerLink : v–vii, 2, 48, 53, 57–58, 63, 113ff. doi :10.1007/978-1-4613-9575-1.
- ^ ab "GNU SETL Om". setl.org . 2024年4月24日閲覧。
- ^ ab Markoff, John (2009-03-04). 「落ち着きのない科学者ジェイコブ・T・シュワルツ、79歳が死去」。ニューヨーク・タイムズ。ISSN 0362-4331 。 2024年4月24日閲覧。
- ^ 計算論理と集合論。pp. vii. doi :10.1007/978-0-85729-808-9。
- ^ ab "CHAPTER 2". www.settheory.com . 2024年4月24日閲覧。
- ^ 「第3章」www.settheory.com . 2024年4月24日閲覧。
- ^ ab "CHAPTER 3". www.settheory.com . 2024年4月24日閲覧。
- ^ 「第4章」www.settheory.com . 2024年4月24日閲覧。
- ^ JTシュワルツ; RBKデュワー; E. ダビンスキー; E. シェーンバーグ (1986)。セットを使ったプログラミング。 SETL の概要。 Springer-Verlag New York Inc. ISBN 978-1-4613-9577-5。
- ^ И.В. Поттосин、編。 (2001年)。 Становление новосибирской зколы программирования (мозаика воспоминаний) [ノボシビルスクプログラミング学校の形成 (思い出のモザイク) ] (PDF) (ロシア語)。 Новосибирск: Институт систем информатики им。 А. П. Ерсова СО РАН。 106–113ページ。
- ^ Dewar, Robert BK; Fisher Jr., Gerald A.; Schonberg, Edmond; Froelich, Robert; Bryant, Stephen; Goss, Clinton F.; Burke, Michael (1980 年 11 月)。「NYU Ada トランスレータおよびインタープリタ」。Adaプログラミング言語に関する ACM-SIGPLAN シンポジウムの議事録 - SIGPLAN '80。第 15 巻。pp. 194–201。doi : 10.1145 /948632.948659。ISBN 0-89791-030-3. S2CID 10586359。
- ^ SofTech Inc.、マサチューセッツ州ウォルサム (1983-04-11)。「Ada コンパイラ検証概要レポート: NYU Ada/ED、バージョン 19.7 V-001」。2017 年 6 月 7 日時点のオリジナルよりアーカイブ。2010 年 12 月 16 日閲覧。
{{cite web}}: CS1 maint: 複数の名前: 著者リスト (リンク) - ^ Python-Dev: SETL (以前は範囲リテラルについてあまり関心がなかった)
- ^ ab "SETL2 - EDM2". www.edm2.com . 2024年4月24日閲覧。
- ^ Baxter Hastings, Nancy; Dubinsky, Ed; Levin, Gary (1989). ISETL による離散数学の学習。ニューヨーク: Springer-Verlag. ISBN 978-0-387-96898-8。
- ^ 「GNU SETL」. setl.org . 2024年4月24日閲覧。
さらに読む
- Schwartz, Jacob T.、「プログラム仕様とプログラミングのための言語としての集合論」。ニューヨーク大学クーラント数学研究所、1970 年。
- Schwartz, Jacob T.、「プログラミングについて、SETL プロジェクトの中間報告」、コンピュータ サイエンス部門、Courant Institute of Mathematical Sciences、ニューヨーク大学 (1973)。
- Schwartz, Jacob T.、Dewar, RBK、Dubinsky, E.、およびSchonberg, E.、「Programming With Sets: An Introduction to SETL」、1986年。ISBN 0-387-96399-5。
外部リンク
- 公式サイト
- SETLでのプログラミングなど
- SETL 歴史資料アーカイブ
