ページ 1 / 2
プログラミング: BaCon
Posted: 13/09/20(金) 21:15
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 でアプリが作れてしまうのは面白いですね。
Re: プログラミング: BaCon
Posted: 13/09/21(土) 11:48
by ふうせん Fu-sen.
Re: プログラミング: BaCon
Posted: 13/09/21(土) 21:36
by ふうせん Fu-sen.
BaCon はバイナリーで、
またエディタ型の BaCon GUI もバイナリーで入っています。
Lupu-528JP で 1.0 build 23、Precise-550JP で 1.0 bulid 29 になっていました。
今年4月に 2.0 が出ています。その後作られたソースだと実行できない可能性はありそうです。
Re: プログラミング: BaCon
Posted: 13/09/22(日) 15:22
by ふうせん Fu-sen.
だいぶ翻訳しました。
https://github.com/fu-sen/BaCon-Japanese
まぁ、これだけだとテキスト処理だけなので、
ウインドウ処理とかも含めた部分は、別途ライブラリの翻訳が必要になるのですが……
BaCon そのものはだいぶ本来の BASIC に近い扱いができる上に
独自の命令を増やして、現代の環境に対応している感じですね。
Re: プログラミング: BaCon
Posted: 13/09/22(日) 18:55
by ふうせん Fu-sen.
BaCon の GUI ライブラリは HUG (Highlevel Universal GUI abstraction layer) が紹介されていて、
ほとんど HUG 経由で GUI の制御を行っているようなので、
HUG の翻訳もある程度行いました。
/usr/share/BaCon 下に HUG 0.57 とライブラリが入っていますので、
ここから読み込んで GUI 処理が可能です。
HUG は GUI 特有の制御があるので BASIC らしさはないですね。
PSET じゃなくて PIXEL なのね……とか……
でも機能を見れば理解できる人も少なくないかと思います。
完全ではありませんが、だいぶ日本語化できたので、
これである程度は理解してプログラムを組めるようにはできたかな〜と……
サンプルになるもの
the BaCon language
http://bkhome.org/bacon/
Barry さんがちゃんと BaCon のページを作ってます。
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 で実行ファイルを作りましょう!
Re: プログラミング: BaCon
Posted: 14/01/09(木) 21:59
by ふうせん Fu-sen.
Re: プログラミング: BaCon
Posted: 14/01/26(日) 13:29
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をマウントしています。
Re: プログラミング: BaCon
Posted: 14/01/26(日) 14:20
by ふうせん Fu-sen.
今 Puppy は シェル から BaCon へと次々を中身を変えています。
この要因ですが、一番の目的は
国際化対応 のようです。
mo・po による言語対応を BaCon で行う事が実現でき、
現在 /usr/share/locale 内に言語ファイル群が集められています。
こうなってくると、日本語版 としてではなく、
オリジナル版で日本語が使えるように本格対応される日も近いかもしれませんねぇ。
ただし言語ファイルを沢山いれて太らせてしまうのは好まれないでしょうから、
おそらくそうなっても言語ファイルはパッケージ提供になるでしょうね。
GUI 表示もシェルより細かい指定ができるので、(ウインドウ内を座標指定できるとか)
そういう点でもより多彩な GUI が手軽に扱える点でも良いようです。
C 言語の仲介によって、多彩なライブラリも扱えます。BaCon は未来があります。
よくぞ、これを探してきてくれたなぁ〜と、この点でも自分もバリーさんには感謝です。
昔覚えた BASIC を生かせる時がくるとは思っていませんでした。
Re: プログラミング: BaCon
Posted: 14/01/26(日) 15:51
by 新谷
ふうせんさんの解説のとおり、結構今回はBaconが使われてますね。
特に、pup_event_XXX系(デーモン)のBaconへの置き換えは、とても興味深く感じました。
これは国際化ということもあるでしょうが、シェルスクリプトからバイナリファイルに置き換えることによってリソースを節約して、軽快に動作させようということではないでしょうか。
その方面に詳しい方の解説を伺いたいところです。
BaConの国際化
Posted: 14/01/26(日) 21:38
by シノバー
BarryさんがBaconを採用した理由に国際化は関係ないでしょ。
Bashでも国際化できることは早くから知られてましたし。
welcome1stbootをBaconで書いたのは、彼が国際化に関心を持った時期にBaconに触れ、「あ、Baconでも国際化できるんだ」と思った偶然のなせるわざ?
welcome1stbootはBashでも問題なく書けるはず。
pup_event_frontend_d は何らかの方法で高速化する必要はありました。かっては高速化のために Bashでなく Ash(同じ busyboxだが、bashより数倍速い) を使ってました。
ただし、pup_event_xxx まわりは方式をかなり変更していて、そちらも高速化に役立っているかもしれません。(私、詳しくないです。)
Re: プログラミング: BaCon
Posted: 14/01/26(日) 22:17
by ふうせん Fu-sen.
あ、そこじゃないんですね。
だとすると FreeBasic 他(……があったはずですがでてこない……)の環境を外して
BaCon を採用していたりしますので、
単に開発環境の入れ替えだったのでしょうねぇ。
高速化とか、そういう事ではなく。
Re: プログラミング: BaCon
Posted: 14/01/26(日) 22:29
by シノバー
pup_event_frontend_d のBacon化は高速化の必要から必然性あり。
welcome1stbootのBacon化は、単なる小手調べかな。
Re: プログラミング: BaCon
Posted: 14/02/04(火) 10:55
by ふうせん Fu-sen.
BaCon の魅力を話しておくと……
window5.jpg
ウインドウの表示はこんなにシンプルなコード。
kanji.jpg
シンプルなコードで形にできるという事だけでも魅力はあると思います。
上記では GUI ライブラリの hug.bac を INCLUDE "hug.bac" としてますが、
Puppy Linux には devx でこれが含まれています。
INCLUDE "/usr/share/BaCon/hug.bac" で、素早く実行できます。
Re: プログラミング: BaCon
Posted: 14/02/06(木) 10:13
by ふうせん Fu-sen.
今後のためにも、解説をしておいた方が良いと思うので、入れておきますね。
Precise-571JP で最初に起動した時のこの画面……
端末から
welcome1stboot でいつでも表示できます。
welcome1stboot.jpg
もうこの画面が BaCon で作られています。
(今これを見ると日本語がおかしいので、ここも手を入れて良かったですね……
)
welcome1stboot2.jpg
画面で選択しているところが「ようこそ!、ワン、ワン」のところです。
INTL$ で囲む事によって LOCALE を用いて各国語に対応しています。.mo .po を使うものですね。
devx を読み込んでおくと、実行ファイルと同じ /usr/sbin に welcome1stboot.bac が入ります。
これが BaCon のソースです。
Re: プログラミング: BaCon
Posted: 14/02/06(木) 11:05
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 に入っているプログラムが起動されます。)
日本語部分を編集したり、画像を変えてみたり、
表示位置を変えてみたりするとよろしいかと思います。