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
AkarengaLT vol.37
Search
hashimoto-kei
October 01, 2025
Programming
0
64
AkarengaLT vol.37
AkarengaLT vol.37 に登壇した際の資料です。
https://engineercafe.connpass.com/event/366237/
hashimoto-kei
October 01, 2025
Tweet
Share
More Decks by hashimoto-kei
See All by hashimoto-kei
AkarengaLT vol.38
hashimoto_kei
1
110
AkarengaLT vol.36
hashimoto_kei
0
64
AkarengaLT vol.35
hashimoto_kei
0
170
Boast Code Party | RubyKaigi 2025 After Event
hashimoto_kei
2
260
Other Decks in Programming
See All in Programming
Devvox Belgium - Agentic AI Patterns
kdubois
1
140
Pythonに漸進的に型をつける
nealle
1
110
AI 駆動開発におけるコミュニティと AWS CDK の価値
konokenj
4
150
登壇は dynamic! な営みである / speech is dynamic
da1chi
0
360
他言語経験者が Golangci-lint を最初のコーディングメンターにした話 / How Golangci-lint Became My First Coding Mentor: A Story from a Polyglot Programmer
uma31
0
340
Webサーバーサイド言語としてのRustについて
kouyuume
1
4.2k
Building, Deploying, and Monitoring Ruby Web Applications with Falcon (Kaigi on Rails 2025)
ioquatix
4
2.5k
CSC509 Lecture 06
javiergs
PRO
0
260
テーブル定義書の構造化抽出して、生成AIでDWH分析を試してみた / devio2025tokyo
kasacchiful
0
270
20251016_Rails News ~Rails 8.1の足音を聴く~
morimorihoge
2
670
スマホから Youtube Shortsを見られないようにする
lemolatoon
27
33k
モテるデスク環境
mozumasu
3
1.1k
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
Statistics for Hackers
jakevdp
799
220k
What's in a price? How to price your products and services
michaelherold
246
12k
jQuery: Nuts, Bolts and Bling
dougneiner
65
7.9k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
How STYLIGHT went responsive
nonsquared
100
5.8k
Designing for Performance
lara
610
69k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Transcript
2025/09/28 hashimoto-kei AkarengaLT Vol. 37
ࣗݾհ Let me introduce myself.
໊લɿhashimoto-kei name: hashimoto-kei
ग़ɿԬ birthplace: Fukuoka City
ॴଐɿελʔτΞοϓ@Ԭ belong_to: startup at Fukuoka
ݞॻɿݚڀһ position: researcher
ࣄɿΤϯδχΞ work: engineer
ٕज़ελοΫɿPython, AWS technology stack: Python, AWS
͖ͳຊɿNand2Tetris favorite book: Nand2Tetris
None
ࠓͷςʔϚ Today’s theme
None
Nand2Tetris
·ͨʁ Again ?
લճͷ࣭ฦ͠ Follow up !
લఏࣝ Background
Compiler v.s. Interpreter
AOT v.s. JIT
Compiler
͋ΔݴޠΛ ผͷݴޠʹม Convert source code into target code
Interpreter
ݴޠΛղऍ࣮ͯ͠ߦ Execute source code
Example
GCC
$ gcc -o hello hello.c $ ./hello
C ݴޠͷίʔυΛ ػցޠʹม Convert C source code into machine code
Ruby
$ ruby hello.rb hello!
Ruby ͷίʔυΛ ղऍ࣮ͯ͠ߦ Execute Ruby source code
ࠞ߹ܕ Hybrid
Java
$ javac Hello.java $ java Hello
$ javac Hello.java $ java Hello
Java ͷίʔυ Λ ΫϥεϑΝΠϧʹม Convert Java source code into Java
class file
$ javac Hello.java $ java Hello
ΫϥεϑΝΠϧΛ ղऍ࣮ͯ͠ߦ Execute Java class file
JVM
2 ஈ֊ͷίϯύΠϧ Compile in 2 steps
Clang
$ gcc -o hello hello.c $ ./hello
None
https://interface.cqpub.co.jp/wp-content/uploads/interface/2015/03/if03_043.pdf
https://prev.rust-lang.org/ja-JP/faq.html
LLVM
https://ja.wikipedia.org/wiki/LLVM
VM
தؒදݱΛղऍ࣮ͯ͠ߦ Execute IR
Rubyͷதͷ༧උࣝ_RubyK a igiͷલʹΓୄʂ_ެ։༻ https://docs.google.com/present a tion/d/1oFvP4W3Ox8uiGXsW a 3ibyDg a 1cpLguVZhwCjpD46hFU/
mobilepresent?slide=id.g3389fccf211_0_100
AOT
࣮ߦલʹ ػցޠʹίϯύΠϧ Ahead-of-time compilation
$ gcc -o hello hello.c $ ./hello
JIT
࣮ߦ࣌ʹ ػցޠʹίϯύΠϧ Just-in-time compilation
Rubyͷதͷ༧උࣝ_RubyK a igiͷલʹΓୄʂ_ެ։༻ https://docs.google.com/present a tion/d/1oFvP4W3Ox8uiGXsW a 3ibyDg a 1cpLguVZhwCjpD46hFU/
mobilepresent?slide=id.g341c11ef11f_0_132
ม͕૿͑ΔͷͰ ͘ͳΔͷͰ…ʁ It seems to get slower because of more
conversions ...?
ಉҰͷॲཧΛ for จͰ Կ࣮ߦ͢Δ߹ͳͲͰ༗ޮ JIT costs some, but it pays
if same IR is executed many times
1.
JVM, LLVM Ҏ֎ͷ VM Λڭ͑ͯʂ Tell me VM other than
JVM, LLVM ?
LLVM ͷ VM Virtual Machine ͷུͰͳ͍ LLVM does not
mean Low Level Virtual Machine
Ruby … YARV / RubyVM Python … PVM PHP …
Zend VM Wasm … wasmtime
2.
Python ʹ JIT ίϯύΠϧ͕ͳ͍ ? Python has NO JIT Compiler
?
https://github.com/python/cpython/blob/m a in/Tools/jit/README.md#user-content-fn- pep-744-23c711528de a 85ce780721e60e9c01b5
CPython 3.13 ͔Β ࣮ݧతʹಋೖ CPython has experimental JIT compiler
since 3.13
3.
JIT ͰͳΜͰ͘ͳΔͷ ? Why does JIT make it faster ?
ࡁ Skip
4.
Nand2Tetris Ͱ࡞Δͷ ίϯύΠϥ/ΠϯλϓϦλʁ Compiler or Interpreter implemented in Nand2Tetris ?
ίϯύΠϥʢAOT/2 ஈ֊ʣ Compiler ( AOT / 2 steps )
https://interface.cqpub.co.jp/wp-content/uploads/interface/2015/03/if03_043.pdf
5.
Java ͕ਤʹग़ͯ͜ͳ͍ ͷͳͥʁ Why isn't Java in the diagram ?
None
͜ͷਤ LLVM ͷΑ͏ͳ ͷΛఆͯ͠ඳ͍͔ͨΒ This diagram is for AOT compiler
6.
C/C++ ίϯύΠϥͷ ϑϩϯτΤϯυͬͯʁ What does mean Frontend for C/C++ Compiler?
https://interface.cqpub.co.jp/wp-content/uploads/interface/2015/03/if03_043.pdf
7.
C/C++ ίϯύΠϥͷ όοΫΤϯυͬͯʁ What does mean Backend for C/C++ Compiler?
https://interface.cqpub.co.jp/wp-content/uploads/interface/2015/03/if03_043.pdf
End ...?
None
Thank you for listening!