1. まとめトップ

【プログラミング】 現役天才中学生が開発した新言語「Blawn」が凄すぎる

この記事では「静的型付け」「型記述不要」などの言語仕様や、内部の実装など公開されている情報を総合的にまとめています。それにしても「中学生プログラマー」どころか「中学生プログラミング言語製作者」ですよ。ネーミングセンスも良いしめちゃくちゃかっこいいですね。言語の成長が非常に楽しみです!

更新日: 2019年11月01日

2 お気に入り 6354 view
お気に入り追加

この記事は私がまとめました

Blawn、使ってみたいです・・・!※私はKaleidoscope(LLVMのチュートリアル)のwhile文行くあたりで挫折した人間です。

虎子算さん

10月20日に東京の秋葉原コンベンションホールで開催された第40回「U-22プログラミング・コンテスト2019」の最終審査会で、見事、経済産業大臣賞(総合)を受賞した開成中学校3年の上原直人さん(15歳)は、独自プログラミング言語「Blawn」を発表した。

Blawnの特徴は、型名の記述が一切不要、構文の可読性が高い、すべての関数/クラスがC++でいうところのテンプレート関数/クラス、コンパイル速度と実行速度が速い、メモリが安全などだ。

また、Blawnの言語名は「Blue Lawn(青い芝)」からもじったもので、隣の芝が青く見えるほど、既存の言語の不満を解消できるような良い言語にしたい気持ちを込めたという心憎い演出もあった。

ネーミングセンスが良すぎる・・・・

Blawnについてちょくちょく誤解があるみたいなのでまとめましたー(id隠し切れてなかったので再投稿です) pic.twitter.com/YeZyc1qHyu

静的型付けで型の記述が一切不要!

pythonライクな構文で静的型付けなど、かなり期待できそうな言語です。Rustに続く日本産のプログラミング言語になってほしい!!

class Person(name)
 @name = name
 @function hello()
  text = "Hello! I'm "
  text.append(self.name)
  print(text)
  return

john = Person("john")
john.hello()

プレゼンで紹介されていたのはこちらのコード

これ以降普及できるかどうかですが、僕としては「わからない」としか言えないですね。まだBlawnは全く安定しておらず現時点では実用的なプロダクトに採用する意義は0どころかマイナスですらあります。

開発者上原さんのコメントです。

あと、言語の爆発的な普及というものは往々にしてキラーアプリ/フレームワークによって引き起こされますが、Blawnには現時点ではこのようなものはないです。ですのでこの辺りも含めて開発を続けられれば一定の普及はしてくれるかな、と(希望的に)見ています。

※追記

BlawnにはC言語の関数をシームレスに呼び出せるラッパー自動生成ツール「cridge」が付属しているのでこれがキラーといえばキラーかもしれないです。

@Naotonosato わ!この度はおめでとうございます!‍♀️ ありがとうございます、なるほどです。 文の区切りはどうやって検知しているのでしょうか?改行? if ブロックは () で囲っているようですが他のも () で囲えますか? (サンプル拝見してます github.com/Naotonosato/Bl… ) 自作言語興味あります‍♀️素晴らしいです pic.twitter.com/BtUB2SGZmS

@chomado 興味を持って頂いてありがとうございます 関数はreturnを一つしか持てない仕様なのでreturnで終わらせて、クラスの場合はメンバ/関数定義の連続が途切れたところでクラス宣言の終了とみなしている感じです。 ifやelseはいい感じの終わらせ方が思いつかなかったので括弧で括ってる感じですね

制作過程も面白そう

そう、近所だからという理由だけで行った開成学園の文化祭でたまたまもらったコンピューター部の部誌に、「Blawn」を開発した上原直人さんが開発秘話を載せていたのです。

細かい内容も割とわかる感じなので是非!!

分析する人多数

試したい人へのヒントですが、コンパイラーの実行ファイルと同じ場所に tmp というディレクトリを掘る必要があります。OSはLinux限定です。コンパイル済みバイナリが、とかじゃなくて内部で普通にreadlinkでprocfsを読みに行っているので。少なくともMacじゃ改変なしには動かないでしょう

#blawn_compile_battle とりあえず動いたので報告、初心者が躓くであろうところ 1.blawnの場所(複数個ある) 2.llcの権限(chmodしなきゃダメ) あとmake installがほしいですね

あー、なるほど。Blawnが一見インデントベースに見えるけど、そうじゃないって理由わかった。 github.com/Naotonosato/Bl… メソッド定義/関数定義は最後に必ずreturnが来る仕様なんだな。パーザレベルでreturnが特別扱いされてるとは予想しなかった。

どうせ変な穴あるでしょって思ったけど意外と(失礼)よくできててヤバいコードが書けない。

#Blawn についてまとめ。 文法: ・インデント文法ではない。returnがメソッド定義のターミネーターになってる ・行指向。最近よくある、改行もOKのタイプじゃなくて、改行を「入れなければ」いけない。 ・パーザはbison、字句解析はflex。おおむね王道。parser.yy読めばわかる。 (続き)

Blawn、日本語話者以外に名前の由来を説明する時困りそうだなという瑣末事

まあBlawnを評価するのはもうちょい完成度が上がってからの方が良い気がする。今の段階だと過剰評価か不必要に手厳しい評価しかできない

確かにその通りです。もう少し安定するのをゆっくり待つ必要があると思います。

プログラミング言語の優劣を一元的に評価して比較するのはナンセンスだし、自分はそういう事をするつもりもしているつもりもないです っていう事をご承知おき頂きたいです。

大切です!!!

いい言語な感じがすごくあるので、是非是非気長に頑張ってほしいですね!!!

U22プロコン経済産業大臣賞のBlawnが大変話題で、実にできのよい言語ですが、実は事前審査通過40作品のうち、自作言語が3つあり、最終審査まで進めなかった残り2言語( BoneとEmelio)も大変優秀な作品であったことは(自称言語担当)審査員として申し添えておきます。

他の言語も見てみたい・・・!!

1 2