Re: Time to finish RedyCode 1.0
- Posted by Spock Jun 23, 2017
- 2481 views
a new project: creating a new programming language based on Euphoria syntax.
Why?
Will it run on Windows, Linux, Android and iOS? Will it run on x86 and ARM? Will it run on a web page? Will version 0.0.1 pre-alpha run on Android and iOS and on a web page?
Unless you can confidently say yes to all the above my advice (after 12 years and still counting) has to be don't start
Pete
I don't know yet. I plan to start by writing a proof-of-concept interpreter in Euphoria and/or Phix. After that, a new backend could be written in whatever fast compiled language. Hopefully, it would be able to compile on various platforms. The main goal for now is to experiment with some syntax design concepts that could make, scripting, multi-tasking, and GUI development easier.
I just wonder if "creating a new programming language" "to experiment with some syntax design concepts" could be, well, overkill? You might find that some simpler ideas could solve the issues. Depends what they are.
Multi-tasking - Problems that you might think require multi-tasking to handle might also be solvable using a Finite State Machine. I have one at the core of a multi-user server program. The server itself is single threaded but the FSM can easily process multiple inputs.
GUI development - Have you considered a preprocessor, instead of a full-fledged language, to reform your programs? I see your code has lots of references to routine_id("myfunc"). What if you could simply put @myfunc ? I write lots of utility programs but I never use a WYSIWYG designer. Instead I have my own geometry manager as part of the windows library, eg:
LAYOUT = gm:Parse ( { { RESET, "pos", 20, 30, "dims", 50, 50 }, { BOOKING, "right", RESET, 10 }, { REEFER, "right", BOOKING, 10 }, { DANGER, "right", REEFER, 10}, { LISTVIEW2, "underleft", RESET, 0, 10, "width", 500, 2000, "height", 200, 1000 } } )
What this does is describe the size & position of controls relative to each other. The controls positions are recomputed with each resize event and the controls are updated accordingly. You're doing something roughly similar in your windows library. But what I really want to do is preprocess this:
#LAYOUT [ RESET 20 30 50x50 BOOKING 10 REEFER 10 DANGER 10 LISTVIEW2 underleft RESET 10 width 500-2000 height 200-1000 ]
This little DSL expresses my intentions much better than Euphoria ever could.
Spock