Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Vaclav Pech on MPS
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Enterprise Java User Group Austria
March 05, 2013
Technology
0
65
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
170
Spring Framework 5.2 - Core Container Revisited
ejug
0
170
Andreas Caternberg on Jenkins Pipelines
ejug
0
750
Martin Ahrer on Continuous Delivery Infrastructure With Docker
ejug
0
150
Dirk Mahler on Software Analyse mit jQAssistant & Neo4j
ejug
1
300
Christoph Strobl on Spring Data & Hypermedia
ejug
0
140
Stefan Armbruster on Graph Modelling Antipatterns
ejug
1
120
Stefan Armbruster on Introduction into Neo4J
ejug
1
87
Michael Nitschinger on Building a reactive Couchbase driver for the JVM
ejug
0
140
Other Decks in Technology
See All in Technology
AI時代のSaaSとETL
shoe116
1
120
組織全体で実現する標準監視設計
yuobayashi
3
490
[JAWSDAYS2026]Who is responsible for IAM
mizukibbb
0
500
Shifting from MCP to Skills / ベストプラクティスの変遷を辿る
yamanoku
4
820
最強のAIエージェントを諦めたら品質が上がった話 / how quality improved after giving up on the strongest AI agent
kt2mikan
0
160
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
8
7.2k
Security Diaries of an Open Source IAM
ahus1
0
210
Kubernetesにおける推論基盤
ry
1
320
Google系サービスで文字起こしから勝手にカレンダーを埋めるエージェントを作った話
risatube
0
150
AI実装による「レビューボトルネック」を解消する仕様駆動開発(SDD)/ ai-sdd-review-bottleneck
rakus_dev
0
110
[JAWS DAYS 2026]私の AWS DevOps Agent 推しポイント
furuton
0
150
OpenClawで回す組織運営
jacopen
3
700
Featured
See All Featured
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
110
Designing for Timeless Needs
cassininazir
0
160
Believing is Seeing
oripsolob
1
80
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
150
The Spectacular Lies of Maps
axbom
PRO
1
620
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
The Curious Case for Waylosing
cassininazir
0
270
Statistics for Hackers
jakevdp
799
230k
Chasing Engaging Ingredients in Design
codingconduct
0
140
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/