Jump to content

AutoIT as main programming language: is it useful enough?


Recommended Posts

First of all sorry if this is a duplicate post (no results by searching) or if it doesn't belong to this section. I tried my best.

I am currently developing a quite big project (3500 lines + 700 lines on another source), which started as a simple one but turned out to be complex (the compiled exe will be used as a management software and an invoice software for the office in which i work).

As far as i know, AutoIT should be used only for simple automation or simple scripting, but not for complex projects.

Actually the software works very well, it's fast and responsive, and the code is relatively easy to read and mantain.
I'll add many features and I'm comfortable when I have to fix some bugs.

TL;DR:

So my question and the actual topic I would like to discuss is: is AutoIt ready to be a full-time programming language (or to say it in a more precise way: scripting language) for real-life business developing?

For example I can't imagine how painful and harder it would be to develop the same software in, let's say, C#, which is even a quite easy programming language.

It seems a big "yes" to me, as there are plenty UDFs for almost everything and it only lacks a proper OOP implementation (but also C lacks it).

I can even query databases, do nested conditionals without slowing down everything, manipulate strings in easy way and so on.

I can't see why it shouldn't be, as advertised almost everywhere.

 

Link to comment
Share on other sites

2 hours ago, DrOtosclerosi said:

I am currently developing a quite big project (3500 lines + 700 lines on another source),

you mean: the little one ?

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library * Include Dependency Tree (Tool for analyzing script relations) * Show_Macro_Values.au3 *

 

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

OpenOffice/LibreOffice/XLS Related: WriterDemo.au3 * XLS/MDB from scratch with ADOX

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskSchedulerIE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) * PDF Related:How to get reference to PDF object embeded in IE * IE on Windows 11

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

I also encourage you to check awesome @trancexx code:  * Create COM objects from modules without any demand on user to register anything. * Another COM object registering stuffOnHungApp handlerAvoid "AutoIt Error" message box in unknown errors  * HTML editor

winhttp.au3 related : * https://www.autoitscript.com/forum/topic/206771-winhttpau3-download-problem-youre-speaking-plain-http-to-an-ssl-enabled-server-port/

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2023-04-24

Link to comment
Share on other sites

I think you answered your own question.  AutoIt is a great language to develop "real" programs in.  Especially the Management tools which is what some of my bigger scripts are for.  My most often used tool is 10,545 lines and it does everything I need it to just a well as any of the big languages would have.

Link to comment
Share on other sites

btw.

How complicated it is?

check it using:

#Au3Stripper_Parameters=/RM /SO /RSLN /PE

And check ***_stripped.au3 file how many lines and bytes it contains

For example:   my biggest project have :       35516 lines and 1 251 423 Bytes

 

Edited by mLipok

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library * Include Dependency Tree (Tool for analyzing script relations) * Show_Macro_Values.au3 *

 

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

OpenOffice/LibreOffice/XLS Related: WriterDemo.au3 * XLS/MDB from scratch with ADOX

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskSchedulerIE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) * PDF Related:How to get reference to PDF object embeded in IE * IE on Windows 11

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

I also encourage you to check awesome @trancexx code:  * Create COM objects from modules without any demand on user to register anything. * Another COM object registering stuffOnHungApp handlerAvoid "AutoIt Error" message box in unknown errors  * HTML editor

winhttp.au3 related : * https://www.autoitscript.com/forum/topic/206771-winhttpau3-download-problem-youre-speaking-plain-http-to-an-ssl-enabled-server-port/

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2023-04-24

Link to comment
Share on other sites

  • Moderators
8 hours ago, DrOtosclerosi said:

is AutoIt ready to be a full-time programming language (or to say it in a more precise way: scripting language) for real-life business developing?

Full-stack OO programming language? No. Go-To tool for anything that touches the Windows API? Definitely. Right choice for anything else? Maybe

I have been developing custom scripts and apps for companies with AutoIt since 2009. In my own experience, your 3500 lines is about middle of the road when automating suites like SCCM, Altiris, A.D. integrations, etc. There is always an opportunity to consolidate code, but in the end number of lines should not be your first concern over readability and best practices.

There are definitely cases where AutoIt will not be the choice, and for those you have to turn to the right tool for the job. But my thought process when presented with new requests even to this day (literally working on one for a customer as I browse the forum) is "Can I do this with AutoIt?", "If not, am I sure I can't do it with AutoIt?", and finally "If not, what would the best tool for the job be?"

"Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball

How to get your question answered on this forum!

Link to comment
Share on other sites

16 hours ago, DrOtosclerosi said:

So my question and the actual topic I would like to discuss is: is AutoIt ready to be a full-time programming language (or to say it in a more precise way: scripting language) for real-life business developing?

AutoIt has become much more than just a scripting language over the years. Originally it was just a scripting language, with no GUI capability, but now it is so much more, and your number of lines of code is quite small to the many projects I have worked on and indeed to that of many others who use AutoIt. But as JLogan has said, may be pretty normal for the stuff he lists.

Really at the end of the day, it down to the limits of your imagination and capabilities, to what you can use AutoIt for, though sometimes you need to use other tools that are better suited, as has been said. That said, I find myself often using AutoIt to quickly and efficiently develop a frontend for other programs, built with other languages. Often because I am making up for the lack or shortfall of others who made those programs.

Make sure brain is in gear before opening mouth!
Remember, what is not said, can be just as important as what is said.

Spoiler

What is the Secret Key? Life is like a Donut

If I put effort into communication, I expect you to read properly & fully, or just not comment.
Ignoring those who try to divert conversation with irrelevancies.
If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it.
I'm only big and bad, to those who have an over-active imagination.

I may have the Artistic Liesense ;) to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage)

userbar.png

Link to comment
Share on other sites

I go along with what the moderator stated earlier. It’s a great handy tool for certain things and operations. For full stack programming I would not use it I would use something like C# or even Python 

Edited by Earthshine

My resources are limited. You must ask the right questions

 

Link to comment
Share on other sites

20 hours ago, JLogan3o13 said:

There are definitely cases where AutoIt will not be the choice, and for those you have to turn to the right tool for the job. But my thought process when presented with new requests even to this day (literally working on one for a customer as I browse the forum) is "Can I do this with AutoIt?", "If not, am I sure I can't do it with AutoIt?", and finally "If not, what would the best tool for the job be?"

That's exactly what I meant.

Most of the things I have to develop here are easily done with AutoIT, while probably many people would use C# or other languages.
But in fact I always think "I can do this in AutoIT easily, and it will work flawlessy" and i go for it.
Just as I do with Bash scripting in Linux, when talking about system mainteinance or log parsing.
I see many people being like "HAHAHA AUTOIT AUTOMATION AND NOBODY USE IT IN BUSINESS" but i think that's a closed-mind attitude.

 

12 hours ago, TheSaint said:

 That said, I find myself often using AutoIt to quickly and efficiently develop a frontend for other programs, built with other languages.

That's also a very good point, I did it some times with programs without a GUI and with closed source, so AutoIT was perfect for make them usable to the end-user.

 

3 hours ago, Earthshine said:

For full stack programming I would not use it I would use something like C# or even Python 

That's for sure, in that case I would even avoid the .NET framework and skip directly to something more low-level.

 

On 13/2/2019 at 2:42 PM, mLipok said:

btw.

How complicated it is?

check it using:

#Au3Stripper_Parameters=/RM /SO /RSLN /PE

And check ***_stripped.au3 file how many lines and bytes it contains

For example:   my biggest project have :       35516 lines and 1 251 423 Bytes

 

I honestly did not understand the point sorry

Link to comment
Share on other sites

why the penchant for low level? are you doing embedded systems or realtime military stuff?

 .NET is wonderful. I will be blessed if I never have to write unmanaged code again, thank you. it's funny, you love autoit so much but if you had to go full stack you would go old school unmanaged C code? LOL, now you are making me laugh.

Edited by Earthshine

My resources are limited. You must ask the right questions

 

Link to comment
Share on other sites

  • 3 weeks later...

I've been working with AutoIt for a solid 5 or so years. It may be a bit finicky but I'd say my abilities in this language will fail long before AutoIt will fail me. I've had to work around what people suggested may be "bugs in AutoIt" a handful of times with scripts that should work fine, but I've always gotten the job done.

Now if I was in your position, I would have skipped AutoIt and essentially developed that as a website.

Link to comment
Share on other sites

In my opinion most important is the design of your project.
Means: First you need a catalog of specifications (functionality, security, privacy req., performance ...), then you select the language to implement them.

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
Share on other sites

Hi,

isn´t it strange that this question is asked again and again? What have these people been working on in their lives, and what tools have been used by them? How do I have to imagine a questioner who is not able to solve the simplest problem creatively? Using the right tool to solve a problem is one of the basic components of human existence. People who use a shoe to "hammer" a nail into a wall use possibly the wrong tool, but they DO something to solve the problem by themselves. People who ask in a internet forum "is a shoe the right tool to put a nail into a wall?" do NOTHING. They leave other people to find a solution. Creative? No. Will they ever become a good craftsman or programmer? EVER? No...

Writing computer programs to solve problems is (most of the time) a very creative, exhausting and demanding process. For some of us it is fun most of the time, sometimes it is really hard work. We have to use MANY tools every single day, and yes, we often use "wrong" tools, but we DO everything to solve the actual problem. If we find a better tool, we use it instead. But the question of "usefulness"?

The answer to the question "AutoIT as main programming language: is it useful enough?" is only "YES" or "NO". Depending only to the personal experience of the answering people. But....is "I have (not) the experience to solve a computer problem with this language!" the answer which helps the OP in any way? And does this answer helps other people who find this thread? Will this answer make them DO something? Is this thread "useful"?

 

If the question would be "Which programming language/UDF/API/Script/Snippet/Function/Framework/Library/Method/Object/Class/techniqe.... do YOU (as a experienced programmer)  recommend to solve THIS/MY (described below) problem?", then the "experienced" (or not) programmer could give a (more or less) helpful answer. And possibly show a nice Autoit script. Or refer to other "useful" programming languages like ....(placeholder for ANY programming language). Yes, ANY!

I am sure that people asking for "usefulness" of a programming language are not able to program. I'm not even sure if they'll ever DO anything "useful"....

 

And with a little hope that this post is not completely "useless", a following link:

http://www.catb.org/~esr/faqs/smart-questions.html

 

Link to comment
Share on other sites

I agree the question is ill-posed.

If the question is to determine which language fulfills the broadest "general" needs and hence is the most "useful" (in a sense), then there is a single and easy answer: Ada. That's because Ada is the result of the largest research by the most brilliant minds and worldwide competition to satisfy this precise requirement. It's recent revision, Ada2012, is extremely safe, robust and powerful. Yet its use is surprisingly rare in IT (go figure, see below).

As others have already pointed out, AutoIt is a surprisingly capable language for a very significant number of use cases and if it suits your needs, why not keep enjoying its simplicity of implementation.

 

As an aside, I've worked for Ada's author team (led by Jean Ichbiah) and I can tell you that producing Ada compilers isn't a light and easy task!
I've also worked later with the B formal method (team led by Jean-Raymond Abrial), which may deliver Ada* or C* code along with a formal proof of correctness. (The star denotes the limitation to the safe and provable part of the language.)

So we have methods and tools to produce software formally (= mathematically) proven 100% correct with respect of formal specifications, still we see in practice that these tools and languages are only used in niches where  dependability is an absolute concern, else they're not used at all in general software development.

The contrapositive of this is "if your context doesn't impose to you extremely strong requirements, safety and robustness proofs, then use inferior methods and languages". No wonder why a huge number of software pieces are riddled with bugs and need daily, weekly, monthly, yearly so-called "updates"...

This wonderful site allows debugging and testing regular expressions (many flavors available). An absolute must have in your bookmarks.
Another excellent RegExp tutorial. Don't forget downloading your copy of up-to-date pcretest.exe and pcregrep.exe here
RegExp tutorial: enough to get started
PCRE v8.33 regexp documentation latest available release and currently implemented in AutoIt beta.

SQLitespeed is another feature-rich premier SQLite manager (includes import/export). Well worth a try.
SQLite Expert (freeware Personal Edition or payware Pro version) is a very useful SQLite database manager.
An excellent eBook covering almost every aspect of SQLite3: a must-read for anyone doing serious work.
SQL tutorial (covers "generic" SQL, but most of it applies to SQLite as well)
A work-in-progress SQLite3 tutorial. Don't miss other LxyzTHW pages!
SQLite official website with full documentation (may be newer than the SQLite library that comes standard with AutoIt)

Link to comment
Share on other sites

  • 1 year later...
On 3/3/2019 at 3:32 AM, jchd said:

which may deliver Ada* or C* code along with a formal proof of correctness. (The star denotes the limitation to the safe and provable part of the language.)

Serious question, how big is the fraction AutoIt*/AutoIt ?

Code hard, but don’t hard code...

Link to comment
Share on other sites

That would require a formal analysis but if one only considers the core and a reasonable share of its standard functions (excluding objects, dll, possibly GDI and more extra stuff) I suspect this ratio should be fairly good. AutoIt is a simple language with little dark corners, quite accessible to formal representation. Of course it's slow and wide open to abuse.

This wonderful site allows debugging and testing regular expressions (many flavors available). An absolute must have in your bookmarks.
Another excellent RegExp tutorial. Don't forget downloading your copy of up-to-date pcretest.exe and pcregrep.exe here
RegExp tutorial: enough to get started
PCRE v8.33 regexp documentation latest available release and currently implemented in AutoIt beta.

SQLitespeed is another feature-rich premier SQLite manager (includes import/export). Well worth a try.
SQLite Expert (freeware Personal Edition or payware Pro version) is a very useful SQLite database manager.
An excellent eBook covering almost every aspect of SQLite3: a must-read for anyone doing serious work.
SQL tutorial (covers "generic" SQL, but most of it applies to SQLite as well)
A work-in-progress SQLite3 tutorial. Don't miss other LxyzTHW pages!
SQLite official website with full documentation (may be newer than the SQLite library that comes standard with AutoIt)

Link to comment
Share on other sites

  • 2 weeks later...

To reply to the original poster (who possibly now works as a consultant to the UK NHS writing Excel macros for covid tracking-sorry), you need to know the limitations of your tools.

To somebody that has an hammer, everything looks like a nail. Use the appropriate tools for your needs. Keep up to date with the current trends, both in your coding life and in your cv, and you will go far. Diversify, expand your horizons, and never, ever mix code from different languages while you are not fully alert! Don't use Excel for storing data,as Microsoft offered Access for that. Come to think, probably don't use Access either, but that's another story!

Document your code well. Keep the documentation up to date in parallel with your coding changes. Standardise on subroutines/API's that perform repeated actions - no need to keep solving the same problem over and over.

What I find astonishing is new versions of software will be released by developers, without little thought for how they will be rolled out and integrated into a production environment. You have to struggle with poor documentation and write custom scripts to answer prompts and configure destination paths so that you can shoehorn it into your environment without the support desk being overloaded with simple questions. Computers were supposed to save time and effort. Men in white coats tending to mainframes in air-conditioned rooms with false floors shouldn't exist any more. Answer me then, why is it so hard to make something just work, and work well? Can't we throw artificial intelligence at it to supplement natural intelligence of coders?

Having said that, I did make $600/hour twenty odd years ago fixing COBOL code during the leadup to the Y2K fizzer. Experience beats enthusiasm every time!

Bill Gates spoke about WYSIWYG (What You See Is What You Get) all those decades ago (yes, I was there to hear it, watch it crash, and giggle), but what we really need is WYWIWYG (What You Want Is What You Get) - sadly it still doesn't happen very often yet!

/abusive rant mode off/

Edited by Confuzzled
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...