Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
enlarged: extend your own programming language
Search
seki at druby.org
June 14, 2018
Programming
0
64
enlarged: extend your own programming language
RubyKaigiから帰ってきてLT会のLT。RubyKaigi 2018のトークの増補版だよ!
seki at druby.org
June 14, 2018
Tweet
Share
More Decks by seki at druby.org
See All by seki at druby.org
ERB Hacks
m_seki
1
1k
わりこまれるはなし
m_seki
0
480
ぼくのかんがえたさいきょうのけいやくによるプログラミング
m_seki
0
630
Learn Ractor
m_seki
1
2.1k
How many copies did you buy the first print?
m_seki
1
570
Create my own search engine.
m_seki
1
4.9k
Rinda in the real-world embedded systems.
m_seki
0
330
xpjug2019 A-4: チケットシステムの設計と実装、『あのチーム』の運用
m_seki
6
6.2k
Tochigi Ruby Kaigi 08 Keynote
m_seki
0
300
Other Decks in Programming
See All in Programming
Build Apps for iOS, Android & Desktop in 100% Kotlin With Compose Multiplatform (mDevCamp 2024)
zsmb
0
500
WebGLで始める コンピュータグラフィックス入門
heller77
0
360
CREってこういうこと? 体験入社 - 提案資料 - / what-is-cre-trial-employment
shinden
1
600
TypeScriptの型とパフォーマンス (TSKaigi 2024)
ypresto
13
3.2k
酒飲んでたらテックリードになった話
spbaya0141
0
180
Compose-View Interop in Practice (mDevCamp 2024)
stewemetal
0
170
検証も兼ねて個人開発でHonoとかと向き合った話
hanetsuki
1
1.4k
ts-morphを使ってコードリプレイスとASTへのハードルを下げる!
nyawach
3
240
Webアプリをできるだけコードを手書きしないで作ってみる
tomokusaba
2
230
Productivity is Messing Around and Having Fun
hollycummins
1
150
TypeScriptとGraphQLで実現する 型安全なAPI実装 / TSKaigi 2024
hokaccha
4
1.8k
ServerAction で Progressive Enhancement はどこまで頑張れるか? / progressive-enhancement-with-server-action
takefumiyoshii
6
490
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
60
7.2k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
660
120k
Build The Right Thing And Hit Your Dates
maggiecrowley
25
2k
Building Effective Engineering Teams - LeadDev
addyosmani
33
1.9k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
Stop Working from a Prison Cell
hatefulcrawdad
266
19k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
221
21k
What’s in a name? Adding method to the madness
productmarketing
PRO
17
2.7k
Mobile First: as difficult as doing things right
swwweet
217
8.6k
Docker and Python
trallard
35
2.7k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
275
13k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
155
14k
Transcript
Extend your own programming language
[email protected]
-5Ͱ૿ิ
͠Β͓͍ͪͩ͘͘͞ ✓ ͝ཡͷεϙϯαʔͷఏڙ ʹΑΓ͓ૹΓ͠·͢
slide sponsors " " ! !!! @moro @ tricknotes dRuby
Web ( ) https://t.co/fLhzWll5gY @hisashim Rails 700 https://t.co/wAMLWDekJh?amp=1 @igaiga555 https://lambdanote.com @golden_lucky @vestige_
slide sponsors 5 !! 6 2 Scratch Day in !!
@mame iSeq iSeq @youchan Speee Ruby @koichiroo RubyKaigi 2018 2 @ktou RubyWorld Conference 2018 yancya @yancya
slide sponsors seki @tsuboi @ogijun people.suzuri.jp hsbt tatsuosakurai kenchan june29
zaimy tnmt umazura 4 -20 pixiv FANBOX halfmoon_0419 usa shimashima35 igaiga
Extend your own programming language
[email protected]
-5Ͱ૿ิ
RubyKaigi 2018 Ruby Ruby MinRuby dRuby
RubyKaigi 2018 ...
MinRuby Ruby Ruby MinRuby
MinRubyͷίϯςΩετ AST - genv - lenv - Marshal.dump
ঢ়ଶΛอଘʗ࠶ݱͰ͖Δ ...
ετϨʔδʹอଘʗ࠶ݱ Ruby
ωοτϫʔΫʹอଘʗ࠶ݱ HTTP dRuby TupleSpace / Linda
TupleSpace Linda
TupleSpaceαʔόΛ༻ҙ͢Δ drbunix:/tmp/my_ts URI
;ͭ͏ϑΝΠϧ͔Βىಈ parse AST genv, lenv evaluate
TupleSpace͔Βͷىಈ TupleSpace AST, genv, lenv take evaluate
ϓϩηεϚΠάϨʔγϣϯ TupleSpace
ϫʔΧΛىಈ͢ΔτϦοΫ [:ts_eval, ...] take [:ts_call, ...] write [:ts_call, ...] AST,
genv, lenv evaluate while true it = ts.take([:ts_eval, nil, nil, nil, nil]) it[0] = :ts_call ts.write(it) spawn_worker end
TupleSpaceΛಉظ͢ΔΈ TupleSpace Linda write take/read TS ͍͔ͭ͜ͷΛ͍ͨ͠
ͭ·Γ TS TS MinRuby
Docker, Rinda, Ring, MinRuby ෳͷίϯςφʹஔ͞Εͨ3JOEBͷλϓϧεϖʔεΛ3JOHΛͬͯΦʔέε τϨʔγϣϯ ઃఆͳ͠Ͱಉظͤ͞Δͱ͜Ζ·Ͱ࡞ͬͨɻݱࡏϝογϡ ঢ়ʹଓ͠߹͍ͬͯΔͷͰɺ"HFOUΛͬͯ௨৴ΛݮΒͯ͠Έ͍ͨɻ