Enviar búsqueda
Cargar
mobl presentation @ IHomer
•
0 recomendaciones
•
526 vistas
Z
zefhemel
Seguir
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 124
Descargar ahora
Descargar para leer sin conexión
Recomendados
mobl - model-driven engineering lecture
mobl - model-driven engineering lecture
zefhemel
Kamil Chmielewski, Jacek Juraszek - "Hadoop. W poszukiwaniu złotego młotka."
Kamil Chmielewski, Jacek Juraszek - "Hadoop. W poszukiwaniu złotego młotka."
sjabs
The Ring programming language version 1.7 book - Part 48 of 196
The Ring programming language version 1.7 book - Part 48 of 196
Mahmoud Samir Fayed
Rのスコープとフレームと環境と
Rのスコープとフレームと環境と
Takeshi Arabiki
Rデバッグあれこれ
Rデバッグあれこれ
Takeshi Arabiki
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
MongoSF
H base programming
H base programming
Muthusamy Manigandan
From java to kotlin beyond alt+shift+cmd+k - Droidcon italy
From java to kotlin beyond alt+shift+cmd+k - Droidcon italy
Fabio Collini
Recomendados
mobl - model-driven engineering lecture
mobl - model-driven engineering lecture
zefhemel
Kamil Chmielewski, Jacek Juraszek - "Hadoop. W poszukiwaniu złotego młotka."
Kamil Chmielewski, Jacek Juraszek - "Hadoop. W poszukiwaniu złotego młotka."
sjabs
The Ring programming language version 1.7 book - Part 48 of 196
The Ring programming language version 1.7 book - Part 48 of 196
Mahmoud Samir Fayed
Rのスコープとフレームと環境と
Rのスコープとフレームと環境と
Takeshi Arabiki
Rデバッグあれこれ
Rデバッグあれこれ
Takeshi Arabiki
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
MongoSF
H base programming
H base programming
Muthusamy Manigandan
From java to kotlin beyond alt+shift+cmd+k - Droidcon italy
From java to kotlin beyond alt+shift+cmd+k - Droidcon italy
Fabio Collini
mobl: Een DSL voor mobiele applicatieontwikkeling
mobl: Een DSL voor mobiele applicatieontwikkeling
Devnology
Implementing a many-to-many Relationship with Slick
Implementing a many-to-many Relationship with Slick
Hermann Hueck
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
Fabio Collini
The Ring programming language version 1.9 book - Part 53 of 210
The Ring programming language version 1.9 book - Part 53 of 210
Mahmoud Samir Fayed
The Ring programming language version 1.4.1 book - Part 13 of 31
The Ring programming language version 1.4.1 book - Part 13 of 31
Mahmoud Samir Fayed
Scala 2 + 2 > 4
Scala 2 + 2 > 4
Emil Vladev
Async code on kotlin: rx java or/and coroutines - Kotlin Night Turin
Async code on kotlin: rx java or/and coroutines - Kotlin Night Turin
Fabio Collini
java experiments and programs
java experiments and programs
Karuppaiyaa123
The Ring programming language version 1.5.4 book - Part 44 of 185
The Ring programming language version 1.5.4 book - Part 44 of 185
Mahmoud Samir Fayed
Dynamic C++ Silicon Valley Code Camp 2012
Dynamic C++ Silicon Valley Code Camp 2012
aleks-f
Groovy kind of test
Groovy kind of test
Torsten Mandry
MongoDB .local Paris 2020: La puissance du Pipeline d'Agrégation de MongoDB
MongoDB .local Paris 2020: La puissance du Pipeline d'Agrégation de MongoDB
MongoDB
Poor Man's Functional Programming
Poor Man's Functional Programming
Dmitry Buzdin
The Ring programming language version 1.8 book - Part 50 of 202
The Ring programming language version 1.8 book - Part 50 of 202
Mahmoud Samir Fayed
Refactoring to Macros with Clojure
Refactoring to Macros with Clojure
Dmitry Buzdin
Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8
XSolve
MongoDB Aggregation
MongoDB Aggregation
Amit Ghosh
Programmation fonctionnelle en JavaScript
Programmation fonctionnelle en JavaScript
Loïc Knuchel
Programming with Python and PostgreSQL
Programming with Python and PostgreSQL
Peter Eisentraut
Google Guava
Google Guava
Alexander Korotkikh
Abstractie (Dutch)
Abstractie (Dutch)
zefhemel
mobl
mobl
zefhemel
Más contenido relacionado
La actualidad más candente
mobl: Een DSL voor mobiele applicatieontwikkeling
mobl: Een DSL voor mobiele applicatieontwikkeling
Devnology
Implementing a many-to-many Relationship with Slick
Implementing a many-to-many Relationship with Slick
Hermann Hueck
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
Fabio Collini
The Ring programming language version 1.9 book - Part 53 of 210
The Ring programming language version 1.9 book - Part 53 of 210
Mahmoud Samir Fayed
The Ring programming language version 1.4.1 book - Part 13 of 31
The Ring programming language version 1.4.1 book - Part 13 of 31
Mahmoud Samir Fayed
Scala 2 + 2 > 4
Scala 2 + 2 > 4
Emil Vladev
Async code on kotlin: rx java or/and coroutines - Kotlin Night Turin
Async code on kotlin: rx java or/and coroutines - Kotlin Night Turin
Fabio Collini
java experiments and programs
java experiments and programs
Karuppaiyaa123
The Ring programming language version 1.5.4 book - Part 44 of 185
The Ring programming language version 1.5.4 book - Part 44 of 185
Mahmoud Samir Fayed
Dynamic C++ Silicon Valley Code Camp 2012
Dynamic C++ Silicon Valley Code Camp 2012
aleks-f
Groovy kind of test
Groovy kind of test
Torsten Mandry
MongoDB .local Paris 2020: La puissance du Pipeline d'Agrégation de MongoDB
MongoDB .local Paris 2020: La puissance du Pipeline d'Agrégation de MongoDB
MongoDB
Poor Man's Functional Programming
Poor Man's Functional Programming
Dmitry Buzdin
The Ring programming language version 1.8 book - Part 50 of 202
The Ring programming language version 1.8 book - Part 50 of 202
Mahmoud Samir Fayed
Refactoring to Macros with Clojure
Refactoring to Macros with Clojure
Dmitry Buzdin
Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8
XSolve
MongoDB Aggregation
MongoDB Aggregation
Amit Ghosh
Programmation fonctionnelle en JavaScript
Programmation fonctionnelle en JavaScript
Loïc Knuchel
Programming with Python and PostgreSQL
Programming with Python and PostgreSQL
Peter Eisentraut
Google Guava
Google Guava
Alexander Korotkikh
La actualidad más candente
(20)
mobl: Een DSL voor mobiele applicatieontwikkeling
mobl: Een DSL voor mobiele applicatieontwikkeling
Implementing a many-to-many Relationship with Slick
Implementing a many-to-many Relationship with Slick
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
The Ring programming language version 1.9 book - Part 53 of 210
The Ring programming language version 1.9 book - Part 53 of 210
The Ring programming language version 1.4.1 book - Part 13 of 31
The Ring programming language version 1.4.1 book - Part 13 of 31
Scala 2 + 2 > 4
Scala 2 + 2 > 4
Async code on kotlin: rx java or/and coroutines - Kotlin Night Turin
Async code on kotlin: rx java or/and coroutines - Kotlin Night Turin
java experiments and programs
java experiments and programs
The Ring programming language version 1.5.4 book - Part 44 of 185
The Ring programming language version 1.5.4 book - Part 44 of 185
Dynamic C++ Silicon Valley Code Camp 2012
Dynamic C++ Silicon Valley Code Camp 2012
Groovy kind of test
Groovy kind of test
MongoDB .local Paris 2020: La puissance du Pipeline d'Agrégation de MongoDB
MongoDB .local Paris 2020: La puissance du Pipeline d'Agrégation de MongoDB
Poor Man's Functional Programming
Poor Man's Functional Programming
The Ring programming language version 1.8 book - Part 50 of 202
The Ring programming language version 1.8 book - Part 50 of 202
Refactoring to Macros with Clojure
Refactoring to Macros with Clojure
Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8
MongoDB Aggregation
MongoDB Aggregation
Programmation fonctionnelle en JavaScript
Programmation fonctionnelle en JavaScript
Programming with Python and PostgreSQL
Programming with Python and PostgreSQL
Google Guava
Google Guava
Destacado
Abstractie (Dutch)
Abstractie (Dutch)
zefhemel
mobl
mobl
zefhemel
Cloud9 IDE Talk at meet.js Poznań
Cloud9 IDE Talk at meet.js Poznań
zefhemel
Internal DSLs
Internal DSLs
zefhemel
Avoiding JavaScript Pitfalls Through Tree Hugging
Avoiding JavaScript Pitfalls Through Tree Hugging
zefhemel
Frontrow conf
Frontrow conf
zefhemel
WebWorkFlow
WebWorkFlow
zefhemel
PIL - A Platform Independent Language
PIL - A Platform Independent Language
zefhemel
Destacado
(8)
Abstractie (Dutch)
Abstractie (Dutch)
mobl
mobl
Cloud9 IDE Talk at meet.js Poznań
Cloud9 IDE Talk at meet.js Poznań
Internal DSLs
Internal DSLs
Avoiding JavaScript Pitfalls Through Tree Hugging
Avoiding JavaScript Pitfalls Through Tree Hugging
Frontrow conf
Frontrow conf
WebWorkFlow
WebWorkFlow
PIL - A Platform Independent Language
PIL - A Platform Independent Language
Similar a mobl presentation @ IHomer
Software Language Design & Engineering
Software Language Design & Engineering
Eelco Visser
mobl
mobl
Eelco Visser
CouchDB on Android
CouchDB on Android
Sven Haiges
Paris js extensions
Paris js extensions
erwanl
Scala on Your Phone
Scala on Your Phone
Michael Galpin
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
Guy Royse
2008 - TechDays PT: WCF, JSON and AJAX for performance and manageability
2008 - TechDays PT: WCF, JSON and AJAX for performance and manageability
Daniel Fisher
After max+phonegap
After max+phonegap
yangdj
混搭移动开发:PhoneGap+JQurey+Dreamweaver
混搭移动开发:PhoneGap+JQurey+Dreamweaver
yangdj
Knockoutjs UG meeting presentation
Knockoutjs UG meeting presentation
Valdis Iljuconoks
Backbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVC
pootsbook
Html5 and web technology update
Html5 and web technology update
Doug Domeny
A la découverte de TypeScript
A la découverte de TypeScript
Denis Voituron
Svcc 2013-d3
Svcc 2013-d3
Oswald Campesato
SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)
Oswald Campesato
huhu
huhu
Dung Trương
The Ring programming language version 1.5.4 book - Part 40 of 185
The Ring programming language version 1.5.4 book - Part 40 of 185
Mahmoud Samir Fayed
Html5 For Jjugccc2009fall
Html5 For Jjugccc2009fall
Shumpei Shiraishi
EclipseCon2011 Cross-Platform Mobile Development with Eclipse
EclipseCon2011 Cross-Platform Mobile Development with Eclipse
Heiko Behrens
Is HTML5 Ready? (workshop)
Is HTML5 Ready? (workshop)
Remy Sharp
Similar a mobl presentation @ IHomer
(20)
Software Language Design & Engineering
Software Language Design & Engineering
mobl
mobl
CouchDB on Android
CouchDB on Android
Paris js extensions
Paris js extensions
Scala on Your Phone
Scala on Your Phone
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
2008 - TechDays PT: WCF, JSON and AJAX for performance and manageability
2008 - TechDays PT: WCF, JSON and AJAX for performance and manageability
After max+phonegap
After max+phonegap
混搭移动开发:PhoneGap+JQurey+Dreamweaver
混搭移动开发:PhoneGap+JQurey+Dreamweaver
Knockoutjs UG meeting presentation
Knockoutjs UG meeting presentation
Backbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVC
Html5 and web technology update
Html5 and web technology update
A la découverte de TypeScript
A la découverte de TypeScript
Svcc 2013-d3
Svcc 2013-d3
SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)
huhu
huhu
The Ring programming language version 1.5.4 book - Part 40 of 185
The Ring programming language version 1.5.4 book - Part 40 of 185
Html5 For Jjugccc2009fall
Html5 For Jjugccc2009fall
EclipseCon2011 Cross-Platform Mobile Development with Eclipse
EclipseCon2011 Cross-Platform Mobile Development with Eclipse
Is HTML5 Ready? (workshop)
Is HTML5 Ready? (workshop)
Último
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
Product Anonymous
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
Andrey Devyatkin
presentation ICT roal in 21st century education
presentation ICT roal in 21st century education
jfdjdjcjdnsjd
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Principled Technologies
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
apidays
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Neo4j
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Safe Software
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
The Digital Insurer
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
sudhanshuwaghmare1
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
UK Journal
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
Igalia
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Radu Cotescu
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Edi Saputra
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
Remote DBA Services
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
debabhi2
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
DianaGray10
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Rafal Los
Último
(20)
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
presentation ICT roal in 21st century education
presentation ICT roal in 21st century education
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
mobl presentation @ IHomer
1.
http://www.mobl-lang.org Zef Hemel
2.
3.
230,000
300,000
4.
5.
Objective-C
Java J2ME/C++ HTML/Javascript Java .NET
6.
portability
7.
8.
9.
productivity
10.
Reqs
10101
11.
Reqs
asm 10101
12.
’70-’80 Reqs
C/C++ asm 10101
13.
’90-’10
’70-’80 Reqs 3rd gen C/C++ asm 10101 Java/C#
14.
’90-’10
’70-’80 Reqs DSLs 3rd gen C/C++ asm 10101 Java/C#
15.
MoDSE
16.
Objective-C
Java J2ME/C++ HTML/Javascript Java .NET
17.
Webkit browser
Webkit browser J2ME/C++ Webkit browser Webkit browser .NET
18.
19.
WebDatabases
20.
WebDatabases Location information
(GPS)
21.
WebDatabases Location information
(GPS) Canvas
22.
WebDatabases Location information
(GPS) Canvas Multi-touch
23.
WebDatabases Location information
(GPS) Offline support Canvas Multi-touch
24.
WebDatabases
Full-screen support Location information (GPS) Offline support Canvas Multi-touch
25.
WebDatabases
Full-screen support Location information (GPS) Offline support Canvas Accelerator support Multi-touch
26.
Audio WebDatabases
Full-screen support Location information (GPS) Offline support Canvas Accelerator support Multi-touch
27.
28.
Address book
29.
Address book
Camera
30.
Address book
Camera Compass
31.
Address book
Camera Compass File IO
32.
Address book
Camera Compass File IO Notifications
33.
34.
annotated HTML
35.
annotated
imperative HTML Javascript
36.
37.
typed
declarative integrated concise
38.
39.
40.
41.
42.
mobl program
43.
user interface
styling data modeling application logic web services
44.
user interface
45.
demo
46.
ui syntax screen name(farg*)
: ReturnType? { screenelem* } control name(farg*) { screenelem* }
47.
control calls variable declarations
control structures inline HTML script blocks
48.
control calls button("Click me")
49.
control calls button("Click me") button("Click
me", { alert("Click!"); })
50.
control calls button("Click me") button("Click
me", { alert("Click!"); }) button("Click me", onclick={ alert("Click!"); })
51.
control calls with
body group() { item() { "Item 1" } item() { "Item 2" } }
52.
control calls with
body group { item { "Item 1" } item { "Item 2" } }
53.
variable declarations var b
= true
54.
variable declarations var b
= true var b : Bool = true
55.
variable declarations var b
= true var b : Bool = true var newTask = Task()
56.
variable declarations var
b = true var b : Bool = true var newTask = Task() var newTask : Task = Task()
57.
when var b =
true checkBox(b) when(b) { label("Yep") } else { label("Nope") }
58.
list var nums =
[1, 2, 3] group { list(n in nums) { item { label(n) } } }
59.
inline HTML <img src="img/icon.png"/>
60.
inline HTML
<img src="img/icon.png"/> <div class=selected ? selectedStyle : notSelectedStyle> ... </div>
61.
script blocks
avoid if possible var n = -1 script { n = Math.sqrt(9); }
62.
higher-order controls
63.
controls taking controls
as arguments confused yet?
64.
demo
65.
styling
66.
style bigAndBlue {
color: blue; font-size: 40px; }
67.
Style style bigAndBlue {
color: blue; font-size: 40px; }
68.
control block(style :
Style) { ... } block(bigAndBlueStyle) { label("I am big and blue!"); }
69.
style $baseColor =
rgb(100, 100, 100) style myStyle { color: rgb($baseColor.r+10, $baseColor.g+50, $baseColor.b~20); font-size: 20px; }
70.
style mixin borderRadiusMixin($radius)
{ -moz-border-radius: $radius; -webkit-border-radius: $radius; border-radius: $radius; }
71.
style mixin borderRadiusMixin($radius)
{ -moz-border-radius: $radius; -webkit-border-radius: $radius; border-radius: $radius; } style myStyle { color: $baseColor; borderRadiusMixin(10px); }
72.
demo
73.
data modeling
& query
74.
entity
Task { name : String (searchable) done : Bool tags : Collection<Tag> (inverse: tasks) } entity Tag { name : String (searchable) tasks : Collection<Task> (inverse: tags) }
75.
var newTask =
Task(name="New task"); newTask.done = false; add(newTask);
76.
var doneTasks =
Task.all()
77.
Collection<Task> var doneTasks =
Task.all()
78.
Collection<Task> var doneTasks =
Task.all() .filter("done", "=", true) .order("date", false) .limit(10);
79.
Collection<Task> var tagDoneTasks =
tag.tasks .filter("done", "=", true) .order("date", false) .limit(10);
80.
Collection<Task> var doneTasks =
Task.all()
81.
Collection<Task> var doneTasks =
Task.all() where done == true order by date desc limit 10;
82.
Collection<Task> var tagDoneTasks =
tag.tasks where done == true order by date desc limit 10;
83.
Collection<Task> var searchTasks =
Task.search("task") where done == true limit 10;
84.
screen root() {
header("Tasks") group { list(t in Task.all() order by date desc) { item { label(t.name) } } } }
85.
application
logic
86.
logic in ui label("Total
tasks: " + Task.all().count())
87.
logic in ui label("Total
tasks: " + Task.all().count()) button("Click me", onclick={ alert("You clicked me!"); })
88.
var n =
7; var n2 = Math.round(n/2); if(n2 > 3) { alert("More than three!"); } else { alert("Less than three!"); }
89.
type inference var n
= 7; var n2 = Math.round(n/2); if(n2 > 3) { alert("More than three!"); } else { alert("Less than three!"); }
90.
var done =
0; foreach(t in Task.all()) { if(t.done) { done = done + 1; } }
91.
var done =
0; foreach(t in Task.all()) { if(t.done) { done = done + 1; } } var done = (Task.all() where done == true) .count();
92.
function sqr(n :
Num) : Num { return n * n; }
93.
demo: todo list
94.
web service
access
95.
service SomeService {
resource tasks() : JSON { uri = "/tasks" } resource search(query : String) : JSON { uri = "/search?q=" + escape(query) } }
96.
service Twitter {
resource trends() : JSON { uri = "http://api.twitter.com/1/trends.json" encoding = "jsonp" } resource search(query : String) : JSON { uri = "http://search.twitter.com/search.json?q=" + escape(query) encoding = "jsonp" } }
97.
http://api.twitter.com/1/trends.json {"trends": [{"url":"http://search.twitter.com/search?q=...",
"name":"#ihaveadream"}, {"url":"http://search.twitter.com/search?q=...", "name":"#mlkday"} ... ] }
98.
type Trend {
name : String url : String } function trendsMapper(json : JSON) : [Trend] { return json.trends; }
99.
resource trends() :
JSON { uri = "http://api.twitter.com/1/trends.json" encoding = "jsonp" mapper = trendsMapper }
100.
screen root() {
var trends = Twitter.trends() header("Twitter trends") group { list(topic in trends) { item { label(topic.name) } } } }
101.
demo: twitter trends
102.
user interface
styling data modeling application logic web services
103.
the glass ceiling
104.
language small library
large (and extensible)
105.
how? - built-in types -
built-in controls
106.
how? - built-in types -
built-in controls + native interface + sufficiently low-level primitives + abstraction mechanisms (screens, controls, functions, types)
107.
native interface external type
String : Object { length : Num sync function charAt(index : Num) : String sync function charCodeAt(index : Num) : Num ... } external control html(h : String) external screen bla() : void external function log(o : Object) : void
108.
low-level primitives control image(url
: String, onclick : Callback = null) { <img src=url onclick=onclick/> }
109.
low-level primitives control slideupBlock()
{ div@<div onclick={ div.slideUp(); }> elements() </div> } ... slideupBlock { label("Click me to slide up") }
110.
low-level primitives
control slideupBlock() { JQuery div@<div onclick={ div.slideUp(); }> elements() </div> } ... slideupBlock { label("Click me to slide up") }
111.
mobl::test
112.
deployment
113.
deployment pure client-side
114.
115.
116.
code concatenation
117.
code concatenation dead-code elimination
118.
code concatenation dead-code elimination
code minification
119.
state of the
public release: jan 6, 2011
120.
state of the
public release: jan 6, 2011 11 releases
121.
state of the
public release: jan 6, 2011 11 releases 1000+ visitors/day
122.
state of the
public release: jan 6, 2011 11 releases 1000+ visitors/day first external commits are in
123.
future error handling data evolution documentation
libraries
124.
http://www.mobl-lang.org http://twitter.com/mobllang http://twitter.com/zef
Descargar ahora