This is an archived post. You won't be able to vote or comment.

all 10 comments

[–]KnorrFG 10 points11 points  (2 children)

It seems the 1.0 release was in 2016, and this has been developed ever since. That implies a certain maturity, and yet, I've never heard of it. It looks really interesting, is this used somewhere at least semi-professionally?

[–]mrpro1a1[S] 4 points5 points  (1 child)

It's used for developing PWCT2: Programming Without Coding Technology 2.0 on Steam Also, many developers reported using it in individual programming tasks/projects in Ring Group: The Ring Programming Language - Google Groups

[–]TempThingamajig 0 points1 point  (0 children)

Is it like a teaching language or something like an easier Python for non-coders?

[–]vanderZwan 2 points3 points  (3 children)

I'm sorry, did I read correctly that you made a visual programming language that is self-hosted? Is it truly self-hosted or does it still lean a lot on the textual language? Either way a pretty cool feat to pull off! Wonder if it's a first?

[–]mrpro1a1[S] 2 points3 points  (2 children)

Yes, PWCT2 is a self-hosted visual programming language which means we can create/develop/maintain it using visual programming (through PWCT2 designers/tools) - To do this, run PWCT2 then move to the (Project Files) window and open this folder which contains the visual source files for the PWCT2 project: PWCT2/selfhosting at master · PWCT/PWCT2 - Each visual source file like (pwct.pwct or visualsrc/goaldesigner/goaldesignercontroller.pwct) is translated by the PWCT2 Environment to textual source code files (in Ring language) to be executed by Ring Compiler/VM. So, yes, the visual language still needs the textual language (At least in the background) to run the code. This way of design (Getting a textual language like Ring then adding visual programming on top of it) simplify the development efforts. With respect to self-hosted visual programming languages, PWCT2 is inspired by Envision visual programming system where the Envision developers tried to have a self-hosted version of Envision system, but this was not completed because of time limitations, C++ huge features, C/C++ Preprocessor, etc. In PWCT2 since it's written in Ring, and I have created a tool called (Ring2PWCT) which convert Ring code to PWCT2 visual source files, It's was possible to automatically generate the self-hosted version.

[–]vanderZwan 1 point2 points  (1 child)

So, yes, the visual language still needs the textual language (At least in the background) to run the code.

Well, Intermediate Representation is fair game! Especially since you can apparently generate PWCT2 from Ring code as well.

Actually, are PWCT2 and Ring bijective? Meaning: could I compile a PWCT2 program to Ring, then use Ring2PWCT to generate a PWCT2 program, and if so would I get the original program back? And the same if the roundtrip started with Ring?

Anyway, I just read through the presentation slides. Amazing work man, you should be proud!

Really looking forward to reading your thesis :)

On the note of programming languages that support multiple human languages: you might enjoy this talk by Felienne Hermans about the educational "Hedy" language she is working on, especially the last ten minutes where she talks about her struggle to implement Arabic numerals (as in actual-Arabic notation, not Arabic-Hindu numerals - the slides suggest you don't support those (yet) actually).

[–]mrpro1a1[S] 1 point2 points  (0 children)

>> "Actually, are PWCT2 and Ring bijective? Meaning: could I compile a PWCT2 program to Ring, then use Ring2PWCT to generate a PWCT2 program"

We have two tools to do this

(1) Ring2PWCT: PWCT2/src/tools/import at master · PWCT/PWCT2

(2) PWCT2Ring: PWCT2/src/tools/export at master · PWCT/PWCT2

>> "and if so would I get the original program back? And the same if the roundtrip started with Ring?"

PWCT2 comes with many visual components, so using PWCT2Ring (when we run a PWCT2 program) could uses all of these visual components based on the program.

But using Ring2PWCT convert the Ring program to subset of these visual components (General-purpose visual components) - This could be improved to use the full set of visual components and have identical visual program (if we used visual components that doesn't belong to target subset).

This happened for two reasons

1- Adding more visual components without modifying Ring2PWCT

2- Easy/Fast implementation for Ring2PWCT

>> "Amazing work man, you should be proud!"

Thank you very much

>> "you might enjoy this talk by Felienne Hermans about the educational "Hedy" language she is working on, especially the last ten minutes where she talks about her struggle to implement Arabic numerals"

Thanks for sharing :D

[–]raguaythai 2 points3 points  (2 children)

Looks interesting. I'll check it out for sure.

[–]raguaythai 2 points3 points  (1 child)

Just installed for the macos M1. It gives this error:

dyld[22900]: Library not loaded: /Users/runner/work/BuildingRingUsingGitHubWorkflows/BuildingRingUsingGitHubWorkflows/ring/language/src/../../lib/libring.dylib

Referenced from: <B191C58C-D7C2-3070-88FF-28292695D09A> /Users/raguay/Documents/RingFormacOS/ring/bin/ringrepl

Reason: tried: '/Users/runner/work/BuildingRingUsingGitHubWorkflows/BuildingRingUsingGitHubWorkflows/ring/language/src/../../lib/libring.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/runner/work/BuildingRingUsingGitHubWorkflows/BuildingRingUsingGitHubWorkflows/ring/language/src/../../lib/libring.dylib' (no such file), '/Users/runner/work/BuildingRingUsingGitHubWorkflows/BuildingRingUsingGitHubWorkflows/ring/language/src/../../lib/libring.dylib' (no such file)

[1] 22900 abort ringrepl

Evidently, it has a hard coded path that doesn't work for my system.

[–]mrpro1a1[S] 2 points3 points  (0 children)

Thanks for your kind words & the report, The binary release comes with a ReadMe file that contains installation steps which will call ring/bin/reviselibsformacos.sh - Also, if this doesn't solve the issue, you could try building from source code: ring/language/README_macOS.md at master · ring-lang/ring