Jump to content

Why not merge Ring programming language and AutoIt?


Recommended Posts

Hello friends, I don't know if any of you are familiar with or use the Ring programming language. You can find more information about it at https://ring-lang.github.io/" is fantastic language 

easy like Autoit but power like c and c++ and multiplatform , I wanted to suggest if possible a potential merger with AutoIt or a fork because it could allow for the integration of AutoIt or whatever may come out of it (a combination like AutoRing or a separate project named Ringo). I have already created some classes in the AutoIt style

func GuiCtrlComboBox(Refer,X,Y,Xw,Yh,alist,Tooltip){
        new QComboBox(Refer) {
                        settooltip(Tooltip)
                        setGeometry(X,Y,Xw,Yh)
                        oFont = new qfont("",0,0,0)
            oFont.fromstring("Arial,8,-1,5,50,0,0,0,0,0,Regular")
            setfont(oFont)
            oFont.delete()
                        for x in aList additem(x,0) next
                }
}

 GUICtrlCreateButton(pageCO1,5,60,51,25,"BUYmk","pWork()","Green","")
                         GUICtrlCreateButton(pageCO1,163,60,51,25,"SELLmk","pWork()","Red","")
                         GUICtrlCreateButton(pageCO1,5,90,51,25,"BUYlmt","pWork()","Green","")
                         GUICtrlCreateButton(pageCO1,163,90,51,25,"SELLlmt","pWork()","Red","")
                         sBuyLimtImput=GUICtrlCreateInput(pageCO1,5,120,90,21,"")
                         sSellLimtImput=GUICtrlCreateInput(pageCO1,124,120,90,21,"")
                         GUICtrlCreateButton(pageCO1,5,145,75,25,"BUYStplmt","pWork()","Green","")
                         GUICtrlCreateButton(pageCO1,140,145,75,25,"SELLStplmt","pWork()","Red","")
                         sBuy4STPImput=GUICtrlCreateInput(pageCO1,5,175,90,21,"")
                         sBuy4LimtImput=GUICtrlCreateInput(pageCO1,5,195,90,21,"")
                         sSell4STPImput=GUICtrlCreateInput(pageCO1,124,175,90,21,"")
                         sSell4LimtImput=GUICtrlCreateInput(pageCO1,124,195,90,21,"")
                         GUICtrlCreateButton(pageCO1,5,220,75,25,"BUYOCO","pWork()","Green","")
                         GUICtrlCreateButton(pageCO1,140,220,75,25,"SELLOCO","pWork()","Red","")
                         sBuyOCOSTPImput=GUICtrlCreateInput(pageCO1,5,250,90,21,"")
                         sBuyLimtOCOImput=GUICtrlCreateInput(pageCO1,5,270,90,21,"")

In my opinion, the weaknesses of Ring are: limited documentation and support only through the mailing list, making it challenging to retrieve discussions that could be beneficial for growth. It would be great to see a merger or fork to create a unified community.

 

Ring is a dynamic programming language designed to provide a simple and versatile development environment. Here are some of its strengths:

  1. Clean and clear syntax: Ring is designed with a clear and readable syntax, making it accessible even to those new to programming. This contributes to easy code understanding and rapid development.

  2. Multi-paradigm: Ring supports multiple programming paradigms, including imperative, functional, and object-oriented programming. This allows developers to use programming styles that best suit their project needs.

  3. Dynamic typing: Ring is a dynamically typed language, meaning that the type of a variable is resolved at runtime. This provides greater flexibility during development, allowing for more concise and adaptable code.

  4. Portability: Ring is designed to be highly portable and can run on various platforms, including Windows, Linux, and macOS,Android without requiring significant modifications to the source code.

  5. Integrated libraries: Ring includes a set of integrated libraries to facilitate application development. These libraries cover a wide range of functionalities, from string handling to file manipulation, making it easier to create complex software.

Link to comment
Share on other sites

yea  ofcourse  i tell merge  but  is  much better fork , the idea is porting some autoit "pylosophy"  in ring and therfore  create a fork , AutoIt would benefit from the possibility of being cross-platform, natively compiled for increased stability and speed, while still remaining very user-friendly even for non-programmers. It could also benefit from multi-threading capabilities, the ability to program for the web like CGI pages, and much more. However, this might just be an idea. I'm not suggesting it must be done. In fact, I would like to hear opinions, especially from those who have developed AutoIt, not so much about the feasibility, but whether they would consider making such a switch

Link to comment
Share on other sites

Then, it would be enough to replicate the functions of AutoIt, using the underlying engine of Ring. They won't be exactly the same as AutoIt, but very, very similar. This would be helpful for those who want to transition to multi-platform and multi-threaded programming. It would certainly take quite some time. I asked here because if the idea is well-received, especially by the authors of AutoIt, it might be easier, given a larger community and potentially with the assistance of ChatGPT, to write functions that syntactically resemble AutoIt.

Link to comment
Share on other sites

  • Moderators

Reminds me of Python without the closing lines.  The syntax kinda gives me a headache to look at (I know you posted "Clear/Concise" and others say the same about Python, but I truly find the archaic spaghetti styling syntax garbage (no offense, just a personal appearance thing, not a performance one)), but I can see there was a lot of work put in the past decade+.  I didn't get into the source code to see how it was written, but based on the functions, I can tell there was a ton of effort.

Before someone goes forking crazy, what is your goal for AutoIt to contribute (keep in mind, it appears Ringo is cross platform and AutoIt uses windows specific binaries).  And are you speaking personally or for the developer themselves?

This will be moved to the appropriate forum as well.

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Link to comment
Share on other sites

Ring draws inspiration from various programming languages, including Python, C, C++, Ruby, and others. Its main creator, Mahmoud Samir Fayed, has given Ring the ability to program in natural language. or only for windws you can use PWCT visual programming language ,If you don't like the style it uses, I have written some C extensions for myself to connect to the Binance API and another one to use PCRE. My programming knowledge is basic. My discussion is more about understanding if this idea could make sense for those who use AutoIt. I've seen people looking for a multiplatform or multithreaded AutoIt, but more than that, they would like to have the ease and power of AutoIt extended to other platforms. I believe the right modifications could be an opportunity, though I understand it's a colossal effort and not something that can be done overnight. It will probably remain just a 'nice' idea, but I wanted to share it with you. Who knows, it might lead to something useful for everyone. P.S>  if  you want also some code  look also https://rosettacode.org/wiki/Rosetta_Code,

Edited by AnnaK78
Link to comment
Share on other sites

3 hours ago, AnnaK78 said:

or whatever may come out of it (a combination like AutoRing or a separate project named Ringo)

 "At first the Ring compiler will be used to generate the Ring object file (*.ringo)
The word is taken. :P

For what I see, you can jump right into it and never know it wasn't AutoIt ( give or take ) syntax wise.
But you'll never have a single .exe as in AutoIt, given all the dependencies Ring has. ( for what I've seen )

I don't think that what you want is needed nor better. My 2 cents., I bet you've worked with Ring longer than my 15~20 min. reading around.

Follow the link to my code contribution ( and other things too ).
FAQ - Please Read Before Posting.
autoit_scripter_blue_userbar.png

Link to comment
Share on other sites

Yes, yes, I have worked a bit in Ring, not much though. .... But the first love is never forgotten, and indeed, like a worm in my head, I created some functions in Ring, similar to AutoIt, to create buttons, combo boxes, etc. However, it's a colossal task. That's why I thought, who knows, maybe the AutoIt developers, seeing good foundations in Ring, could perhaps get involved (as a group) and create something syntactically similar to AutoIt. Of course, it cannot be identical, but it would be profoundly different under the hood.

Link to comment
Share on other sites

Ring seems to miss the power of win32 so the whole windowsbase is missing like sendkeys, sendinput, com.

It seems to be a nice language but misses a lot thats available in autoit for automating and controlling other applications. Maybe i am missing the documentation on how to do win32 stuff.

I installed Ring and merging it with AutoIt would be similar to other attempts in other languages by making convenience functions that are equal in name to AutoIt but probably will behave a little different.

  • Ring installs nice
    • huge download
    • huge pdf help file (2000+ pages), there is plenty of documentation but finding what you need can be harder.
    • Nice compiling to standalone exe files
  • It feels
    • Very different but not hard to learn
    • scite versus ringnotepad is similar in initial usage, just load and run an example from a folder
    • Not a small executable, huge exe distribution 250+megabytes for below example helloworld
  • Many examples 
    • Nicely just structured in plain folders
    • It took me a while to find out how to deal with optional parameters (basically you need to pass a hash table)
    • very flexible including renaming keywords so you could write
      ChangeRingKeyword see consolewrite

Here a small function MsgBox and ConsoleWrite as a starter if someone starts making a compatibility library

Load "guilib.ring"

new qApp {
    $sString = "This is an example of writing to the console."
    ConsoleWrite($sString) // Running this in a text editor which can trap console output e.g. SciTE, will display value of $sString

    $myMessage="Hello Moon"
    MsgBox([:cTitle="Blank title", :cMessage=$myMessage])
    exec()
}

//MsgBox([:flag=0, :cTitle="Blank title", :cMessage="Blank message", :timeout=0, :hwnd=0])
Func MsgBox pList
    new qMessagebox(null) {
        setwindowtitle(pList[:cTitle])
        setText(pList[:cMessage])
        setstandardbuttons(QMessageBox_Yes | QMessageBox_No | QMessageBox_Close)
        show()
    }

func ConsoleWrite $someText
{
    see $sometext
}

And here an example in purebasic

 

Edited by junkew
played a little with ring
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...