Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
JavaScriptはコンパイラ型言語か?/Is JavaScript a compiled ...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Akira Morikawa
September 18, 2018
Technology
3.4k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JavaScriptはコンパイラ型言語か?/Is JavaScript a compiled language?
JavaScriptはコンパイラ型言語か?インタプリタ型言語か?を調べてみました
#roppongijs
Akira Morikawa
September 18, 2018
More Decks by Akira Morikawa
See All by Akira Morikawa
コロナ禍だからこそ考えるオフラインコミュニティの意義 / significance of community
ariaki
0
2.2k
アウトプットの始め方/start output 20230121
ariaki
0
370
web-secure-phpcon2020
ariaki
3
3.8k
オブジェクトライフサイクルとメモリ管理を学ぼう / OOC 2020
ariaki
8
4.2k
エンジニアはアウトプットによって成長できるのか? / Grow with your output
ariaki
24
6.8k
アウトプットを始めよう / How to begin output jawsug-bgnr
ariaki
2
4.1k
参加者の安全を守れていますか? / Protecting community safety
ariaki
1
7.7k
タピオカに学ぶ二段階認証 / tapioca-mfa
ariaki
5
1.4k
古に学ぶ個人開発のススメ / My recommendation of personal development
ariaki
1
1.6k
Other Decks in Technology
See All in Technology
こんなアーキテクチャ図は嫌だ BEYOND THE TIME: 半年後の自分へ贈る15のメッセージ / 15 of Anti-pattern in AWS Architecture Diagrams
naospon
3
290
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
130
AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2
visional_engineering_and_design
3
2k
振り返りこそエンジニアの本領
negima
0
350
2026-09-04 SRE Tech Talk #15 怠惰なTerraform / Lazy Terraform
masasuzu
0
230
From Vanilla Kubernetes to a Batteries-Included Platform: Developer Experience at 1,300+ Clusters
yosshi_
0
660
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
4
3.8k
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
0
1.2k
omasushiというライブラリを作った
polidog
PRO
0
170
Tab5をRubyで動くパソコンにする
kishima
2
280
GuardDuty 検知対応を DevOps Agent で効率化しようとしている話 / GuardDuty Investigations with DevOps Agent
masahirokawahara
1
340
AIオーケストレーションを活用した 開発ワークフローの設計と実践
bqnq
0
120
Featured
See All Featured
Game over? The fight for quality and originality in the time of robots
wayneb77
1
270
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
310
Statistics for Hackers
jakevdp
799
230k
Become a Pro
speakerdeck
PRO
31
6.2k
Balancing Empowerment & Direction
lara
6
1.3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Embracing the Ebb and Flow
colly
88
5.2k
RailsConf 2023
tenderlove
30
1.5k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Discover your Explorer Soul
emna__ayadi
2
1.3k
Docker and Python
trallard
47
4.2k
It's Worth the Effort
3n
188
29k
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