4 ms·
During one of those rabbit hole journeys I discovered that Dutch Tax authorities use MPS, a DSL creation language/tool by JetBrains [1] It makes me wonder, why
by vishnugupta 6y ago
During one of those rabbit hole journeys I discovered that Dutch Tax authorities use MPS, a DSL creation language/tool by JetBrains [1]
It makes me wonder, why haven't DSLs caught up? Their claim that it allows developers spend more time implementing the business logic makes sense. But somehow that promise hasn't been realised. I'm curious to know from those who tried DSLs.
[1]
https://www.jetbrains.com/mps/documentation/ https://www.jetbrains.com/mps/documentation/
- ethbr0 6y agoThe nearest I've been able to articulate this is lack of overlapping skillsets & departments' tendencies to hire people who look like them. The kind of person who (a) lives in business problem land & (b) is proficient in programming language design (even guided DSL generation)... doesn't exist. At least not in hireable numbers. And those that do are buried deep in the guts of consultancies, who can afford to pay them way more than customers can. It's a shame, because it results in suboptimal software. And suboptimal tooling available to the devs that do work in that space. The best solution I've seen are products that lower the knowledge barrier of entry (at least for creating a proof of concept) + designing for non-programmers as your primary users.
- denismerigoux 6y agoHi, OP here :) I've come to the same conclusion about programming language creation. However, for a very large organization, it makes sense to have a team in charge of language tooling (see Dropbox/Python, Facebook/Hack/Flow, Apple/Swift). Which is why I'm trying to convince the French state that they should have such a team of permanent people.
- ethbr0 6y agoI worked in a similar kind of role recently, in a large public retail company. The only advice I'd give would be to lean hard on finding, maturing, and then advertising end-user champions. Cross-department / -traditional boundary products are frustratingly difficult to push top-down, as the leader of the space that "owns" the product (i.e. IT) doesn't directly see the value, because they're not the end user (business). What mostly work for me was being as loud as possible with open-attendence educational events, continually taking meetings from interested areas, and then mentoring developing teams. The goal is to help them create a killer product using your product, such that (highly-placed leader on their side) talks to (your leader) in glowing terms about your product. And that usually happens because your product helped them get a win that moved an important metric to them. Hint: Ask them about things they've always wanted to do, but couldn't because it was technically impractical. There's probably at least one diamond in there that would be "easy" with your product. Hint2: Think more broadly about the kind of thing you're trying to do, and get your team in that area. I've worked under CFOs as often as I've worked under CTOs, because "saving money" is near and dear to the former. (Adapt as necessary to how French government works. Good luck!)
- denismerigoux 6y agoVery insightful update, I'll remember it. Thanks!
- ethbr0 6y agoThank you for applying your skills to make the world a better place! If everyone did that, we'd all be better off.
- vishnugupta 6y agoQuite insightful! Being a part of product teams, I've noticed "platform" teams struggle and the reasons have mostly been not doing what you've pointed out above. As in, instead of working with their customers (i.e., other product teams) to identify their problems and fix them, they would push down their generic platforms down the throat. It invariably didn't end well. I tend to think that platform/framework teams within a large orgs should be run as a B2B SAAS, at least with that mindset. Also, if a platform team isn't run well, it ends up being the first one on the chopping block during layoffs. Uber laid off an entire developer-platform team earlier this year. One casualty was the Screenflow team, a promising product that didn't gain wider adoption due to terrible marketing/evangelism.
- ethbr0 6y agoOne can turn it into a flywheel too. What features should you work on next? The things your users are asking for at your touchbases. There's a time and place for top-down, but it works best when there are few edge cases. Platform work tends to be a normal distribution with the usual number of "Oh. We never thought anyone would want to do that" tails.
- 908B64B197 6y agoThe issue you'll bump into is attracting the same caliber of talent. Compare the offers from Dropbox, Facebook and Apple.
- throwaway_pdp09 6y agoCould you clear something up for me, do you mean DSLs generally, or DSLs for tax codes specifically? TIA
- vishnugupta 6y agoDSLs in general, say in banking system, e commerce apps etc.
- throwaway_pdp09 6y agoWell, this is (one of my) areas so here goes. DSLs are a concept, not an implementation. As implemented they can vary from chained procedure calls to actual sub languages with lexers and parsers (and I tend to consider the latter to be 'proper' DSLs, but that's just my view). To have a 'proper' DSL I reckon you need two things, and understanding that a thing can and should be broken out into its own sublanguage, and the ability to do so. The first takes a certain kind of nouse, or common sense. The latter requires knowing how to construct a parser properly and some knowledge of language design. Knowing how to write a parser is not particularly complex but as the industry is driven by requirements more of knowing 'big data' frameworks rather than stuff that is often more useful, well, that's what you get, and that includes people who try to parse XML with regular expressions (check out this classic answer <https://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 https://stackoverflow.com/questions/1732348/regex-match-open...> Edit: if you haven't seen this check it out cos it's brilliant). I think this reflects the fundamental problem in software development of the market's not knowing what's actually needed to solve real business problems. ++++ Edit, some reading material https://www.amazon.co.uk/Language-Implementation-Patterns-Domain-Specific-Programming/dp/193435645X/ https://www.amazon.co.uk/Language-Implementation-Patterns-Do... https://www.amazon.co.uk/Definitive-ANTLR-Reference-Domain-Specific-Programmers/dp/0978739256 https://www.amazon.co.uk/Definitive-ANTLR-Reference-Domain-S... https://www.amazon.co.uk/yacc-Nutshell-Handbook-Doug-Brown/dp/1565920007 https://www.amazon.co.uk/yacc-Nutshell-Handbook-Doug-Brown/d... They're all worth investing the time in.
- 6y ago
- hirundo 6y agoModern computer languages are DSLs for writing DSLs, which you do by defining public domain specific classes, methods, modules, etc. A library for computing PI is a PI DSL. At least, that's the right way to name things in code.
- throwaway_pdp09 6y agoThat's really stretching the concept of a DSL, but at an extreme it can be seen that way. What you're really describing is hierarchical structure.
- breck 6y agoI make them all the time (https://jtree.treenotation.org/designer/ https://jtree.treenotation.org/designer/), and track many thousands of DSLs. IMO, the problem is our languages are unnecessarily complicated. they are all linearly parsed BNFs, and you don't need any of that. I think things will start changing big time. That being said, my favorite ecosystem in the traditional DSL world is ANTLR, and I'd highly recommend Terence Parr's books on the field if you are interested.
- divtiwari 6y agoDoes his book actually teach you how to create a DSL using ANTLR and not just and overview? Btw the 2 books of his are almost a decade old, so are they any good now?
- breck 6y agoYes, it walks your through it step by step. I have https://pragprog.com/titles/tpantlr2/the-definitive-antlr-4-reference/ https://pragprog.com/titles/tpantlr2/the-definitive-antlr-4-... and at least 1 more of his, forget where it is. I would say it is ageless (at least, until something better than ANTLR comes along—ohm is promising but not sure what the latest is with that). "The Definitive ANTLR 4 Reference" is absolutely the most understated title I've ever seen in a book. It's really more like "The Book That Will Change How you Look at Programming Languages Forever" IMO anyway. I guess it depends on how much you've been exposed to parsers and grammars and compiler compilers already.
- divtiwari 6y agoThanks, I'll start reading his book, already have some experience with interpreters and compilers :)
- specialist 6y agoANTLR 3.x was a game changer for me. I was able to refine my grammars so that the resulting parse tree and abstract syntax trees were the same thing. No goofy inlined tree construction pragmas, term rewriting, post parse tree walk processing. I'm just a grammar mechanic, so I don't really grok the underlying theory or use the right word for this stuff.
- eecc 6y agoThey do? That's bloody awesome... there's something to this country I love, despite the bad weather and worse food :) Can you share the resources you found?
- vishnugupta 6y agoJetBrains has a DSL creation language called MPS (Meta Programming System)[1]. I stumbled upon it while exploring their various offerings. I haven't played around with MPS but came across Dutch Tax system's use of MPS in their case studies, it's near the end of the page [1]. You will find a decent info to get started here[2] [1] https://www.jetbrains.com/mps/ https://www.jetbrains.com/mps/ [2] https://www.jetbrains.com/mps/concepts/domain-specific-languages/ https://www.jetbrains.com/mps/concepts/domain-specific-langu...