我指的是这个答案中的区别:
... bash不是用于编写应用程序,而是脚本编写.当然,您的应用程序可能有一些内务处理脚本,但不要写,
critical-business-logic.sh
因为另一种语言可能更适合这样的东西.
作为使用多种语言的程序员,这似乎是C,Java和其他编译语言的势利.我不是在寻求加强我的意见或手工波澜的答案.相反,我真的想知道提到了哪些技术差异.
(我在日常工作中使用C,所以我不仅仅是防守.)
传统上编译程序并解释脚本,但这不再重要.如果你真的想要,你可以生成大多数脚本的编译版本,并且实际上解释了像Java这样的其他"编译"语言(在字节代码级别).
更现代的定义可能是程序旨在由客户(可能是内部程序)使用,因此应包括文档和支持,而脚本主要供作者使用.
网络是一个有趣的反例.我们都喜欢用Google搜索引擎查找内容.创建它引用的"数据库"的大部分代码仅由其作者和维护者使用.这会使它成为一个脚本吗?
我会说应用程序倾向于以交互方式使用,其中脚本将运行其路线,适合批处理工作.我不认为这是一个具体的区别.
通常,它是"脚本"与"程序".
我和你在一起,这种区别主要是"编译语言势利",或者引用拉里·沃尔并采取另一面,"剧本是演员所拥有的,一个节目是给观众的".
这是一个有趣的话题,我认为对于区分"脚本"和"应用程序"没有很好的指导.
让我们看看一些维基百科的文章,以了解这种区别.
脚本(维基百科 - >脚本语言):
脚本语言,脚本语言或扩展语言是控制软件应用程序的编程语言."脚本"通常被视为与"程序"不同,"程序"独立于任何其他应用程序执行.同时,它们与应用程序的核心代码不同,后者通常以不同的语言编写,并且通过最终用户可访问,它们使应用程序的行为能够适应用户的需要.
应用程序(维基百科 - >应用程序软件 - >术语)
在计算机科学中,应用程序是一种计算机程序,旨在帮助人们执行某种类型的工作.因此,应用程序不同于操作系统(运行计算机),实用程序(执行维护或通用琐事)和编程语言(用于创建计算机程序).根据设计的工作,应用程序可以操作文本,数字,图形或这些元素的组合.
阅读上述条目似乎表明,区别在于脚本由另一个软件"托管",而应用程序则不是.我认为可以争论,例如控制shell行为的shell脚本,以及控制解释器执行所需操作的行为的perl脚本.(我觉得这可能有点延伸,所以我可能不完全赞同它.)
归根结底,我认为可以根据计划的规模进行口语化的区分.与应用程序相比,脚本的规模通常较小.
此外,就目的而言,脚本通常执行需要处理的任务,例如,构建脚本,其为特定软件产生多个发布版本.另一方面,应用程序旨在提供更精确和面向最终用户的功能.例如,记事本或Firefox.
John Ousterhout(TCL的发明者)在http://www.tcl.tk/doc/scripting.html上有一篇很好的文章,他提出了系统编程语言之间的区别(用于实现构建块,强调正确性,类型安全性) vs脚本语言(用于组合构建块,强调对不断变化的环境和要求的响应,轻松转换文本表示).如果你使用那个分类系统,那么99%的程序员正在做的工作更适合脚本语言而不是系统编程语言.