プログラミング言語Java ~~その特徴~~fjoho.sakura.ne.jp/download/Java-05.pdf目次 •はじめに •Javaって今どうなの? •プログラミング言語Java
自作プログラミング言語 Lury
-
Upload
tomona-nanase -
Category
Software
-
view
705 -
download
8
Transcript of 自作プログラミング言語 Lury
![Page 1: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/1.jpg)
自作プログラミング言語 Lury
七瀬 (@nanasetomona)
dendai sie; Talk Live! vol.5 2014/11/29
![Page 2: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/2.jpg)
自己紹介
•山本 裕二郎 (HN: 七瀬 ともな)
• 長野県出身
• 信州大学 大学院 理工学系研究科 修士1年
• @nanasetomona
• https://github.com/nanase
![Page 3: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/3.jpg)
すべての始まり
• 8月末、 こんなつぶやきが…
ぱらつり氏 (@paralleltree)
![Page 4: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/4.jpg)
すべての始まり
(ぱらつり氏はメモ帳に強い情熱を持つことで有名)
![Page 5: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/5.jpg)
すべての始まり
![Page 6: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/6.jpg)
何かが始まった
•周囲で新言語の議論が沸騰 ▫ 主に Twitter / Gitter / Slack 上
•数週間後、いくつかの言語の案が残った
![Page 7: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/7.jpg)
触発された言語たち
• 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](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/8.jpg)
新しい言語?
• Lury ▫ github.com/nanase/lury
▫七瀬による C# での実装
▫由来は瑠璃色から
▫動的型付け言語
▫ C# + Python + D言語のいいとこ取り
![Page 9: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/9.jpg)
目指すべきゴール
•楽しい言語
•読みやすい言語
•書きやすい言語
楽しいプログラム
読みやすいプログラム
書きやすいプログラム
≠
≠
「メモ帳でも書きやすい」は比喩表現じゃない
![Page 10: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/10.jpg)
どんな言語?
• Python に C# と D の機能を追加 ▫ その他の言語の良い所も
• インデントでブロック表現 (オフサイドルール)
•オブジェクト指向
•プロパティ (C# から)
•契約と単体テスト (D から)
![Page 11: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/11.jpg)
クラス
# 挨拶して寝るだけの人間クラス
class Person:
def greet(name):
println "Hello #{name}!"
def sleep():
println 'Zzz...'
![Page 12: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/12.jpg)
クラス
# 挨拶して寝るだけの人間クラス
class Person:
def greet(name):
println "Hello #{name}!"
def sleep():
println 'Zzz...'
式の埋め込み (Rubyより)
表示して改行
![Page 13: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/13.jpg)
プロパティとコンストラクタ
class Person:
# 年齢
property age (get, private set)
# コンストラクタ
def this(age):
this.age = age
![Page 14: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/14.jpg)
プロパティとコンストラクタ
class Person:
# 年齢
property age (get, private set)
# コンストラクタ
def this(age):
this.age = age
自動実装プロパティ (C# より)
コンストラクタはthis (D より)
![Page 15: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/15.jpg)
契約
class Person:
# 年齢
property age (get, private set):
in:
assert(value >= 0)
契約: 事前条件 (D より)
年齢だから0以上の数値
![Page 16: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/16.jpg)
単体テスト
class Person:
...
unittest:
age = 18
p = new Person(age)
assert(p.age == age)
assert(fail(new Person(-3)))
単体テスト (D より)
失敗を期待している
![Page 17: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/17.jpg)
構想は混沌
•ダックタイピング? インタフェース? ▫契約との相性は?
•例外送出とassertの分別
• クラス不変条件の問題
• None? null? nil?
![Page 18: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/18.jpg)
まだまだ始まったばかり
•他の言語の勉強になる
• 「あったらいいな」の思考が楽しい
•構想段階、実装はない
•実装時の足回りを整備中
![Page 19: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/19.jpg)
コメント募集中
•要望、質問など…
• @nanasetomona
• github.com/nanase/lury
![Page 20: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/20.jpg)
![Page 21: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/21.jpg)
(おまけ)GitでHubHub
6月28日
![Page 22: 自作プログラミング言語 Lury](https://reader034.fdocuments.net/reader034/viewer/2022042500/55acf31c1a28ab44798b477d/html5/thumbnails/22.jpg)
(おまけ)GitでHubHub
10月28日