ITエンジニアのための勉強会・イベントレポート情報メディア

TrumpScriptを使ってみた!
skill

TrumpScriptを使ってみた!

2017.07.18

 
  • このエントリーをはてなブックマークに追加

昨年のアメリカ大統領選挙中に、ドナルド・トランプ氏をイメージして作られたプログラミング言語が「TrumpScript」です。100万より小さな数字は使えないとか、変数名として使えるのは簡単な英単語や政治家の名前のみであるとか、妙な特徴がたくさんある言語のようですが、実際の使い心地はどうなんでしょうか。

三土たつお

TrumpScriptは、大統領選挙期間中のジョークとしてさまざまなメディアに取り上げられました。しかし、ほとんどはそのおかしな特徴を紹介するだけで実際の使用感はなかなか分かりません。ここは一つ、自分で試してみることにしました。

インストール

インストールは簡単でした。まずは GitHubのレポジトリから git clone します。

% git clone https://github.com/samshadwell/TrumpScript.git

すると TrumpScript/bin/ 以下に TRUMP というファイルができますので、 export PATH=$PATH:/path/to/TrumpScript/bin のように実行パスに追加すればOKです。

ただし、内部ではpython3を使っています。2系だけがインストールされている場合はpyenv等を使って3系を入れておきましょう。

まずは Hello, World

なにはともあれ、画面に「Hello, World」と出力してみましょう。ドキュメントによると画面への出力には say を使って以下のようになるようです。

say “Hello, World!”

これを hello.txt という名前で保存します。(※なお、TrumpScript プログラムのための拡張子はとくに定義されていないようで、テスト用のファイルを見てもすべて .txt になっていました)

あとは次のように実行するだけです。

% TRUMP hello.txt

では実行してみましょう。

% TRUMP hello.txt 
Traceback (most recent call last):
(略)
Exception: Mac? 'Boycott all Apple products  until such time as Apple gives cellphone info to authorities regarding radical Islamic terrorist couple from Cal'

おや、何か例外が発生しました。「Mac?アップルの製品はボイコットする」というメッセージが出ており、なんと手元の MacBook では動かないようです。(※2015年にアメリカで発生した銃乱射事件で、犯人が使っていたiPhoneの情報を当局に引き渡すことをアップルが拒否したことをうけ、アップル製品のボイコットを主張したトランプ氏のツイートに由来)

とにかくこのままでは動きません。幸い、 --shut-up オプションをつけると文句を言わなくなるようですので、それをつけて再度実行してみます。

% TRUMP --shut-up hello.txt
Traceback (most recent call last):
(略)
Exception: Trump will ensure that 'America is great'

やっぱり動きません。こんどは別のエラーが出ました。すべての TrumpScript は「America is great」で終わる必要があるということのようです。というわけでプログラムを次のように修正します。

say “Hello, World!”
America is great

今度こそどうでしょう?

% TRUMP --shut-up hello.txt 
Hello, World!

ようやく動きました! 長い道のりでした・・。

言語機能を一通り試す

TrumpScriptは手続き型言語のようです。ということは、変数があって、if や while があるはずですね。一通り試してみましょう。

変数は次のように定義できます。

make a 10000001

これで変数 a が 10000001 になりました。または、こうも書けます。

a is 10000001

数字がむやみに大きいのは、100万より小さな数字は使えないためです。
if文はこんなふうです。

if, fact;:
  say "Yes"!
else:
  say "No"!

上の文は例えばJavaScriptで書くとこうなります。

if( true ){
  console.log("Yes") }
else {
  console.log("No") }

つまり、JavaScriptのようなスタイルの言語から見て、 true -> fact
( ) -> , ;
{ } -> : !
のようにそれぞれ変換してやれば、TrumpScriptになるというわけです。これさえ分かれば、TrumpScriptはだいぶ読み 書きできます。

while は「As long as」です。たとえば 1 から 10 まで順番に数字を表示する例はこんなふうになります。

one is 1000001 minus 1000000
ten is 1000010 minus 1000000
count is one
As long as, count smaller ten;:
  say count
  make count, count plus one;!
America is great

一行目で、one を定義するためにわざわざ 10000001 から 1000000 を引いているのが我ながら泣かせます。4行目の as long as 以下が whileループになります。実行してみましょう。

1
2
3
4
5
6
7
8
9

みごと実行されました! おっと、9までしか表示されていませんが、まあ細かいことなのでいいでしょう。

結局使い勝手はどうか?

ここまで見たように、TrumpScriptでは変数の定義、変数への足し算と引き算、whileループが使えます。実はこれさえできれば、計算機としては万能(チューリング完全)であるということが知られていますので、TrumpScriptさえあればあらゆる計算ができます!

しかしそれだけです。普通の言語にある便利な機能はありません。

「配列は?」使えません。「関数は?」使えません。「オブジェクト指向は?」使えません。この言語に盛り込まれたほとんどの特徴は、トランプ氏を揶揄するためのジョークです。

  • ● 浮動小数点は使えない。アメリカは中途半端なことはしない。
  • ● あらゆる数は100万より大きくないといけない。小さなものは取るに足らない。
  • ● import(輸入)文は許可しない。すべて(国内で)内製しなければいけない。
  • ● 変数名は簡単な英語か、トランプ氏の好きな単語か、政治家の名前のみが使える。
  • ● エラーメッセージはトランプ氏の演説からの引用。
  • ● --Wall オプションをつけると、メキシコ国内では実行できない。

などなど。

もともとライス大学のハッカソンイベントで作られたジョークですので、言語機能そのものはどうでもいいというわけですね。
現在、TrumpScriptの開発は中止されています。理由としては、トランプ氏が大統領になった現在「このジョークはもはや面白くない」からだそうです。GitHub のページには、「トランプ氏を揶揄するよりも、実際に行動を起こそう」と書かれています。
プログラム言語には、作者によるスローガンがいくつか挙げられることがあります。たとえば Java なら「Write Once, run Anywhere」、Perl なら「There’s more than one way to do it」などです。TrumpScriptの現在のスローガンは、「この言語に関わるよりも、行動を起こそう」と言えるでしょう。とても風変わりですが、作者の切実な感じが伝わりますね。

原稿: 三土たつお
1976年生まれ。プログラマー、ライター。プログラマーとしてはふだんPHPを書いてます。ライターとしてはニフティのデイリーポータルZとかで書いてます。近著「街角図鑑」(実業之日本社)。
http://mitsuchi.net/

TrumpScriptを使ってみた!

この記事はどうでしたか?

おすすめの記事

キャリアを考える

BACK TO TOP ∧

FOLLOW