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

Post on 20-Jul-2015

703 Views

Category:

Software

8 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

七瀬 (@nanasetomona)

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

自己紹介

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

• 長野県出身

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

• @nanasetomona

• https://github.com/nanase

すべての始まり

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

ぱらつり氏 (@paralleltree)

すべての始まり

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

すべての始まり

何かが始まった

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

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

触発された言語たち

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

▫ 制作: kb10uy氏 (@kb10uy)

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

▫ 制作: noko氏 (@noko_k)

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

新しい言語?

• Lury ▫ github.com/nanase/lury

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

▫由来は瑠璃色から

▫動的型付け言語

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

目指すべきゴール

•楽しい言語

•読みやすい言語

•書きやすい言語

楽しいプログラム

読みやすいプログラム

書きやすいプログラム

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

どんな言語?

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

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

•オブジェクト指向

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

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

クラス

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

class Person:

def greet(name):

println "Hello #{name}!"

def sleep():

println 'Zzz...'

クラス

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

class Person:

def greet(name):

println "Hello #{name}!"

def sleep():

println 'Zzz...'

式の埋め込み (Rubyより)

表示して改行

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

class Person:

# 年齢

property age (get, private set)

# コンストラクタ

def this(age):

this.age = age

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

class Person:

# 年齢

property age (get, private set)

# コンストラクタ

def this(age):

this.age = age

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

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

契約

class Person:

# 年齢

property age (get, private set):

in:

assert(value >= 0)

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

年齢だから0以上の数値

単体テスト

class Person:

...

unittest:

age = 18

p = new Person(age)

assert(p.age == age)

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

単体テスト (D より)

失敗を期待している

構想は混沌

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

•例外送出とassertの分別

• クラス不変条件の問題

• None? null? nil?

まだまだ始まったばかり

•他の言語の勉強になる

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

•構想段階、実装はない

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

コメント募集中

•要望、質問など…

• @nanasetomona

• github.com/nanase/lury

(おまけ)GitでHubHub

6月28日

(おまけ)GitでHubHub

10月28日

top related