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
49
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
82
Spring Framework 5.2 - Core Container Revisited
ejug
0
120
Andreas Caternberg on Jenkins Pipelines
ejug
0
490
Martin Ahrer on Continuous Delivery Infrastructure With Docker
ejug
0
110
Dirk Mahler on Software Analyse mit jQAssistant & Neo4j
ejug
0
210
Christoph Strobl on Spring Data & Hypermedia
ejug
0
80
Stefan Armbruster on Graph Modelling Antipatterns
ejug
0
86
Stefan Armbruster on Introduction into Neo4J
ejug
0
71
Michael Nitschinger on Building a reactive Couchbase driver for the JVM
ejug
0
99
Other Decks in Technology
See All in Technology
20241228 - 成為最強魔法使!AI 實時生成比賽的策略 @ 2024 SD AI 年會
dpys
0
340
3年でバックエンドエンジニアが5倍に増えても破綻しなかったアーキテクチャ そして、これから / Software architecture that scales even with a 5x increase in backend engineers in 3 years
euglena1215
11
4.3k
Fabric 移行時の躓きポイントと対応策
ohata_ds
1
140
I could be Wrong!! - Learning from Agile Experts
kawaguti
PRO
8
2.9k
テストを書かないためのテスト/ Tests for not writing tests
sinsoku
1
160
.NET AspireでAzure Functionsやクラウドリソースを統合する
tsubakimoto_s
0
150
完全自律型AIエージェントとAgentic Workflow〜ワークフロー構築という現実解
pharma_x_tech
0
210
チームが毎日小さな変化と適応を続けたら1年間でスケール可能なアジャイルチームができた話 / Building a Scalable Agile Team
kakehashi
1
120
コロプラのオンボーディングを採用から語りたい
colopl
2
270
OPENLOGI Company Profile for engineer
hr01
1
18k
Unsafe.BitCast のすゝめ。
nenonaninu
0
160
新しいスケーリング則と学習理論
taiji_suzuki
9
3.7k
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
113
50k
Docker and Python
trallard
43
3.2k
Optimizing for Happiness
mojombo
376
70k
Unsuck your backbone
ammeep
669
57k
Designing Experiences People Love
moore
139
23k
Producing Creativity
orderedlist
PRO
343
39k
It's Worth the Effort
3n
183
28k
How STYLIGHT went responsive
nonsquared
96
5.3k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.5k
Mobile First: as difficult as doing things right
swwweet
222
9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
230
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2k
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/