Q&A

Q. BaCon は何と読むのですか?

「ベーコン」と読みます。実際に食べ物のベーコンをアイコン等に使用しています。
BAsic CONverter の頭部分からとられています。

Q. なぜ マニュアル を「ソースコード」のページで公開しているのですか?

多くの環境で容易に参照できる手段、容易にファイルを移行を検討した結果、
テキストファイルでの生成に落ち着きました。
ソースコードのページでは直接参照もできますし、
.zip・.tgz によってアーカイブし、一式を入手できる特徴ももちます。

翻訳がだいぶ行えましたので、現在は Wiki にもマニュアルを入れています。

Q. 微妙によく使われる BASIC 言語と違います。対応表とかはないでしょうか?

プロジェクト設立者の ふうせん Fu-sen. が BASIC 言語のサイトを運営しています。
こちらの「主な BASIC コマンド」は主に使われる BASIC コマンドで一覧し、
BaCon でのコマンドの命令も追記してあります。

Q. 日本語は扱えますか?

問題なく扱えます。UTF-8 はサンプルプログラムも存在します。
ただし PHP の mb みたいな多国語向けのライブラリは今のところ存在しません。

Q. root 権限がないので、path の通ったところで bacon を移動できません。

ホームフォルダ下でも問題ありません。例えば ./bacon program.bac 等とすれば良いのです。

Q. 実行ファイルを生成せずに実行する事はできますか?

bacon のオプションとして -b を付けて下さい。すぐに実行となります。

Q. 試しに作ってみましたが、ビルドがうまくいきません。実行結果が正しくありません。

Mac や Windows のご利用の場合、
改行コードは LF に変更しなければいけない事に注意して下さい。
CR や CR LF だと bacon の実行ファイルは正常に処理できません。
例えば Mac のエディタ mi は表記設定の改行コードが CR になっています。

Q. HUG が動作しません。コンパイルは正常に終わるのですが、実行ファイルを実行しても何も表示されません。

HUG では一番最後に DISPLAY を付けます。この DISPLAY で GUI が表示されます。
DISPLAY が一番最後にあるかを確認して下さい。なければ含めて下さい。
また、ある場合、DISPLAY の後ろに改行を入れて下さい。
BaCon は改行コードが最後にないと、正常に処理しません。
意外とこれで表示されないケースも多いです。

Q. hug.bac では OS X や Cygwin 向けの記載も見られますが……

OS X では GTK ライブラリの参照先が古く、動作しません。
現在 BaCon のフォーラムで問い合わせていますが、
現ソース改変者が最新の Mac を所有していないため、改善が容易ではないです。
運営者の Mac ではソースを改良し、バージョンによって動作するようになりました。
完全に動作する事が確認できれば、それを hug.bac に反映できるでしょう。

試してみたい人は次の動作を試してみて下さい。
Homebrew を使用します。もちろん Xcode 等のコンパイル環境も必要です。

brew install gtk+
brew install gtkglext
brew install gtkglarea

そして hug.bac の /opt/local/lib を /usr/local/lib に全て置き換えて下さい。
同じようにして bacongui や gtk 関連コードも動作します。(.so.0 → .dylib)
bacongui では gtksourceview もインストールが必要です。
なお、2.4.0 ではコンパイルエラーになります。2.3.0 で動作を確認しています。

Q. Puppy Linux にある hug.so はどうやって入手しますか?

hug.so は hug.bac を静的ライブラリ化したものです。作るのはとても簡単で

bacon -f hug.bac
で hug.so ができます。hug.bac の代わりに hug_import.bac を使って下さい。
素早くコンパイルし、多くの BaCon HUG 実行ファイルを生成する場合はサイズ軽減にもなります。

Q. CGI に興味があります。レンタルサーバでも動作しますか?

共用レンタルサーバの多くは CentOS 等の Linux なので、動作可能と思われます。
シェル操作を要するため、ssh でログインできるのが理想です。
VPS・専用サーバなら問題ないでしょう。
もちろん他の言語同様に誤ったコードでサーバが暴走したりしますので、
開発はローカルで行い、完全に動作するファイルをサーバで動かすようにして下さい。

Q. CGI で動かすにはどうしたら良いですか?

すでにに Perl や C 言語では動く事を把握している前提だとしまして……
これらが .cgi で動くようになっているサーバであれば、
生成した実行ファイルの拡張子の .cgi にすれば実行できます。
通常は Content-Type を頭で出力します。例えば次のようなコードです。

  1. PRINT "Conent-Type: text/html"
  2. PRINT ""
  3. PRINT "<html><body>test</body></html>"
GETENVION$("QUERY_STRING") で method="GET" での値を取得できます。
method="POST" の場合は標準入力に入ります。例えば下記のコードで POST$ に入ります。
  1. WHILE TRUE
  2. stndin = WAIT(STDIN_FILENO, 50)
  3. IF stndin = 0 THEN BREAK
  4. POST$ = POST$ & CHR$(stndin)
  5. WEND
BaCon の公式サイトにある cgi.bac では INPUT POST$ としていますが、
この方法では取得できません。代わりに上記のコードを使用すると解決します。