4 ms·
I lament the modern dearth of natural-language scripts designed for normal people who have slightly higher engineering instinct than average but otherwise just
by pie_flavor 5y ago
I lament the modern dearth of natural-language scripts designed for normal people who have slightly higher engineering instinct than average but otherwise just want to use their computer. Different people notice the usefulness of such things in different places, but for me it was Minecraft server administration. You have thirteen year olds doing a 'banging on the keyboard' level of management for game servers for eleven year olds, and who do not know the first thing about programming and would take years to get up and running with Java, but who have added to the server dozens of commands and idiosyncratic game mechanics with Skript, because Skript's language is so fundamentally easy and approachable that just about anyone could make just about anything in it that they could conceptualize of the details for.
I really don't think AppleScript's primary application has vanished like many people seem to think it has. Desktop software may be on the decline, but that just means that something equivalent for web needs to exist. Every other day you hear about a business that had some major component, which finally broke, being a giant kludge of an Excel sheet. Those things don't start because they're the best tool for the job, they start because Excel's approachable for non-programmers who can figure out how to make an algorithm work as long as you don't call it an algorithm or force them to start with stdio. Flash had that property too, and the Internet is the lesser for its disappearance; it took so little effort for an animation to be turned into a game that so many animators decided to try. Nobody ever bothers making things like that anymore because everyone's internalized this idea that anything like programming is as hard and as not worth targeting towards normal people as general programming.
I don't know how to end rants.
- pjot 5y agoI see it similar to self-selection. Those interested will dig into the OS, then find Automator, then find Apple Script, notice similarities to Minecraft servers, and ultimately choose their own adventure. I wonder though, if these features were more forward, how would that shape what the “typical” user discovers? As Bradbury-esque as that may sound…
- imglorp 5y agoAS failed at natural language though. The experience is exactly programming with more keywords. There's still a rigid grammar and keywords have precise meanings. You still have to look up what keywords are available, what contexts to use them, what arguments they want, etc etc. It's programming. Harder even. Ideally there's a bunch of real conversational NLP with common sense and context. This is really what you want: find my firefox window move it to the second workspace on that desktop make slack to be the top window close all finder windows we're not there yet
- donatj 5y agoWhile we're not there for programming, I think we're getting close with things like Alexa. I'm always surprised when I'm at a friends house and they'll ask Alexa to do something in a completely different syntax than I use, and it works flawlessly.
- alwillis 5y agoI think you’re overstating the difficulties. One thing I liked about my recent stint with AppleScript were the various synonyms I could use to express what I was doing, depending on what made the most sense.
- cxr 5y ago"Koala utilizes a sloppy programming approach that interprets pseudo-natural language instructions, as opposed to formal programming language statements that must be syntactically correct. Each step in a sloppy program is processed by an interpreter that tries to evaluate the step in the context of a given web page’s content, elements, and available actions. For instance, given the Google home page, and the slop click search button, the interpreter would propose to programmatically click the search button. "We describe the algorithm in three basic steps[...]" https://ofb.net/~tlau/research/papers/koala-chi07.pdf https://ofb.net/~tlau/research/papers/koala-chi07.pdf https://dspace.mit.edu/handle/1721.1/121718 https://dspace.mit.edu/handle/1721.1/121718 Previously: https://news.ycombinator.com/item?id=29259897 https://news.ycombinator.com/item?id=29259897
- hhas02 5y ago“AS failed at natural language though.” It didn’t fail. It never was. AppleScript is a screamingly conventional, traditional, conservative Algol-style language; which just happens to be dressed up with an app-extensible pool of keywords and lots of built-in homonyms and synonyms to make it look non-programmer friendly. Not a bad idea from a sales POV, as the biggest barrier into end-user automation for end-users is how hard conventional programming makes itself look. But it failed, because it was a fake; a bait-n-switch. The road to Pedagogical Hell is paved with its ilk. Complexity, made to look simple, instead of just being made simple. Thus AppleScript looks easy and inviting to non-programmers, but it’s every bit as complicated, convoluted, difficult, and utterly intolerant as every other Algol-descended scripting language (Python, Ruby, JavaScript, etc, etc); and worse, the “helpful” syntax goes deliberately obfuscates much of that complexity to pretend in its simple and uniform. The most egregious instance of this “damned with good intentions” is AppleScript’s attempt to make the conceptual and behavioral mismatch between the language’s own local, procedural world and the remote, query-oriented worlds of “AppleScriptable” applications which is accessed via its embedded Apple event bridge. Ironically, non-programmers aren’t bothered by this because they don’t understand it well enough to know any better. Whereas skilled professional programmers absolute hate it, because they actively misunderstand it: they know OOP, application scripting looks like OOP, therefore they assume it is OOP. And then, all that expert understanding and confident on how their scripts will work are completely smashed as “AppleScript” proceeds to behave in profoundly NON-OOP ways, utterly confounding those predictions and proving that something is wrong without ever explaining who or why. So in total absence of any better information, programmers conclude that it is AppleScript that is wrong, and file under Hated and Rubbish. … All this might not seem relevant to NLP, but if you don’t understand pedagogy and why previous attempts at end-user languages fail, you can you expect to do any better than they did? Throw enough magic AI pixie dust at it, maybe? I suppose it might be possible to brute-force a solution with sufficient barrel-loads; but then what do you do when that system behaves in ways that mismatch the user’s predictions? Boom! And you’re right back to the problem AppleScript failed to recognize, never mind solve, 30 years earlier. In fact, if you want to solve this one you need to look back 50 years, to Seymour Papert’s original work on Logo. The man proved you could build a complete, fully functional and trivial-to-learn language with just three parts: 1. This is a Word, 2. This is how you perform a Word, and 3. This is how you add Words of your own. As I mentioned elsewhere, I was lead-author on the last edition of Apress’s AppleScript book; a 1000-page monster. Many would consider a thousand pages on the subject a great and impressive achievement. To me, that doorstop was a disaster: a 1000 pages to explain a “simple, friendly, easy-to-learn language for ordinary users”? (Admittedly I only realized it myself around page 500; and every page after that was absolute hell. No wonder it was 10 months overdue when I finally, barely, wrapped it.) Yet even allowing for my awful verbosity, AppleScript’s baseline complexity is so high that even the best attempt to explain it clearly and completely cannot run less than a 100 pages long. A pedagogical instant “Fail”. Again, Papert proved you can build a language more powerful than AppleScript and explain how to use it on the back of an envelope. To 8-year olds! And his syntax does not look so dissimilar to yours: just words in a sequence. … So, forget NLP. The correct answer you seek is “Pidgin English”. (And feel free to replace “English” with whichever written—and/or spoken—human language you want.) Our best computers today are babies! So talk to them using the same words and sentence composition as you would a young child. A language world where even “Run Dick, Run!” is a needlessly over-complicated expression that you can reduce still further: Run Dick. Or, for absolute precision (which machines do like): Tell Dick to run. An artificial language, stripped down to its absolute minimum; all non-irreducable complexity gone. Simple verb-noun compositions. A spitting image of the “small childrens’ language” we already use with our own biological spawn. And once you’ve learned how to talk to your machine as you would any toddler; and the two of you can successfully negotiate and arrive at a common understanding of what you actually want it to do, you’ll have cracked the problem way better than the self-driving throw-AI-pixie-dust-at-it contingent ever will. Because you will have learned how to do pedagogy, and learned how to reach that common agreement in the simplest way possible.
- haroldp 5y agoAppleScript was one of my first programming languages, way back in the day. I still have an AppleScript I wrote that I use every day on my MacBook. I'll say it was nice for a beginner that it didn't use a lot of fiddly punctuation, like dollar signs to start variable names, or semicolons to end statements. But the language is only natural-ish. The syntax is just as formal as python or anything else in how you must put it together. It looks easy, and maybe that is a virtue, but a week into it you are looping over an array and de-referencing the dictionary in each element. It's still loops, conditionals, operators, functions, typing, etc.
- armchairhacker 5y agoThe problem is that when you try to make programming use natural language, it isn’t natural language, it’s an amalgamation with unnatural “natural” language syntax which is even more confusing than regular code. Another issue is that when people create large programs with this software it becomes unwieldy, because the developers sacrificed scalability to try and improve accessibility. Even real languages like Python and JavaScript suffer from this. I might be biased as a programmer, but i doubt non-programmers take any longer to learn code syntax than “natural” language syntax. I think a way to get non-programmers into language would be to adopt an existing language like Swift or Kotlin, and add support for block-based syntax (since you can recognize the syntactic constructs and remember how they work vs. having to remember and recall) and lots of other built-in support tools (like Copilot), especially for abstract concepts like variables, custom structures, and closures.
- hhas02 5y ago[OK, last last post…] “I think a way to get non-programmers into language would be to adopt an existing language like Swift or Kotlin, and add support for block-based syntax” LOL. So like learning and using MIT Scratch or Siri Shortcuts; only instead of stepping on a Duplo brick in the pitch black of night you’re walking across a solid carpet of Lego Technic, infinitely vast. No mate, you cannot make a programming language simple, accessible, and massively appealing to non-programmers by hiding all its complexity behind brightly-colored bullshit. You do it by eliminating all that bullshit outright. And once you have, explain to your users how to operate what’s left, simply and concisely, using practical, purpose-driven, lay language that doesn’t require a CS degree to interpret it. Extending around that core—using the best modern text, graphical, and verbal tools, from autosuggest and autocomplete, through to the latest AI- and human-backed “would you like some help with that?”—can improve its usability ten-fold. But if the core isn’t profoundly usable to begin with, then all you’ve done is take a lump of crap and hide its awfulness under ineffective bandaids on top. Take the lesson from AppleScript’s history: Clever faking does NOT work. It just bites everyone’s ass. … So what will work? More history! Go read Seymour Papert’s Mindstorms, and form your end-user language with all the parsimony, clarity, and accessibility that Logo already realized over 50 years ago. (Tip: Think “toy Lisp”, minus bloody parenthesis. And if it takes you more than a week to build this new end-user language, you’ve done it wrong.) Learn a brief history of written language and see how much humanity has already successfully built with simple written words. And then, go take a business class, and learn some marketing and sales, so you can translate that vision to mass-market successful and not repeat Papert’s fatal error. Seymour built his products for kids; and the kids who “got it”, loved it. Because Logo took all power and promise which technology held, and placed it in their young hands to do with as they will. He nailed that part of the problem; better than anyone before and since. Seymour’s tragic mistake was in not realizing how to sell his product to The People in Power. i.e. Those who hold all the purse strings and solemnly decret what Shall be Learned by Children—and How. Smart guy; true visionary. Bit naive. And so he lived the rest of his life shaking his fist angrily at clouds, never realizing why he had failed so utterly in Changing the World. (So don’t bother reading The Children’s Machine, it’s bollocks.) If only Bill Atkinson, or Cook and Harris, had done Logo 2.0 instead of warmed-over Algols. That was a mistake. Though as Keith Braithwaite painfully observes: “It's a curious thing about our industry: not only do we not learn from our mistakes, we also don't learn from our successes.” So it goes.