Parent: InterpretingPlainEnglishAsADomainLanguage
This is an excerpt from a chat I had with Rohith just after he read the stuff. I'm putting it up here simply because there's stuff in there I'm sure I'll forget :-)
avishek_sen_gupta: So
yso_99: how is this restricted english different from an interpreted programming language
avishek_sen_gupta: By restricted I'd say it'd be exactly the language of the requirements doc...some bracketing and stuff required.
avishek_sen_gupta: Some words might be marked as irrelevant
avishek_sen_gupta: But the thing is...it'd always stay the same regardless of the language
avishek_sen_gupta: If in interpreting it into Ruby, the result is also like English, that is just a side effect then. A useful one anyway
yso_99: hmm
avishek_sen_gupta: If the project needed .NET, the result would be different.
avishek_sen_gupta: I'm trying to look at if the gap between the requirements and the final result can be made smaller.
avishek_sen_gupta: Using an appropriate language is one answer...
avishek_sen_gupta: ...but using Ruby for all projects is like an utopia right now.
yso_99: ok
yso_99: Anyways, to answer your first question - it does make sense to me, but then I have some shared context with you
yso_99: it won't make sense to most people, even most programmers
avishek_sen_gupta: Oh...is it the idea itself or how it is phrased?
yso_99: I think the way it is phrased
yso_99: It is too information dense
yso_99: I had trouble understanding tthe link you sent me
yso_99: without going to the sublinks
avishek_sen_gupta: I understand. I had to dsah off the whole idea as well as some code before i forgot everything
avishek_sen_gupta: My mistake
yso_99: Yes, I figued that
yso_99: from the clipped style of the document
avishek_sen_gupta: OK so what do you think? I'm trying to defer the interpretations of those symbols till the code is generated.
avishek_sen_gupta: Like trying to express relationships outside the code altogether where it should belong.
avishek_sen_gupta: The code will reflect it too
avishek_sen_gupta: But that is because the core idea has all those relationships.
yso_99: Well, I think it's been done before - without much success
yso_99: If you look at it, UML is something like this
yso_99: Use diagrams to represent relations
yso_99: and code gen will give you a beautiful program in any language you want
yso_99: But your idea has one good thing going for it
avishek_sen_gupta: Ahh...
yso_99: It uses english
yso_99: So many more people can understand it more easily than learning a new programming language disguised as a bunch of diagrams
yso_99: But in essense you are creating a new - perhaps problem specific - programming language
avishek_sen_gupta: Why do you say "problem-specific"?
yso_99: hey, be back in a bit
avishek_sen_gupta: OK sure
yso_99: some student had a question
avishek_sen_gupta: Oh OK
yso_99: Well, I should've said domain specific, I guess.
yso_99: domain specific since, after defining a few domain terms (like lease and billing schedule, say)
yso_99: we would be using these terms as further building blocks in the rest of the program right?
avishek_sen_gupta: Right...but these would be definitions in the true sense of the term...a relationship between symbols. Yeah you are correct.
avishek_sen_gupta: And I'm thinking the reason we would have less "modelling problems" would be because it'd be specified by the domain experts themselves. Their language, for that matter.
yso_99: correct
yso_99: but there has to be a pretty fine distinction between roles here
yso_99: Your language will let BAs "code"
yso_99: in a sense
avishek_sen_gupta: Yes...
yso_99: That is ok - except when it comes to say optimisation
yso_99: or DB access
avishek_sen_gupta: Right
yso_99: or layering
yso_99: or something like that
avishek_sen_gupta: Right
avishek_sen_gupta: But I guess this would be work only in the domain layer itself...right?
yso_99: so the devs will need to provide all that
yso_99: yes
yso_99: the domain layer only
avishek_sen_gupta: Yes they'd have to.
avishek_sen_gupta: Yes
avishek_sen_gupta: But what you said abt UML struck a chord: are we saying that anything that purports to "generate code" is evil? Or is it just that devs would be anxious that there is an extra translation (as opposed to when they write the domain in Ruby directly, say)
yso_99: Well, I am not saying code gen is evil
yso_99: The point I was trying to make with UML was that it is essentially an additional language you need to learn
avishek_sen_gupta: Oh OK that way...I see
yso_99: So it'll be worth doing that learning, if it gives you an order of magnitude extra abstraction
yso_99: like assembly vs. machine language
yso_99: or C vs Assembly
avishek_sen_gupta: I see
yso_99: or OO vs. Procedural
avishek_sen_gupta: Because after all, even javac generates bytecode...and this is not a new language it's English.
avishek_sen_gupta: And we dont crib abt that...at least not me
yso_99: true
avishek_sen_gupta: Can I post this conv (parts of it) on my blog. I'll forget this stuff otherwise.
yso_99: Go for it
yso_99: None of this (atleast my side of the conversation) is copyrighted
avishek_sen_gupta: OK thanks. So, do you see this as something worth trying out?
yso_99: I like it because it uses English - so it'll be less of a hassle to learn
yso_99: It's just the delta between english and restricted english should be kept minimum
avishek_sen_gupta: Exactly
avishek_sen_gupta: You read my mind
yso_99: and if you do that your interpretor might get complicated
yso_99: worth trying out tho'
avishek_sen_gupta: Well, that's why the English will need to be formatteed (brackets and stuff)
avishek_sen_gupta: But no changes to the language itself.
avishek_sen_gupta: OK will see what I can do.