Structure and Interpretation of Computer Programs, JavaScript Edition

Structure and Interpretation of Computer Programs, JavaScript Edition （略称：SICP JS）は、コンピューターサイエンスの教科書"Structure and Interpretation of Computer Programs"（SICP）をJavaScriptを用いて翻案したものである。再帰、抽象化、、プログラミング言語のとなど、コンピュータープログラミングの基本原則を説明している。SICPのオリジナルバージョンではプログラミング言語Schemeが使用されていたが、このエディションではプログラミング言語JavaScriptが使用されている。
このエディションは、Guy L. Steele Jr.による序文を掲載しており、2022年4月にMIT Pressから発行された。
コンテンツ.
オリジナル版と同様に、SICP JSは、特定の問題を解決するための一般的なパターンを発見し、それらのパターンを活用するソフトウェアシステムを構築することに重点を置いている。この本では、JavaScriptを使用したコンピューターサイエンスの概念について説明している。また、仮想レジスターマシンとアセンブラーを使用して、JavaScriptインタープリターとコンパイラーを実装している。
ライセンス.
この本は、Creative Commons Attribution NonCommercial ShareAlike 4.0ライセンスの下でMIT Pressによって発行されている。テキストと図については、Creative Commons Attribution ShareAlike 4.0ライセンスの対象である。JavaScriptプログラムは、GNU Public License 3.0の下でライセンスされている。セクション2.2.4のMIT 創設者ウィリアム・バートン・ロジャースの元の画像は、の厚意で提供されている。
歴史.
シンガポール国立大学（NUS）は、2012年からドラフト版をオンラインで公開し、2019年12月13日に最初の正式版を公開した。SICP JSは、2012年からNUSのコースCS1101Sで使用されている。
元の教科書との違い.
この本は、特定のプログラミング言語ではなく、プログラミングの原則、モデル、抽象化に焦点を当てている。元のSICPでは、すべての例がプログラミング言語Schemeで書かれているが、SICP JSは、Schemeの代わりにJavaScriptを使用している。JavaScriptの関数的なコアはSchemeと共通しているため、JavaScriptへの適応は簡単で、最初の3章はほとんど文字通りの翻案となっている。第4章では、新しい内容、特にプログラム解析の概念を紹介している。第5章の評価器とコンパイラーは、末尾再帰を犠牲にすることなくreturnステートメント（ステートメント指向言語の顕著な特徴）をサポートするために、小さなスタックの規律を導入している。
Source.
SourceはJavaScriptの一連のサブ言語であり、もともとは『』にインスパイアされたものである。この言語は、SICP JSの各章に対応するSource §1、Source §2、Source §3、Source §4の各言語から構成される。各言語は、それぞれ次のセクションの言語のサブ言語となっており、それぞれの章で必要な機能のみを含むように設計されている。これらの言語は、SICP JSの読者をサポートするさまざまなツールを備えたWebベースのプログラミング環境であるを用いて実装されている。