IFM'17 keynote · IFM'17 keynote Author: Martin Vechev Created Date: 1/10/2018 2:11:04 AM ...
Transcript of IFM'17 keynote · IFM'17 keynote Author: Martin Vechev Created Date: 1/10/2018 2:11:04 AM ...
•
•
•
•
•
•
•
•
•
camera.unlock();
SurfaceHolder holder = getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.STP);
MediaRecorder r = new MediaRecorder();
r.setCamera(camera);
r.setAudioSource(MediaRecorder.AS);
r.setVideoSource(MediaRecorder.VS);
r.setOutFormat(MediaRecorder.MPEG4);
Camera camera = Camera.open();
camera.setDisplayOrientation(90);
Camera camera = Camera.open();
camera.setDisplayOrientation(90);
function FZ(e, t) { var n = []; var r = e.length; var i = 0; for (; i < r; i += t) if (i + t < r) n.push(e.substring(i, i + t)); elsen.push(e.substring(i, r)); return n;}
function chunkData(str, step) {var colNames = [];var len = str.length;var i = 0;for (; i < len; i += step)
if (i + step < len)colNames.push(str.substring(i, i + step));
elsecolNames.push(str.substring(i, len));
return colNames;}
function chunkData(str, step)var colNames = [];var len = str.length;var i = 0;for (; i < len; i += step)
if (i + step < len)colNames.push(str.substring(i, i + step));
elsecolNames.push(str.substring(i, len));
return colNames;
function chunkData(e, t)var n = [];var r = e.length;var i = 0;for (; i < r; i += t)
if (i + t < r)n.push(e.substring(i, i + t));
elsen.push(e.substring(i, r));
return n;
function chunkData(e, t)var n = [];var r = e.length;var i = 0;for (; i < r; i += t)
if (i + t < r)n.push(e.substring(i, i + t));
elsen.push(e.substring(i, r));
return n;
function chunkData(e, t)var n = [];var r = e.length;var i = 0;for (; i < r; i += t)
if (i + t < r)n.push(e.substring(i, i + t));
elsen.push(e.substring(i, r));
return n;
t r i
length
it
rlength
…
…
t r i
length
it
rlength
i t w
i step 0.5
j step 0.4
i r w
i len 0.6
i length 0.3
r length w
length length 0.5
len length 0.3
…
…
i
t
rlength
function chunkData(e, t)var n = [];var r = e.length;var i = 0;for (; i < r; i += t)
if (i + t < r)n.push(e.substring(i, i + t));
elsen.push(e.substring(i, r));
return n;
t r i
length
it
rlength
i t w
i step 0.5
j step 0.4
i r w
i len 0.6
i length 0.3
r length w
length length 0.5
len length 0.3
…
…
i
t
rlength
𝒘𝑇𝒇(𝑖, 𝑡, 𝑟, 𝑙𝑒𝑛𝑔𝑡ℎ)
function chunkData(e, t)var n = [];var r = e.length;var i = 0;for (; i < r; i += t)
if (i + t < r)n.push(e.substring(i, i + t));
elsen.push(e.substring(i, r));
return n;
t r i
length
it
rlength
i t w
i step 0.5
j step 0.4
i r w
i len 0.6
i length 0.3
r length w
length length 0.5
len length 0.3
…
…
i
t
r lengthi
len
step
𝒘𝑇𝒇(𝑖, 𝑡, 𝑟, 𝑙𝑒𝑛𝑔𝑡ℎ)
function chunkData(e, t)var n = [];var r = e.length;var i = 0;for (; i < r; i += t)
if (i + t < r)n.push(e.substring(i, i + t));
elsen.push(e.substring(i, r));
return n;
t r i
length
it
rlength
i t w
i step 0.5
j step 0.4
i r w
i len 0.6
i length 0.3
r length w
length length 0.5
len length 0.3
…
…
function chunkData(str, step)var colNames = [];var len = str.length;var i = 0;for (; i < len; i += step)
if (i + step < len)colNames.push(str.substring(i, i + step));
elsecolNames.push(str.substring(i, len));
return colNames;
i
t
r lengthi
len
step
𝒘𝑇𝒇(𝑖, 𝑡, 𝑟, 𝑙𝑒𝑛𝑔𝑡ℎ)
function chunkData(e, t)var n = [];var r = e.length;var i = 0;for (; i < r; i += t)
if (i + t < r)n.push(e.substring(i, i + t));
elsen.push(e.substring(i, r));
return n;
…
var n = [];var r = e.length;var i = 0;for (; i < r; i += t)
if (i + t < r)n.push(e.subs(i, i + t));
elsen.push(e.subs(i, r));
return n;
var colNames = [];var len = str.length;var i = 0;for (; i < len; i += step) if (i + step < len)colNames.push(str.subs(i, i + step));
elsecolNames.push(str.subs(i, len));
return colNames;
150MB
𝑃 𝑦 𝑥
package a.b.c
class a extends SQLiteHelper
{
SQLiteDatabase b; public
a(Context ctx) { b =
getWritableDatabase(); }
Cursor c(String str) {
return b.rawQuery(str); }}
package com.example.dbhelper
class DBHelper extends
SQLiteHelper {
SQLiteDatabase db;
public DBHelper(Context ctx) {
db = getWritableDatabase();
}
Cursor execSQL(String str) {
return db.rawQuery(str);
}
}
f.open(“file” | “r”);
f. ?
D
f.open(“f2” | “r”);
f.read();
f.open(“f1” | “r”);
f.read();
f.open(“f2” | “w”);
f.write(“c”);
f.open(“file” | “r”);
f. ?
P(open | f. ) ~ 3/6P(read | f. ) ~ 2/6P(write | f. ) ~ 1/6
𝜸
f.open(“f2” | “r”);
f.read();
D
f.open(“f1” | “r”);
f.read();
f.open(“f2” | “w”);
f.write(“c”);
f.open(“file” | “r”);
f. open
P(open | f. ) ~ 3/6P(read | f. ) ~ 2/6P(write | f. ) ~ 1/6
𝜸
f.open(“f2” | “r”);
f.read();
D
f.open(“f1” | “r”);
f.read();
f.open(“f2” | “w”);
f.write(“c”);
f.open(“file” | “r”);
f. ?
P(read | open ) ~ 2/3P(write | open ) ~ 1/3
𝜸
P(open | f. ) ~ 3/6P(read | f. ) ~ 2/6P(write | f. ) ~ 1/6
𝜸
D
f.open(“f2” | “r”);
f.read();
f.open(“f1” | “r”);
f.read();
f.open(“f2” | “w”);
f.write(“c”);
f.open(“file” | “r”);
f. read
P(read | open ) ~ 2/3P(write | open ) ~ 1/3
𝜸
P(open | f. ) ~ 3/6P(read | f. ) ~ 2/6P(write | f. ) ~ 1/6
𝜸
D
f.open(“f2” | “r”);
f.read();
f.open(“f1” | “r”);
f.read();
f.open(“f2” | “w”);
f.write(“c”);
f.open(“file” | “r”);
f. ?
P(read | open ) ~ 2/3P(write | open ) ~ 1/3
𝜸
P(open | f. ) ~ 3/6P(read | f. ) ~ 2/6P(write | f. ) ~ 1/6
𝜸
D
f.open(“f2” | “r”);
f.read();
f.open(“f1” | “r”);
f.read();
f.open(“f2” | “w”);
f.write(“c”);
elem.notify({
position: ‘top’,
autoHide: false,
delay: 100
});Identifier
elem
Property
notify
Property
position
Property
autoHide
MemberExpression ObjectExpression
CallExpression
Property
delay
String
‘top’
Boolean
false
TCond ::= 𝜀 | WriteOp TCond | MoveOp TCond
MoveOp ::= Up, Left, Right, DownFirst, DownLast,
NextDFS, PrevDFS, NextLeaf,
PrevLeaf,PrevNodeType, PrevNodeValue, PrevNodeContext
WriteOp ::= WriteValue, WriteType, WritePos
Up
Left
WriteValue
𝜸 ← 𝜸 ∙
fbest = argmin cost(D, f)f ∊
TCond ::= 𝜀 | WriteOp TCond | MoveOp TCond
MoveOp ::= Up, Left, Right, ...
WriteOp ::= WriteValue, WriteType, ...
P
D
≈ 108
f
cost(D, f) = (P)
D f
P(element | f ( ))
𝑂( 𝐷 )
fbest
elem.notify(
... ,
... ,
{
position: ‘top’,
hide: false,
?
}
);
fbest to predict
Left
WriteValue
Up
WritePos
Up
DownFirst
DownLast
WriteValue
{}
{hide}
{hide}
{hide, 3}
{hide, 3}
{hide, 3}
{hide, 3}
{hide, 3, notify}
program fbest 𝜸
D: fbestHutter Prize Wikipedia Dataset uses a char-level DSL with state
1.62
1.67
51%1.60
51%1.44
51%1.40
1.94
:
function isBig(v) {
return v < this.length
}
[12, 5].filter(isBig);
VarPtsTo(“global”, h)
checkIfInsideMethodCall
checkMethodCallName
checkReceiverType
checkNumberOfArguments ...
VarPtsTo(this, h)
∈
( )fbest
fbest ∊
fbest
TCond ::= 𝜀 | WriteOp TCond | MoveOp TCond
MoveOp ::= Up, Left, Right, DownFirst, DownLast,
NextDFS, PrevDFS, NextLeaf, PrevLeaf,
PrevNodeType, PrevNodeValue,
WriteOp ::= WriteValue, WriteType, WritePos
fbest = argmin cost(D, f)f ∊
𝜸