#omosiro_code沖縄在住の新進気鋭の超絶技巧プログラマであるりゅうくん主催の会に参加してきました。2018で5作品入選で鮮烈な存在感を発揮したぺん!(tompng)さん、元同僚でギークハウス沖縄オーナーのさぼさんを始めとする東京と沖縄の変なプログラマが参加してくださいました。主催のりゅうくんによるまとめryu1kun.hatenablog.comMatzLisp話の枕として持ってきた記事はこれです。2015に応募したけど玉砕しました。Awardとして受賞してたので玉砕は完全に納得です。あとこのファイル名なのですが、脆弱性として利用可能な拡張子偽装ができるWindowsの「仕様」として著名なものです。脆弱性?いいえ仕様です。書いてるあたりにClojureとして誤認されたさが垣間見えてますね。jlcが反転してcljに見えるんですね。UIぶっこわれてますけど。charactersとのことで、これは脆弱性ではないらしいです。あと、いまこの記事を書くまで忘れてたんですが、上記の本のRubyによるScheme処理系をLispっぽいインデントで書いてました。完全に記憶から消し飛んでたよ。Paradigm自分が実装したDSLっぽいものだと最初期の2012年頃に書いたやつだった気がします。元ねたは当時たしか高専生だったLisper(Schemer)の某氏がTwitterとGistに投げてた言語を適当に再実装してみたやつです。他人が文章で説明してるけど理解できないことが多いので、自分なりに再実装してみる癖があります。やって遊んでみてください。おぼえておいてください。Foo.new(:c)この元コードを書いた某氏は数年前にWeb上の一切合切の痕跡を断ってしまったのですが(そのあと一度だけ会ったことはある)、元気にしてるかなあ。奴とこの言語の話をしたことはないので、僕の解釈が合ってたのかはよくわからないです。クラスローダーを使ったPHPメタプログラミングPHPに詳しくないひとが多かったので前提から説明しました。代替をクラスローダーで実現するやつです。qiita.com要はそれぞれの名前空間にエイリアスを生やしまくることで実現します。実行時のパフォーマンスのペナルティは(たぶん)あまりないような気がします。アルゴリズム改善の余地はあるかも。それが常套手段なのですが、その制約を超えて再帰するテクニックを二つ紹介しました。一つめにZコンビネータを利用する方法。これは不動点コンビネータの一つです。LLCの社名として有名です。WikipediaにはJavaScriptでの不動点コンビネータの例があります。これはYコンビネータを正格評価の言語でも実行可能なように変形したものです。それをPHPで利用可能なようにしたものをライブラリにしてあります。github.com変なコード紹介の場としてはこっちを見せた方が盛り上がったかもしれませんね。qiita.comで、第三の無名再帰の方法として最近発見したのが無名クラスを利用する方法です。はじめに、PHPのクラスに__invoke()マジックメソッドを実装すると、そのクラスのインスタンスオブジェクトを関数のように呼び出しができるようになります。PHP7には無名クラスが導入されました。無名関数には名前がないのに対し、無名クラスには名前があるのです。マジカル定数を出力するとわかります。書くと自分自身を呼ぶことができます。ファイル具体的なクラス名が含まれてます。常識的なクラス名には含まれない文字がいっぱい入ってますがクラス名です。種明かしをすると無名クラスは無名ではなく、アクセスしにくい名前が付けられた、ただのクラスなのです。正確には無名再帰ではないのですが実際無名関数と同じことが短く書けるので、まあまあ嬉しいですね。Hamaji(shinh)さんによる、多数の言語にコンパイルできるコンパイラインフラストラクチャです。具体的な説明はshinhさんによるスライドと記事をお読みいただくのが良いです。IRで表現できれば、いわゆる難解プログラミング言語を含むバックエンドによって任意の言語に変換することができます。極めつけは8ccが移植されてるので、「Brainfuckで動くCコンパイラ」のような意味不明なものが実現されてます。実用性はともかく、チューリング等価って本当に等価なんだなあと実感することができます。前置きはさておき、2016年頃にPHPのバックエンドの実装を送ったときの昔話をしました。思ったのでJavaScript実装をPHPっぽく書き直すところから作業を始めました。HTML+CSSとチューリング完全ぺん!さんのCSSだけで動くライフゲームが衝撃的すぎたので、(2012年に書いた記事なので自分の中では黒歴史に近いのですが)むかしの自分の記事をほじくり返しました。話が出てたので、二年ほど前ににせねこさんが作ってたOpenTypeで万年カレンダー(2019/06のように並ぶとフォントでカレンダーが表示される)を紹介しました。voidクイズせっかくなので一年ちょっと前にTwitterに上げたねたの話をしました。2018詳しいことはQiitaに書きました。そちらには上記のクイズをさらに意地悪にしたバージョンがあります。qiita.comこのクイズは会場ではhanachinさん一人が正解されました。PHPの予約語って難しいですね...!まとめまとめも何もないのですが、ぺん!さんやhanachinさんの超絶技巧を間近で目の当たりにしたのは楽しかったです。あとりゅうくんのライブ記号プログラミングやばい。最近沖縄界隈がめちゃくちゃ活発なので、興味を持った人はギークハウス沖縄もよろしく!blog.geekhouse.okinawaあとギークハウス沖縄の近くのチャーリー多幸寿(タコス)がめちゃくちゃおいしかったです。2017ピクシブ開発基盤チームのうさみ(@tadsan)です。(1)はてなブログをはじめよう!zonu_exeさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。