Marc Donner wrote in
<CALQ0xCCNYP26Crv6m6Xp7efBL-wzfTB=fgZa9cKkVFvNacv-tw(a)mail.gmail.com>:
|The architectural alternative to powershell-style extension has been around
|in various guises for a while. In particular things like TCL and Lua are
|engineered to be add-on extension languages. Integrating them just
|involves adding a few callouts (dispatch a “program”, scan directories in a
|designated “path” for programs, render internal structures into text).
|
|This style of design has been around for a long time - all Unix shells,
|EMacs, many video games.
|
|It enables an elegant approach to performance management - build it first
|as a script and only reimplement it as a binary if needed.
|
|Doing this enables automation, but it does require the designers and
|product managers to want automation.
Let me be the one who feed the silent head shakers with the
Rob Pike quote "[just] make it strings".
Of course lua hooks are faster, and i am looking forward myself,
but other than that textual input/output communication with
a program is language-neutral and somehow humanic.
So now the time has come to point to an influential -- for me --
manual from 2001, that goes into assembler programming for x86:
https://docs.freebsd.org/en/books/developers-handbook/x86/
And there you read things like
A.12. One-Pointed Mind
As a student of Zen, I like the idea of a one-pointed mind: Do
one thing at a time, and do it well.
This, indeed, is very much how UNIX® works as well. While
a typical Windows® application is attempting to do everything
imaginable (and is, therefore, riddled with bugs), a typical
UNIX® program does only one thing, and it does it well.
The typical UNIX® user then essentially assembles his own
applications by writing a shell script which combines the
various existing programs by piping the output of one program to
the input of another.
When writing your own UNIX® software, it is generally a good
idea to see what parts of the problem you need to solve can be
handled by existing programs, and only write your own programs
for that part of the problem that you do not have an existing
solution for.
And going over
A.13.2. Excursion to Pinhole Photography
we come to the
A.13.3.1. Processing Program Input
which was a stunning read for me (the 15+ years before i came via
Commodore 64 and its Basic, over Windows 3.1 and Windows 95 and,
alongside, DOS, later 4DOS (then perl etc.)), because when doing
really, really important things like calculating the cubic
capacity of ones penis' in cubic millimeters (to end up with large
numbers, say), i would never have thought by myself that the
program accept and parse running text! (There you see that
something "big" can actually be pretty "small" indeed.)
Personally, I like to keep it simple. Something either is
a number, so I process it. Or it is not a number, so I discard
it. I do not like the computer complaining about me typing in an
extra character when it is obvious that it is an extra
character. Duh.
Plus, it allows me to break up the monotony of computing and
type in a query instead of just a number:
What is the best pinhole diameter for the focal length of 150?
There is no reason for the computer to spit out a number of complaints:
Syntax error: What
Syntax error: is
Syntax error: the
Syntax error: best
Et cetera, et cetera, et cetera.
And this (assembler!) then goes to
% pinhole
Computer,
What size pinhole do I need for the focal length of 150?
150 490 306 362 2930 12
Hmmm... How about 160?
160 506 316 362 3125 12
Let's make it 155, please.
155 498 311 362 3027 12
Ah, let's try 157...
157 501 313 362 3066 12
156?
156 500 312 362 3047 12
That's it! Perfect! Thank you very much!
^D
which is not even handled by GNU getopt with its
argument-resorting behaviour!
But it is likely that you all do not need that no more anyway,
since you likely just speak out (silently at "Hal" level) "Hey
computer bla bla", and the AI does the rest itself.
--steffen
|
|Der Kragenbaer, The moon bear,
|der holt sich munter he cheerfully and one by one
|einen nach dem anderen runter wa.ks himself off
|(By Robert Gernhardt)