<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>プログラミング言語 on akky@サイボウズラボ・ブログ</title>
		<link>https://labs.cybozu.co.jp/blog/akky/tags/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E/</link>
		<description>Recent content in プログラミング言語 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/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E/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>Folders.py - ディレクトリ構成(だけ)で書く変態プログラミング言語 Folders の Python 実装</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2022/01/folders-py-runs-file-system-folders-as-a-program/</link>
				<pubDate>Mon, 17 Jan 2022 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2022/01/folders-py-runs-file-system-folders-as-a-program/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://github.com/SinaKhalili/Folders.py&#34;&gt;Folders.py&lt;/a&gt; は、難解(esoteric)プログラミング言語と言われる変わったプログラミング言語のひとつ &lt;a href=&#34;http://esolangs.org/wiki/Folders&#34;&gt;Folders&lt;/a&gt; の Python による実装です。&lt;/p&gt;&#xA;&lt;p&gt;オリジナルの Folders 処理系は 2015年に &lt;a href=&#34;https://danieltemkin.com/Esolangs/Folders/&#34;&gt;C# で書かれた&lt;/a&gt;ということです。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;プログラムはディレクトリの階層構造として記述される&lt;/li&gt;&#xA;&lt;li&gt;フォルダ内のファイルはすべて無視される&lt;/li&gt;&#xA;&lt;li&gt;文や式はフォルダ内にあるサブフォルダの個数によって定義される&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;コマンドの定義はこんな感じ。&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;コマンド&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;サブフォルダの数&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;詳細(引数など)&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;if&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0 folders&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Second sub-folder holds expression, third holds list of commands&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;while&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1 folder&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Second sub-folder holds expression, third holds list of commands&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;declare&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;2 folders&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Second sub-folder holds type, third holds var name (in number of folders, ex. zero folders becomes &amp;ldquo;var_0&amp;rdquo;)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;let&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;3 folders&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Second sub-folder hold variable name (in number of folders), third holds an expression&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;print&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;4 folders&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Second sub-folder holds expression&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;input&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;5 folders&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Second sub-folder holds variable name&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Expression, Type も同じような表で、サブフォルダの個数と改装で定義されます。&lt;/p&gt;</description>
			</item>
			<item>
				<title>プログラムはロックだ。あるいはロックがプログラムだ。プログラミング言語Rockstar</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2018/07/programming-language-rockstar/</link>
				<pubDate>Mon, 23 Jul 2018 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2018/07/programming-language-rockstar/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://github.com/wolfgang42/rockstar-js&#34;&gt;rockstar-js&lt;/a&gt; は、&lt;a href=&#34;https://github.com/dylanbeattie/rockstar&#34;&gt;Rockstar言語&lt;/a&gt;の JavaScript によるトランスパイラ実装です。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/dylanbeattie/rockstar&#34;&gt;Rockstarプログラミング言語とは何か? 言語仕様書&lt;/a&gt;にあるように、「1980年代ハードロック・パワーバラードの歌詞に大きく影響を受けた、歌詞として通用するプログラムが書けるようにデザインされた新言語」です。&lt;/p&gt;&#xA;&lt;p&gt;FizzBuzz の実装は、サンプルコードからたとえばこんな感じになるということで、&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;Modulus takes Number and Divisor While Number is as high as Divisor Put Number minus Divisor into Number (blank line ending While block) Give back Number (blank line ending function declaration) Limit is 100 Counter is 0 Fizz is 3 Buzz is 5 Until Counter is Limit Build Counter up …&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;これだと、英語の文章風といってもまだ「あ、プログラミング言語だな。FizzBuzz 書いてるんだな」となりますが、言語仕様を活用してロック風に書いた例では、こんな風になってきます。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;Midnight takes your heart and your soul While your heart is as high as your soul Put your heart without your soul into your heart  Give back your heart  Desire is a lovestruck ladykiller My world is nothing Fire is ice Hate is water Until my world is Desire Build my world up If Midnight taking my world, Fire is nothing and Midnight taking my world, Hate is nothing Shout &amp;quot;FizzBuzz!&amp;quot; Take it to the top  …&lt;/code&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Anyprint - いろんな言語のprint命令がPythonで使えるライブラリ</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2017/07/anyprint-supports-multilanguage-print/</link>
				<pubDate>Fri, 21 Jul 2017 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2017/07/anyprint-supports-multilanguage-print/</guid>
				<description>&lt;p&gt;ライブラリ &lt;a href=&#34;https://github.com/kragniz/anyprint&#34;&gt;anyprint&lt;/a&gt; をインポートするだけで、Python で以下のような出力文が書けるようになります。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;code&gt;printf(&amp;quot;printf %d\n&amp;quot;, 10);  fmt.Println(&amp;quot;hello&amp;quot;)  cout &amp;lt;&amp;lt; &amp;quot;Hello, C++!&amp;quot; &amp;lt;&amp;lt; endl;  Print[&amp;quot;Hello from Mathematica!&amp;quot;]  console.log(&amp;quot;yes&amp;quot;);  io.write(&amp;quot;lua land&amp;quot;)  System.out.printf(&amp;quot;java stuff\n&amp;quot;);  System.Console.WriteLine(&amp;quot;C# looks awkard&amp;quot;);  Ada.Text_IO.Put_Line(&amp;quot;Ada is cool&amp;quot;)  IO.puts(&amp;quot;elixir&amp;quot;)&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;現在サポートされている他言語は、go, Java, VB .NET, C(とその類似言語), ActionScript, Ada, &lt;a href=&#34;https://en.wikipedia.org/wiki/Amiga_E&#34;&gt;Amiga E&lt;/a&gt;, ASP, B, D, &lt;a href=&#34;https://en.wikipedia.org/wiki/PureBasic&#34;&gt;PureBasic&lt;/a&gt;, Clipper, C++, C#, Delphi, JavaScript, Lua, Mathematica, matlab, nim, Pascal, Pike, Elixir のようです。&lt;/p&gt;&#xA;&lt;p&gt;Objective-C の NSLog, Ruby のp は&lt;a href=&#34;https://github.com/kragniz/anyprint/pull/12&#34;&gt;プルリクエスト&lt;/a&gt;が出ています。Closure風 と Rust風は Python の中では難しいと作者が答えていますが、誰か解決できる人がいたら挑戦してみてはどうでしょうか。&lt;/p&gt;&#xA;&lt;p&gt;Pythonがメインの言語でない人でも、これを入れておけば自分の慣れた方法でprintできますね。&lt;/p&gt;&#xA;&lt;p&gt;利用者からの推薦文が載ってますが、味わい深いです。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;「おかしいよあんた」&lt;/li&gt;&#xA;&lt;li&gt;「馬鹿馬鹿しいし役立たずだ」&lt;/li&gt;&#xA;&lt;li&gt;「僕の推薦文を追加してよ『なんて正確な推薦文たち』」&lt;/li&gt;&#xA;&lt;li&gt;「kragniz, おかしなPythonのメタモジュールばっかり公開するのはよせよ」&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;via Hacker News&lt;/p&gt;</description>
			</item>
			<item>
				<title>絵文字プログラミング言語 emojicode</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2016/03/emoji-programming-language-emojicode/</link>
				<pubDate>Fri, 04 Mar 2016 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2016/03/emoji-programming-language-emojicode/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;http://www.emojicode.org/&#34;&gt;Emojicode&lt;/a&gt;は、&lt;a href=&#34;https://github.com/emojicode/emojicode&#34;&gt;オープンソース&lt;/a&gt;の高水準・マルチパラダイム・オブジェクト指向・マルチプラットフォーム対応の静的型付き言語です。&lt;/p&gt;&#xA;&lt;p&gt;その一番の特徴は、型、メソッド、クラスメソッド、初期化子がすべて絵文字だというところでしょう。(反対に、変数名には絵文字を含むことができません。)&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2016/03/emoji-programming-language-emojicode/emojicode-top.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2016/03/emoji-programming-language-emojicode/emojicode-top_hu_a6dfbb646cc1c451.webp 480w, https://labs.cybozu.co.jp/blog/akky/2016/03/emoji-programming-language-emojicode/emojicode-top_hu_b3aaaa63ab3626fe.webp 768w, https://labs.cybozu.co.jp/blog/akky/2016/03/emoji-programming-language-emojicode/emojicode-top_hu_b04aaa2294a30348.webp 771w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2016/03/emoji-programming-language-emojicode/emojicode-top.png&#34; width=&#34;771&#34; height=&#34;968&#34; alt=&#34;emojicode-top&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.emojicode.org/docs/&#34;&gt;本格的なドキュメント&lt;/a&gt;が用意されていて、まだ一部しか読んでないのですが、いくつか紹介します。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;👴 コメント  👵 改行入り 複数行コメント 👵&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;「&lt;a href=&#34;http://emojipedia.org/older-man/&#34;&gt;老人&lt;/a&gt;」の絵文字が一行コメント。老婆で挟むと複数行のコメントも書けます。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;🍮 index 35 🍮 isAvailable 👍 🍦 limit 12 🍦 GREETINGS 🔤This is a string.🔤&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;プリンが変数宣言、ソフトクリームはconst変数(凍ってるから)。true/false の 👍/👎 はわかりやすいですね。&lt;/p&gt;&#xA;&lt;p&gt;🔤 が文字列を表す絵文字で、🔤自身を文字として扱いたいときは❌🔤でエスケープするそうです。&lt;/p&gt;&#xA;&lt;p&gt;制御文やクラス定義なども、当然に専用の絵文字が用意されているのですが、読んでて頭が痛くなってきました。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.emojicode.org/docs/packages/&#34;&gt;基本的なライブラリ&lt;/a&gt;も、当然ながら絵文字で提供されています。&lt;/p&gt;&#xA;&lt;p&gt;本に挟まるしおりの絵文字 📑 が、ファイルシステム。複数の本の絵文字 📚 は、データベースクラス、 💬 がSQLクエリクラスです。&lt;/p&gt;&#xA;&lt;p&gt;キーボードの絵文字⌨ はキー入力イベントクラスで、エラークラスは回転灯の絵文字 🚨&lt;/p&gt;&#xA;&lt;p&gt;トップに出ているサンプルコードは、フィボナッチ数列を表示するもので、こんな感じに。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;🐇 🏤 🍇 🐇🐖 🏁 ➡️ 🚂 🍇 👴 Let’s print a few fibonaccis.  🍮 i 0 🍮 a 0 🍮 b 1  🔁 ◀️ i 15 🍇 🍮 r ➕ a b 🍮 a b 🍮 b r 😀 🔷🔡🚂 r 10 🍫 i 🍉  🍎 0 🍉 🍉&lt;/code&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>プログラミング言語TrumpScript</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2016/01/programming-language-donald-trump/</link>
				<pubDate>Fri, 22 Jan 2016 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2016/01/programming-language-donald-trump/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;http://samshadwell.me/TrumpScript/&#34;&gt;TrumpScript&lt;/a&gt; は、高名なドナルド・トランプ氏を基にした新たなプログラミング言語です。現在のプログラミング言語の中に、トランプ氏の豪華な金髪バーコードヘアにも気に入られるような言語が無いことから制作されました。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.flickr.com/photos/80038275@N00/17008571157/&#34;&gt;https://www.flickr.com/photos/80038275@N00/17008571157/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;特徴&#34;&gt;特徴&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;浮動小数点数無しで整数のみ。アメリカに中途半端はありません&lt;/li&gt;&#xA;&lt;li&gt;数は100万以上に限ります。それ以下の数字は取るに足らないからです&lt;/li&gt;&#xA;&lt;li&gt;import はできません。すべてのコードはアメリカで作った国産でなければなりません&lt;/li&gt;&#xA;&lt;li&gt;True/False(真/偽)ではなくfact/lie(事実/嘘)を使います&lt;/li&gt;&#xA;&lt;li&gt;良く知られた、トランプ氏の好きな&lt;a href=&#34;https://github.com/samshadwell/TrumpScript/blob/5a354880ec11146c4069af221a7456cde1e4e30e/src/trumpscript/allowed_words.py&#34;&gt;(2000個ちょっとの)英単語&lt;/a&gt;のみ。立候補者の名前は変数として使えます&lt;/li&gt;&#xA;&lt;li&gt;ほとんどのエラーメッセージはトランプ語録から採用されました&lt;/li&gt;&#xA;&lt;li&gt;プログラムは「アメリカは偉大だ(&amp;ldquo;America is great.&amp;quot;)」で終了しなければなりません&lt;/li&gt;&#xA;&lt;li&gt;TrumpScriptはそのままではWindowsで動きません。なぜならトランプ氏はPCを信じるような男ではないからです(註: PC=パソコン、と、PC=政治的正しさ、をかけてます)&lt;/li&gt;&#xA;&lt;li&gt;大文字小文字は完全に無視します&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;文法&#34;&gt;文法&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/samshadwell/TrumpScript&#34;&gt;文法の方&lt;/a&gt;はというと、演算や条件文についてはおおむね普通のものが用意されていて、TSの記法を覚えればすぐ書けるでしょう。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;is や are は代入。?で終われば比較になります&lt;/li&gt;&#xA;&lt;li&gt;make America great で、America に great を代入できます&lt;/li&gt;&#xA;&lt;li&gt;tell や say で出力できます&lt;/li&gt;&#xA;&lt;li&gt;as long as でループします&lt;/li&gt;&#xA;&lt;li&gt;不要な単語は全部無視されるので、うまく使えばかなり自然な演説文と両立させられます&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;トランプ氏が失敗について語りたがらないのと同様に、プログラムは多くの場合静かに失敗します。デバッグをゲーム的に楽しんでください。&lt;/p&gt;&#xA;&lt;h3 id=&#34;実行&#34;&gt;実行&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/samshadwell/TrumpScript/tree/master/test/test_files&#34;&gt;テストファイルがいくつかあるので&lt;/a&gt;、まずはこれを試してみるのがいいかもしれません。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/samshadwell/TrumpScript/blob/master/test/test_files/debate_vs_hillary.txt&#34;&gt;ヒラリー・クリントン氏とのディベートを再現したスクリプト&lt;/a&gt;を動かすと、こうなりました。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2016/01/programming-language-donald-trump/trumpscript-hilary.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2016/01/programming-language-donald-trump/trumpscript-hilary_hu_f273f2e6fa845599.webp 480w, https://labs.cybozu.co.jp/blog/akky/2016/01/programming-language-donald-trump/trumpscript-hilary_hu_d3a87d103954399f.webp 637w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2016/01/programming-language-donald-trump/trumpscript-hilary.png&#34; width=&#34;637&#34; height=&#34;238&#34; alt=&#34;trumpscript-hilary&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://ifunny.co/fun/TPDki4SO3&#34;&gt;元ネタがわかりません&lt;/a&gt;。まだ直接対決はないと思うので、コメントか何かで応酬した時のものでしょうか。&lt;/p&gt;&#xA;&lt;p&gt;テストスクリプトには手元ではエラーになるものも多いです。&lt;/p&gt;&#xA;&lt;p&gt;また、エラーになるのが正しいものも。not_english.txt では、スペイン語で書かれたスクリプトに対して、&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2016/01/programming-language-donald-trump/trumpscript-not-english.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2016/01/programming-language-donald-trump/trumpscript-not-english_hu_de637ddc743a9a1b.webp 480w, https://labs.cybozu.co.jp/blog/akky/2016/01/programming-language-donald-trump/trumpscript-not-english_hu_683d3e80ef13f268.webp 636w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2016/01/programming-language-donald-trump/trumpscript-not-english.png&#34; width=&#34;636&#34; height=&#34;393&#34; alt=&#34;trumpscript-not-english&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;「ここは英語で喋る国だ(&amp;ldquo;This is a country where we speak English&amp;rdquo;)」という例外が発生してます。&lt;/p&gt;</description>
			</item>
			<item>
				<title>Untrusted - JavaScriptをいじって先へ進むRogueライクゲーム</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/</link>
				<pubDate>Tue, 08 Apr 2014 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;http://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%82%B0%E3%83%A9%E3%82%A4%E3%82%AF%E3%82%B2%E3%83%BC%E3%83%A0&#34;&gt;ローグライクゲーム、というジャンル&lt;/a&gt;があります。Rogue(ローグ)を代表とする自動的に生成される迷路・迷宮から脱出するというゲームで、日本で有名なものでも、ネットハック、トルネコの大冒険、チョコボの不思議なダンジョンなど多数あります。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://alex.nisnevich.com/untrusted/&#34;&gt;Untrusted&lt;/a&gt; は、そのようなローグ風ゲームのバリエーションなのですが、JavaScriptのコードを操作することでパズル的な迷宮を解き、先へ進むというのが最大の特徴です。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-3.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-3_hu_e2d33f7720373311.webp 480w, https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-3_hu_e14b391d471db938.webp 768w, https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-3_hu_284f229987e9c9e3.webp 1248w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-3.png&#34; width=&#34;1248&#34; height=&#34;596&#34; alt=&#34;untrusted-3&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;画面左の迷宮で、自分のキャラクター&amp;quot;@&amp;ldquo;を、階段&amp;rdquo;□&amp;ldquo;まで、カーソルキーを使って導かなければいけません。しかし、普通に上下左右に移動しただけでは、出口にたどり着くことはできなくなっています。&lt;/p&gt;&#xA;&lt;p&gt;そこで、右側のコードに書かれた、迷宮を生成するJavaScriptのコードのうち、書き換えて良いという黒地の部分を変更し、Ctrl+5 で実行するとあら不思議、壁や出口の場所を書き換えてしまうことで、次の階へと進むことができるようになるというわけです。&lt;/p&gt;&#xA;&lt;p&gt;いかだを使ったり鍵を探したりと、面ごとに違う趣向の障害が配置されています。&lt;/p&gt;&#xA;&lt;p&gt;その階がどういうトラップなのか、どんな障害が設けられているかというヒントがJavaScriptのコメントとして書かれているので、解く際の参考になるでしょう。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-2.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-2_hu_3f7c860a76ed17ec.webp 480w, https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-2_hu_2cddc30d4d526935.webp 561w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-2.png&#34; width=&#34;561&#34; height=&#34;535&#34; alt=&#34;untrusted-2&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;壁を描画している部分の位置を書き換えるとか、出口の場所を移動するとか、で解ける面もありますが、後の面ではそれらを防ぐようなバリデーション・コードが追加されたりして、同じ手は2度使えないようになっています。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://alex.nisnevich.com/untrusted/&#34;&gt;UntrustedのソースコードはオープンソースとしてGitHub上で公開されています&lt;/a&gt;。ソースコードを見れば現在のダンジョンが何階あるかはわかってしまうのですが。&lt;/p&gt;&#xA;&lt;p&gt;# HackerNewsで紹介されたせいで、現在ゲームはちょっと重かったり、正しく動かなかったりすることがあるようです。その場合は、footerにリンクのあるミラーサイトで遊んだり、オープンソースですから自分のところで動かしたりということもできます。&lt;/p&gt;&#xA;&lt;p&gt;via HackerNews&lt;/p&gt;</description>
			</item>
			<item>
				<title>ArnoldC - シュワルツェネッガー言語</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2014/02/arnoldc-schwarzenegger-programming-language/</link>
				<pubDate>Wed, 26 Feb 2014 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2014/02/arnoldc-schwarzenegger-programming-language/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://github.com/lhartikk/ArnoldC&#34;&gt;ArnoldC&lt;/a&gt; は、元カリフォルニア州知事にしてアクション映画俳優のアーノルド・シュワルウェネッガー氏の映画の中のセリフをキーワードとした新しいプログラミング言語です。&lt;/p&gt;&#xA;&lt;p&gt;ハローワールドはこんな感じ&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;code&gt;IT&#39;S SHOWTIME TALK TO THE HAND &amp;quot;Hello, World&amp;quot; YOU HAVE BEEN TERMINATED&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;「ショーの始まりだ(バトルランナー, The Running Man)」がbegin、&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;&#x9;&#x9;&#x9;&lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/TKTL2EDTFSo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;&#x9;&#x9;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;「手に話せよ(ターミネーター3)」がprint&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;&#x9;&#x9;&#x9;&lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/h8Fyf4R-nzI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;&#x9;&#x9;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;「お前はターミネートされた(ターミネーター3)」がend&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
