スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【同じタグを付けた記事の一覧】

SWI-Prolog Portable を試す

2014年12月24日(水)01時39分

時短のための要旨抽出

  • フォントはプロポーショナルにしないと日本語でカーソル位置がずれる。
  • 拡張子は「.pl」にすると手間が省ける。
  • 日本語を含む場合は BOM 付き UTF-8 で保存する。
  • コンソール版はポータブルではない。

Prolog 始めました

元来は保守的な性質なのですが、ときどき無性に「何か新しいこと」を始めたくなる時があります。
ということで、今回はプログラミング言語「Prolog」を始めてみることにしました。
理由としては、これまで C++ や JavaScript といった「手続き型でオブジェクト指向なマルチパラダイム言語」にしか触れたことがないため、「それとは違うパラダイムの言語の世界を覗いてみたい」ということもありましたが、なんといっても「SWI-Prolog Portable がある」ということが一番大きかったかもしれません。

SWI-Prolog Portable

SWI-Prolog」は、Prolog 関連サイトの多くで「Prolog を始めるならとりあえずコレ」と書かれているレベルの、とてもメジャーな Prolog 処理系です。
SWI-Prolog Portable」はそれをポータブル化したもので、以前「PortableApps と LibreOffice」において、「PortableApps 環境」を構築しましたが、その PortableApps プロジェクトの成果物の一つです。
冒頭で「ときどき無性に何か新しいことを始めたくなる」などと書いていますが、そうして始めたもののすべてが日常に根付くというわけではなく、というよりむしろすぐに冷めて「もういいか」となることの方が多いので、ポータブル版の手軽さ・気軽さは、とても大きな理由になります。

疑似ポータブル

前述「PortableApps と LibreOffice」でも書いたのですが、自分はポータブルなアプリケーションを、さらに「完全ポータブル」と「疑似ポータブル」とに分けて考えています。
「完全ポータブル」は初めからレジストリやシステムフォルダに何も出力せずローカルフォルダ内のみで完結するタイプもの、「疑似ポータブル」はレジストリ等に書き出された情報を終了時にローカルフォルダに退避させるタイプのものです。
で、この SWI-Prolog Portable は「疑似ポータブル」タイプのアプリケーションです。
つまり、起動中は「C:\Users\ユーザー名\AppData\Roaming\SWI-Prolog」等のフォルダや、「HKEY_CURRENT_USER\Software\SWI」といったレジストリキーが生成されており、終了時にそれらの情報がローカルフォルダに移されて削除されることになります。
こういう仕組みですので、例えば起動中に「OS が落ちた」というようなことが起これば「ゴミ」が残ることになりますし、そもそもポータブル版を使う理由が「システムを汚したくないから」である場合には、全く向いていないというべきか意味がないと言っても良いものではあります。
自分もわりに神経質なタイプで、かつては「完全ポータブルしか認めない!使わない!」という感じだったのですが、今時は丸く?なり「まあ疑似ポータブルでも別にいいか…」的に変わってきました。

コンソール版は非ポータブル

なお、Windows 版の SWI-Prolog は、GUI 版の「swipl-win.exe」と CUI(コンソール)版の「swipl.exe」があり、ポータブル化されているのは GUI 版である「swipl-win.exe」の方だけです(実際に実行するのは「SWI-PrologPortable.exe」ですが)。
「コンソールアプリにポータブルも何もないだろう?」というのは確かにそうで、変更可能な設定項目がないため、どこに持ち運んでも同じ設定で使えるという意味ではポータブルには違いないのですが、起動すると何故か空のフォルダ「C:\Users\ユーザー名\AppData\Roaming\SWI-Prolog」が生成されます。
つまり「ゴミ」が残ります。
まあ、ちょっと見た範囲では、残る「痕跡」はこれだけのようですので、終了後に削除すればいいことではあるのですが。

拡張子は「.pl」で

SWI-Prolog を普通にインストールして使う場合、ソースコードのダブルクリックで実行すると便利ですので、Prolog ファイル用の拡張子を他とかぶらないよう慎重に決定し、関連付けすることになります。
では、基本的に関連付けはしないポータブル版はどうでもいいのか?というと、まあ確かにどうでもいいと言えばいいのですが、出来れば「.pl」にしておくと便利かと思います。
というのも、ダブルクリックで「起動 → 読み込み」ができないため、SWI-Prolog Portable を起動してから、メニューの「File → Consult」でソースファイルを指定することになりますが、この時に表示されるファイル選択ダイアログの初期値が、拡張子「.pl」となっているのです。
つまり、「.pl」以外の拡張子にしている場合、まず「All files」に切り替えて、対象ファイルを表示させる必要があります。
この切り替えは、ファイル選択時に毎回する必要がありますので、特に事情がないのであれば、余計な手間を一つ減らせますので、「.pl」にしておくのが良いと思われます。
また、ソースコードに日本語が含まれる場合、BOM 付き UTF-8 で保存しないとエラーが出ました。

フォントはプロポーショナルで

それから、これは別にポータブル版に限定した話ではないと思うのですが、GUI のフォント設定(「Setting → Font」)で等幅フォントを設定すると、日本語表示でカーソル位置がずれます。
自分は最初、これでハマりました。
「一般的にソースコードなどというものは等幅フォントで表示するものだ」という観念がありますので、毎回わざわざ等幅フォントに設定し直し、「日本語がまともに使えない…」と悩んでいたのです。
大体どこのサイトを見ても、SWI-Prolog は「Prolog で日本語の扱いが一番まともな処理系の一つ」として挙げられており、つまり「よその環境では起こらず、自分だけの問題なのか?」と、開発中の最新バージョンを試したり、WinXP や32ビット版 Win7 等の別環境で確認したりして、一時は「SWI-Prolog は使えない!」という結論に落ち着いたりもしていました。
わかってしまえばどうということはないのですが、つまりは「等幅フォントのときは計算量削減のため「文字数 x 文字幅」でカーソル位置を算出する」という処理を行っているのだと推測されます。
実際のところ「等幅」といっても、二バイト文字(全角文字)では文字幅が倍になり、厳密にいえばプロポーショナルですので、この処理では破たんするのですが、この辺りの事情は、ASCII 文字のみで生活可能な文化圏のプログラマーにとっては気付けないことで、また、どうでもいいことでもあるのかもしれません。
我が身を振り返ってみても、何かプログラムを書く際、例えば「アラビア語のように右から左へ綴る言語」にも配慮しているか?と問われれば、そういうことは考えたこともありませんし、まあそういうことかなと思います。

というわけで

しばらくは WEB を散策し、「Prolog 入門」的なサイトを片っ端から読んでみようかと思います。

関連記事

【同じタグを付けた記事の一覧】
ソフト紹介 プログラミング ポータブル Prolog

スポンサーサイト

コメントの投稿

非公開コメント

最新記事
最新コメント
Amazonおまかせリンク
カテゴリ
タグクラウド
Amazonお買い得ウィジェット
カレンダー
05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
月別アーカイブ
プロフィール

電脳太助

Author:電脳太助
Website:電脳スピーチ web

RSSリンクの表示
メールフォーム

名前:
メール:
件名:
本文:

サイト内検索
Ads by Google
FC2アクセスランキング
Ads by Google
FC2拍手ランキング
ユーザータグ

音楽管理(66)
ポータブル(57)
ソフト紹介(44)
プログラミング(42)
音声技術(41)
自作ソフト(35)
サイト運営(32)
FC2(31)
ブログ(30)
iTunes(27)
Windows(25)
LISMO(24)
音声合成(23)
音声認識(22)
x-アプリ(22)
電子ブック(22)
eラーニング(20)
バックアップ(19)
語学学習(19)
foobar2000(18)
ソースコード(18)
WindowsLiveWriter(15)
画像管理(15)
C++(14)
アフィリエイト(10)
DnspTools(10)
fi-6130(9)
FLAC(9)
JavaScript(9)
ウォークマン(9)
英語音読学習計画(8)
Gracenote(8)
Prolog(8)
ベクター(8)
雑記(8)
CodeBlocks(7)
SyntaxHighlighter(7)
TraConv(7)
spcbght(7)
wxWidgets(7)
VirtualBox(6)
W63CA(6)
DCP-J552N(6)
WinRT(6)
WindowsLiveMesh(6)
iGoinLM(6)
英語発音矯正実験(6)
ExactAudioCopy(6)
MP3Gain(6)
LAME(5)
音楽技術(5)
Mery(5)
楽器演奏(5)
GalateaTalk(4)
nLite(4)
WindowsLiveSkyDrive(4)
ホームページ(4)
GalateaProject(4)
MIDI(4)
LLVM(4)
PC-98(3)
カウンター(3)
AACGain(3)
iTCDini(3)
OverCutChecker(3)
拍手(3)
PK-513L(3)
UniversalExtractor(3)
アクセスランキング(3)
ImageCompositeEditor(2)
アクセス解析(2)
OCR(2)
qtaacenc(2)
資格試験(1)
AquesTalk(1)
AquesCmdDl(1)

FC2アクセスランキング
最新トラックバック
アクセスランキング
[ジャンルランキング]
コンピュータ
111位
アクセスランキングを見る>>

[サブジャンルランキング]
ソフトウェア
12位
アクセスランキングを見る>>
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。