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
Augmented Ruby: The Rubinius Language Platform
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
brixen
March 04, 2014
Programming
170
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Augmented Ruby: The Rubinius Language Platform
Talk presented at the March 4th, 2014 ChicagoRuby meetup.
brixen
March 04, 2014
More Decks by brixen
See All by brixen
Stop making mud pies!
brixen
0
130
Papers We Love - Immix mark-region garbage collector
brixen
2
770
An Ensemble of Programming Languages: How to Build a Platform for Collaboration
brixen
0
300
Types As Premature Optimization
brixen
2
600
Rubinius X
brixen
3
310
Code Is What Code Does
brixen
0
430
The Future of Ruby
brixen
1
350
Rubinius, and the Future of Ruby
brixen
2
280
So you want to design a programming language
brixen
1
180
Other Decks in Programming
See All in Programming
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
250
React本体のコードリーディング
high_g_engineer
1
130
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.8k
「人を評価する AI」の設計と実装
ryoyanara
0
150
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
170
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
970
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
1.1k
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
210
OpenSpecのproposalにbrainstormingを持たせてみた
tigertora7571
1
200
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
1
1.4k
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.8k
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
290
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.2k
Code Reviewing Like a Champion
maltzj
528
40k
Accessibility Awareness
sabderemane
1
170
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
3
400
Java REST API Framework Comparison - PWX 2021
mraible
34
9.6k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Building Adaptive Systems
keathley
44
3.2k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
390
The Pragmatic Product Professional
lauravandoore
37
7.4k
Docker and Python
trallard
47
4.1k
Transcript
Augmented Ruby! The Rubinius Language Platform!
Brian Shirai
You can create your own programming language
None
None
None
None
3 steps to designing! a language
Steps to designing a language 1.Syntax
def divide(a, b) # ... end ! function divide(a, b)
{ /* ... */ }
Steps to designing a language 1. Syntax 2.Semantics
def divide(a, b) a / b # 1 / 3
=> 0 end ! function divide(a, b) { a / b; /* 1 / 3 => 0.333 */ }
Steps to designing a language 1. Syntax 2. Semantics 3.Model
3 parts to building! a language
Parts to building a language 1.Parser
+ 1 2 Parse: 1 + 2 + 3 +
3
None
None
None
Parts to building a language 1. Parser 2.Compiler
Parts to building a language 1. Parser 2. Compiler 3.Machine
None
processing input output Pipeline of transformations
Parts to building a language 1.Parser
None
None
None
None
None
None
Parts to building a language 1. Parser 2.Compiler
None
None
Parts to building a language 1. Parser 2. Compiler 3.Machine
->0000: meta_push_1 0001: meta_push_2 0002: send_stack :+, 1 0005: push_int
3 0007: send_stack :+, 1 0010: ret Stack Instructions 1 Interpretation
Stack Instructions 1 Interpretation 2 0000: meta_push_1 ->0001: meta_push_2 0002:
send_stack :+, 1 0005: push_int 3 0007: send_stack :+, 1 0010: ret
Stack Instructions 3 Interpretation 0000: meta_push_1 0001: meta_push_2 ->0002: send_stack
:+, 1 0005: push_int 3 0007: send_stack :+, 1 0010: ret
Stack Instructions 3 Interpretation 3 0000: meta_push_1 0001: meta_push_2 0002:
send_stack :+, 1 ->0005: push_int 3 0007: send_stack :+, 1 0010: ret
Stack Instructions 6 Interpretation 0000: meta_push_1 0001: meta_push_2 0002: send_stack
:+, 1 0005: push_int 3 ->0007: send_stack :+, 1 0010: ret
Stack Instructions 6 Interpretation 0000: meta_push_1 0001: meta_push_2 0002: send_stack
:+, 1 0005: push_int 3 0007: send_stack :+, 1 ->0010: ret
None
None
Thank you
Credits https://www.thingiverse.com/thing:16023 http://snokey.com/furniture-designing-with-simple-concept-of- decoration/simple-capture-of-designing-with-writing-photo-capture/ http://www.citsolutions.edu.au/uploads/flags.jpg http://atomy-lang.org http://fancy-lang.org https://github.com/apricot-lang/apricot https://github.com/evanphx/kpeg http://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html