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
Dart VM と Optional Typing
Search
Tomochika Hara
September 22, 2013
Technology
440
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Dart VM と Optional Typing
2013 Dart VM と Optional Typing
Tomochika Hara
September 22, 2013
More Decks by Tomochika Hara
See All by Tomochika Hara
Swiftでつくるファミコンエミュレータのススメ
thara
3
2.6k
モバイルゲーム開発と Google App Engine
thara
0
420
GCPとAWSの比較
thara
0
140
Dart in なごやまつり
thara
0
68
Dartの基本
thara
0
91
Dart言語仕様 Pick-up
thara
0
670
Future & Stream in Dart
thara
0
530
Other Decks in Technology
See All in Technology
Reticulum, le réseau cypherpunk dont vous avez besoin !
rlifchitz
0
100
[JAWS Festa 2026]一番いい仕事は、請求書に現れない / jawsfesta2026
sh_fk2
2
390
An Introduction to Context Ontology Accelerator (teaching AI agents what your data means)
inariku
PRO
1
150
Software Engineering in an AI-Driven World
erikjhordan_rey
0
130
Active Directory と Entra ID のむむむな関係
murachiakira
PRO
3
1.7k
ゼロから作るWebアプリの新定番!?Amplify Gen 2 × AWS Blocksで実現する「開発速度とRDBの柔軟性のいいとこ取り」
amixedcolor
1
180
re:Invent2026 事前勉強会 歴史と愉しみ方10分LT編
toshi_atsumi
0
160
Building Audio Plugin Ecosystem for Android in 2026
atsushieno
2
160
複雑な業務システムを高速でつくるため、チーム全員をつくれる人へ
ayakurabuchi
0
140
HQ駆動開発で最高のAI-Contextを作ろう
sansantech
PRO
1
110
Sizing, Benchmarking and Performance Tuning Apache Flink Clusters
rmetzger
0
130
PostgreSQL オプティマイザ統計の秘密
nori_shinoda
0
410
Featured
See All Featured
Statistics for Hackers
jakevdp
799
230k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
470
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
890
Agile that works and the tools we love
rasmusluckow
331
22k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Code Reviewing Like a Champion
maltzj
529
40k
Mobile First: as difficult as doing things right
swwweet
225
10k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
3
1.2k
Discover your Explorer Soul
emna__ayadi
2
1.3k
Transcript
Dart VMと Optional Typing tomochikahara @zetta1985
Agenda • Source Code VM • Isolates • Optional Typing
※ パフォーマンスもウリだけど、今回は語りません、というか語れません 低レイヤの詳しいことは nothingcosmosさんの Dart VM Advent Calendarが詳しい(2012年末時点である事に注意)
Source Code VM Why not Bytecode VM?
JITコンパイル Source Code VM Source Code アセンブラ 中間表現 抽象構文木 Byte
Code VM JITコンパイル コンパイル Source Code アセンブラ 中間表現 抽象構文木
JITコンパイル Source Code VM Source Code アセンブラ 中間表現 抽象構文木 •
コーディング後のコンパイ ル作業が不要 ◦ LL - likeな開発 • 言語に特化した最適化 ◦ 末尾再帰最適化 • 中間表現のカプセル化 ◦ 進化させやすい ◦ 後方互換性の範囲
Isolates Why not Bytecode VM?
• ErlangのActorが源流? • 共有メモリを持たない ◦ top level variableもisolate単位 ◦ full
GCもisolate単位 ◦ 複数isolate間での状態管理が不要 • Message Passing ◦ Object snapshot ◦ SendPortとReceivePortのみで連携 isolates ?
isolateの簡単な例 import 'dart:isolate'; childIsolate() { port.receive((msg, replyTo) { print('doing some
work'); if (replyTo != null) replyTo.send('shutdown'); }); } main() { var sender = spawnFunction(childIsolate); var receiver = new ReceivePort(); receiver.receive ((msg, _) { if (msg == 'shutdown') { print('shutting down'); receiver.close(); } }); sender.send('do work please', receiver.toSendPort() ); } isolate生成 Message受信時のCallback Message 送信 Message受信時のCallback Message 送信
Optional Typing
Optional Typing = 任意型付け • 型を指定してもいいし、しなくてもいい • 型指定があってもなくても、動作に影響しない • Production
Modeなら、LLとほぼ同じ ◦ 型指定無しで書いて、即実行 ◦ 但しREPLは無い
• コーディングから実行までの時間短縮 ◦ コンパイル手順が不要 & コンパイル自体の時間短縮が必要 ◦ Web(GUI)アプリ開発では特に重要 ▪ GWTでの反省?
なぜ Optional typing なのか? • 言語仕様とType Systemを疎結合に ◦ Type Systemに言語仕様が依存すると 言語自体の進化を妨げる
Optional Typingの背景
Pluggable Type System • 現Dart言語設計者 Gilad Bracha氏の発案(2004) • Gilad Bracha氏
◦ Java言語仕様 ◦ Java仮想マシン仕様 ◦ Smalltalk ◦ Newspeak ※ 他にもJoshua BlochがDartの言語仕様に関わる。 Javaっぽくなるのは必然?
Pluggable Type System • 言語とType System の相互依存性の排除 ◦ 便利なType System
は言語に深く依存する ◦ SemanticsもType Systemに依存すると発展を阻害 ▪ Cast, Overloading, Accessibility • Modularityの向上による言語とType System の独自進化 ◦ Type Systemを進化させやすい ▪ 動作しているコードに型は影響しないため • 最も自然なType System ◦ 型付きラムダ計算 ▪ 型が式の評価に影響を与えない
静的 vs 動的型付け 論争の終焉がここにある ※ 釣りです
そして Multiple Type Systemへ
参考 http://www.dartlang.org/ http://nothingcosmos.github.io/DartVM/index.html http://bracha.org/pluggable-types.pdf