TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Ask HN: What do you call “scriptable” software?

10 点作者 deanebarker超过 3 年前
Some software has two &quot;levels&quot; execution. A primary level, which is developed by the vendor, and secondary level which may be provided by the users to perform relatively complicated custom logic -- logic beyond that would be reasonable for simple configuration or a UI.<p>Is there a name for this?<p>Consider a software system that &quot;delegates&quot; execution points to some other language or runtime entirely. These are systems that have some level of &quot;scripting.&quot;<p>For example, say I have a web application written in .NET which has a workflow engine. This engine can be configured, and might even have a UI to drag boxes and arrows around.<p>However, at the end of a workflow step, I also allow the option for my users to provide some JavaScript that is executed server-side that produces the next workflow recipient. It can execute whatever logic it wants -- all the engine cares about is the result it returns.<p>So, the PRIMARY execution engine delegates control to a SECONDARY execution engine, then incorporates the result that comes back into further execution.<p>I intuitively know about this architecture model, and I&#x27;ve used models like it many times, but I&#x27;d like to know if there&#x27;s an accepted, general name for this model.<p>(Note: I am fully aware that I may have answered by own question in the title. If so, let me know.)

7 条评论

live4ever超过 3 年前
I work for a company that provides a custom software platform that enables the building of large, complex enterprise apps. The primary engine is written in Java running in a JVM but we also use Groovy as a secondary scripting language in a secondary execution context for extending the platform and writing complex business rules. In fact the JVM has fantastic capabilities to allow late, runtime compilation using JVM-compatible languages (groovy, scala). We have historically called this &#x27;configuration&#x27; to give our clients the impression that the software is easier to deliver an application with and our consultants were &#x27;configuration developers&#x27;. But more recently we noticed that clients don&#x27;t care so much about this wording. On the other hand, the developers using the platform don&#x27;t like to be called &#x27;configurators&#x27; and so we&#x27;ve gone back to call it development (which it really is) and have &#x27;developers&#x27;.
throwaheyy超过 3 年前
“Macros” - specifically the application kind: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Macro_(computer_science)#Application_macros_and_scripting" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Macro_(computer_science)#Appli...</a><p>Or “pluggable”: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Plug-in_(computing)#Mechanism" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Plug-in_(computing)#Mechanism</a><p>Both make the application’s internal functionality available to be called from scripting languages, and in that context they can look similar, but one difference is that plug-ins are distributed with the application or separately by its author or produced by 3rd parties, while macros are custom written by users.
throwawaybutwhy超过 3 年前
Greenspun&#x27;s 10th rule? [0]<p>[0] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Greenspun%27s_tenth_rule" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Greenspun%27s_tenth_rule</a>
bobsterman超过 3 年前
You&#x27;re describing a VM with multiple languages. You might like the Racket programming language(s). It provides a powerful macro interface that can define new languages, and sandboxed execution to safely execute user code server side.<p><a href="https:&#x2F;&#x2F;racket-lang.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;racket-lang.org&#x2F;</a>
sargstuff超过 3 年前
The provided definition is a general high level abstraction&#x2F;view.<p>&quot;scripting&quot;&#x2F;&quot;scriptable&quot; short answer: way to modify&#x2F;direct things at the software level without knowing all the underlying details; no need to translate &quot;script&quot; into different code (aka binary&#x2F;bytecode). aka software provided way to &quot;customize&quot;<p>the &quot;google searchable&quot; other name? developement&#x2F;runtime environment; Levels of abstractions (aka one level provides the constructs another level just uses the constructs provided per commands&#x2F;instructions) aka os; user using os; stand alone application (command line display date&#x2F;time); integrated application (database vs. os)<p>all have environment variables, initializations, termination clean-up, and &quot;acutal work&quot; stuff that need to be done to setup the defined constructs that a given abstraction layer expects&#x2F;requires.<p>The difference is what by default does the associated actions&#x2F;where &amp; how the information is provided.<p>(command line interpreted shell vs. OO as a take on transactional glue&#x2F;framework provided by a command line interpeted shell)<p>Defining an Itegrated development environment helps with this.<p>Environment&#x2F;intended usage would help to define &quot;scripting&quot; areas:<p>* historically, automation (&quot;job control&quot;)<p>* stringing series of small programs together to conserve resources aka memory<p>* rapid prototyping<p>* portability<p>some &quot;scripting&quot; areas:<p>a) command line vs. gui;<p><pre><code> although vm stuff such as java &amp; eclipse kinda blur the &quot;xwindows widgets callable from shell script </code></pre> b) presentaton (web-glue for multiple sources, printer aka postscript &#x2F; pdf &#x2F; etc)<p>c) OS level vs. application<p><pre><code> at os level the &quot;linker&quot; is the shell. at os level that user used, &quot;command line shell&quot; (automatethe setup of a vm instance when a user logs in) at os application level, a database has &quot;report&#x2F;form scripts&quot; </code></pre> d) (glue between different domaines)<p><pre><code> Script that pulls in names&#x2F;addresses from database to fill in a word processor form to print out each name&#x2F;address on an envelope</code></pre>
dexwiz超过 3 年前
Platform or Platform as a Service? Scriptable implies code, but platforms can be extended via config, no code UIs, code, or something else. It’s very popular in enterprise software where a base product can be sold but extended by customers to match their specific business processes. Salesforce is a prime example of this.
评论 #29689156 未加载
somethingsright超过 3 年前
I just call it &quot;configurable software&quot;. Doing the setup is formally called &#x27;configuration&#x27; in SAP, and the implementors document the changes done in a &#x27;configuration guide&#x27;.<p>I personlly would also like simpler names for the two other kinds of software: Custom-Of-The-Shelf, and, Bespoke.