<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Basic on akky@サイボウズラボ・ブログ</title>
		<link>https://labs.cybozu.co.jp/blog/akky/tags/basic/</link>
		<description>Recent content in Basic on akky@サイボウズラボ・ブログ</description>
		<generator>Hugo</generator>
		<language>ja</language>
		
		
		
		
			<lastBuildDate>Wed, 08 Jun 2022 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://labs.cybozu.co.jp/blog/akky/tags/basic/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>EndBASIC - Rustで書かれたBASICインタプリタ&#43;環境</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/</link>
				<pubDate>Wed, 08 Jun 2022 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/</guid>
				<description>&lt;p&gt;フリオ・メリノさん(Julio Merino)による&lt;a href=&#34;https://www.endbasic.dev/&#34;&gt;BASIC処理系プロジェクト EndBASIC&lt;/a&gt;は、新たに書き起こされたBASICインタプリタに、MS-DOS風のコマンドラインを組み合わせたBASIC言語の処理系です。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.endbasic.dev/&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/endbasic-top_hu_975fbcd13bc1b694.webp 480w, https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/endbasic-top_hu_8e9d56115d902345.webp 768w, https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/endbasic-top_hu_5c19793aeb107553.webp 981w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/endbasic-top.png&#34; width=&#34;981&#34; height=&#34;908&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;EndBASIC サイトトップ&lt;/p&gt;&#xA;&lt;p&gt;BASIC としての文法や機能は、Amstrad CPC という1980年代の8bitパソコンで動いた&lt;a href=&#34;https://en.wikipedia.org/wiki/Locomotive_BASIC&#34;&gt;Locomotive BASIC&lt;/a&gt;や、&lt;a href=&#34;https://ja.wikipedia.org/wiki/QuickBASIC&#34;&gt;マイクロソフトのQuickBASIC&lt;/a&gt; を意識したものとなっているそう。&lt;/p&gt;&#xA;&lt;p&gt;Linux/MacOS/Windows のバイナリをダウンロードして手元で動かすこともできますが、&lt;a href=&#34;https://repl.endbasic.dev/&#34;&gt;ブラウザ上でも動く環境が公開&lt;/a&gt;されています。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://repl.endbasic.dev/&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/endbasic-on-chrome_hu_41396642765eeaee.webp 480w, https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/endbasic-on-chrome_hu_d6576c46b00b13b6.webp 676w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/endbasic-on-chrome.png&#34; width=&#34;676&#34; height=&#34;247&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Rust で書かれた処理系が WebAssembly で動いているということで、昔からあるBASIC 言語を最新の技術と組み合わせているんですね。QuickBASIC で書かれたプログラムを少し直してウェブで公開、なんてことにも使えるかもしれません。&lt;/p&gt;&#xA;&lt;p&gt;環境にはCUIエディタも内蔵されており、編集したファイルは環境内に保存することもできます。フラットに保存しファイル名で区別。ディレクトリについては今後の実装を検討ということ。また「ドライブ」を複数作ることができるのでドライブでの整理もできそうです。&lt;/p&gt;&#xA;&lt;p&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/endbasic-sample_hu_eaea25b1beb65799.webp 431w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/endbasic-sample.png&#34; width=&#34;431&#34; height=&#34;348&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/p&gt;&#xA;&lt;p&gt;EndBASIC のサンプルコード&lt;/p&gt;&#xA;&lt;p&gt;BASIC言語ではよくある行番号機能は、GO TO 命令と共に省かれています。&lt;a href=&#34;https://www.endbasic.dev/docs.html#lang-goto&#34;&gt;そのうち実装するかもということ&lt;/a&gt;ですが、分岐とループ命令でおおかたは問題ないかと思います。&lt;/p&gt;&#xA;&lt;p&gt;面白いのは&lt;a href=&#34;https://www.endbasic.dev/docs.html#cloud&#34;&gt;クラウド対応機能&lt;/a&gt;で、ユーザー登録するとユーザー名以下に置いたファイルを他ユーザーと共有できるようになります。&lt;/p&gt;&#xA;&lt;p&gt;Raspberry PI で動かした時は&lt;a href=&#34;https://www.endbasic.dev/docs.html#hw-gpio&#34;&gt;GPIO&lt;/a&gt;にアクセスできる命令が提供されていて、ボタンやLEDなどの入出力が使えるそう。これも教育用としてよさそう。&lt;/p&gt;&#xA;&lt;p&gt;今はプログラミングに入門する時の言語も多数候補がありますが、昔は入門言語といえばBASICが主流ということもありました。プロジェクトでは、プログラムとプログラムを動かす環境が最小限でセットになっていることで、セットアップの苦労なしにプログラミングの学習ができるようにすることを目指しているそう。&lt;/p&gt;&#xA;&lt;p&gt;via &lt;a href=&#34;https://news.ycombinator.com/item?id=31651881&#34;&gt;Hacker News&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>BBC Micro bot - ツイッターで走るBASICインタプリタ</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2020/02/basic-emulator-twitter-bot/</link>
				<pubDate>Wed, 19 Feb 2020 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2020/02/basic-emulator-twitter-bot/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://twitter.com/bbcmicrobot&#34;&gt;@bbcmicrobot&lt;/a&gt; に対して、&lt;a href=&#34;https://ja.wikipedia.org/wiki/BBC_Micro&#34;&gt;BBC BASIC&lt;/a&gt; のソースコードをつぶやくと、&lt;/p&gt;&#xA;&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;qme&#34; dir=&#34;ltr&#34;&gt; &lt;a href=&#34;https://t.co/AKRxKKM43H&#34;&gt;pic.twitter.com/AKRxKKM43H&lt;/a&gt;&lt;/p&gt;&amp;mdash; BBC Micro Bot (@bbcmicrobot) &lt;a href=&#34;https://x.com/bbcmicrobot/status/1230066377081413633?ref_src=twsrc%5Etfw&#34;&gt;February 19, 2020&lt;/a&gt;&lt;/blockquote&gt;&#xA;&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&#xA;&#xA;&#xA;&lt;p&gt;エミュレーターで実行して結果をアニメーションGIFで表示してくれるという bot が登場してます。&lt;/p&gt;&#xA;&lt;p&gt;BBC BASIC というのは、1980年代にイギリスで教育用に開発された BBC Micro というパーソナルコンピューターに搭載されていた BASIC 言語だということです。&lt;/p&gt;&#xA;&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;qme&#34; dir=&#34;ltr&#34;&gt; &lt;a href=&#34;https://t.co/KIRZJSB1gC&#34;&gt;pic.twitter.com/KIRZJSB1gC&lt;/a&gt;&lt;/p&gt;&amp;mdash; BBC Micro Bot (@bbcmicrobot) &lt;a href=&#34;https://x.com/bbcmicrobot/status/1226830837573967872?ref_src=twsrc%5Etfw&#34;&gt;February 10, 2020&lt;/a&gt;&lt;/blockquote&gt;&#xA;&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&#xA;&#xA;&#xA;&lt;p&gt;この @bbcmicrobot 、&lt;a href=&#34;http://www.8bitkick.cc/bbc-micro-bot.html&#34;&gt;@dominicpajak さんの手によるもの&lt;/a&gt;で、BBC とは何の関係もない非公式のアカウントだそうです。&lt;/p&gt;&#xA;&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;qme&#34; dir=&#34;ltr&#34;&gt; &lt;a href=&#34;https://t.co/rsOfFiWbIv&#34;&gt;pic.twitter.com/rsOfFiWbIv&lt;/a&gt;&lt;/p&gt;&amp;mdash; BBC Micro Bot (@bbcmicrobot) &lt;a href=&#34;https://x.com/bbcmicrobot/status/1229878116996218881?ref_src=twsrc%5Etfw&#34;&gt;February 18, 2020&lt;/a&gt;&lt;/blockquote&gt;&#xA;&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&#xA;&#xA;&#xA;&lt;p&gt;Twitter API からリプライを取得し、Node.js 上で BBC Micro のエミュレータである &lt;a href=&#34;https://github.com/mattgodbolt/jsbeeb&#34;&gt;JSbeeb BBC Micro emulator&lt;/a&gt; を呼び出してコードを実行、20秒後に画面をアニメーションGIF化してTwitter API でリプライする、という仕組みだそうです。&lt;/p&gt;&#xA;&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;qme&#34; dir=&#34;ltr&#34;&gt; &lt;a href=&#34;https://t.co/bQDdk5p3j0&#34;&gt;pic.twitter.com/bQDdk5p3j0&lt;/a&gt;&lt;/p&gt;&amp;mdash; BBC Micro Bot (@bbcmicrobot) &lt;a href=&#34;https://x.com/bbcmicrobot/status/1228591745706942464?ref_src=twsrc%5Etfw&#34;&gt;February 15, 2020&lt;/a&gt;&lt;/blockquote&gt;&#xA;&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&#xA;&#xA;&#xA;&lt;p&gt;早速、いろいろなコードが投げつけられ、&lt;a href=&#34;https://twitter.com/bbcmicrobot&#34;&gt;いろいろと懐かしい感じのアウトプットが並んでいます&lt;/a&gt;。&lt;/p&gt;&#xA;&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;qme&#34; dir=&#34;ltr&#34;&gt; &lt;a href=&#34;https://t.co/OoZL5bMjYN&#34;&gt;pic.twitter.com/OoZL5bMjYN&lt;/a&gt;&lt;/p&gt;&amp;mdash; BBC Micro Bot (@bbcmicrobot) &lt;a href=&#34;https://x.com/bbcmicrobot/status/1229151128358703107?ref_src=twsrc%5Etfw&#34;&gt;February 16, 2020&lt;/a&gt;&lt;/blockquote&gt;&#xA;&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&#xA;&#xA;&#xA;&lt;p&gt;書かれている BBC BASIC のコードを見た限り、N-BASIC とかそのあたりと大きく違う感じはなさそうです。&lt;a href=&#34;http://www.bbcbasic.co.uk/bbcbasic/manual/&#34;&gt;オンラインの言語マニュアル&lt;/a&gt;もあるので、試してみたい方はどうぞ&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
