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
300
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
7k
タピオカに学ぶ二段階認証 / tapioca-mfa
ariaki
5
1.3k
古に学ぶ個人開発のススメ / My recommendation of personal development
ariaki
1
1.5k
Other Decks in Technology
See All in Technology
Understanding Go GC #coefl_go_jp
bengo4com
0
1.1k
サービスロボット最前線:ugoが挑むPhysical AI活用
kmatsuiugo
0
190
第4回 関東Kaggler会 [Training LLMs with Limited VRAM]
tascj
11
1.6k
いま、あらためて考えてみるアカウント管理 with IaC / Account management with IaC
kohbis
2
670
モノレポにおけるエラー管理 ~Runbook自動生成とチームメンションの最適化
biwashi
0
540
Yahoo!ニュースにおけるソフトウェア開発
lycorptech_jp
PRO
0
300
帳票Vibe Coding
terurou
0
130
AIが住民向けコンシェルジュに?Amazon Connectと生成AIで実現する自治体AIエージェント!
yuyeah
0
260
ZOZOTOWNフロントエンドにおけるディレクトリの分割戦略
zozotech
PRO
15
5k
LLM時代の検索とコンテキストエンジニアリング
shibuiwilliam
2
1.1k
Android Studio の 新しいAI機能を試してみよう / Try out the new AI features in Android Studio
yanzm
0
260
知られざるprops命名の慣習 アクション編
uhyo
10
2.2k
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
The Pragmatic Product Professional
lauravandoore
36
6.8k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
110
20k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
780
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
4 Signs Your Business is Dying
shpigford
184
22k
Building Adaptive Systems
keathley
43
2.7k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
The Invisible Side of Design
smashingmag
301
51k
Code Review Best Practice
trishagee
70
19k
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