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
JavaScriptはコンパイラ型言語か?/Is JavaScript a compiled ...
Search
Akira Morikawa
September 18, 2018
Technology
2
3.2k
JavaScriptはコンパイラ型言語か?/Is JavaScript a compiled language?
JavaScriptはコンパイラ型言語か?インタプリタ型言語か?を調べてみました
#roppongijs
Akira Morikawa
September 18, 2018
Tweet
Share
More Decks by Akira Morikawa
See All by Akira Morikawa
コロナ禍だからこそ考えるオフラインコミュニティの意義 / significance of community
ariaki
0
1.9k
アウトプットの始め方/start output 20230121
ariaki
0
310
web-secure-phpcon2020
ariaki
3
3.4k
オブジェクトライフサイクルとメモリ管理を学ぼう / OOC 2020
ariaki
8
3.7k
エンジニアはアウトプットによって成長できるのか? / Grow with your output
ariaki
24
6.5k
アウトプットを始めよう / How to begin output jawsug-bgnr
ariaki
2
3.8k
参加者の安全を守れていますか? / Protecting community safety
ariaki
1
7.1k
タピオカに学ぶ二段階認証 / tapioca-mfa
ariaki
5
1.3k
古に学ぶ個人開発のススメ / My recommendation of personal development
ariaki
1
1.5k
Other Decks in Technology
See All in Technology
[2025-09-30] Databricks Genie を利用した分析基盤とデータモデリングの IVRy の現在地
wxyzzz
0
470
OCI Network Firewall 概要
oracle4engineer
PRO
1
7.8k
pprof vs runtime/trace (FlightRecorder)
task4233
0
170
コンテキストエンジニアリングとは? 考え方と応用方法
findy_eventslides
4
900
いま注目しているデータエンジニアリングの論点
ikkimiyazaki
0
590
How to achieve interoperable digital identity across Asian countries
fujie
0
120
AI時代だからこそ考える、僕らが本当につくりたいスクラムチーム / A Scrum Team we really want to create in this AI era
takaking22
6
3.4k
SREとソフトウェア開発者の合同チームはどのようにS3のコストを削減したか?
muziyoshiz
1
100
10年の共創が示す、これからの開発者と企業の関係 ~ Crossroad
soracom
PRO
1
190
Shirankedo NOCで見えてきたeduroam/OpenRoaming運用ノウハウと課題 - BAKUCHIKU BANBAN #2
marokiki
0
140
Goに育てられ開発者向けセキュリティ事業を立ち上げた僕が今向き合う、AI × セキュリティの最前線 / Go Conference 2025
flatt_security
0
350
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
5.4k
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
Done Done
chrislema
185
16k
Site-Speed That Sticks
csswizardry
11
880
Building Better People: How to give real-time feedback that sticks.
wjessup
368
20k
Embracing the Ebb and Flow
colly
88
4.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Making the Leap to Tech Lead
cromwellryan
135
9.5k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Transcript
Sep 18, 2018 #roppongijs @ariaki4dev JavaScript a compiled language ?
Is CC-BY-4.0
[JavaScript] インタプリタですか? コンパイラですか?
自己紹介 ariaki @ariaki4dev #techdo #engineers_lt MEDIA DO Co.,Ltd.
コンパイラ/インタプリタの概要を知る JavaScriptの言語体系を考える 本日の目標 初級者もわかるくらい易しい説明をしたい する #engineers_ltを宣伝する ネタLTなのでエモくやりきる
プログラム言語体系 JavaScript動作の仕組み アジェンダ 1 2
プログラム言語体系 How compiler / interpreter works
コンパイラ型言語 インタプリタ型言語 プログラムをコンピュータが直接的 に実行できる機械語、又は、何らか の効率的な中間表現に変換して実行 する言語体系。 前提条件 プログラムを直接、又は、何らかの 効率的な中間表現に変換しながら実 行する言語体系。
直接実行するかどうか
字句解析 構文解析 意味解析 最適化 コード生成 実行 中間コード オブジェクトプログラム ソースコード
字句解析 let x = “string”; let x = “string” Tokens
構文解析 AST : Abstract Syntax Tree 構文木 (Lexical Analysis) (Syntax Analysis)
https://astexplorer.net JavaScriptをASTに分割して、 グラフィカルに表示するサイト AST Explorer
http://int3.github.io/metajs/ metajs JavaScriptをASTに分割して、 ステップ実行できるサイト
構文木 意味解析 中間コード IR : Intermediate Representation (Semantic Analysis) 最適化
コード生成 (Code Optimization) (Code Generation)
- ESTraverse - babel/traverse - estree-walker - Esrecurse - AST
Types - Acorn - Esprima - babel/parser - espree parser traverseler AST 関連ツール - escodegen - babel/generator code generator - ESLint linter
https://estools.github.io/escodegen/demo/ escodegen demo Esprima / escodegenを使って、 JavaScriptをパース+再生成する
How JavaScript works JavaScript 動作の仕組み
https://mathiasbynens.be/notes/shapes-ics インタプリタ? コンパイラ?
主要JSエンジン # Browser JS Engine 1 Google Chrome V8 2
Apple Safari JavaScriptCore 3 Mozilla Firefox SpiderMonkey 4 Microsoft Edge Chakra 5 KDE Konqueror KJS 6 Mozilla (JVM) Rhino
V8
JavaScriptCore
SpiderMonkey
Chakra
- Just-In-Timeコンパイラの略 (対義語 → AOT : Ahead-Of-Time コンパイラ) - プログラムの実行時にコンパイル
(中間コードからネイティブコードに変換) - Java / .NET 等が有名 JITコンパイラ
- JavaScript エンジンは JIT コンパイラを持つ - インタプリタはバイトコードをすばやく生成 - あまり効率的ではない -
コンパイラは効率の良いマシンコードを生成 - コンパイルに時間がかかる - 複数のコンパイラを使って最適化を制御している 結論
なんか両方もってるし 今日は両者の境界が曖昧なので どっちでもいい という結論に至りました まじか やべー これでええんか
あなたはどっち派?
告知 #engineers_lt / エンジニアの登壇を応援する会 https://engineers.connpass.com/event/100640/
Build Something Amazing written by ariaki4dev