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
220
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
RailsGirls IZUMO スポンサーLT
16bitidol
0
200
「App Intent」よくわからんけどすごい!
rinngo0302
1
100
CDK引数設計道場100本ノック
badmintoncryer
2
450
DMMを支える決済基盤の技術的負債にどう立ち向かうか / Addressing Technical Debt in Payment Infrastructure
yoshiyoshifujii
3
130
Python型ヒント完全ガイド 初心者でも分かる、現代的で実践的な使い方
mickey_kubo
1
220
Quand Symfony, ApiPlatform, OpenAI et LangChain s'allient pour exploiter vos PDF : de la théorie à la production…
ahmedbhs123
0
210
効率的な開発手段として VRTを活用する
ishkawa
0
160
[SRE NEXT] 複雑なシステムにおけるUser Journey SLOの導入
yakenji
0
130
猫と暮らす Google Nest Cam生活🐈 / WebRTC with Google Nest Cam
yutailang0119
0
170
ふつうの技術スタックでアート作品を作ってみる
akira888
1
1.2k
AI コーディングエージェントの時代へ:JetBrains が描く開発の未来
masaruhr
1
200
はじめてのWeb API体験 ー 飲食店検索アプリを作ろうー
akinko_0915
0
140
Featured
See All Featured
Designing Experiences People Love
moore
142
24k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
282
13k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
21
1.3k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Navigating Team Friction
lara
187
15k
Designing for humans not robots
tammielis
253
25k
Faster Mobile Websites
deanohume
308
31k
Optimizing for Happiness
mojombo
379
70k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
Docker and Python
trallard
45
3.5k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
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