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
79
Papers We Love - Immix mark-region garbage collector
brixen
2
660
An Ensemble of Programming Languages: How to Build a Platform for Collaboration
brixen
0
190
Types As Premature Optimization
brixen
2
460
Rubinius X
brixen
3
260
Code Is What Code Does
brixen
0
400
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
130
Other Decks in Programming
See All in Programming
Crafting Cross-Platform Adventures: Building a Game Engine with Kotlin Multiplatform
dwursteisen
0
220
Data Contracts In Practice With Debezium and Apache Flink
gunnarmorling
0
100
事業フェーズの変化に対応する 開発生産性向上のゼロイチ
masaygggg
0
220
Prolog入門
qnighy
4
1k
RAGの回答精度評価用のQAデータセットを生成AIに作らせた話
kurahara
0
260
GraphQLの魅力を引き出すAndroidクライアント実装
morux2
3
830
Desafios e Lições Aprendidas na Migração de Monólitos para Microsserviços em Java
jessilyneh
2
150
Using Livebook to build and deploy internal tools @ ElixirConf 2024
hugobarauna
0
250
API Platform for Laravel
dunglas
1
690
Go1.23で入った errorsパッケージの小さなアプデ
kuro_kurorrr
2
400
Jakarta EE meets AI
ivargrimstad
1
550
Understand the mechanism! Let's do screenshots tests of Compose Previews with various variations / 仕組みから理解する!Composeプレビューを様々なバリエーションでスクリーンショットテストしよう
sumio
3
870
Featured
See All Featured
BBQ
matthewcrist
83
9.2k
Mobile First: as difficult as doing things right
swwweet
221
8.8k
Build The Right Thing And Hit Your Dates
maggiecrowley
30
2.3k
How to Think Like a Performance Engineer
csswizardry
16
960
Creatively Recalculating Your Daily Design Routine
revolveconf
215
12k
Embracing the Ebb and Flow
colly
83
4.4k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
227
52k
What the flash - Photography Introduction
edds
67
11k
Building Better People: How to give real-time feedback that sticks.
wjessup
359
19k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
354
29k
How to Ace a Technical Interview
jacobian
274
23k
The Invisible Customer
myddelton
119
13k
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