newLISPトンボのロゴ | |
| パラダイム | マルチパラダイム |
|---|---|
| 家族 | リスプ |
| デザイン: | ルッツ・ミューラー |
| 開発者 | ルッツ・ミューラー |
| 初登場 | 1991年 |
| 安定版リリース | 10.7.5 / 2019年5月12日[1] |
| プレビューリリース | 10.7.4 / 2018年9月10日[1] |
| 範囲 | 動的 |
| プラットフォーム | IA-32、x86-64 |
| OS | クロスプラットフォーム: Unix、Unixライク、Windows |
| ライセンス | GPLv3+ |
| Webサイト | このサイトについて |
| 影響を受けた | |
| C、Common Lisp、Perl、Scheme | |
newLISP はスクリプト言語であり、プログラミング言語Lispファミリーの方言です。Lutz Mueller によって設計および開発されました。[2]リソース要件が少ないため、newLISP は組み込みシステムアプリケーションに最適です。必要な機能のほとんどはすでに組み込まれています。これには、ネットワーク機能、分散およびマルチコア処理のサポート、ベイズ統計が含まれます。newLISP は、GNU General Public Licenseバージョン 3 以降 に基づいてリリースされた無料のオープンソースソフトウェアです。
歴史
newLISP の設計は、2 つの主要なLisp方言であるCommon LispとScheme、およびPascalやCなどの他の言語の影響を受けています。[要出典] newLISP は 1991 年に誕生し、当初はSun-4ワークステーションで開発されました。[3]その後、 Windows 3.0に移行し、バージョン 1.3 が1993 年頃にCompuServeでリリースされ、その後、Windowsグラフィカル ユーザー インターフェイス(GUI) グラフィックス対応アプリケーションおよびDOS コンソール アプリケーション(どちらも16 ビット) として利用できるようになりました。1995 年にWindows 95がリリースされると、newLISP は32 ビットに移行しました。
1999 年 4 月、newLISP はLinuxに移植され、コア アルゴリズムの一部が書き直され、Windows 固有のコードはすべて削除されました。newLISP はGPLライセンスのオープン ソース ソフトウェアプロジェクトとしてリリースされ、バージョン 6.0.25 以降、Windows での開発は停止されました。2001 年前半、newLISP はグラフィック機能なしでCygwinプラットフォーム上の Windows に移植されました。2001 年後半には、newLISP-tk というクロス プラットフォームのTcl / Tkフロントエンドがバージョン 6.3.0 前後でリリースされました。2006 年、バージョン 9.0 で整数演算と一部のファイル操作に64 ビット精度が導入されました。
2002年半ばの6.5のリリース以来、開発は非常に活発に行われ、多くの新機能が追加されました。[4]
哲学
newLISPは、データストレージ(ディスクスペースなど)やメモリなどのシステムリソースをほとんど使用せずに、高速で強力なクロスプラットフォームのフル機能のスクリプト言語Lispバージョンを提供することを目指しています。[5] [6]
リスト、シンボル処理、関数マッピング、匿名関数(ラムダ式)、S 式(不正なリストを除く)、マクロなどの Lisp 機能を提供します。また、正規表現、XML、Unicode ( UTF-8 )、伝送制御プロトコル(TCP)、インターネット プロトコル(IP)、ユーザー データグラム プロトコル(UDP)によるネットワーク、行列と配列の処理、高度な数学、統計、ベイズ統計分析、数理ファイナンス、分散コンピューティングのサポートなど、最新のスクリプト言語に期待される機能も提供します。
newLISPは、 Berkeley Software Distribution (BSD)、Linux、macOS、Solaris、Windowsの各オペレーティングシステム で動作します。[1] MYSQL、SQLite、ODBCデータベースアクセス、Common Gateway Interface (CGI)、Simple Mail Transfer Protocol (SMTP)、Post Office Protocol (POP) 3、File Transfer Protocol (FTP)、XMLリモートプロシージャコール( XML-RPC )をサポートしています。デーモンとしてサーバーモードで実行できます。
言語機能
コンテキスト
newLISP はコンテキストと呼ばれる名前空間をサポートします。コンテキストは変数に割り当てて関数に渡すことができますが、グローバルに一意なシンボルに関連付けられているため、第一級オブジェクト(オブジェクト)としての使用が制限されます。newLISP では、コンテキストをプロトタイプとして使用してオブジェクトを構築することで、プロトタイプ ベースのオブジェクト指向プログラミング スタイルが可能です。コンテキスト内の変数は、他のコンテキスト内の同じ名前の変数と干渉しませんが、コンテキスト内では、変数は動的スコープの規則に従って動作します。
スコープ設定
newLISP は動的スコープを使用します。関数が呼び出されると、その関数は、同じコンテキストまたは名前空間内で、その呼び出し元、その呼び出し元の呼び出し元などのすべての変数を見ることができます。外部環境から同じ名前の変数をシャドウする、明示的および暗黙的に定義されたローカル動的変数の両方をサポートし、呼び出し元の環境からの変数の偶発的な使用や変更を防止します。呼び出された関数のパラメータ変数は、呼び出し元の変数環境を自動的にシャドウします。グローバルに、変数は別の名前空間にグループ化できます。
メモリ管理
newLISP は、従来のガベージ コレクションスキームとは異なる、1 つの参照のみ (ORO) メモリ管理と呼ばれる自動メモリ管理方法を使用します。各変数はそのコンテキストによってのみ参照され、各コンテキストはグローバルに参照されます。
オブジェクト間のサブオブジェクトの共有、循環構造、または同じオブジェクトを指す複数の変数は、newLISP ではサポートされていません。オブジェクトは、特定の組み込み関数を除いて、データ構造に格納されるか関数に渡されるときにコピーされます。例外はシンボルとコンテキストで、コピーされるのではなく共有されるため、間接参照に使用できます。シンボルとコンテキストはグローバルに名前が付けられ、明示的に削除されます。シンボルまたはコンテキストを削除すると、他のすべてのオブジェクトがスキャンされ、それへの参照が に置き換えられますnil。
GUIオプション
newLISPグラフィカル ユーザー インターフェイス(GUI) サーバー (newLISP-GS) は、グラフィカル プログラミング インターフェイスを提供するJavaベースのインターネット プロトコル スイート(TCP/IP) サーバーです。newLISP バイナリ ディストリビューションには newLISP-GS ベースの開発環境が含まれており、GTK サーバー、OpenGL、およびTcl / Tkベースのプログラミング インターフェイスが利用できます。
スタンドアロンバイナリ
どの newLISP バージョンでも、自己完結型でインストールの必要がない実行 可能ファイルやポータブル アプリケーションを構築して展開できます。
共有ライブラリとのやり取り
newLISP にはインポート関数があり、Windows API Win32 上のダイナミック リンク ライブラリ(DLL)や、Linux またはUnix上の共有ライブラリから関数をインポートできます。
フレームワーク
newLISPで利用できるWebフレームワークにはDragonfly [7]やRockets [8]などがある。
参考文献
- ^ abc "newLISP" . 2018年11月20日閲覧。
- ^ Walling, Rob. 「newLISP の創始者 Lutz Mueller 氏へのインタビュー」。Softwarebyrob.com。2007年 10 月 31 日時点のオリジナルよりアーカイブ。2018年 11 月 20 日閲覧。
- ^ Mueller, Lutz. 「newLISP – LISP スクリプト言語」. don Lucio . 2018年11月20日閲覧。
- ^ 小林茂. "kosh04/newlisp". GitHub . 2018年11月20日閲覧。
- ^ 「Category:newLISP」。Rosetta Code 。2018年11月20日閲覧。
- ^ Lazar, Alexandru (2009 年 1 月 5 日). 「newLISP の概要」. OSNews . 2018 年 11 月 20 日閲覧。
- ^ Slepak, Greg; Hildmann, Marc. 「Dragonfly Webフレームワーク」。AppTruck 。 2018年11月20日閲覧。
- ^ Reimer, Jeremy. 「The newLISP on Rockets 2.0 Blog」. Rocket Man . 2018年11月20日閲覧。
外部リンク
- 公式サイト
- GitHubの newlisp
