Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RubyConf Taiwan 2025 Preview @RubyJam

Avatar for Kasa Hsiao Kasa Hsiao
August 08, 2025
24

RubyConf Taiwan 2025 Preview @RubyJam

In this prep session for RubyConf Taiwan × COSCUP 2025, I aimed to help everyone break through their mental block and get an initial taste of how Ruby’s underlying lexer and parser work — all within a limited time, using extremely simple explanations and the ㄅㄆㄇ (Bopomofo) phonetic symbols familiar to people in Taiwan.

I also gave a brief introduction to lightweight Ruby runtimes, which are still less familiar to many in Taiwan, and wrapped up by sharing about Code Party — an event I had the honor of hosting for the first time locally.

Avatar for Kasa Hsiao

Kasa Hsiao

August 08, 2025
Tweet

Transcript

  1. 👋 self.inspect ☂ Kasa @k_hno3 💼 NTU COOL 🗣 [

    :中文, :EN, :日本語 ] 🤖 [ :Ruby, :TypeScript, :Python ] 🫶 [ 'Anime', 'English Parliamentary Debate', 'Onsen Ryokan!' ] # …偶爾也寫一點 ReactJS # …偶爾也弄一點 DevOps # 看得出來專長就是 ...雜耍 + 纏鬥 🤡 2
  2. topics.each 🤯 預習 ...? 我帶?!蛤???!!! 🤔 我們一起預習什麼好 😈 那就 ...一起突破(一點)心魔吧!

    🔬 用 ㄅㄆㄇ 理解 Ruby 底層的 ㄅㄆㄇ 🦋 那些輕量 runtime 們的八卦 🌱 今年蹦出來的 Code Party … 葫蘆裡賣什麼藥 3
  3. 🤔 我們一起預習什麼好 8 2. 近年常出現的主題,但是我有心魔、一直逃避? 一起來突破心魔 拔出石中劍, 開啟旅程 💪 這個今天講不到,TODOs:

    • 複習他 conf TW 2023 的 HPKE 演講 • 複習他 kaigi 2025 的演講 • 想想可以跟他聊什麼(?) 🦋 輕量 runtime 快樂夥伴
  4. 🔬 用 ㄅㄆㄇ 理解 Ruby 底層的 ㄅㄆㄇ 10 縱觀一下 Ruby

    語言處理的流程 Ruby code tokens AST 抽象 語法樹 iSeq bytecode Lexer Parser Compiler VM Output CPU 指令或是 JIT機器碼
  5. 🔬 用 ㄅㄆㄇ 理解 Ruby 底層的 ㄅㄆㄇ 11 縱觀一下 Ruby

    語言處理的流程 Ruby code tokens AST 抽象 語法樹 iSeq bytecode Lexer Parser Compiler VM Output CPU 指令或是 JIT機器碼
  6. 🔬 用 ㄅㄆㄇ 理解 Ruby 底層的 ㄅㄆㄇ 12 極度簡單抽象的...用 ㄅㄆㄇ

    了解: Lexer? tokens? Parser? shift? reduce? AST? 蛤?就這?! https://justfont.com/justforfun/elf-bpmf
  7. 🔬 用 ㄅㄆㄇ 理解 Ruby 底層的 ㄅㄆㄇ 13 推薦花時間看的資源: 如果想要更多...

    https://docs.google.com/presentation/d/1oFvP4W 3Ox8uiGXsWa3ibyDga1cpLguVZhwCjpD46hFU speakerdeck.com/coe401_/tanosiirubynogou-we n-jie-xi-tua https://x.com/spikeolaf/status/1912502785830265168 https://patshaughnessy.net/ruby-under-a-mi croscope
  8. 🔬 用 ㄅㄆㄇ 理解 Ruby 底層的 ㄅㄆㄇ 15 極度簡單抽象的 用

    ㄅㄆㄇ 理解以下名詞: Lexer 依據詞彙規則(Lexical Rules)將一整串程式碼,切成有意義的記號們 Token 程式碼的基本單位,代表一個有意義的記號 好,回到正題
  9. 🔬 用 ㄅㄆㄇ 理解 Ruby 底層的 ㄅㄆㄇ 16 Parser 依據語法規則(Grammar),將一串

    tokens 轉換成一個有結構的資料表示 方式,通常是 AST AST(Abstract Syntax Tree) 依照 語法規則 產生的樹狀結構,用來表達原始程式碼的語法結構 通常是有根有序的多叉樹(rooted, ordered, n-ary tree) 想看 LALR parser (parser.y) 生的語法樹 => 用 Ripper 想看 Prism 生的語法樹 => 用 Prism 提供的介面(或 RubyVM::AST)
  10. 🔬 用 ㄅㄆㄇ 理解 Ruby 底層的 ㄅㄆㄇ 17 → ㄒㄧㄤˇㄒㄧㄚˋㄅㄢ

    → 想下班 我的 👀 和 🧠 是怎麼分析出來 的? … 💡就跟 Lexer & Parser 有87%像!
  11. 🔬 用 ㄅㄆㄇ 理解 Ruby 底層的 ㄅㄆㄇ 18 聲母 ㄒ

    介音 ㄧ 韻母 ㄤ 聲調 ˇ 聲母 ㄒ 介音 ㄧ 韻母 ㄚ 聲調 ˋ 聲母 ㄅ 韻母 ㄢ newline EOF Lexical Rules 聲母(ㄅㄆ ㄇ ㄒ) 中介音(ㄧ ㄨ ㄩ) 韻母(ㄢ ㄣ ㄤ ㄥ) 聲調(ˊ ˇ ˋ ˙)
  12. 🔬 用 ㄅㄆㄇ 理解 Ruby 底層的 ㄅㄆㄇ 19 Grammar 一整句話是

    ::= {好多字} + newline + EOF 一個字的音 ::= 聲母 + 韻母 + 聲調 | 無 韻母 ::= 韻母 | (中介音+韻母}) Parser 管的記憶體 (Stack | Queue) shift ㄒ | ㄧㄤˇㄒㄧㄚˋㄅㄢ shift ㄒㄧ | ㄤˇㄒㄧㄚˋㄅㄢ … ㄒㄧㄤˇ | ㄒㄧㄚˋㄅㄢ reduce 想 | ㄒㄧㄚˋㄅㄢ 聲母 ㄒ 介音 ㄧ 韻母 ㄤ 聲調 ˇ 聲母 ㄒ 介音 ㄧ 韻母 ㄚ 聲調 ˋ 聲母 ㄅ 韻母 ㄢ newline EOF
  13. 🔬 用 ㄅㄆㄇ 理解 Ruby 底層的 ㄅㄆㄇ 20 Grammar 一整句話是

    ::= {好多字} + newline + EOF 一個字的音 ::= 聲母 + 韻母 + 聲調 | 無 韻母 ::= 韻母 | (中介音+韻母}) 聲母 ㄒ 介音 ㄧ 韻母 ㄤ 聲調 ˇ 聲母 ㄒ 介音 ㄧ 韻母 ㄚ 聲調 ˋ 聲母 ㄅ 韻母 ㄢ newline EOF
  14. 🔬 用 ㄅㄆㄇ 理解 Ruby 底層的 ㄅㄆㄇ 21 聲母 ㄒ

    介音 ㄧ 韻母 ㄤ 聲調 ˇ 聲母 ㄒ 介音 ㄧ 韻母 ㄚ 聲調 ˋ 聲母 ㄅ 韻母 ㄢ newline EOF 那 conflict 是? → 如果 ㄧ 也是韻母... Grammar 一整句話是 ::= {好多字} + newline + EOF 一個字的音 ::= 聲母 + 韻母 + 聲調 | 無 韻母 ::= 韻母 | (中介音+韻母})
  15. 🔬 用 ㄅㄆㄇ 理解 Ruby 底層的 ㄅㄆㄇ 22 🤔 對程式人生的影響?

    1. 對開發工具的了解,有膽期望貢獻 eg. 為什麼處理 metaprogramming 有困難 2. 思考日常開發問題時,多了一個方向 → 程式碼也是一大坨字串,有現成的 API 取得好用的資料結構 3. 跟核心社群的親近感(至少不怕...吧 https://x.com/hatsu_38/status/1930623285139743141
  16. 🦋 那些輕量 runtime 們的八卦 23 新活動 🐣 • PicoRuby Overflow

    Kaigi • mrubygirls mruby/c mruby picoruby memory size (RAM) < 40KB < 400KB <128KB main target one-chip microprocessor s general embedded software one-chip microcontroller release year 2017 2012 2021