S-Lang ベースのエディタ、JED | |
| 開発者 | ジョン・E・デイビス[1] |
|---|---|
| 安定リリース | 2.3.3 [2]
/ 2022年8月5日 |
| 書かれた | S-Lang スクリプト言語 |
| オペレーティング·システム | POSIX |
| タイプ | ウィジェットツールキット |
| ライセンス | GPL-2.0以降[3] |
| Webサイト | スラング |
S -Langプログラミングライブラリは、 Unix、Windows、VMS、OS/2、およびMac OS X用のソフトウェアライブラリです。S -Langスクリプト言語のインタープリタを埋め込むためのルーチンと、テキストベースのアプリケーションの作成を容易にするコンポーネントを提供します。 [4]後者のクラスの関数には、キーマップの構築と操作のためのルーチン、対話型の行編集機能、および低レベルと高レベルの両方の画面/端末管理機能が含まれます。これは、GNU General Public License の条件に基づいて配布されています。
略歴
S-Langプログラミングライブラリは、テキストエディタ用に作成した関数が他のプログラムでも役立つかもしれないと考えたジョン・E・デイビスによって1992年に開発が開始されました。[5]ライブラリの最も初期のバージョンには、コンピュータ端末と対話するための入出力ルーチンと、科学的なプロットプログラムで使用するために彼が開発した、 PostScriptのような構文を持つシンプルなスタックベースのインタープリタの実装が含まれていました。JEDテキストエディタは、インタープリタを埋め込み、ライブラリの端末I/Oコンポーネントを使用する最初のプログラムでした。
通訳者
S-Langライブラリの大部分はインタープリタで構成されており、開発の大部分もここで行われています。インタープリタがサポートしていたオリジナルの構文はPostScriptに似ていましたが、構文はC言語にかなり似たものへと進化し、オブジェクト指向スタイルの構造もサポートされるようになりました。デイビスの物理学のバックグラウンドと科学計算への専門的な関心を反映して、この言語はMATLABやIDLに似た多くのベクトル化された配列ベースの操作をネイティブにサポートしています。[6]
バージョン 2.0 までは、インタープリタはスタンドアロン プログラムではありませんでした。代わりに、Davis は、拡張性を持たせるためにアプリケーションにインタープリタを埋め込むことを提唱しました。インタープリタを使用するには、C プログラムに埋め込むか、別のアプリケーション ( JEDエディタなど) のコンテキストで使用する必要があります。S-Lang シェルの slsh は、スクリプトを実行する機能しか持たないデモ プログラムでした。2005 年にリリースされたバージョン 2.0 では、slsh が対話型になり、独自のアプリケーションに進化し、多数の外部モジュールが使用できるようになりました。そのため、S-Lang インタープリタになりました。
スクリーン管理
1990 年代半ば、scスプレッドシートを S-Lang ライブラリに移植しているときに、Davis はライブラリの画面管理機能を開発しました。[要出典] このコンポーネントは、画面出力を最適化し (端末に送信される文字数を最小限に抑えることにより)、アプリケーション コードと端末の間に抽象化の追加レイヤーを介してさまざまな端末をサポートする簡単な方法を提供するように設計されています。slrnニュースリーダーは、このインターフェイスをフルに活用した最初のアプリケーションでした。[要出典] それ以来、他の多くのプログラム (例: Mutt [7] ) がライブラリのこの機能を活用しており、このコンポーネントはcursesの代替と見なされているため、おそらくライブラリで最も使用されている部分になっています。[8] [9]バージョン 2.0 以降、画面管理ルーチンはUTF-8を透過的にサポートしています。
ソースコードの例
#! /usr/bin/env slsh
% 以下のプログラムは、次の問題を解決します:
% 次のような行で構成される入力ファイルをソートします
%
% var1=23 other=14 ditto=23 fred=2
プライベート 変数 Keys 、 Values ;
プライベート 定義 sort_fun ( i 、 j )
{
変数 s 、 a 、 b ;
s = Values [ i ] - Values [ j ];
! if ( s )
return strcmp ( Keys [ i ], Keys [ j ]);
return s ;
}
slsh_main ()
を定義します{
変数 line 、 len 、 i 、 vals ;
foreach line ( stdin )
{ %
空白文字と = を区切り文字として使用して、文字列を文字列の配列に分割します %
% line = strtok ( line 、" \t\n=" ); len = length ( line ) / 2 ; if ( len == 0 ) continue ;
% 偶数要素はキー、奇数要素は値です
% [0::2] は、ステップを指定する 2 のインデックスを含む配列で
、 % 0 から長さ (行) までのインデックスを作成します
Keys = line [[ 0 :: 2 ]];
vals = line [[ 1 :: 2 ]];
% 変数は上記で宣言されています
Values = atoi ( vals );
i = array_sort ([ 0 : len - 1 ], & sort_fun );
% 結果を書き込む方法はいくつかあります。以下は
ループを回避する高速な方法です。
% 空の括弧 () は変数宣言を示し、
戻り値を破棄することを指定します
() = printf ( "%s\n" , strjoin ( Keys [ i ] + "=" + vals [ i ], " " ));
}
}
参照
参考文献
- ^ Davis, John (2017年11月26日). 「A little bit about me」. John E. Davis Software . 2020年6月1日時点のオリジナルよりアーカイブ。 2020年6月1日閲覧。
- ^ 「スラングリリース」。
- ^ Davis, John (2018年3月4日). 「S-Langソフトウェアライセンス情報」. John E. Davis Software . 2020年6月1日時点のオリジナルよりアーカイブ。 2020年5月31日閲覧。
- ^ Linux Bible 2010 Edition: Boot Up to Ubuntu, Fedora, KNOPPIX, Debian, openSUSE, and 13 Other Distributions、Christopher Negus 著、Wiley、2009 年、ISBN 978-0-470-48505-7、p.775
- ^ 「S-Lang の簡単な歴史」。2017年6 月 6 日閲覧。
- ^ マルチコアの活用: オープンソースの数値スクリプト言語から OpenMP を活用する、Noble, MS、Concurrency and Computation: Practice and Experience Volume 20、Issue 16、1877–1891 ページ、2008、doi: 10.1002/cpe.1296
- ^ 「Mutt インストール ガイド」 。2015年 10 月 4 日閲覧。
- ^ MySQL Developer's Library、Paul Dubois 著、Pearson Education、2009 年、ISBN 9780672329388、セクション 6.1
- ^ Linux アプリケーション開発、Michael K. Johnson および Erik W. Troan 著、Addison-Wesley、2005 年、ISBN 9780321219145、p513
外部リンク
- S-Lang ライブラリ情報ページ (John E. Davis 著)
- S-Lang リリース
- S-Lang ドキュメント
