AutoHotkey Homepage AutoHotkey Community
Let's help each other out
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

A more philosophical question...
Goto page Previous  1, 2, 3  Next
 
Post new topic   Reply to topic    AutoHotkey Community Forum Index -> Wish List
View previous topic :: View next topic  
Author Message
jonny



Joined: 13 Nov 2004
Posts: 3004
Location: Minnesota

PostPosted: Sat Oct 01, 2005 3:57 am    Post subject: Reply with quote

I have not read much of the post, but I will say that I am thinking about possibly rejoining the AutoHotkey community after this semester or sooner, possibly as a developer. As I can see the implications of an AHK2 focusing on extensibility and (at the basic level) simplicity, that would probably be my primary focus, once I'd had enough time to familiarize myself with the code base.

This has no premonitory undertones, it is merely speculation. Assume nothing yet. I might not be able to contribute at all this [school] year.

Also see my post in General Chat.
Back to top
View user's profile Send private message
AHKnow*
Guest





PostPosted: Wed Oct 05, 2005 10:57 am    Post subject: Reply with quote

I like a lot of the things you guys have typed...

I would just like to add my slightly different perspective.

I think the size of AHK is not that much of an issue. This does not seem so much of an issue to me because hard drives, RAM, CPU, connection speeds, etc... keep getting bigger and faster. As long as the size increases are small and worthwhile, I really don't see any problems.

To me the biggest issue would be the complexity versus ease of use and ease of understanding of the syntax.

What makes AHK a joy to use is the easy to understand, yet very powerful syntax. Take the AHK command "Loop" for example... I mean damn, its simplicity is brilliant. A loop is a loop, is a loop. Why make the syntax complex, when all you will be doing is the "same thing"?

See, I think right there is the "trick". Sometimes simplification, but powerful, is the hardest thing to do. So, instead what you often get is simple and weak or overly complex/difficult to use and powerful. Making something complex, can be so very attractive, because you have understood the basics. It can make you want to "branch out" into numerous areas of complexity. Then later, when you truly become a "master"/"expert", you look back and understood that you could have made it much easier on yourself and others. Excuse the digression, but there are some Chinese Kung Fu expressions that have meanings somewhat like I previously typed. Also, something being overly simple is a kind of trap too, since you often can't use it or have to use something else to get the job done.

AHK has achieved something that other programming languages have not, the right balance of simplicity and power(so far). If AHK continues to maintain this balance, it will continue to become even more popular.

If anything, AHK should continue to look at what other programming languages are making ever more complex, harder to use, harder to understand, and instead avoid making such a mess.

I think a new feature should be added because it is providing some functionality that AHK does not have and would be really, really useful. At the same time, the syntax and the way such a feature would be used should be throughly examined and simplified as much as possible. This simplification often adds to the usability of the new feature and makes sure new or casual users can understand it if they need it. We already have lots complex programming languages out there (Assembly, arguably C++ (arguably)), messy languages (arguably Perl), as well as excessive simple to the point of useless ( see leopard, www.leopardprogramming.com/source.php )

Perhaps, AHK people should be very careful to maintain AHK's balance of simplicity and power, otherwise it may fall into the same traps as other programming languages.
Back to top
BoBo
Guest





PostPosted: Wed Oct 05, 2005 2:47 pm    Post subject: Reply with quote

@ AHKnow*
Thx mate. Your statement should be a mandatory reading for all of those who even think about to make Autohotkey a 120% AutoIt clone. Much appreciated. Very Happy
Back to top
Chris
Site Admin


Joined: 02 Mar 2004
Posts: 10467

PostPosted: Wed Oct 05, 2005 2:56 pm    Post subject: Reply with quote

AHKnow wrote:
Take the AHK command "Loop" for example... I mean damn, its simplicity is brilliant. A loop is a loop, is a loop.
I'm glad you like it, though I did botch at least one thing: In a file-pattern loop such as Loop C:\*.*, the two optional parameters at the end should be swapped because IncludeFolders is much less often used than Recurse. If there is ever a v2, this is one of the things that should probably be changed.

Quote:
AHK has achieved something that other programming languages have not, the right balance of simplicity and power(so far). If AHK continues to maintain this balance, it will continue to become even more popular.
This was one of my primary goals when designing things like hotkeys, hotstrings, Loop, and Gui. But with the benefit of hindsight, I now see that some aspects could have been done better.

Thanks for your comments.
Back to top
View user's profile Send private message Send e-mail
AHKnow*
Guest





PostPosted: Thu Oct 06, 2005 2:53 am    Post subject: Reply with quote

BoBo wrote:
@ AHKnow*
Thx mate. Your statement should be a mandatory reading for all of those who even think about to make Autohotkey a 120% AutoIt clone. Much appreciated. Very Happy


I agree with you, that AutoHotkey should not be a clone of AutoIt and presently is not. AutoHotkey has AutoIt "roots", but has become "something pleasantly different" and is continuing to evolve.

Another thing that impresses me about AutoHotkey, which is why I recommend it to my friends and co-workers over other programming/scripting languages, is the ability it has to teach and use complex programming concepts. Interestingly, even if you "hate" programming or have some "aversion" to it, using AutoHotkey "sneaks" advanced programming concepts in on you in a very enjoyable and usable way. I think this is all a "trick" of the AutoHotkey syntax, which appears to simplify and generalize, and the power of automation scripting languages which lends itself to be useful for even casual users.

Oddly, after using AutoHotkey for a while, other programming languages become very understandable because of the user's understanding of the general programming concepts. With other programming languages, you often get pulled into their language specific syntax or pulled into trying to master unnecessarily complex syntax that takes the focus away from the programming task in front of you.

When using an automation programming language like WinBatch, a big player in automation and related to ScriptIt and AutoIt, its almost as if the automation language and the programming language are an annoying "divorced couple" that is forced to see each other. WinBatch syntax appears to be spewed out for the purpose of getting something done by any means necessary (often in a really "dirty" manner), with no regards to its understandability, ease of use, or relationship of various syntax to other syntax. Sadly, I think AutoIt has started to follow in this path, because the casual/hobby/new users are less of a concern and the "seduction" of thinking complexity = better (which is not always the case).

Myself, and I suspect many others, despise contrived complexity. I think a task should be completed as simply and as efficiently as possible. Complexity can also be a cover to hide flaws in logic or lack of knowledge. Even worse, I think various people get so seduced into a system of complexity that they believe it epitomizes intelligence (when in fact the very opposite may be the case) or will mindlessly defend such systems against all other conflicting evidence or advice.

Complexity can leave you with a big mess and sometimes this does not become clear until its way, way too late. Then when it becomes clear, it is unfortunate that many will choose to defend "a complex mess". If you want complex, there is always machine code or Assembly language. Yet all so many languages came about to avoid having to deal on that level. So this is why, I think programmers have to ask themselves what is the point of what they are doing? Taking the time to consider ease of use, understandability, simplification, decreasing the amount of typing necessary, and coherent relationships between syntax should be worthy goals too. Luckily for the AutoHotkey community, Chris and pals have foresight and patience to do this, which is also why they deserve a "pat on the back".
Back to top
AHKnow*
Guest





PostPosted: Thu Oct 06, 2005 5:33 am    Post subject: Reply with quote

Chris wrote:
Quote:
AHK has achieved something that other programming languages have not, the right balance of simplicity and power(so far). If AHK continues to maintain this balance, it will continue to become even more popular.
This was one of my primary goals when designing things like hotkeys, hotstrings, Loop, and Gui. But with the benefit of hindsight, I now see that some aspects could have been done better.

Thanks for your comments.

As it has been said, "Hindsight is 20/20". We can always look back and think of things that we could have done or done better.

Nevertheless Chris, your good intentions, respect and concern for users, and thoughtfulness come out in AutoHotkey. From the many things that I have observed, your attempts, have worked to be very, very good ones.
Back to top
automaticman



Joined: 27 Oct 2006
Posts: 322

PostPosted: Sun Feb 17, 2008 3:34 pm    Post subject: Re: A more philosophical question... Reply with quote

thomasl wrote:
... (I hate broken scripts as much as anyone.) ...
This part I liked mostly. We should find ways that codes don't break. Just imagine, you try out any finished code from various example cases from the forum and it just works 100% without any errors. Why isn't this possible?

I think everyone
- has a little different programming style
- has different error checking standards (if any)
So there are no general programming standards.

Programming by state changes and state.entry, state.exit codes and then gradually improving the "state checking atomic elements" might be an option? I would like to see each program as a chain of state changes and the goal should be never to let this chain break. Do we already have a library of 100% state change guaranteeing functions/codes? Rather than working on individual solutions anyone might add to this "100% state change guaranteeing library" and later everyone could profit from them. This library you can imagine like another layer of abstraction on top of AHK features.

One example: Transfer of data from A to B
? Is A available
? Is B available
? Is A.data available
? Do A.data.space.coordinates match to B.space.coordinates
? Is enough space available in B.space for A.data
? Do we have enough resources for A.data processing (memory,cpu)
. do processing algorithm which might be a huge chain of other state changes.

The above sequence of checks might take additional time but users might have at least the option of speed vs. immediately 100% working code. Often the overall speed would be still better than doing all manually (without AutoHotkey). Smile
Back to top
View user's profile Send private message
majkinetor



Joined: 24 May 2006
Posts: 3626
Location: Belgrade

PostPosted: Mon Feb 18, 2008 9:46 am    Post subject: Reply with quote

Its expectable.

AHK is n00b oriented. And n00bs have no standard


As such, author of AHK denies advanced programming concepts needed for proper encapsulation of libraries. That is the reason for hundreed of wishes and some talks about using other languages with AHK functionality.

AHK is still lang designed for 10liner code. Doing everything more advanced is more trouble then anything else, and when things become just a little more demanding you are out of scope of the language.

I don't beleive this will change (soon) especialy if Chris remains the only author (i.e. with no code-branch) as it has different goals for AHK.
_________________
Back to top
View user's profile Send private message MSN Messenger
automaticman



Joined: 27 Oct 2006
Posts: 322

PostPosted: Mon Feb 18, 2008 3:02 pm    Post subject: Reply with quote

majkinetor wrote:
AHK is still lang designed for 10liner code.
I wished we had kind of "meta adding standard" for ahk-codes where all important information about the code is given. Yes source code has all this information already. But my idea is having those essential descriptions in plain language/English text or as xml or as included ini information in the code itself as SKAN proposed in some place in this forum.

We should have the possibility to see before testing the code if it's generic enough to be combined with other generic solutions. e.g. if I have the separate solutions A, B, C, the standard should answer the question
? Would then also the chain B.A.C work 100% without any errors immediately?
Back to top
View user's profile Send private message
majkinetor



Joined: 24 May 2006
Posts: 3626
Location: Belgrade

PostPosted: Mon Feb 18, 2008 3:59 pm    Post subject: Reply with quote

I tried to make some standards here but I was not successiful.
Do you think the excel and word users who want to optimize their accounting workflow will care much here? Or some gamers? Cool

Quote:
We should have the possibility to see before testing the code if it's generic enough to be combined with other generic solutions

I told already that AHK doesn't support anything more advanced then function, so proper encapsulation is impossible. People did many things to make their code very unlikely to interact with your script but script that way becomes hardly readable i.e. obfuscated and negatively influenced on many other aspects.

The rule set for, lets call it optimal solution for encapsulation is pretty big, so there is low chance that anybody would stick to it.

Almost all of my scripts can be just included and used as internal commands in 99% of cases. Some of the modules are really complex and have various internal mechanisms for encapsulations, nevertheless, I didn't cover them all for the sake of speed and complexity such things may introduce. One of the things some members do which I don't like is hiding large number of variables into single static text field, and then scaning this container each time for desired variable. I didn't want to do this as IMO its reposnsibility of the author of the language to make such basic mechanisms (which is one of the reasons why ppl asked for other languages like Lua) available for ppl that want to create re-usable libraries. I didn't want to slow down my variable access as some of the pending updates include associative arrays which will solve some of the encapsulation problems, hopefully (as associative arrays can be seen as objects with adequate syntax suggar).

Acctually, you are probably the first one (not counting me) complaining about script and work organisation here. The usual community answer is something like "This is an open source app/forum, ppl don't have to follow standards. Instead be grateful for the scripts they put here free". The fact that 95% of such scipts are not re-usable without heavy manipulation or rewriting seems distant here to both users and the author. During the 2 years here I reused maybe up to 5 scripts of others without any problems (usualy functions). Everything else was basicly unusable, it was easier to write it alone, maybe based on the ideas you have in the code in question, maybe not.
_________________
Back to top
View user's profile Send private message MSN Messenger
automaticman



Joined: 27 Oct 2006
Posts: 322

PostPosted: Wed Feb 20, 2008 10:16 am    Post subject: Reply with quote

? Can't we do this with the current existing AutoHotkey already (without having to add any other extra magic features)?
I think one of the bigger error sources in AutoHotkey is (apart from general code design failures)
  • if mouse clicks are involved
  • if some code/automation is tried to run in a wrong state
  • if the computer sometimes runs too slowly and can't fulfill the initially required conditions at the right time
Back to top
View user's profile Send private message
majkinetor



Joined: 24 May 2006
Posts: 3626
Location: Belgrade

PostPosted: Wed Feb 20, 2008 1:29 pm    Post subject: Reply with quote

Quote:
? Can't we do this with the current existing AutoHotkey already (without having to add any other extra magic features)?

Generaly, no.

Quote:
if mouse clicks are involved

?

Quote:
if some code/automation is tried to run in a wrong state

thats respoinsibility of the author of the code, to asure state is valid.

Quote:
if the computer sometimes runs too slowly and can't fulfill the initially required conditions at the right time

This is really a problem and I doubt there is good solution for this. But all other aut langs I tried have the same problem, even more pronaunced. This can be seen as pervious problem (wrong state of machine). You could involve some sophisticated techniques to solve this, but solution depends on type of problem you have ....
_________________
Back to top
View user's profile Send private message MSN Messenger
automaticman



Joined: 27 Oct 2006
Posts: 322

PostPosted: Wed Feb 20, 2008 1:38 pm    Post subject: Reply with quote

majkinetor wrote:
Quote:
if mouse clicks are involved

?
If you use mouse clicks in your solution you should ensure/check before if the background of the click is exactly as you expect it to be. (If it was changed your click solution will break.)
? Which mechanisms do we have to check the "background layer" of the mouse click which works 100%?
Back to top
View user's profile Send private message
majkinetor



Joined: 24 May 2006
Posts: 3626
Location: Belgrade

PostPosted: Wed Feb 20, 2008 2:04 pm    Post subject: Reply with quote

define "background layer" first.

Is it control ? Picture ? Can be both ? browser ? Is it a plane ? bird ?
_________________
Back to top
View user's profile Send private message MSN Messenger
automaticman



Joined: 27 Oct 2006
Posts: 322

PostPosted: Wed Feb 20, 2008 2:08 pm    Post subject: Reply with quote

majkinetor wrote:
define "background layer" first.

Is it control ? Picture ? Can be both ? browser ? Is it a plane ? bird ?
Anything where the mouse clicks on, hidden or unhidden.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    AutoHotkey Community Forum Index -> Wish List All times are GMT
Goto page Previous  1, 2, 3  Next
Page 2 of 3

 
Jump to:  
You can post new topics in this forum
You can reply to topics in this forum


Powered by phpBB © 2001, 2005 phpBB Group