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
May the source be with you
Search
高見龍
December 08, 2012
Programming
10
1.1k
May the source be with you
Learn more about Ruby through reading Ruby source code.
高見龍
December 08, 2012
Tweet
Share
More Decks by 高見龍
See All by 高見龍
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
540
自己的售票系統自己做!
eddie
0
540
AI Agent 時代的開發者生存指南
eddie
4
2.6k
print("Hello, World")
eddie
2
610
為你自己學 Python - 冷知識篇
eddie
1
420
為你自己學 Python
eddie
0
710
Generative AI 年會小聚 - AI 教我寫程式
eddie
0
180
讓數據說話:用 Python、Prometheus 和 Grafana 講故事
eddie
0
700
AI 時代的程式語言學習法
eddie
0
220
Other Decks in Programming
See All in Programming
[AtCoder Conference 2025] LLMを使った業務AHCの上⼿な解き⽅
terryu16
6
1k
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
740
ELYZA_Findy AI Engineering Summit登壇資料_AIコーディング時代に「ちゃんと」やること_toB LLMプロダクト開発舞台裏_20251216
elyza
2
1k
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
140
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
110
はじめてのカスタムエージェント【GitHub Copilot Agent Mode編】
satoshi256kbyte
0
160
re:Invent 2025 トレンドからみる製品開発への AI Agent 活用
yoskoh
0
630
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
1.7k
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
400
.NET Conf 2025 の興味のあるセッ ションを復習した / dotnet conf 2025 quick recap for backend engineer
tomohisa
0
110
Graviton と Nitro と私
maroon1st
0
160
クラウドに依存しないS3を使った開発術
simesaba80
0
220
Featured
See All Featured
BBQ
matthewcrist
89
10k
Side Projects
sachag
455
43k
Crafting Experiences
bethany
0
29
Build your cross-platform service in a week with App Engine
jlugia
234
18k
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
Mobile First: as difficult as doing things right
swwweet
225
10k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
280
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
1
350
Evolving SEO for Evolving Search Engines
ryanjones
0
98
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
30 Presentation Tips
portentint
PRO
1
190
Transcript
May the Source Be with You Chimpr Learning Ruby by
Reading Ruby Source Code 12年12月8日星期六
12年12月8日星期六
I’m a Flash guy ≈ 8 years 12年12月8日星期六
also a Ruby guy ≈ 4 years 12年12月8日星期六
but not a C guy, yet! 12年12月8日星期六
Ruby > Rails 12年12月8日星期六
share Ruby learning experiences in OpenFoundry and some developer party.
12年12月8日星期六
a SHOW-OFF person! 12年12月8日星期六
Learning Ruby by Reading Ruby Source Code 12年12月8日星期六
- why read source code? - how o sart? -
anything ineresting? - wrie a simple Ruby Exension with C. 12年12月8日星期六
Why read source code? 12年12月8日星期六
see how the Ruby Core Team wrie Ruby 12年12月8日星期六
fun :) 12年12月8日星期六
"once you sart digging around in someone else’s code base,
you’ll learn a lot about your own strengths and weaknesses" - Ruby Best Practice http://blog.rubybestpractices.com/posts/gregory/005-code-reading-stdlib.html 12年12月8日星期六
pre-requirement? 12年12月8日星期六
C language 12年12月8日星期六
curiosity and enthusiasm 12年12月8日星期六
What if I don’t have any skill of C? 12年12月8日星期六
Just learn it :) 12年12月8日星期六
How o Sart? 12年12月8日星期六
get Ruby source code download from Ruby websie: http://www.ruby-lang.org/en/ or
from github: https://github.com/ruby/ruby 12年12月8日星期六
Ruby Source Code: - *.c + *.h - *.rb (Sdlib)
12年12月8日星期六
Tools - Vim 12年12月8日星期六
Ruby 1.9.2 p290 12年12月8日星期六
Quick Browsing.. :) 12年12月8日星期六
what's a Ruby object? 12年12月8日星期六
sart from basic structure, like Object, Class, String, Array, Hash,
Basic... 12年12月8日星期六
Object = RObject, Class = RClass, String = RString, Array
= RArray, Hash = RHash, Basic = RBasic 12年12月8日星期六
“ruby.h” 12年12月8日星期六
“object.c” 12年12月8日星期六
Init_XXXX 12年12月8日星期六
class.c#350-354 all Class’s class is Class! 12年12月8日星期六
class.c#556 rb_define_module() 12年12月8日星期六
class.c#1170 rb_define_method() 12年12月8日星期六
Object.c#2556~2560 Integer(), Float(), String(), Array() are all global methods 12年12月8日星期六
= rb_define_module_method on kernel = rb_define_private_method on kernel + rb_define_singleton_method
on kernel class.c#1332 rb_define_global_function() 12年12月8日星期六
“new” 12年12月8日星期六
class A def initialize puts "hello" end end a =
A.new 12年12月8日星期六
object.c#2624 new -> rb_class_new_instance -> rb_obj_alloc -> rb_obj_call_init 12年12月8日星期六
o_s v.s o_str 12年12月8日星期六
String.c#7488 rb_define_method(rb_cString, "to_s", rb_str_to_s, 0); rb_define_method(rb_cString, "to_str", rb_str_to_s, 0); 12年12月8日星期六
Array.c#4504 rb_define_alias(rb_cArray, "to_s", "inspect"); but no `to_str` 12年12月8日星期六
proc.c#2105 how to execute a Proc? - proc.call - proc[]
- proc === 123 - proc.yield 12年12月8日星期六
object.c#2592 - attr - attr_reader - attr_writer - attr_accessor 12年12月8日星期六
push v.s << 12年12月8日星期六
array.c#709 (<<) VALUE rb_ary_push(VALUE ary, VALUE item){ rb_ary_modify(ary); return rb_ary_push_1(ary,
item); } 12年12月8日星期六
array.c#742 (push) static VALUE rb_ary_push_m(int argc, VALUE *argv, VALUE ary)
{ rb_ary_modify(ary); while (argc--) { rb_ary_push_1(ary, *argv++); } return ary; } 12年12月8日星期六
gc.c#3214-3215 Object’s ID 12年12月8日星期六
gc.c#2865-2867 How Symbol works? 12年12月8日星期六
people = { "Eddie" => ["green", "
[email protected]
"], "Joanne" => ["yellow",
"
[email protected]
"] } people.map { |name, (color, email)| puts [name, email] } 12年12月8日星期六
people = { "Eddie" => ["green", "
[email protected]
"], "Joanne" => ["yellow",
"
[email protected]
"] } people.map { |name, (_, email)| puts [name, email] } parse.y#8277-8299 shadowing_lvar_gen() 12年12月8日星期六
vm_eval.c#224 method_missing 12年12月8日星期六
ineresting naming :) 12年12月8日星期六
ext/ripper/ripper.c#15890 rb_intern, rb_intern2, rb_intern3 12年12月8日星期六
array.c#325 rb_ary_new, rb_ary_new2, ary_new, rb_ary_new3, rb_ary_new4 12年12月8日星期六
Simple Ruby Exension from Scrach 12年12月8日星期六
Conclusion 12年12月8日星期六
from basic structure 12年12月8日星期六
and don’t be afraid 12年12月8日星期六
References 12年12月8日星期六
Rubyソースコード完全解説 by 青木峰郎 http://i.loveruby.net/ja/rhg/book/ 12年12月8日星期六
Ruby Under a Microscope by Pat Shaughnessy http://patshaughnessy.net/ruby-under-a-microscope 12年12月8日星期六
still not finish.. 12年12月8日星期六
Ian Ruotsala 12年12月8日星期六
Chimpr Hope can become a Jedi Master someday :) 12年12月8日星期六
おわり thank you all :) 12年12月8日星期六
any question? 12年12月8日星期六
高見見龍龍 Conacts photo by Eddie Websie Blog Plurk Facebook Google
Plus Twiter Email Mobile http://www.eddie.com.tw http://blog.eddie.com.tw http://www.plurk.com/aquarianboy http://www.facebook.com/eddiekao http://www.eddie.com.tw/+ https://twiter.com/#!/eddiekao
[email protected]
+886-928-617-687 12年12月8日星期六