(Translated by https://www.hiragana.jp/)
Racket - Wikipedia コンテンツにスキップ

Racket

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
Racket
Racketのロゴ
パラダイム マルチパラダイム: 関数かんすうがた, 手続てつづがた, モジュールがた, オブジェクト指向しこう, リフレクション可能かのう, メタ
登場とうじょう時期じき 1994
開発かいはつしゃ PLT Scheme Inc
最新さいしんリリース 8.11.1[1]/ 2023ねん11月29にち (6かげつまえ) (2023-11-29)
型付かたつ つよ動的どうてき型付かたつけ、静的せいてき型付かたつ
影響えいきょうけた言語げんご Scheme
プラットフォーム Cross-platform
ライセンス GNU Lesser General Public License (LGPL)
ウェブサイト racket-lang.org
拡張子かくちょうし .rkt, .rktl, .rktd, .scrbl, .plt, .ss, .scm
テンプレートを表示ひょうじ

Racket (旧称きゅうしょう PLT Scheme) は、Schemeから派生はせいしたプログラミング言語げんごである。Racket プロジェクトは以下いかよっつから構成こうせいされている。

  • スクリプト処理しょりけい、Racket (リッチなランタイムシステム, 豊富ほうふなライブラリ, JITコンパイラ などがふくまれる)
  • Racketプログラムの開発かいはつ環境かんきょう、DrRacket (旧称きゅうしょう DrScheme)
  • コンピューティングとプログラミングを"教養きょうよう教育きょういくカリキュラムの必須ひっす分野ぶんやにする"こころProgramByDesignアウトリーチ・プログラム。[2]
  • Racketのユーザ作成さくせいパッケージの配布はいふシステム PLaneT[3]

歴史れきし[編集へんしゅう]

Racket を開発かいはつしたPLT project は、1990年代ねんだいちゅうごろに, Matthias Felleisenによってまず研究けんきゅうグループとしてげられ、そのすぐに、プロジェクトは初心者しょしんしゃプログラマけの教育きょういくようマテリアル(レクチャー、演習えんしゅう課題かだい自由じゆう課題かだい、ソフトウェア)を製作せいさくするのに注力ちゅうりょくした。 1995ねんがつ, グループは教育きょういく用途ようとのプログラム環境かんきょう開発かいはつすることにした。 Matthew Flatt はlibschemeのMrEdと、wxWidgets、およびいくつかのフリーなシステムをバンドルした。開発かいはつ決定けっていからなんねんかかけて、Flatt, Robby Findler, Shriram Krishnamurthi, Cormac Flanaganらすうおおくの人々ひとびとによるチームによって、 Scheme の初心者しょしんしゃけプログラミング環境かんきょう・ソフトタイピングの実験じっけん環境かんきょうDrSchemeつくられた。

同時どうじに, PLTのチームは高校こうこう教師きょうしけのワークショップをおこない、プログラムデザインと関数かんすうプログラミングを指導しどうした。. このでの教師きょうし生徒せいととのやりとりは、 開発かいはつ方向ほうこうけについて重要じゅうようがかりをあたえた。

すうねんわたって、教育きょういくよう言語げんご, algebraic stepper, 透過とうかてきなREPL, constructor-based printer, などおおくの改善かいぜんてんが DrSchemeにくわわり、アプリケーションとして十分じゅうぶんしつそなえた教育きょういくてきプログラミング開発かいはつ環境かんきょう完成かんせいした。2001ねんには, 中心ちゅうしんてきなチーム (Felleisen, Findler, Flatt, Krishnamurthi) により、プログラミング教育きょういく思想しそうもとづいて、かれらのはじめて教科書きょうかしょHow to Design Programs出版しゅっぱんした。

2010ねん6がつ7にち、PLT Scheme から Racket に改名かいめいした。[4]

Racket (and DrRacket) は現在げんざい、モジュールブラウザによるモジュール指向しこうプログラミングと, contour view, 統合とうごうされたテスト環境かんきょうとカバレッジ計測けいそく、リファクタリングをサポートしている。

研究けんきゅう[編集へんしゅう]

Racket では関数かんすうがたのコア言語げんご,にくわえ、以下いかのような幅広はばひろ種類しゅるい構造こうぞう自由じゆう統合とうごうさせている。

  • mixin クラスシステム。
  • Standard MLのように洗練せんれんされて表現ひょうげんりょくゆたかなコンポーネント(モジュール)システム。
  • 高階たかしな言語げんごようとしてははじめてのコントラクトシステム。[5]
  • メタプログラミングのためのパワフルなマクロシステムをもつ。
  • 実用じつようてきなシステムとして、最初さいしょ部分ぶぶん継続けいぞく実装じっそうした。

もっとも注目ちゅうもくすべき特徴とくちょうは、マクロシステムにある。Racketのマクロシステムは、伝統でんとうてきLispのSしき操作そうさマクロシステム[6][7]や、Scheme 84のハイジーンなextend-syntaxマクロ、R5RSのsyntax-rules構文こうぶんくらべても強力きょうりょく表現ひょうげんりょくゆうする。実際じっさいに、マクロは注意深ちゅういぶか調整ちょうせいされたコンパイラ拡張かくちょう API といってもつかえがないものである。このコンパイラAPIを使つかうことで, プログラマーは機能きのう追加ついかと、ドメイン固有こゆう言語げんごそのものの追加ついかをすることができる。そのような機能きのうはビルトインになっている言語げんご要素ようそ完全かんぜん区別くべつできないほど、環境かんきょう統合とうごうされる。たとえば、Racketのライブラリではクラスオブジェクトシステムとコンポーネントシステムはマクロとして実装じっそうされている。

また、Racketはプログラミング言語げんごかんする実験じっけんだけでなく, プログラミングのパターン、インタラクティブなWebプログラミング、リファクタリング、などのトピックを調査ちょうさするための基盤きばん環境かんきょうとして使つかわれた。

スクリプト言語げんごとして[編集へんしゅう]

時間じかんつとともに、Racketはスクリプティングのツールとして有用ゆうようなものとなっていった。Racket は、現在げんざい以下いかのようなツールをもっている。

  • Unix シェルのスクリプティング
  • ウェブサーバ
  • プレゼンテーションツール
  • グラフィカルなツールキット

Racket は標準ひょうじゅんてきなスクリプト言語げんごそなわっているようなライブラリをそなえている。2004ねん以降いこう, PLTは標準ひょうじゅんのモジュールシステムと連携れんけいした、WebベースのコードレポジトリPLaneTを運営うんえいしている。

Hello World![編集へんしゅう]

Racketでの "hello world" は以下いかのようになる。

#lang racket
"Hello, World!"

出力しゅつりょく以下いかのとおり。

"Hello, World!"

以下いかはもうすこ意味いみのあるプログラムである。

#lang racket
(require 2htdp/image)
(let sierpinski ([n 8])
  (if (zero? n)
    (triangle 2 'solid 'red)
    (let ([t (sierpinski (- n 1))])
      (freeze (above t (beside t t))))))

このプログラムはRacketのwebページで紹介しょうかいされているものである。 出力しゅつりょくは、以下いかのような8かいかえしまで描画びょうがした、シェルピンスキーの三角形さんかっけいである。

出典しゅってん[編集へんしゅう]

  1. ^ Racketブログ Racket v8.11.1
  2. ^ Program by Design: Overview
  3. ^ PLaneT: Racket's centralized package distribution system
  4. ^ From PLT Scheme to Racket
  5. ^ Findler, Felleisen Contracts for Higher-Order Functions
  6. ^ Matthew Flatt Composable and Compilable Macros, You Want it When?
  7. ^ Flatt, Culpepper, Darais, Findle r, Macros that Work Together; Compile-Time Bindings, Partial Expansion, and Definition Contexts

外部がいぶリンク[編集へんしゅう]