自作プログラミング言語 lury

22
自作プログラミング言語 Lury 七瀬 (@nanasetomona) dendai sie; Talk Live! vol.5 2014/11/29

Upload: tomona-nanase

Post on 20-Jul-2015

703 views

Category:

Software


8 download

TRANSCRIPT

Page 1: 自作プログラミング言語 Lury

自作プログラミング言語 Lury

七瀬 (@nanasetomona)

dendai sie; Talk Live! vol.5 2014/11/29

Page 2: 自作プログラミング言語 Lury

自己紹介

•山本 裕二郎 (HN: 七瀬 ともな)

• 長野県出身

• 信州大学 大学院 理工学系研究科 修士1年

• @nanasetomona

• https://github.com/nanase

Page 3: 自作プログラミング言語 Lury

すべての始まり

• 8月末、 こんなつぶやきが…

ぱらつり氏 (@paralleltree)

Page 4: 自作プログラミング言語 Lury

すべての始まり

(ぱらつり氏はメモ帳に強い情熱を持つことで有名)

Page 5: 自作プログラミング言語 Lury

すべての始まり

Page 6: 自作プログラミング言語 Lury

何かが始まった

•周囲で新言語の議論が沸騰 ▫ 主に Twitter / Gitter / Slack 上

•数週間後、いくつかの言語の案が残った

Page 7: 自作プログラミング言語 Lury

触発された言語たち

• notepad-ruby ▫ github.com/PaLTree/notepad-ruby

▫ 制作: kb10uy氏 (@kb10uy)

• Karaffe (notepad-java) ▫ github.com/nokok/Karaffe

▫ 制作: noko氏 (@noko_k)

• 七瀬による C# での実装 (Notepad-Lang-CS)

Page 8: 自作プログラミング言語 Lury

新しい言語?

• Lury ▫ github.com/nanase/lury

▫七瀬による C# での実装

▫由来は瑠璃色から

▫動的型付け言語

▫ C# + Python + D言語のいいとこ取り

Page 9: 自作プログラミング言語 Lury

目指すべきゴール

•楽しい言語

•読みやすい言語

•書きやすい言語

楽しいプログラム

読みやすいプログラム

書きやすいプログラム

「メモ帳でも書きやすい」は比喩表現じゃない

Page 10: 自作プログラミング言語 Lury

どんな言語?

• Python に C# と D の機能を追加 ▫ その他の言語の良い所も

• インデントでブロック表現 (オフサイドルール)

•オブジェクト指向

•プロパティ (C# から)

•契約と単体テスト (D から)

Page 11: 自作プログラミング言語 Lury

クラス

# 挨拶して寝るだけの人間クラス

class Person:

def greet(name):

println "Hello #{name}!"

def sleep():

println 'Zzz...'

Page 12: 自作プログラミング言語 Lury

クラス

# 挨拶して寝るだけの人間クラス

class Person:

def greet(name):

println "Hello #{name}!"

def sleep():

println 'Zzz...'

式の埋め込み (Rubyより)

表示して改行

Page 13: 自作プログラミング言語 Lury

プロパティとコンストラクタ

class Person:

# 年齢

property age (get, private set)

# コンストラクタ

def this(age):

this.age = age

Page 14: 自作プログラミング言語 Lury

プロパティとコンストラクタ

class Person:

# 年齢

property age (get, private set)

# コンストラクタ

def this(age):

this.age = age

自動実装プロパティ (C# より)

コンストラクタはthis (D より)

Page 15: 自作プログラミング言語 Lury

契約

class Person:

# 年齢

property age (get, private set):

in:

assert(value >= 0)

契約: 事前条件 (D より)

年齢だから0以上の数値

Page 16: 自作プログラミング言語 Lury

単体テスト

class Person:

...

unittest:

age = 18

p = new Person(age)

assert(p.age == age)

assert(fail(new Person(-3)))

単体テスト (D より)

失敗を期待している

Page 17: 自作プログラミング言語 Lury

構想は混沌

•ダックタイピング? インタフェース? ▫契約との相性は?

•例外送出とassertの分別

• クラス不変条件の問題

• None? null? nil?

Page 18: 自作プログラミング言語 Lury

まだまだ始まったばかり

•他の言語の勉強になる

• 「あったらいいな」の思考が楽しい

•構想段階、実装はない

•実装時の足回りを整備中

Page 19: 自作プログラミング言語 Lury

コメント募集中

•要望、質問など…

• @nanasetomona

• github.com/nanase/lury

Page 20: 自作プログラミング言語 Lury
Page 21: 自作プログラミング言語 Lury

(おまけ)GitでHubHub

6月28日

Page 22: 自作プログラミング言語 Lury

(おまけ)GitでHubHub

10月28日