プログラミング: BaCon

以上のフォーラム以外の開発者の話題

モデレータ: YoN, nyu

ふうせん Fu-sen.
記事: 561
登録日時: 13/09/17(火) 10:01

プログラミング: BaCon

投稿記事 by ふうせん Fu-sen. »

4.x 系になって devx から FreeBasic が外れてますが、
BASIC のコーディングをなくしたわけでないんですね。

5.x 系では devx に BaCon という BASIC→C コンパイラが含まれてます。

http://bkhome.org/bacon/

http://www.basic-converter.org/

英語ですが、ドキュメントはこちら。

http://www.basic-converter.org/documentation.html

本家フォーラムのトピックも使用方法のヒントがありそうです。

http://www.murga-linux.com/puppy/viewtopic.php?t=48901

devx を入れてる際、/usr/share/BaCon 下に .bac のサンプルといくつかのドキュメントがあります。

BASIC でアプリが作れてしまうのは面白いですね。 :lol:
ふうせん Fu-sen. ( old: 2 8 6 )
ふうせん Fu-sen.
記事: 561
登録日時: 13/09/17(火) 10:01

Re: プログラミング: BaCon

投稿記事 by ふうせん Fu-sen. »

BaCon の日本語資料が全くない :x
こりゃ作るしかないですね :twisted:

https://github.com/fu-sen/BaCon-Japanese
ふうせん Fu-sen. ( old: 2 8 6 )
ふうせん Fu-sen.
記事: 561
登録日時: 13/09/17(火) 10:01

Re: プログラミング: BaCon

投稿記事 by ふうせん Fu-sen. »

BaCon はバイナリーで、
またエディタ型の BaCon GUI もバイナリーで入っています。

Lupu-528JP で 1.0 build 23、Precise-550JP で 1.0 bulid 29 になっていました。
今年4月に 2.0 が出ています。その後作られたソースだと実行できない可能性はありそうです。
添付ファイルを見るにはパーミッションが必要です
ふうせん Fu-sen. ( old: 2 8 6 )
ふうせん Fu-sen.
記事: 561
登録日時: 13/09/17(火) 10:01

Re: プログラミング: BaCon

投稿記事 by ふうせん Fu-sen. »

だいぶ翻訳しました。 :D

https://github.com/fu-sen/BaCon-Japanese

まぁ、これだけだとテキスト処理だけなので、
ウインドウ処理とかも含めた部分は、別途ライブラリの翻訳が必要になるのですが…… :roll:

BaCon そのものはだいぶ本来の BASIC に近い扱いができる上に
独自の命令を増やして、現代の環境に対応している感じですね。
ふうせん Fu-sen. ( old: 2 8 6 )
ふうせん Fu-sen.
記事: 561
登録日時: 13/09/17(火) 10:01

Re: プログラミング: BaCon

投稿記事 by ふうせん Fu-sen. »

BaCon の GUI ライブラリは HUG (Highlevel Universal GUI abstraction layer) が紹介されていて、
ほとんど HUG 経由で GUI の制御を行っているようなので、
HUG の翻訳もある程度行いました。 :D

/usr/share/BaCon 下に HUG 0.57 とライブラリが入っていますので、
ここから読み込んで GUI 処理が可能です。
HUG は GUI 特有の制御があるので BASIC らしさはないですね。
PSET じゃなくて PIXEL なのね……とか……
でも機能を見れば理解できる人も少なくないかと思います。

完全ではありませんが、だいぶ日本語化できたので、
これである程度は理解してプログラムを組めるようにはできたかな〜と…… :P


サンプルになるもの

the BaCon language
http://bkhome.org/bacon/
Barry さんがちゃんと BaCon のページを作ってます。 :lol:
My BaCon tutorials をまずは行ってみるとよろしいかと。

BaCon - A free BAsic CONverter for Unix, BSD and MacOSX
http://www.basic-converter.org/
テモ・サンプルの各プログラムがあります。

BaCon - Bash-based Basic-to-C converter/compiler - Puppy Linux Discussion Forum
http://www.murga-linux.com/puppy/viewtopic.php?t=48901
いろいろと試行錯誤してありますが、その中にもプログラムがあります。
一番最初の添付ファイルは BaCon の環境なので、これは入手しなくても構いません。


さあ作りましょう。BASIC で実行ファイルを作りましょう! :twisted: :twisted: :twisted:
ふうせん Fu-sen. ( old: 2 8 6 )
ふうせん Fu-sen.
記事: 561
登録日時: 13/09/17(火) 10:01

Re: プログラミング: BaCon

投稿記事 by ふうせん Fu-sen. »

ここまでやってしまった…… :lol: :shock: :o

http://sourceforge.jp/projects/bacon/
https://sites.google.com/site/basicprogramjpn/

Puppy に出会ってなかったら、やっていなかったはずです。 :wink:
ふうせん Fu-sen. ( old: 2 8 6 )
Endeavor_wako
記事: 380
登録日時: 09/09/18(金) 01:54

Re: プログラミング: BaCon

投稿記事 by Endeavor_wako »

既出かもしれませんが。

PuppyLinuxは基幹部分をシェルスクリプトで記述しているのが特徴だと思っていたのですが、そうでもないのですね。

571JPにてちょっとした思いつきがあって(挿入したUSBメモリを自動認識して各々起動するアプリケーションを切り替えたい)、手始めに pup_event_frontend_d を開いてみたのですが、中身は /usr/local/pup_event/pup_event_frontend_dへのチェーンです。しかもそれは compiled daemon. とか。
で、/usr/local/pup_event/ をチェックしてみたら開発言語はBASIC でした。(pup_event_frontend_d.bac が同梱)

もしや、と思って550JP(puppy_precise_5.5JP.sfs)をチェックしたらそちらはシェルスクリプトのまま。冒頭のコメント行の最後が#130216 add support for f2fs.で終わってます。

シェルスクリプトのままだと何か問題があったんでしょうか?
(ソースより)
REM this little daemon reads kernel uevents.
REM vovchik: compile like this, reduces executable 34K to 9K...
34K -> 9K は確かに大きいとは思いますが。5.5と5.7.1では見ため以上に違いがあるのかなあ。

個人的にはすぐにはBASICを受け付けませんので(予約語が大文字って本当に読みにくい Orz)、バイナリスタイルへ移行するならCで記述して欲しかったです...
baconにはそれだけのポテンシャルがあるという証明にはなるのでしょうけど。

何はともあれ、こんなに重要なデーモンを/usr/localに入れるなと問い詰めたい。小一時間(ry

注)devxをマウントしています。
Main:NEC VersaPro VB-B (Core i5, RAM4GB, SSD, LinuxMint (xfce4,amd64))
Sub:Fujitsu note pc (Celeron、RAM8GB, SSD, LinuxMint (xfce4, amd64))

Puppyを使わなくなって久しい今日この頃。Raspiや32ビットPCにdebian入れてヘッドレスで
遊んでます。
ふうせん Fu-sen.
記事: 561
登録日時: 13/09/17(火) 10:01

Re: プログラミング: BaCon

投稿記事 by ふうせん Fu-sen. »

今 Puppy は シェル から BaCon へと次々を中身を変えています。

この要因ですが、一番の目的は 国際化対応 のようです。
mo・po による言語対応を BaCon で行う事が実現でき、
現在 /usr/share/locale 内に言語ファイル群が集められています。

こうなってくると、日本語版 としてではなく、
オリジナル版で日本語が使えるように本格対応される日も近いかもしれませんねぇ。 :shock: :roll: :D
ただし言語ファイルを沢山いれて太らせてしまうのは好まれないでしょうから、
おそらくそうなっても言語ファイルはパッケージ提供になるでしょうね。

GUI 表示もシェルより細かい指定ができるので、(ウインドウ内を座標指定できるとか)
そういう点でもより多彩な GUI が手軽に扱える点でも良いようです。
C 言語の仲介によって、多彩なライブラリも扱えます。BaCon は未来があります。

よくぞ、これを探してきてくれたなぁ〜と、この点でも自分もバリーさんには感謝です。
昔覚えた BASIC を生かせる時がくるとは思っていませんでした。 :P
ふうせん Fu-sen. ( old: 2 8 6 )
新谷
記事: 934
登録日時: 08/10/09(木) 18:52
お住まい: 大阪

Re: プログラミング: BaCon

投稿記事 by 新谷 »

ふうせんさんの解説のとおり、結構今回はBaconが使われてますね。

特に、pup_event_XXX系(デーモン)のBaconへの置き換えは、とても興味深く感じました。
これは国際化ということもあるでしょうが、シェルスクリプトからバイナリファイルに置き換えることによってリソースを節約して、軽快に動作させようということではないでしょうか。

その方面に詳しい方の解説を伺いたいところです。
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

BaConの国際化

投稿記事 by シノバー »

BarryさんがBaconを採用した理由に国際化は関係ないでしょ。
Bashでも国際化できることは早くから知られてましたし。
welcome1stbootをBaconで書いたのは、彼が国際化に関心を持った時期にBaconに触れ、「あ、Baconでも国際化できるんだ」と思った偶然のなせるわざ?
welcome1stbootはBashでも問題なく書けるはず。

pup_event_frontend_d は何らかの方法で高速化する必要はありました。かっては高速化のために Bashでなく Ash(同じ busyboxだが、bashより数倍速い) を使ってました。

ただし、pup_event_xxx まわりは方式をかなり変更していて、そちらも高速化に役立っているかもしれません。(私、詳しくないです。)
The bar master, Shino's Bar
http://shinobar.net/
ふうせん Fu-sen.
記事: 561
登録日時: 13/09/17(火) 10:01

Re: プログラミング: BaCon

投稿記事 by ふうせん Fu-sen. »

あ、そこじゃないんですね。 :o

だとすると FreeBasic 他(……があったはずですがでてこない……)の環境を外して
BaCon を採用していたりしますので、
単に開発環境の入れ替えだったのでしょうねぇ。
高速化とか、そういう事ではなく。
ふうせん Fu-sen. ( old: 2 8 6 )
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

Re: プログラミング: BaCon

投稿記事 by シノバー »

pup_event_frontend_d のBacon化は高速化の必要から必然性あり。
welcome1stbootのBacon化は、単なる小手調べかな。
The bar master, Shino's Bar
http://shinobar.net/
ふうせん Fu-sen.
記事: 561
登録日時: 13/09/17(火) 10:01

Re: プログラミング: BaCon

投稿記事 by ふうせん Fu-sen. »

BaCon の魅力を話しておくと……
window5.jpg
ウインドウの表示はこんなにシンプルなコード。
kanji.jpg
シンプルなコードで形にできるという事だけでも魅力はあると思います。

上記では GUI ライブラリの hug.bac を INCLUDE "hug.bac" としてますが、
Puppy Linux には devx でこれが含まれています。
INCLUDE "/usr/share/BaCon/hug.bac" で、素早く実行できます。
添付ファイルを見るにはパーミッションが必要です
ふうせん Fu-sen. ( old: 2 8 6 )
ふうせん Fu-sen.
記事: 561
登録日時: 13/09/17(火) 10:01

Re: プログラミング: BaCon

投稿記事 by ふうせん Fu-sen. »

今後のためにも、解説をしておいた方が良いと思うので、入れておきますね。

Precise-571JP で最初に起動した時のこの画面……
端末から welcome1stboot でいつでも表示できます。
welcome1stboot.jpg
もうこの画面が BaCon で作られています。
(今これを見ると日本語がおかしいので、ここも手を入れて良かったですね…… :x
welcome1stboot2.jpg
画面で選択しているところが「ようこそ!、ワン、ワン」のところです。
INTL$ で囲む事によって LOCALE を用いて各国語に対応しています。.mo .po を使うものですね。
devx を読み込んでおくと、実行ファイルと同じ /usr/sbin に welcome1stboot.bac が入ります。
これが BaCon のソースです。
添付ファイルを見るにはパーミッションが必要です
ふうせん Fu-sen. ( old: 2 8 6 )
ふうせん Fu-sen.
記事: 561
登録日時: 13/09/17(火) 10:01

Re: プログラミング: BaCon

投稿記事 by ふうせん Fu-sen. »

ソースに日本語と解説を入れてちょっと分かりやすくしてみました。
このソースはライセンスとして GPLv3 を明示してありますので、
ライセンスに乗っ取り、GPLv3 を継承します。

https://drive.google.com/file/d/0B8YX2d ... sp=sharing

.txt を外して welcome1stboot.bac としてからテキストエディタで中を見てみましょう。
その後端末を起動し、bacon welcome1stboot とします。

コード: 全て選択

# bacon welcome1stboot
Converting 'welcome1stboot.bac'... done.
Program 'welcome1stboot' ready.
# ■
こんな感じになれば正常に welcome1stboot の実行ファイルができたはずです。
早速クリックしてみて下さい。同じものが表示されたでしょう。
(端末から実行する場合は ./welcome1stboot として下さい。
 ./ がないと Puppy に入っているプログラムが起動されます。)

日本語部分を編集したり、画像を変えてみたり、
表示位置を変えてみたりするとよろしいかと思います。 :D
最後に編集したユーザー ふうせん Fu-sen. [ 14/03/19(水) 15:36 ], 累計 3 回
ふうせん Fu-sen. ( old: 2 8 6 )
返信する