ruby-x.github.io/app/views/slides/minsk/_how.haml

155 lines
3.8 KiB
Plaintext

%section#how
%h2 That was what
%br
%h4 next
%br
%h1 How
%p.fragment With rails analogy
%section#size
%h2 Size
%p compared to rails
%h3 active_record 1.0
%h3.fragment 1 / 3 active_record (rails 1.0)
%h3.fragment 1 / 10 rails
%section#app
%h2 Rails app
%p many views
%br
%h2.fragment RubyX
%p.fragment many methods
%br
%h4.fragment method = view
%section#controller
%h3 controller renders view
%br
%h3.fragment compiler compiles methods
%br
%h4.fragment controller = compiler
%section#http
%h3 rack handles http
%br
%h3.fragment assembler binary creation
%br
%h4.fragment lower levels don't matter to most
%section#layers
%h3 request processed by layers
%br
%h3.fragment Compiler processes in layers
%br
%h4.fragment same same, but different :-)
%section
%section#compiler_layers
%h2 Compiler layers
%p Ruby source (parser gem)
%p.fragment Simple Object Language
%p.fragment SlotMachine
%p.fragment Risc abstraction
%p.fragment Target (arm)
%p.fragment Elf / binary
%section#sol
%h2 Sol, Simple Object language
%p simple, ruby without the fluff ( splats / unless ..)
%p object model like ruby
%p Statements + Expression
%p nothing implicit
%section#machines
%h2 Language vs Machine
%p next level is (abtract) machine
%p.fragment statement tree vs instruction list
%p.fragment variables vs memory
%p.fragment control structures vs jumps
%p.fragment abstract vs basic
%section#mom
%section#mom1
%h2 SlotMachine
%p 16 instructions
%p.fragment Works only on memory
%p.fragment higher level than next
%p.fragment ease transition to next level
%p.fragment 1 Sol → 2-8 slot
%section#mom2
%h2 SlotMachine instructions
%p simple call , argument transfer , return sequence
%p.fragment dynamic call , method resolve
%p.fragment checks with implicit jumps
%p.fragment ruby truth check , identity check
%p.fragment yield . . .
%section
%section#risc1
%h2 Risc abstraction
%p arm without the fluff
%p.fragment arm like registers
%p.fragment 20 instructions
%p.fragment extensible (for builtin + more)
%p.fragment last virtual layer
%p.fragment interpreter + visual debugger
%section#risc2
%h2 Risc instructions
%p mem/reg + reg/reg
%p.fragment arithmetic operators
%p.fragment tests on operation result
%p.fragment jump , call , return
%p.fragment syscall
%section#code
%h2 Code generation
%br
%br
%h2.fragment Object generation
%section#model
%h2 Object Model
%p Everything is Object
%p.fragment Fixed sizes
%p.fragment opaque data, ruby has no access
%p.fragment slot instructions to process data
%section#types
%h2 Object has Type
%p.fragment Types are immutable
%p.fragment Types store callable methods
%p.fragment maps names to indexes
%p.fragment does not define types recursively
%p.fragment type reference may change
%section#classes
%h2 Type implements Class
%p Class has instance Type
%p.fragment new object has instance type
%p.fragment instance type may change
%p.fragment many types implement one class
%p.fragment class stores method definition
%section#dynamics
%h3 Types are static
%h3 Ruby is dynamic
%h3.fragment.fade-out ?
%p.fragment objects type reference may change
%p.fragment class instance type may change
%section#parfait
%h2 Basic Objects: Parfait
%p minimal runtime for compiling
%p.fragment Basic oo: Class , Type , Method , Code
%p.fragment Utils: String, Integer , Array , Hash
%p.fragment also, additional builtin methods
%section#project
%h2 Project
%p 5 years
%p 3k commits , 1600 tests
%p multi arch ready, arm working
%p basic executables (mini rt)
%p stable architecture