[HN Gopher] The Drakon Language
___________________________________________________________________
The Drakon Language
Author : brudgers
Score : 151 points
Date : 2023-05-21 14:49 UTC (8 hours ago)
(HTM) web link (drakonhub.com)
(TXT) w3m dump (drakonhub.com)
| eternityforest wrote:
| DRAKON seems like almost the perfect embeddable visual scripting
| language aside from one detail.
|
| I looked into some of their visual aspects when I was doing if
| this then that rules embedding, but I ended up deciding left to
| right was more appropriate for something likely to have many
| short separate flows that fit on a screen.
|
| Other than that, it's just so many light hears beyond regular
| flowcharts in terms of aesthetics and readability.
| keyle wrote:
| Neat. This looks a bit like the gofmt for flow charts.
|
| I've had to design flow charts in the past and this looks like a
| rock solid way of designing some complex flows. It can easily
| turn into a spaghetti fest.
| junon wrote:
| At least from what I can tell, this isn't so much as a language
| as it is a drag-and-drop tool. I like how it looks but can't seem
| to find the language spec (as it claims it's a language) or any
| such examples through some cursory digging of the site.
|
| Does it mean more of a communicative "language" of shapes? I was
| hoping more for a Graphviz .dot format that would be used to
| generate such graphs. Mermaid seems to have become the defacto
| standard in OSS and I _really_ dislike it (even though I 've also
| contributed to it). A modern, sleek alternative like this would
| be great.
| anonzzzies wrote:
| DRAKON is an actual language;
|
| https://en.wikipedia.org/wiki/DRAKON?wprov=sfti1
| beefman wrote:
| I didn't know wikipedia had link tracking
|
| https://wikitech.wikimedia.org/wiki/Provenance
| erk__ wrote:
| A better source for the actual language would be this PDF file
| [0] or the Wikipedia page [1].
|
| It is a kind of strict flowchart language that only allows you
| to do it in one way, which may be bad for some, but it helps
| how fast you can grok it when you understand the simple rules.
|
| The same author have also recently made a JS widget that allows
| you to embed these diagrams on websites [2].
|
| [0]: https://drakon-editor.sourceforge.net/DRAKON.pdf
|
| [1]: https://en.wikipedia.org/wiki/DRAKON
|
| [2]: https://github.com/stepan-mitkin/drakonwidget
| PaulHoule wrote:
| No loops? What about a process with this kind of structure?
|
| https://en.wikipedia.org/wiki/OODA_loop
| Jtsummers wrote:
| > No loops?
|
| It has loops. Check out the examples here:
| https://drakonhub.com/drakon-examples
| m12k wrote:
| Ah, ok, so the part that says time always flows downwards in
| Drakon diagrams just means under normal circumstances, not
| _always_. TBH it wouldn't be all that useful if was limited
| to only layouting DAGs, so I'm glad that's the case.
| im_down_w_otp wrote:
| Seeing this gave me the idea that we should add flowchart-style
| visualization of executable specifications written in our system-
| level specification & query language, SpeQTr
| (https://docs.auxon.io/speqtr/).
|
| We already do some things to extract flowchart/state-diagram like
| topology information from collected system traces, but given how
| much of our customer workflows center around requirements &
| specifications, I think going the direction of communicating the
| underlying detailed specification more abstractly would be a big
| win.
| erk__ wrote:
| Oh this is one of my favourite topics.
|
| This site is like many of the other DRAKON tools written by
| Stepan Mitkin and is released to the public domain on GitHub [0].
|
| The tool I am most familiar with is the DRAKON editor [1] also
| created by Mitkin and released to the public domain [2]. I feel
| in love with DRAKON about 10 years ago and have used it on and
| off for just writing out flows or some algorithms, I even wrote a
| optimistic database in Erlang with it some years ago which I
| found pretty interesting. More recently I have been looking at
| adding Rust support to the tool, but many of the things I want to
| do is blocked by various technical debt that have accumulated
| over the years, and the fact that I have never used TCL before.
|
| [0]: https://github.com/stepan-mitkin/drakonhub
|
| [1]: https://drakon-editor.sourceforge.net/
|
| [2]: https://github.com/stepan-mitkin/drakon_editor
| kqr2 wrote:
| Can anyone share any practical experience using Drakon for a non-
| trivial project?
| lugu wrote:
| I used it to describe the behavior of an embedded device (like
| the boot sequence or the failure modes), it worked great since
| team mates would simply update the diagrams without wondering
| about the format. Also people non familiar with Drakon could
| make sense of it. My impression was: it is easy to model well
| designed systems and hard to draw convoluted interactions. It
| felt like a feature, a bit like LaTeX, where it is easy to
| produce a beautiful doc and possible (with some effort) to make
| an ugly one. That was just my impression: if the diagram is too
| complex, you probably should simplify the design.
| Onavo wrote:
| The old Buran people have probably been recalled to rebuild
| their defence industry given how badly the whole Ukraine thing
| is going for them.
| cyberax wrote:
| There are no real applications written in Drakon. That's
| because its authors spend most of the time pontificating about
| how it's superior to all other programming languages.
|
| Drakon editor is probably the most complicated piece of
| software written in it: https://github.com/stepan-
| mitkin/drakon.tech
| orbital-decay wrote:
| No _public_ applications. Drakon and the CASE software based
| on it have been used in certain Russian and Ukrainian
| aerospace and energy industry projects. NPTsAP continued to
| use it in all their projects after Buran (mostly control
| systems for upper stages).
| jawns wrote:
| I have used it to produce diagrams that represent various
| stages in the workflows of a content management system for
| video and mobile assets. Just because the underlying systems
| were complicated doesn't mean the diagrams needed to be, and I
| find its design decisions to be helpful. It hits the sweet spot
| between comprehensible to non-technical users and useful for
| technical users.
| jonahx wrote:
| I've always thought the layouts and conventions of Drakon are
| simple and clean, and a legitimate improvement on most other
| systems. But I would prefer to use them as Graphviz renderer, or
| via another textual interface, than via a custom GUI. I don't
| think a text UI exists, though.
| two_handfuls wrote:
| Yes, ideally a markdown extension for Drakon, like we have one
| for (a subset of) Graphviz.
| tgv wrote:
| I guess it would look very much like A
| #if B #if D #if F
| G #else H
| #else E #else C
| #end
| User23 wrote:
| Flowchart normal form. Neat really. Makes me want to play around
| with a Smalltalk dialect.
|
| My least favorite thing about all the common programming
| languages is that programs are represented as one dimensional
| byte arrays. You can talk about ASTs and whatever else to your
| heart's content, but at the end of the day you're editing a one
| dimensional character/rune array. It's especially sad since
| existential graphs[1] are well over a century old.
|
| Maybe one day I'll manage to invent a properly two dimensional
| m-expression that works with any s-expressions.
|
| [1] https://en.m.wikipedia.org/wiki/Existential_graph
| sterlind wrote:
| Drakon could be a really useful decompilation target, or at least
| an alternative to control flow graphs produced by tools like
| Ghidra and IDA. Seems like its relative lack of hierarchical
| structure would match the nature of assembly branching.
| xavxav wrote:
| Oh I love this project, its very interesting to think about its
| relation to the family tree of soviet programming languages.
|
| From the start (ie: 1946-48) they conceptualized programming
| through the notional of 'logical schemas' or 'logical operators'
| which were a pseudo-textual notation for flow charts. They went
| so far as to develop entire theories for the analysis, and
| optimization of these logical schemas.
|
| Another fascinating language was Analitik which was a language
| for CAS (like Matlab) developped by V. Glushkov in Ukraine.
|
| There exists a _fantastic_ website about programming languages in
| the ussr: http://www.compiler.su/ekskurs-v-istoriyu-razrabotok-
| yazykov...
|
| There are also entire journals worth of these papers on PL design
| from the '50s which have been translated to english and sit
| rotting in university shelves.
|
| edit: there's actually another post on the front page on my
| project to recreate the first of those languages:
| https://github.com/xldenis/besm, though unfortunately I have let
| it fall aside in recent years.
___________________________________________________________________
(page generated 2023-05-21 23:00 UTC)