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
Enterprise Java User Group Austria
March 05, 2013
Technology
0
42
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
1
37
Spring Framework 5.2 - Core Container Revisited
ejug
0
110
Andreas Caternberg on Jenkins Pipelines
ejug
0
370
Martin Ahrer on Continuous Delivery Infrastructure With Docker
ejug
0
100
Dirk Mahler on Software Analyse mit jQAssistant & Neo4j
ejug
0
150
Christoph Strobl on Spring Data & Hypermedia
ejug
0
61
Stefan Armbruster on Graph Modelling Antipatterns
ejug
0
72
Stefan Armbruster on Introduction into Neo4J
ejug
0
60
Michael Nitschinger on Building a reactive Couchbase driver for the JVM
ejug
0
80
Other Decks in Technology
See All in Technology
成長をサポートするピープルマネジメントのやり方
sioncojp
9
1.4k
【NW X Security JAWS#3】L3-4:AWS環境のIPv6移行に向けて知っておきたいこと
shotashiratori
1
710
Microsoft for Startups Founders Hub_20240429 update
daikikanemitsu
1
2.4k
同じ様なUIをiOS/Android間で合わせるヒントNo.2
fumiyasac0921
1
110
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
0
1.9k
競技としてのKaggle、役に立つKaggle
yu4u
7
2.5k
Babylon.js JAPAN活動紹介 (2024/4)
limes2018
1
120
LLMアプリケーション_リリース後の苦労とGROW.pdf
horiuchie
0
160
Google Cloud Next '24 Recap(Cloud Run/k8s)
mokocm
0
370
Android Target SDK 35 (Android 15) 対応の概要
akkie76
0
180
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
5
37k
LLM開発・活用の舞台裏@2024.04.25
yushin_n
3
1.3k
Featured
See All Featured
Debugging Ruby Performance
tmm1
70
11k
Done Done
chrislema
178
15k
The MySQL Ecosystem @ GitHub 2015
samlambert
244
12k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
Statistics for Hackers
jakevdp
790
220k
It's Worth the Effort
3n
180
27k
Typedesign – Prime Four
hannesfritz
36
2.1k
Writing Fast Ruby
sferik
622
60k
No one is an island. Learnings from fostering a developers community.
thoeni
16
2.1k
10 Git Anti Patterns You Should be Aware of
lemiorhan
649
58k
RailsConf 2023
tenderlove
9
570
Building Effective Engineering Teams - LeadDev
addyosmani
32
1.9k
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/