カテゴリー
fun

Game of Codes – プログラミングツールやライブラリの勢力を表した架空の世界地図

Game of Codes は、プログラミング技術の人気度を基に勢力争いを架空の地図に表すというプロジェクトです。

フロントエンドJavaScriptライブラリ2021の勢力地図(クリックでオリジナルを表示)がこれ。

React が帝国であるのに対し、Angular, Vue, jQuery が王国、Svelte が公国なのは「規模感」だそうなので、国名はデータからプログラムが決めているわけではないようです。

各国のサイズは過去12か月間の npm でのダウンロード数をベースにしているそうです。

2015年版の地図 と比べると、6年間でも勢力が変化していますね。Ember とか Backbone とか、そんなのあったなあ、という感じです。

CSSフレームワークについても同じような架空地図が公開されています。

昔、SNSの勢力図で似たようなものがありました。地図の形にすることで詳しくない人に大雑把な関係性が伝えられる場合もあるでしょう。

SNSの勢力図

via Product Hunt

カテゴリー
fun

Folders.py – ディレクトリ構成(だけ)で書く変態プログラミング言語 Folders の Python 実装

Folders.py は、難解(esoteric)プログラミング言語と言われる変わったプログラミング言語のひとつ Folders の Python による実装です。

オリジナルの Folders 処理系は 2015年に C# で書かれたということです。

  • プログラムはディレクトリの階層構造として記述される
  • フォルダ内のファイルはすべて無視される
  • 文や式はフォルダ内にあるサブフォルダの個数によって定義される

コマンドの定義はこんな感じ。

コマンド サブフォルダの数 詳細(引数など)
if 0 folders Second sub-folder holds expression, third holds list of commands
while 1 folder Second sub-folder holds expression, third holds list of commands
declare 2 folders Second sub-folder holds type, third holds var name (in number of folders, ex. zero folders becomes “var_0”)
let 3 folders Second sub-folder hold variable name (in number of folders), third holds an expression
print 4 folders Second sub-folder holds expression
input 5 folders Second sub-folder holds variable name

Expression, Type も同じような表で、サブフォルダの個数と改装で定義されます。

サンプルの加算プログラムを読んでみる

サンプルディレクトリ(プログラム)が6種類ついてきているので少し眺めますが、こんな感じなのでパッと見ても何がなにやら。以下は一番短そうな AddTwoNumbersOrStringsです。

実行結果はこんな。2 と 5 を入力すると 7 が返ってきます。

PS > Folders .\AddTwoNumbersOrStrings\
2
5
7
PS >

この二つの値を足す Folders プログラムはこちら。

フォルダはソート順に読まれます。

まず、1つ目のサブフォルダ(1 – Input)の1番目のサブフォルダ(1 – init)の中にフォルダが5つあることから、ユーザー入力を受け取る Input コマンドだとわかります。2番目のサブフォルダ(2-name)はフォルダが0個なので変数0に値が格納されます。

2つ目のサブフォルダ(2 – Input 2)は、同じく1番目のサブフォルダ中のフォルダが5個なので Input コマンド。2番目のサブフォルダ(2-name)中のフォルダが1個なので変数1に値が格納されます。

最後、3つ目のサブフォルダ(3 – Print)は、1番目のサブフォルダ(1 – init)中のフォルダ数が4個なので Print コマンド。Print コマンドは2つ目のサブフォルダに式(2 – expression)を取ります。

式の1番目のサブフォルダ(1 – init)内のサブフォルダは1個であることから、この式は Add 式。2番目のフォルダ(2 – expression 1)の式を加算し、3番目のフォルダ(3 – expression 2)の式を返します。

2番目の式はサブフォルダから変数0、3番目の式は変数1を指すため、初回の Input と2回目の Input でそれぞれ格納した値が加算され、結果がコンソールに出力されます。

…と、いう解釈で合ってると思うのですが。試しに、加算式のところのフォルダ

AddTwoNumbersOrStrings / 3 - Print / 2 - expression / 1 - init

内にもう2つフォルダを作って動かしてみると、

PS > Folders .\AddTwoNumbersOrStrings\
2
5
10
PS >

と、2つの数の乗算になりました。

フォルダ名もファイルも関係ない

サンプルプログラムでは、フォルダに連番の数字やコマンド名などがわかりやすく入っていて、一見するとこのフォルダ名を見て動いてるのではと思うかもしれませんが、これはわかりやすさのためにつけてくれている名前なだけで、普通のプログラミング言語でいえばコメントにあたるようです。

サブフォルダの順番に意味がある場合があるので、ソート順でフォルダ名をつける必要があります。

実際、適当にフォルダ名を変えても問題なく動きました。

そして、GitHub で公開されていることから全フォルダに .gitkeep が置いてありますが、フォルダの中のファイルは何でも構いません。空でもいいし、好きなだけファイルを置いても動作に影響はありません。

Folders 言語の利点

ドキュメントにも書かれていますが、Windows ではディレクトリをいくつもっても、ディスク上のサイズが増えることはありません。先ほどの AddTwoNumbersOrStrings プログラムのフォルダのプロパティを表示しても、サイズは0と表示されます。

言語のオリジナル作者も、352,449 フォルダを含むフォルダを作ってもサイズは0だった、と報告しています。ディスク資源を消費することのない、夢のプログラミング言語ですね!

…というのは冗談ですが、ソースコードの短さを競うコードゴルフにおいて、出題者のルール決めに不備が有った場合にはこの Folders が最強のコードゴルフ言語となるでしょう。

via Hacker News

カテゴリー
fun

アイスランドバース – かなりリアル度の高いアクチュアル・リアリティ/オープンワールド

Islandverse は、verse界に名乗りを上げたリアルっぽい、リアル度の高い、というかリアルそのもののオープンワールドです。

おかしな外見のヘッドセットなしに、すべてがリアルな体験のできるアイスランドバースは何百万年も前から存在し、他の人間とコミュニケーションも取れます。

温泉も入れるし、触れない(触ってはいけない)けど苔も生えてます。裸眼で天空を見られ、火山岩も拾え、間欠泉、鳥、様々な滝、乗馬などの体験を、「今すぐにでも、今すぐでなくても、まあいつでも」楽しめるそう。

ザッカーバーグ氏のMetaverse のプレゼンからまだ一か月。いい感じでブッコんで来ましたねアイスランド。

via Hacker News