Introducing “Praxis” (WIP) - visual programming in Prolog - Reply 1

I wonder if the effort that goes into programming the visual environment could be saved by using existing method engineering tools.

A free one is based on Eclipse … such as https://wiki.eclipse.org/Sirius/Tutorials/DomainModelTutorial

It likely also allows code generation …

Dan

Ah - I knew there was some capability like this in Eclipse, but hadn’t really gotten around to exploring it - I’d have to spend some time looking at it to see if it would suit my purposes. It might be a good platform for an offline version, which would be easier to integrate with locally installed prolog runtimes.

The visual system was time-consuming to develop, yes, but most of it is in an acceptable state right now, and I have a lot off liberty adding things like special kinds of connections / containers or other concepts

Thanks for the tip, it’s worth looking at for the future! :slight_smile:

Hi, really great that you are trying to develop something like this.

I use prolog program-code for many applications which i use in my own enterprise. In the real world i do never get hired for prolog programming, maybe if your tool will be used by many companies, the prolog -programmer job-opportunities become better.

Something is also still need is for example: locate in all my current code 1 predicate, and extract form all the code all other predicates which are used by this 1 predicate. With that i can separate 1 predicate with al its code to for example a new project.

That is not so hard to write. Use either the cross-referencing library or library(prolog_codewalk) to generate the call edges, collect the reachable call tree and use the reflection on source locations to find the relevant source.

1 Like

hi, ok i was looking for the DCG of prolog itself, and so most of the code is already there in prolog_codewalk, i will implement it soon.

Thank you! - I’ve developed similar systems in two different stacks (different generations of the system), so I have good hopes of accomplishing this… eventually - my main problem is time available for development :slight_smile:

It’s great to hear you are using Prolog professionally - I would love to know more about what you are using it for, and how - it’s very interesting for me to collect different possible use-cases, and I’ve found it almost hopelessy difficult to guess the needs/ wants of people in different industries /stacks.

The feature you mention sounds interesting, and could very well be possible as a kind of refactoring tool. Possibly, all the connected parts of the model could be gathered and copied into a new project/ module, which would also be part of the solution, at least initially. (multiple modules/projects per solution is something that will clearly be needed in the future)

Great to see such a great idea starting to come to fruition! Thanks for this. One quick comment: on my system, the dark color scheme is practically unreadable. for me, at least. Black on dark gray doesn’t provide enough contrast. I’m talking about the online implementation. Any chance you could make the colors selectable?? Or, just make them easier to read?

In any case, its exciting to see this!

Thank you! I’m very excited about it, and it’s going well right now :slight_smile:

True - the color-scheme isn’t thought through at all, as of yet- I’ve basically been trying different colors to see what “works”, and have taken the first alternative that I thought looked ok. The colors should, to a large degree, be selectable in the future. It should not be a problem at all, technically.

My focus for the next release will mainly be to implement a pratt-parser, and extensive syntax-checking with error-messages that bring you directly to the offending shape/table cell, upon clicking the error message. That should make complex code-generation a lot easier to perform, and give a taste of the luxurious user experience I’m after :slight_smile:

Very glad that you are interested; I would love any ideas for use-cases, general feedback and suggested features/ properties of the system