「プログラミング言語」タグアーカイブ

Anyprint – いろんな言語のprint命令がPythonで使えるライブラリ

ライブラリ anyprint をインポートするだけで、Python で以下のような出力文が書けるようになります。


printf("printf %d\n", 10);

fmt.Println("hello")

cout << "Hello, C++!" << endl;

Print["Hello from Mathematica!"]

console.log("yes");

io.write("lua land")

System.out.printf("java stuff\n");

System.Console.WriteLine("C# looks awkard");

Ada.Text_IO.Put_Line("Ada is cool")

IO.puts("elixir")

現在サポートされている他言語は、go, Java, VB .NET, C(とその類似言語), ActionScript, Ada, Amiga E, ASP, B, D, PureBasic, Clipper, C++, C#, Delphi, JavaScript, Lua, Mathematica, matlab, nim, Pascal, Pike, Elixir のようです。

Objective-C の NSLog, Ruby のp はプルリクエストが出ています。Closure風 と Rust風は Python の中では難しいと作者が答えていますが、誰か解決できる人がいたら挑戦してみてはどうでしょうか。

Pythonがメインの言語でない人でも、これを入れておけば自分の慣れた方法でprintできますね。

利用者からの推薦文が載ってますが、味わい深いです。

  • 「おかしいよあんた」
  • 「馬鹿馬鹿しいし役立たずだ」
  • 「僕の推薦文を追加してよ『なんて正確な推薦文たち』」
  • 「kragniz, おかしなPythonのメタモジュールばっかり公開するのはよせよ」

via Hacker News

絵文字プログラミング言語 emojicode

Emojicodeは、オープンソースの高水準・マルチパラダイム・オオブジェクト指向・マルチプラットフォーム対応の静的型付き言語です。

その一番の特徴は、型、メソッド、クラスメソッド、初期化子がすべて絵文字だというところでしょう。(反対に、変数名には絵文字を含むことができません。)

emojicode-top

本格的なドキュメントが用意されていて、まだ一部しか読んでないのですが、いくつか紹介します。


👴 コメント

👵 改行入り
複数行コメント 👵

老人」の絵文字が一行コメント。老婆で挟むと複数行のコメントも書けます。


🍮 index 35
🍮 isAvailable 👍
🍦 limit 12
🍦 GREETINGS 🔤This is a string.🔤

プリンが変数宣言、ソフトクリームはconst変数(凍ってるから)。true/false の 👍/👎 はわかりやすいですね。

🔤 が文字列を表す絵文字で、🔤自身を文字として扱いたいときは❌🔤でエスケープするそうです。

制御文やクラス定義なども、当然に専用の絵文字が用意されているのですが、読んでて頭が痛くなってきました。

基本的なライブラリも、当然ながら絵文字で提供されています。

本に挟まるしおりの絵文字 📑 が、ファイルシステム。複数の本の絵文字 📚 は、データベースクラス、 💬 がSQLクエリクラスです。

キーボードの絵文字⌨ はキー入力イベントクラスで、エラークラスは回転灯の絵文字 🚨

トップに出ているサンプルコードは、フィボナッチ数列を表示するもので、こんな感じに。


🐇 🏤 🍇
🐇🐖 🏁 ➡️ 🚂 🍇
👴 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
🍉
🍉

「プログラマーになるにはどうしても英語が必要」という悩みから、日本語プログラミング言語なども昔から多数登場していますが、絵文字なら言語非依存で世界中の人が理解できる… かもしれません。

記号プログラミングといえばAPLという前例がありますし、Unicode絵文字の登場はAPL的なものの復活につながったりするのかも。

今の英語ベースのプログラミング言語に慣れた身としてはつらいですが、新規の学習だと意外と行けそうな気もします。

via Hacker News

プログラミング言語TrumpScript

TrumpScript は、高名なドナルド・トランプ氏を基にした新たなプログラミング言語です。現在のプログラミング言語の中に、トランプ氏の豪華な金髪バーコードヘアにも気に入られるような言語が無いことから制作されました。

https://www.flickr.com/photos/80038275@N00/17008571157/

特徴

  • 浮動小数点数無しで整数のみ。アメリカに中途半端はありません
  • 数は100万以上に限ります。それ以下の数字は取るに足らないからです
  • import はできません。すべてのコードはアメリカで作った国産でなければなりません
  • True/False(真/偽)ではなくfact/lie(事実/嘘)を使います
  • 良く知られた、トランプ氏の好きな(2000個ちょっとの)英単語のみ。立候補者の名前は変数として使えます
  • ほとんどのエラーメッセージはトランプ語録から採用されました
  • プログラムは「アメリカは偉大だ(“America is great.”)」で終了しなければなりません
  • TrumpScriptはそのままではWindowsで動きません。なぜならトランプ氏はPCを信じるような男ではないからです(註: PC=パソコン、と、PC=政治的正しさ、をかけてます)
  • 大文字小文字は完全に無視します

文法

文法の方はというと、演算や条件文についてはおおむね普通のものが用意されていて、TSの記法を覚えればすぐ書けるでしょう。

  • is や are は代入。?で終われば比較になります
  • make America great で、America に great を代入できます
  • tell や say で出力できます
  • as long as でループします
  • 不要な単語は全部無視されるので、うまく使えばかなり自然な演説文と両立させられます

トランプ氏が失敗について語りたがらないのと同様に、プログラムは多くの場合静かに失敗します。デバッグをゲーム的に楽しんでください。

実行

テストファイルがいくつかあるので、まずはこれを試してみるのがいいかもしれません。

ヒラリー・クリントン氏とのディベートを再現したスクリプトを動かすと、こうなりました。

trumpscript-hilary

元ネタがわかりません。まだ直接対決はないと思うので、コメントか何かで応酬した時のものでしょうか。

テストスクリプトには手元ではエラーになるものも多いです。

また、エラーになるのが正しいものも。not_english.txt では、スペイン語で書かれたスクリプトに対して、

trumpscript-not-english

「ここは英語で喋る国だ(“This is a country where we speak English”)」という例外が発生してます。

他にも、「トランプはそんなことは聞きたくない(“Trump doesn’t want to hear it”)」など、少ないエラーの中にもトランプ氏のきらりと光る名言があるようです。

作者

ライス大学のハッカソンでコンピューター専攻の二人の学生サム・シャドウェルさん(Sam Shadwell)とクリス・ブラウンさん(Chris Brown)らによって作られたこの新言語、初日夜の酔っぱらってのブレインストームと翌日の20時間のプログラミングで完成したそうです。

ハッカソンの優勝は逃したということですが、GitHubで公開されたコードに対して多数のバグ報告や修正提案が送られていて、日々改良されているようです。

この言語によって、「トランプ氏がアメリカを再び偉大にするように、プログラミングを再び偉大にすることを願っている」ということです。

via The Verge

Untrusted – JavaScriptをいじって先へ進むRogueライクゲーム

ローグライクゲーム、というジャンルがあります。Rogue(ローグ)を代表とする自動的に生成される迷路・迷宮から脱出するというゲームで、日本で有名なものでも、ネットハック、トルネコの大冒険、チョコボの不思議なダンジョンなど多数あります。

Untrusted は、そのようなローグ風ゲームのバリエーションなのですが、JavaScriptのコードを操作することでパズル的な迷宮を解き、先へ進むというのが最大の特徴です。

untrusted-3

画面左の迷宮で、自分のキャラクター”@”を、階段”□”まで、カーソルキーを使って導かなければいけません。しかし、普通に上下左右に移動しただけでは、出口にたどり着くことはできなくなっています。

そこで、右側のコードに書かれた、迷宮を生成するJavaScriptのコードのうち、書き換えて良いという黒地の部分を変更し、Ctrl+5 で実行するとあら不思議、壁や出口の場所を書き換えてしまうことで、次の階へと進むことができるようになるというわけです。

いかだを使ったり鍵を探したりと、面ごとに違う趣向の障害が配置されています。

その階がどういうトラップなのか、どんな障害が設けられているかというヒントがJavaScriptのコメントとして書かれているので、解く際の参考になるでしょう。

untrusted-2

壁を描画している部分の位置を書き換えるとか、出口の場所を移動するとか、で解ける面もありますが、後の面ではそれらを防ぐようなバリデーション・コードが追加されたりして、同じ手は2度使えないようになっています。

UntrustedのソースコードはオープンソースとしてGitHub上で公開されています。ソースコードを見れば現在のダンジョンが何階あるかはわかってしまうのですが。

# HackerNewsで紹介されたせいで、現在ゲームはちょっと重かったり、正しく動かなかったりすることがあるようです。その場合は、footerにリンクのあるミラーサイトで遊んだり、オープンソースですから自分のところで動かしたりということもできます。

via HackerNews

ArnoldC – シュワルツェネッガー言語

ArnoldC は、元カリフォルニア州知事にしてアクション映画俳優のアーノルド・シュワルウェネッガー氏の映画の中のセリフをキーワードとした新しいプログラミング言語です。

ハローワールドはこんな感じ


IT'S SHOWTIME
TALK TO THE HAND "Hello, World"
YOU HAVE BEEN TERMINATED

「ショーの始まりだ(バトルランナー, The Running Man)」がbegin、

「手に話せよ(ターミネーター3)」がprint

「お前はターミネートされた(ターミネーター3)」がend

に相当するようです。

こちらにセリフ集、じゃなかった言語仕様があります。

@No Problemo (トルゥー・ライズ)が1、@I Liedが0。

関数定義が

LISTEN TO ME VERY CAREFULLY (関数名)

で、関数からのリターンがあの有名な

HASTA LA VISTA, BABY

となります。

ではfizz buzzでも、と思ったら既にfizz buzz が公開されていました。もう少し短く書けるつもりでいたのですが、だいぶ長いですね。

arnoldc-fizzbuzz

YouTubeに別の人が作ったシュワちゃんの名セリフ160個、という動画があったので、キーワードの元ネタを追求したい方はどうぞ。

via Hacker News