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
brixen
March 04, 2014
Programming
2
130
Augmented Ruby: The Rubinius Language Platform
Talk presented at the March 4th, 2014 ChicagoRuby meetup.
brixen
March 04, 2014
Tweet
Share
More Decks by brixen
See All by brixen
Stop making mud pies!
brixen
0
110
Papers We Love - Immix mark-region garbage collector
brixen
2
720
An Ensemble of Programming Languages: How to Build a Platform for Collaboration
brixen
0
230
Types As Premature Optimization
brixen
2
540
Rubinius X
brixen
3
270
Code Is What Code Does
brixen
0
410
The Future of Ruby
brixen
1
330
Rubinius, and the Future of Ruby
brixen
2
250
So you want to design a programming language
brixen
1
140
Other Decks in Programming
See All in Programming
DMMを支える決済基盤の技術的負債にどう立ち向かうか / Addressing Technical Debt in Payment Infrastructure
yoshiyoshifujii
4
600
20250708_JAWS_opscdk
takuyay0ne
2
150
Advanced Micro Frontends: Multi Version/ Framework Scenarios @WAD 2025, Berlin
manfredsteyer
PRO
0
440
可変性を制する設計: 構造と振る舞いから考える概念モデリングとその実装
a_suenami
3
600
中級グラフィックス入門~効率的なメッシュレット描画~
projectasura
3
1.3k
抽象化という思考のツール - 理解と活用 - / Abstraction-as-a-Tool-for-Thinking
shin1x1
1
720
slogパッケージの深掘り
integral0515
0
130
Git Sync を超える!OSS で実現する CDK Pull 型デプロイ / Deploying CDK with PipeCD in Pull-style
tkikuc
4
460
Google I/O Extended Incheon 2025 ~ What's new in Android development tools
pluu
1
130
NEWT Backend Evolution
xpromx
1
150
iOS開発スターターキットの作り方
akidon0000
0
180
SwiftでMCPサーバーを作ろう!
giginet
PRO
2
190
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
431
65k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Site-Speed That Sticks
csswizardry
10
720
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
850
Done Done
chrislema
184
16k
How GitHub (no longer) Works
holman
314
140k
Testing 201, or: Great Expectations
jmmastey
43
7.6k
Building Applications with DynamoDB
mza
95
6.5k
Statistics for Hackers
jakevdp
799
220k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
530
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