What things you are missing in AutoIt?

09/22/2015 22:47 Shadow992#16
Quote:
Originally Posted by fuso98 View Post
Also would be very very usefull to make more functions/method with the same name, but with diffents parameter. Based on the type of the param (string, int etc..) will be called a specific method/function.
This is nearly not possible in languages where you are not able to give variables a specific type like this:

int $var = 120

So I really dont know how we should implement this.
Quote:
Originally Posted by fuso98 View Post
Now I've a question: Did you implemented the Multithreading and also classes? :D
Neither multithreading nor classes are implemented yet.
But my code were written with multithreading support (which maybe also will be in alpha version) and classes support in mind.

So multithreading will for sure be available in one of the first versions.
Classes may take a while.

I am also nearly ready to release an alpha version.
At the moment I am implementing the "func ... endfunc" keyword and doing some speedoptimizing things.

Real Inline-ASM is nearly implemented, too. But it needs some other functions to work correctly. So this may take a while, too.

I am planning to release my first alpha version in around 2-3 weeks of "working at this project". But until 10.10.15 there are many private things I have to do. So Release-Date may be something around 30.10.15.

But dont worry you will see it when I managed to release it.
I will "spam" any forum here I am able to. :D
09/24/2015 20:11 [Beatrice]#17
Well since i really got accustomed to the syntax i wonder how your custom syntax is atm. Would you mind writing an example code that shows basic function, variable declaring and some if/else and some other basic functions? Thanks a lot Looking forward to see your project! Keep it up!
09/24/2015 22:13 Shadow992#18
Quote:
Originally Posted by [Beatrice] View Post
Well since i really got accustomed to the syntax i wonder how your custom syntax is atm. Would you mind writing an example code that shows basic function, variable declaring and some if/else and some other basic functions? Thanks a lot Looking forward to see your project! Keep it up!
There are no functions implemented yet. So you can "just" do the basic things like array-manipulation, function-calling, variabled-declaration, if/while/etc.

I also think there wont be that much function available in alpha version. Just the very basic functions to test if and especially what is working/not working.

But I am planning to implement all functions (maybe with different syntax/names) that are available in AutoIt.

But I do not want to develop this language because we need to "automate windows faster" (because usually you dont need to speed click on a button).
My main intention for this language is game manipulating/botting/hacking.
So my first focus will be on functions which helps you developing hacks and bots. I am thinking about things like Dll-Injection (and also the possibility to create some Dlls with this language), Hooking, Reading/Writing Memory, injecting assembler without any extern libaries and so on.

So the main syntax isnt that different from AutoIts one. It is just more consistency.
This means the following AutoIt-Code:

PHP Code:
Dim $var[1000][10]
$i=0
$i3
=0
for $i=0 To 1000
    
if $i>2 Then
        
while $i3<10
            $var
[$i][$i3] = 999
            $i3
+=2
        wend
    
EndIf
Next 
Would look like that now:

PHP Code:
Dim $var[1000][10]
$i=0
$i3
=0
for $i=0 To 1000
    
if $i>2
        
while $i3<10
            $var
[$i][$i3] = 999
            $i3
+=2
        
EndWhile
    EndIf
EndFor 
Especially the "then" after if annoyed me many many times. So I removed it.
It is useless as hell and I cant think about any situation where you need a then in multiline-ifs.
If you use a one-line if the then must be place to make clear what belongs to comparision and what not.

Also I changed things like "WEnd" and "Next" to "EndWhile" and "EndFor".
I always aked myself why the hell we need a "next" if we use a "for"-loop.
At the very beginning I always tended to use "EndFor" as you normally do in AutoIt.
Like "Select" and "EndSelect", "Switch" and "EndSwitch", "Func" and "EndFunc", etc.

So in my opinion not using EndWhile and EndFor makes it unnecesserary harder to get started.
So I removed/changed that.

There will be the same for future keywords like "Class" and "EndClass". I want to have got a high concistency.
Also things I always struggled with were something like that:

PHP Code:
Dim $var[5]
for 
$i=0 to 4
     $var
[$i] = _StringBetween(...) 
next 
Why isnt this possible but this works like a Charm:

PHP Code:
$var _StringBetween(...) 
I really think there are many things that can be done much better. Not just regarding to speed but also to Syntax and Semantic.
While developing the Compiler/Interpreter, I really understood how fast AutoIt is.
The parsing/interpreting/executing is unbelievable fast.
There are still some very rare situations where my interpreter is just a few ms faster than the corresponding AutoIt-Code.

So to sum it up:
Hell yeah thats a hard competitor but Im sure we (I gonna release it as open source so everyone can help me) can do it better if we are all helping together. :)

Edit:
I also added things like "bit operators", because I guess its very handy to just write a "<<" instead of a "BitShift(...)".
09/24/2015 22:38 warfley#19
Ich bin zwar kein autoit entwickler, finde die autoit syntax aber grässlich unübersichtlich

Vielleicht solltest du auch mal die ada syntax in betracht ziehen also:
Code:
procedure Test is
begin
  if Foo then
    :BarLoop
    While Bar loop
      FooBar;
    end loop BarLoop; // Blockname muss nicht unbedingt gesetzt werden
  end if
end Test;
also zu jedem Block wird der Block mit end + blocktyp (+Blockname) beendet, ich finde 2 wörter (oder 3 jeh nach dem) alá end while übersichtlicher als EndWhile

Grade bei großen Codes finde ich macht dieses leerzeichen schon was aus

PS:
Solche blöcke wie in C oder Pascal (Also {} oder begin end) haben ja einfach den zweck unabhängig von der Kontrollstruktur zu sein, dass heißt mit solchen blöcken musst du deinen Interpreter nicht auf jede Kontrollstruktur einstellen.
Das ist mit etwas weniger aufwand verbunden (auf kosten der übersichtlichkeit)
09/24/2015 22:51 Shadow992#20
Quote:
Originally Posted by warfley View Post
Ich bin zwar kein autoit entwickler, finde die autoit syntax aber grässlich unübersichtlich

Vielleicht solltest du auch mal die ada syntax in betracht ziehen also:
Code:
procedure Test is
begin
  if Foo then
    :BarLoop
    While Bar loop
      FooBar;
    end loop BarLoop; // Blockname muss nicht unbedingt gesetzt werden
  end if
end Test;
also zu jedem Block wird der Block mit end + blocktyp (+Blockname) beendet, ich finde 2 wörter (oder 3 jeh nach dem) alá end while übersichtlicher als EndWhile

Grade bei großen Codes finde ich macht dieses leerzeichen schon was aus
Das scheint echt sehr abhängig von den jeweiligen Vorlieben zu sein. Ich finde die ada "stückelt" mir den Code zu sehr auseinander.

Ich benutze in C/C++ für Funktionsname auch lieber "myOwnFunc" als "my_own_func". Ich mag es einfach kompakter. :D

Weswegen ich mich aber nicht für eine komplett andere Syntax entschieden habe, ist hauptsächlich der Grund, dass ich als höchstes erreichbares Ziel AutoIt mit meiner Sprache weitestgehend ersetzen möchte.

Und das will ich versuchen, indem sich die Leute möglichst wenig umgewöhnen müssen. Trotzdem will ich ein paar Sachen anfängerfreundlicher und konsistenter machen.
Ich bin also im Moment dabei irgendwo einen Mittelweg zu finden, von daher habe ich auch die PHP/C-Syntax mittlerweile komplett ausgeschlossen. Diese Art fände ich persönlich nämlich am besten.

Ich habe hier nur noch einmal danach gefragt, um mir sicher sein zu können, dass die Leute sich nicht zu 100% alle eine C-Syntax wünschen und so wie es aussieht ist die "Bevorzugung" der Syntax relativ ausgeglichen.
09/25/2015 11:08 butter123#21
i have worked a bit with python and i like the indentation syntax. instead of brackets you have indented text.

something like
PHP Code:
if true then
  
if $b then
    Msgbox
("true")
  else
    
Msgbox("false"
it saves some characters and forces you to have a readable code.


one thing im missing in autoit is structs like in c, with easy access like person.name
09/25/2015 12:01 Shadow992#22
Quote:
Originally Posted by butter123 View Post
i have worked a bit with python and i like the indentation syntax. instead of brackets you have indented text.

something like
PHP Code:
if true then
  
if $b then
    Msgbox
("true")
  else
    
Msgbox("false"
it saves some characters and forces you to have a readable code.
Good idea maybe I should implement an automatic-indention whenever you compile code. Yeah I think this would be great even for beginners.
Is on the ToDo-List :D

Forcing people to indent (this means removing keywords) is not really the way I wanted to go. Especially because I really hate this Python syntax. :D
Quote:
Originally Posted by butter123 View Post
one thing im missing in autoit is structs like in c, with easy access like person.name
Structs and Classes will be equivalent in my interpreter (just similiar to C#) so this will be for sure added (not directly as struct but as kind a light-weight class).
09/27/2015 08:24 alpines#23
Quote:
Originally Posted by Shadow992 View Post
Good idea maybe I should implement an automatic-indention whenever you compile code. Yeah I think this would be great even for beginners.
Is on the ToDo-List :D

Forcing people to indent (this means removing keywords) is not really the way I wanted to go. Especially because I really hate this Python syntax. :D

Structs and Classes will be equivalent in my interpreter (just similiar to C#) so this will be for sure added (not directly as struct but as kind a light-weight class).
You don't have to force the user to type like this. Providing several ways to write if structures surely will look great to many people since they will be able to use their favorite one.
11/22/2015 11:56 [Beatrice]#24
Any info about the release date?
I'm still excited about this :p
11/22/2015 15:03 Shadow992#25
Quote:
Originally Posted by [Beatrice] View Post
Any info about the release date?
I'm still excited about this :p
I wanted to release an alpha version just 2 weeks ago.
But then I decided to first create something like a "Universal Test-Unit" so you can change the C++ Code and still test if all is working correctly.

When I started developing this Test-Unit I found so many bugs.
I could already release the alpha version (and many bugs got fixed) but there are still some small left. I want to fix these bugs, too. So if someone finds a bug, I do not have to say: "Yeah I know I already noted this bug."

There at the moment also only a few standard functions available.
To be precise there are only 4 implemented yet:
2 functions that are useful for development:
ConsoleWrite, ConsoleRead

and 2 for debugging (you do not have to understand their names):
_Debug_Dump, _Debug_ShowArrayInfo

I am at the moment also working (and nearly finished it) at some other functions which will be available in alpha version, too:
PixelSearch, ImageSearch, ScreenCapture, WindowCapture, MouseClick, PixelSearchNextToPosition

There will not be much more standard functions for the alpha version because in alpha version I am only planning to find and erase bugs, esepcially in using arrays/functions/includes/etc.
So the alpha version is more a kind of call for help and not a useable software.

But to sum up:
If you ignore the 2-3 missing bugs, the software is ready for an alpha release and for heavy testing.

I guess I will release an alpha version (including C++ source code) in around 2 weeks.
11/24/2015 12:18 butter123#26
An additional idea:
One big advantage of autoit is, that there are so many udfs. Is it maybe possible to use them? Maybe create a connection to the autoit interpreter, so you could use autoit sourcecode in your language?
11/24/2015 20:10 Shadow992#27
Quote:
Originally Posted by butter123 View Post
An additional idea:
One big advantage of autoit is, that there are so many udfs. Is it maybe possible to use them? Maybe create a connection to the autoit interpreter, so you could use autoit sourcecode in your language?
I want to implement 90% of autoit standard UDFs directly in my interpreter (to speed up their performance).

It may be possible to use some UDFs created for AutoIt with no modifications in AAL, too.
But as stated before, my goal is not to create a copy of Autoit but to be similar to AutoIt, so many UDFs just wont work by copying them 1:1 but most of them should be fixable with just a few changes.

Maybe when some time went over I will create an "AutoIt-Code to AAL-Code"-Converter (or someone else :D).
But at first we have to get the AAL-Compiler + Interpreter work correctly (and yeah as you noticed my language will be called AAL ;) ).
11/24/2015 23:09 [Beatrice]#28
Quote:
Originally Posted by Shadow992 View Post
I want to implement 90% of autoit standard UDFs directly in my interpreter (to speed up their performance).

It may be possible to use some UDFs created for AutoIt with no modifications in AAL, too.
But as stated before, my goal is not to create a copy of Autoit but to be similar to AutoIt, so many UDFs just wont work by copying them 1:1 but most of them should be fixable with just a few changes.

Maybe when some time went over I will create an "AutoIt-Code to AAL-Code"-Converter (or someone else :D).
But at first we have to get the AAL-Compiler + Interpreter work correctly (and yeah as you noticed my language will be called AAL ;) ).
AAL
What does it stand for?
11/24/2015 23:20 alpines#29
Quote:
Originally Posted by Shadow992 View Post
I want to implement 90% of autoit standard UDFs directly in my interpreter (to speed up their performance).

It may be possible to use some UDFs created for AutoIt with no modifications in AAL, too.
But as stated before, my goal is not to create a copy of Autoit but to be similar to AutoIt, so many UDFs just wont work by copying them 1:1 but most of them should be fixable with just a few changes.

Maybe when some time went over I will create an "AutoIt-Code to AAL-Code"-Converter (or someone else :D).
But at first we have to get the AAL-Compiler + Interpreter work correctly (and yeah as you noticed my language will be called AAL ;) ).
Bitte bitte bitte nimm einen Aal als Icon!
11/25/2015 10:28 Shadow992#30
Quote:
Originally Posted by [Beatrice] View Post
AAL
What does it stand for?
AAL = Advanced Automation Language
Quote:
Originally Posted by alpines View Post
Bitte bitte bitte nimm einen Aal als Icon!
Vielleicht mach ich mir einen Aal als Icon, der aber irgendwie "nicht zu Greenpeace"-mäßig ausschaut. Ansonsten wäre die Idee echt cool. :D