$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Vaclav Pech on MPS
Search
Enterprise Java User Group Austria
March 05, 2013
Technology
0
63
Vaclav Pech on MPS
Enterprise Java User Group Austria
March 05, 2013
Tweet
Share
More Decks by Enterprise Java User Group Austria
See All by Enterprise Java User Group Austria
Gerrit Grunwald on What the CRaC... SUPERFAST JVM STARTUP
ejug
2
130
Spring Framework 5.2 - Core Container Revisited
ejug
0
150
Andreas Caternberg on Jenkins Pipelines
ejug
0
700
Martin Ahrer on Continuous Delivery Infrastructure With Docker
ejug
0
140
Dirk Mahler on Software Analyse mit jQAssistant & Neo4j
ejug
1
280
Christoph Strobl on Spring Data & Hypermedia
ejug
0
120
Stefan Armbruster on Graph Modelling Antipatterns
ejug
1
110
Stefan Armbruster on Introduction into Neo4J
ejug
1
85
Michael Nitschinger on Building a reactive Couchbase driver for the JVM
ejug
0
130
Other Decks in Technology
See All in Technology
小さな判断で育つ、大きな意思決定力 / 20251204 Takahiro Kinjo
shift_evolve
PRO
1
500
生成AIでテスト設計はどこまでできる? 「テスト粒度」を操るテーラリング術
shota_kusaba
0
300
A Compass of Thought: Guiding the Future of Test Automation ( #jassttokai25 , #jassttokai )
teyamagu
PRO
1
230
Docker, Infraestructuras seguras y Hardening
josejuansanchez
0
150
Symfony AI in Action
el_stoffel
2
390
pmconf2025 - データを活用し「価値」へ繋げる
glorypulse
0
630
HIG学習用スライド
yuukiw00w
0
110
pmconf2025 - 他社事例を"自社仕様化"する技術_iRAFT法
daichi_yamashita
0
720
あなたの知らないDateのひみつ / The Secret of "Date" You Haven't known #tqrk16
expajp
0
120
20251209_WAKECareer_生成AIを活用した設計・開発プロセス
syobochim
1
390
re:Invent 2025 ふりかえり 生成AI版
takaakikakei
1
120
形式手法特論:CEGAR を用いたモデル検査の状態空間削減 #kernelvm / Kernel VM Study Hokuriku Part 8
ytaka23
2
410
Featured
See All Featured
Code Review Best Practice
trishagee
73
19k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
The Invisible Side of Design
smashingmag
302
51k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Become a Pro
speakerdeck
PRO
30
5.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
69k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Automating Front-end Workflow
addyosmani
1371
200k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Practical Orchestrator
shlominoach
190
11k
Transcript
MPS Are you talking my language? Václav Pech Developer /
Evangelist
Future
None
None
Science - Math, Biology, ...
Realaxy
High thoughts must have high language. Aristophanes
Grails Customer.findAllByNameAndAgeBetween('Joe', 20, 40) class Phone { .... static belongsTo
= [owner : Person] }
Cypher for Neo4j START john=node:node_auto_index(name = 'John') MATCH john-[:friend]->()-[:friend]->fof RETURN
john, fof http://docs.neo4j.org/chunked/milestone/cypher-query-lang.html
JMock context.checking(new Expectations() {{ oneOf (clock).time(); will(returnValue(loadTime)); oneOf (clock).time(); will(returnValue(fetchTime));
allowing (reloadPolicy).shouldReload(loadTime, fetchTime); will(returnValue(false)); }}); http://www.jmock.org/expectations.html
DSLs with the benefits of General Purpose Langs
Abstract Syntax Tree
Abstract Syntax Tree
Challenges The coding experience is different Cooperate with the existing
text tool-chain
Collections cities.where({~it => it.startsWith("P"); }) .select({~it => it.toUpperCase(); }) cities.any({~it
=> it.size() > populationLimit; })
Closures {int => long} fact = {int n => if
(n == 1) { return 1L; } else { return n * invoke(n - 1); } };
Date/Time datetime start = now in (Europe/Berlin); ...... period processingTime
= now in (Europe/Berlin) – start; datetime meeting = now in (GMT) + 2 days with (hours = 11) with (minutes = 0) with (seconds = 0)
And a lot more Tuples Regular expressions Builders XML processing
Unit testing Custom operators And others ...
Spock (Groovy) class DataDriven extends Specification { def "maximum of
two numbers"() { expect: Math.max(a, b) == c where: a | b | c 7 | 3 | 7 4 | 5 | 5 9 | 9 | 9 } } http://code.google.com/p/spock/
Mission Composable language extensions
Mission Composable language extensions Flexible DSLs
Flexible DSLs
Mission Composable language extensions Flexible DSLs Code Generation
Stacking generators Java source MPS BaseLang Closures Date/Time
Stacking generators Java source MPS BaseLang Closures Date/Time Unless
Stacking generators Java source MPS BaseLang Closures Date/Time Unless Atomic
None
mbeddr.com
Grasp the subject, the words will follow. Cato the Elder
Questions Want more? http://www.jetbrains.com/mps http://jetbrains.dzone.com
[email protected]
Image credits http://www.flickr.com/photos/horiavarlan/4329908160/sizes/m/in/photostream/ http://www.flickr.com/photos/pink_floyd/2409134519/sizes/m/in/photostream/ http://www.flickr.com/photos/atache/4124732863/sizes/m/in/photostream/ http://www.flickr.com/photos/a_ninjamonkey/3294014627/sizes/m/in/photostream/ http://www.flickr.com/photos/carlc/1968636137/ http://www.flickr.com/photos/tasuki/3503304405/sizes/m/in/photostream/ http://www.flickr.com/photos/bmwccgb/5069454884/sizes/m/in/photostream/ http://www.flickr.com/photos/rpmarks/3932013183/sizes/m/in/photostream/
http://www.flickr.com/photos/orqwith/4325166853/