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
120
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
77
Papers We Love - Immix mark-region garbage collector
brixen
2
600
An Ensemble of Programming Languages: How to Build a Platform for Collaboration
brixen
0
160
Types As Premature Optimization
brixen
2
420
Rubinius X
brixen
3
260
Code Is What Code Does
brixen
0
390
The Future of Ruby
brixen
1
310
Rubinius, and the Future of Ruby
brixen
2
230
So you want to design a programming language
brixen
1
120
Other Decks in Programming
See All in Programming
Goのmultiple errorsについて (2024年4月版)
syumai
4
1.2k
if constexpr文はテンプレート世界のラムダ式である
faithandbrave
3
690
SIMD Parallel Programming with the Vector API
josepaumard
0
230
Three ways to use AI on Android: The Good, the Bad and the Ugly
marxallski
0
110
Documentation for users with AsciiDoc and Antora
ahus1
0
370
Deep Dive into React Stream/Serialize
mugi_uno
3
710
Node.js v22 で変わること
yosuke_furukawa
PRO
12
4k
Ruby Function Composition
bkuhlmann
1
340
禅の心を手に入れよ
eltociear
1
400
Go製Webアプリケーションのエラーとの向き合い方大全、あるいはやっぱりスタックトレース欲しいやん / Kyoto.go #50
utgwkk
6
1.8k
AmperとFleetを使ったAndroidアプリ
yoppie
0
260
Exploring the Implementation of “t.Run”, “t.Parallel”, and “t.Cleanup”
akarin
1
130
Featured
See All Featured
Designing for Performance
lara
601
67k
Automating Front-end Workflow
addyosmani
1357
200k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
26
2.3k
Large-scale JavaScript Application Architecture
addyosmani
504
110k
For a Future-Friendly Web
brad_frost
172
9k
Building Applications with DynamoDB
mza
88
5.6k
Optimising Largest Contentful Paint
csswizardry
13
2.4k
Fashionably flexible responsive web design (full day workshop)
malarkey
398
65k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
155
14k
The Power of CSS Pseudo Elements
geoffreycrofte
62
5k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
Making Projects Easy
brettharned
109
5.5k
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