AutoHotKey is the most absymal "programming" languge
Rich <rich@example.invalid> wrote or quoted:
AutoHotKey is the most absymal "programming" langugeYet, AHK the best tool for some jobs!
But the people who say they don't want to program are wrong. The
proof is that they buy "macro" languages, such as QuickKeys. These
are abysmally poor programming languages,
Is Programming Obsolete?
complexity and sophistication of user interfaces. Commercial software
has a professional "look and feel" that the old homebrew BASIC
programs can't match. Kids expect arcade-quality animation and a
graphical user interface. The programs that they can write themselves
don't meet that standard.
Rich <rich@example.invalid> wrote or quoted:
AutoHotKey is the most absymal "programming" langugeYet, AHK the best tool for some jobs!
When you want to write a program to print the numbers
from 0 to 9, nothing is more awkward than to write it
in TeX. Yet, TeX, too, is the best tool for some jobs!
Ben Collver <bencollver@tilde.pink> wrote:
But the people who say they don't want to program are wrong. The
proof is that they buy "macro" languages, such as QuickKeys. These
are abysmally poor programming languages,
Indeed, they are. Made use of "AutoHotKey" some years back at $job to automate a custom GUI program for a repetitive task mgmt. wanted done, but naturally the GUI program authors had never provided any ability to
perform.
AutoHotKey is the most absymal "programming" languge, maybe second only
to Brainfuck [1]. If there was, ever, any 'design' to the language, it
was either "designed" to be a massive screwup, or it was "designed" by
15 rabid hyenas who built only one piece and intentionally went their
own way with how to build that piece. Not one built in function was
similar in any way to any other built in function. Parameter orders
differed for every one (even when groups of them took the same initial
set of parameters), and IIRC some required double quotes for delimiting strings, but others required single quotes as string delimiters. Some
names where snake case (move_window) while others were camel cased (DeleteWindow) with seeming no rhyme or reason why.
I managed to accomplish the 'automation' task, but AutoHotKey the
language was a constant source of bad juju in getting to that end
state.
[1] https://en.wikipedia.org/wiki/Brain_Fuck (and if one is attempting
to program in Brainfuck, the very name should indicate one is in for a
rought time).
import tkinter
tkinter.Label( text="Hi! What's your name?" ).pack()
entry=tkinter.Entry()
entry.pack()
button = tkinter.Button( text="Ok" )
def ok(): tkinter.Label( text="Hi, " + entry.get() + "!" ).pack() >button.pack()
button.config( command=ok )
tkinter.mainloop()
The best software combines a graphical user
interface with a powerful extension language.
Other open-source content-creation apps also use or offer Python as their
API language: Inkscape, GIMP, LibreOffice.
AutoHotKey is the most absymal "programming" languge ...
For /very simple things/, AHK is usable.
Indeed, they are. Made use of "AutoHotKey" some years back at $job to automate a custom GUI program for a repetitive task mgmt. wanted done, but naturally the GUI program authors had never provided any ability to
perform.
On Sun, 7 Apr 2024 16:51:22 -0000 (UTC), Rich wrote:
AutoHotKey is the most absymal "programming" languge ...
That is inherent in the nature of the problem it is trying to solve:
automate an interface--the GUI--which was never designed for automatic operation. No matter how you slice and dice it, that kind of thing
inherently turns out to be fiddly and fragile.
In Comp Sci, we learn early on about the concept of “abstract machines” layered on top of each other, starting with the bare hardware, which is
the most general kind of machine, and specializing it more and more in the upper layers until we get something suited to the set of problems we are trying to solve.
That process stops when you get to the GUI: that is designed for operation
by humans, not to have anything else layered on top of it.
More recently i discovered xdotool and wrote scripts to produce music
videos out of MOD scene music using VirtualBox, various MOD trackers and players, ProjectM, and ffmpeg.
Lawrence D'Oliveiro <ldo@nz.invalid> wrote at 00:01 this Monday (GMT):
On Sun, 7 Apr 2024 17:50:03 -0000 (UTC), candycanearter07 wrote:
For /very simple things/, AHK is usable.
For /very simple things/, AutoHotKey seems pointless. The whole point
of using such a tool is to automate tasks too complex for the human
operator.
I always saw it as a macro language, like something to quickly run an
action with a button press.
The problem happens when there's no way to access the underlying
functions, or it requires bad workarounds like the GUI scripting.
On Sun, 7 Apr 2024 16:51:22 -0000 (UTC), Rich wrote:
AutoHotKey is the most absymal "programming" languge ...
That is inherent in the nature of the problem it is trying to solve:
automate an interface--the GUI--which was never designed for automatic operation. No matter how you slice and dice it, that kind of thing
inherently turns out to be fiddly and fragile.
Ben Collver <bencollver@tilde.pink> wrote or quoted:
complexity and sophistication of user interfaces. Commercial software
has a professional "look and feel" that the old homebrew BASIC
programs can't match. Kids expect arcade-quality animation and a
graphical user interface. The programs that they can write themselves
don't meet that standard.
With Python and tkinter, GUIs actually are easy to write:
import tkinter
tkinter.Label( text="Hi! What's your name?" ).pack()
entry=tkinter.Entry()
entry.pack()
button = tkinter.Button( text="Ok" )
def ok(): tkinter.Label( text="Hi, " + entry.get() + "!" ).pack() button.pack()
button.config( command=ok )
tkinter.mainloop()
On Mon, 8 Apr 2024 03:20:02 -0000 (UTC), candycanearter07 wrote:
The problem happens when there's no way to access the underlying
functions, or it requires bad workarounds like the GUI scripting.
That kind of thing seems less common in the Open Source world. Perhaps because it is more likely to be seen as a bug and fixed.
You’ve got FFmpeg in there, the universal multimedia “sonic screwdriver”,
that should already be able to do nearly all the necessary conversions/ encoding.
Lawrence D'Oliveiro <ldo@nz.invalid> wrote at 06:49 this Monday (GMT):
On Mon, 8 Apr 2024 03:20:02 -0000 (UTC), candycanearter07 wrote:
The problem happens when there's no way to access the underlying
functions, or it requires bad workarounds like the GUI scripting.
That kind of thing seems less common in the Open Source world. Perhaps
because it is more likely to be seen as a bug and fixed.
Of course, the opposite is usually more true. A lot of stuff is terminal-only.
On 2024-04-08, Lawrence D'Oliveiro <ldo@nz.invalid> wrote:
You’ve got FFmpeg in there, the universal multimedia “sonic
screwdriver”, that should already be able to do nearly all the
necessary conversions/encoding.
I wanted to produce a video showing the tracker interface as it scrolled through the score while playing the song, using the same tracker that
was used to compose the song.
Lawrence D'Oliveiro <ldo@nz.invalid> wrote:
That is inherent in the nature of the problem it is trying to solve:
automate an interface--the GUI--which was never designed for automatic
operation. No matter how you slice and dice it, that kind of thing
inherently turns out to be fiddly and fragile.
But that part wasn't the problem. AutoHotKey included function calls to
do that, and once one found the function call to perform "step x" that
one wanted, it worked.
On Mon, 8 Apr 2024 13:31:33 -0000 (UTC), Rich wrote:
Lawrence D'Oliveiro <ldo@nz.invalid> wrote:
That is inherent in the nature of the problem it is trying to solve:
automate an interface--the GUI--which was never designed for automatic
operation. No matter how you slice and dice it, that kind of thing
inherently turns out to be fiddly and fragile.
But that part wasn't the problem. AutoHotKey included function calls to
do that, and once one found the function call to perform "step x" that
one wanted, it worked.
In my experience, that is very much part of the problem. I have done this sort of thing in the past--thankfully, not lately.
E.g. bring up a dialog box to enter a number. I have a template for the
event sequence, to do the initial menu selection, then have my code insert the (variable) sequence of keystrokes for the number, then end with the sequence for clicking the OK button.
Only if you do it a little too fast, the text field or the OK button might not actually be enabled yet, and so some part of the sequence gets ignored and the whole thing goes badly wrong. So you stick in a tenth-of-a-second delay somewhere, entirely through trial-and-error, until it seems to work.
Then later on somebody reports that it sometimes fails in a different
place. But of course it works for you. So you then have to try the
sequence multiple times, until you see it fail that one time, and then you have to figure out why and come up with another tweak to the sequence to
fix it.
All this take programming skills--which ordinary users don’t have.
So who are these macro-recorder thingies aimed at?
They seem designed to pretend that there is no programming involved
in using them, but on the other hand it can take a lot of work to use
them reliably. And so you end up with the worst of both worlds.
None of which is AutoHotKey's fault.
All of which is directly caused by
the GUI not ever having been intended to ever be automated in any way.
My complaint, however, was with the syntax irregularities of the
AutoHotKey script language.
Maybe their 'recording' part inserts delays equal to what
time it took the user to move/click through things, which would, for the
most part, create an appearance of working most of the time.
On Mon, 8 Apr 2024 14:30:06 -0000 (UTC), candycanearter07 wrote:
Lawrence D'Oliveiro <ldo@nz.invalid> wrote at 06:49 this Monday (GMT):
On Mon, 8 Apr 2024 03:20:02 -0000 (UTC), candycanearter07 wrote:
The problem happens when there's no way to access the underlying
functions, or it requires bad workarounds like the GUI scripting.
That kind of thing seems less common in the Open Source world. Perhaps
because it is more likely to be seen as a bug and fixed.
Of course, the opposite is usually more true. A lot of stuff is
terminal-only.
Feel free to offer examples.
Lawrence D'Oliveiro <ldo@nz.invalid> wrote at 00:30 this Tuesday (GMT):
On Mon, 8 Apr 2024 14:30:06 -0000 (UTC), candycanearter07 wrote:
Lawrence D'Oliveiro <ldo@nz.invalid> wrote at 06:49 this Monday (GMT):
On Mon, 8 Apr 2024 03:20:02 -0000 (UTC), candycanearter07 wrote:
The problem happens when there's no way to access the underlying
functions, or it requires bad workarounds like the GUI scripting.
That kind of thing seems less common in the Open Source world.
Perhaps because it is more likely to be seen as a bug and fixed.
Of course, the opposite is usually more true. A lot of stuff is
terminal-only.
Feel free to offer examples.
Installing things?
On Tue, 9 Apr 2024 15:10:10 -0000 (UTC), candycanearter07 wrote:
Lawrence D'Oliveiro <ldo@nz.invalid> wrote at 00:30 this Tuesday (GMT):
On Mon, 8 Apr 2024 14:30:06 -0000 (UTC), candycanearter07 wrote:
Lawrence D'Oliveiro <ldo@nz.invalid> wrote at 06:49 this Monday (GMT): >>>>
On Mon, 8 Apr 2024 03:20:02 -0000 (UTC), candycanearter07 wrote:
The problem happens when there's no way to access the underlying
functions, or it requires bad workarounds like the GUI scripting.
That kind of thing seems less common in the Open Source world.
Perhaps because it is more likely to be seen as a bug and fixed.
Of course, the opposite is usually more true. A lot of stuff is
terminal-only.
Feel free to offer examples.
Installing things?
Scriptable.
Lawrence D'Oliveiro <ldo@nz.invalid> wrote at 05:39 this Wednesday
(GMT):
On Tue, 9 Apr 2024 15:10:10 -0000 (UTC), candycanearter07 wrote:
Lawrence D'Oliveiro <ldo@nz.invalid> wrote at 00:30 this Tuesday
(GMT):
On Mon, 8 Apr 2024 14:30:06 -0000 (UTC), candycanearter07 wrote:
Lawrence D'Oliveiro <ldo@nz.invalid> wrote at 06:49 this Monday
(GMT):
On Mon, 8 Apr 2024 03:20:02 -0000 (UTC), candycanearter07 wrote:
The problem happens when there's no way to access the underlying >>>>>>> functions, or it requires bad workarounds like the GUI scripting. >>>>>>That kind of thing seems less common in the Open Source world.
Perhaps because it is more likely to be seen as a bug and fixed.
Of course, the opposite is usually more true. A lot of stuff is
terminal-only.
Feel free to offer examples.
Installing things?
Scriptable.
Yes? That was my point, that more options are available in the terminal.
On Wed, 10 Apr 2024 14:40:05 -0000 (UTC), candycanearter07 wrote:
Lawrence D'Oliveiro <ldo@nz.invalid> wrote at 05:39 this Wednesday
(GMT):
On Tue, 9 Apr 2024 15:10:10 -0000 (UTC), candycanearter07 wrote:
Lawrence D'Oliveiro <ldo@nz.invalid> wrote at 00:30 this Tuesday
(GMT):
On Mon, 8 Apr 2024 14:30:06 -0000 (UTC), candycanearter07 wrote:
Lawrence D'Oliveiro <ldo@nz.invalid> wrote at 06:49 this Monday
(GMT):
On Mon, 8 Apr 2024 03:20:02 -0000 (UTC), candycanearter07 wrote: >>>>>>>
The problem happens when there's no way to access the underlying >>>>>>>> functions, or it requires bad workarounds like the GUI scripting. >>>>>>>That kind of thing seems less common in the Open Source world.
Perhaps because it is more likely to be seen as a bug and fixed.
Of course, the opposite is usually more true. A lot of stuff is
terminal-only.
Feel free to offer examples.
Installing things?
Scriptable.
Yes? That was my point, that more options are available in the terminal.
No, you said “the opposite is usually more true”, in reply to my saying that lack of scriptability is “more likely to be seen as a bug and fixed”.
On Sun, 7 Apr 2024 16:51:22 -0000 (UTC), Rich wrote:
AutoHotKey is the most absymal "programming" languge ...
That is inherent in the nature of the problem it is trying to solve:
automate an interface--the GUI--which was never designed for automatic >operation. No matter how you slice and dice it, that kind of thing
inherently turns out to be fiddly and fragile.
Lawrence D'Oliveiro <ldo@nz.invalid> wrote:
On Sun, 7 Apr 2024 16:51:22 -0000 (UTC), Rich wrote:
AutoHotKey is the most absymal "programming" languge ...
That is inherent in the nature of the problem it is trying to solve: >>automate an interface--the GUI--which was never designed for automatic >>operation. No matter how you slice and dice it, that kind of thing >>inherently turns out to be fiddly and fragile.
Apple did a pretty good job of this with AppleScript by building the GUI
with automation in mind. That fell by the wayside long ago, however.
Is Programming Obsolete?
========================
Brian Harvey
University of California, Berkeley
In article <slrnv15e4i.rk6.bencollver@svadhyaya.localdomain>,
Ben Collver <bencollver@tilde.pink> wrote:
Is Programming Obsolete?
========================
Brian Harvey
University of California, Berkeley
If you don't teach basic programming, you can't teach students what a computer actually is.
If you don't teach assembler, you can't teach students how a computer actually works.
You don't need to teach a fancy programming language or a giant assembler. You don't even need to teach ones that are used in the real world because
the point isn't to give the student a marketable skill but to give him the background where he can understand what a computer is and what it does.
You will find people in the IT community don't think teaching any of this stuff is important, in part because they don't know what a computer is or what it does.
--scott
In article <slrnv15e4i.rk6.bencollver@svadhyaya.localdomain>,
Ben Collver <bencollver@tilde.pink> wrote:
Is Programming Obsolete?
========================
Brian Harvey
University of California, Berkeley
If you don't teach basic programming, you can't teach students what a computer actually is.
If you don't teach assembler, you can't teach students how a computer actually works.
You don't need to teach a fancy programming language or a giant assembler. You don't even need to teach ones that are used in the real world because
the point isn't to give the student a marketable skill but to give him the background where he can understand what a computer is and what it does.
You will find people in the IT community don't think teaching any of this stuff is important, in part because they don't know what a computer is or what it does.
--scott
Let me add another perspective. Companies, influecing course programs,
don't want to waste time on fundamentals. They want programmers who can do >one nieche thing fast, as fast as possible, so no time to focus on the >basics.
In article <slrnv15e4i.rk6.bencollver@svadhyaya.localdomain>,
Ben Collver <bencollver@tilde.pink> wrote:
Is Programming Obsolete? ========================
Brian Harvey University of California, Berkeley
If you don't teach basic programming, you can't teach students what a computer actually is.
If you don't teach assembler, you can't teach students how a computer actually works.
You don't need to teach a fancy programming language or a giant
assembler.
D <nospam@example.net> wrote:
Let me add another perspective. Companies, influecing course programs,
don't want to waste time on fundamentals. They want programmers who can do >> one nieche thing fast, as fast as possible, so no time to focus on the
basics.
And this makes sense if you intend to only hire them for a couple years
and then dump them. If you're doing that, then hiring people who can
learn new systems quickly doesn't actually help you. Unfortunately this policy has other problems but is very popular.
--scott
In article <slrnv15e4i.rk6.bencollver@svadhyaya.localdomain>,
Ben Collver <bencollver@tilde.pink> wrote:
Is Programming Obsolete?
========================
Brian Harvey
University of California, Berkeley
If you don't teach basic programming, you can't teach students what a computer actually is.
If you don't teach assembler, you can't teach students how a computer actually works.
You don't need to teach a fancy programming language or a giant assembler. You don't even need to teach ones that are used in the real world because
the point isn't to give the student a marketable skill but to give him the background where he can understand what a computer is and what it does.
You will find people in the IT community don't think teaching any of this stuff is important, in part because they don't know what a computer is or what it does.
On Sun, 12 May 2024, Scott Dorsey wrote:
In article <slrnv15e4i.rk6.bencollver@svadhyaya.localdomain>,
Ben Collver <bencollver@tilde.pink> wrote:
Is Programming Obsolete?
========================
Brian Harvey
University of California, Berkeley
If you don't teach basic programming, you can't teach students what a
computer actually is.
If you don't teach assembler, you can't teach students how a computer
actually works.
You don't need to teach a fancy programming language or a giant assembler. >> You don't even need to teach ones that are used in the real world because
the point isn't to give the student a marketable skill but to give him the >> background where he can understand what a computer is and what it does.
You will find people in the IT community don't think teaching any of this
stuff is important, in part because they don't know what a computer is or
what it does.
--scott
Let me add another perspective. Companies, influecing course programs,
don't want to waste time on fundamentals. They want programmers who
can do one nieche thing fast, as fast as possible, so no time to focus
on the basics.
Indeed. When I was doing my Master's, I saw undergraduates being taught
using a 'paper computer'. 16 words of RAM, 12 bit word. It was a set of
boxes with index cards with contents written on them. Plus a couple of
boxes for accumulator and flags. It was ctually a PDP-8 clone, but only
for simplicity.
Bob Eager <news0009@eager.cx> wrote:
Indeed. When I was doing my Master's, I saw undergraduates being taught >>using a 'paper computer'. 16 words of RAM, 12 bit word. It was a set of >>boxes with index cards with contents written on them. Plus a couple of >>boxes for accumulator and flags. It was ctually a PDP-8 clone, but only
for simplicity.
Bell Labs used to sell a paper card thing called the CARDIAC which was vaguely like this, and the US Army training folks had a thing called
TAGSAC which was a paper computer for teaching programming in the days
when computers were too expensive to waste on students.
But these days you can buy an ST evaluation board that plugs into your
PC and has a marvelous 8-bit instruction set. It even has a divide!
Take that,
8051.
Indeed. When I was doing my Master's, I saw undergraduates
being taught using a 'paper computer'. 16 words of RAM, 12
bit word. It was a set of boxes with index cards with
contents written on them. Plus a couple of boxes for
accumulator and flags. It was ctually a PDP-8 clone, but
only for simplicity.
Bob Eager:
Indeed. When I was doing my Master's, I saw undergraduates
being taught using a 'paper computer'. 16 words of RAM, 12
bit word. It was a set of boxes with index cards with
contents written on them. Plus a couple of boxes for
accumulator and flags. It was ctually a PDP-8 clone, but
only for simplicity.
This reminds of a great site absolutely on-topic here:
<https://wiki.xxiivv.com/site/research.html>
and especially:
<https://wiki.xxiivv.com/site/paper_computing.html>
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 388 |
Nodes: | 16 (2 / 14) |
Uptime: | 05:13:47 |
Calls: | 8,219 |
Calls today: | 17 |
Files: | 13,122 |
Messages: | 5,872,259 |
Posted today: | 1 |