您如何定义未编译的语言

how do you define a language that is not compiled

我问这个问题是因为我看到很多 "personal preference" 谈到术语 "Scripting Language" 和 "Programming Language"。

我的问题是:

对于不编译或直接在浏览器中运行的语言,是否有合适的技术术语?我读过的每篇文章和我在这里搜索过的问题都没有明确说明是什么定义了语言的特征。

也许你是这个意思
https://en.wikipedia.org/wiki/Interpreted_language

An interpreted language is a programming language for which most of its implementations execute instructions directly, without previously compiling a program into machine-language instructions. The interpreter executes the program directly, translating each statement into a sequence of one or more subroutines already compiled into machine code.

脚本语言

含义:一种被解释而不是被编译的语言

所以不编译的语言是脚本语言

Markdown/Markup 语言

含义:一种可以将纯文本格式化为“更好看”或格式良好的文本的语言。

(堆栈溢出就是用来制作这个丑陋的文本,看起来不错)

编程语言

含义:任何旨在与计算机或机器通信的语言

所以任何东西,甚至脚本语言都被认为是编程语言。任何一段代码,包括 markdown 和 markup,都可以被认为是编程语言,尽管它们值得商榷!

网络语言

网络语言更像是一个类别,而不是一种实际的编程类型。网络语言是多种语言的组合,可用于创建网页。一个基本的网页由HTML(标记)、JavaScript(脚本语言)和CSS(也是一种脚本语言)组成。

也许这不是您问题的完整答案,但由于您在问题中提到了脚本语言和编程语言。

我认为(在这种情况下与流行观点不符):

  • 脚本语言是一种主要允许您"speak"使用对象、编写现有应用程序脚本以执行特定工作流的语言。

  • 编程语言是一种主要允许您定义要与之交互以执行特定工作流的对象的语言。

从表面上看,可能没有太大的区别,而在现实世界中往往没有;如果我在浏览器扩展中使用 javascript 来从我正在编写脚本的网页中删除广告,但是当我使用 javascript 和节点来构建一个 crm 系统时,我正在编程。这使得 javascript 对我来说既是脚本语言又是编程语言。

从这个角度来看,语言是编译型还是解释型,是动态类型还是静态类型并不重要。

我通常会看到几十行代码将某些东西作为脚本来自动化,但作为程序则需要几百行或更多。

有很多方法可以模糊这些概念之间的界限,而这正是我作为开发人员对这些事物的看法。

除了汇编语言之外的所有编程语言都是编译的。即使是批处理语言中的语言解释也需要一个编译步骤来将单个批处理指令转换为一系列 CPU 指令。

A compiler is a computer program (or a set of programs) that transforms source code written in a programming language (the source language) into another computer language (the target language), [...]

来源:Wikipedia

汇编语言得到翻译而不是编译,因为一个汇编语言被翻译成一个 CPU 指令。

An assembly language (or assembler language) is a low-level programming language for a computer, or other programmable device, in which there is a very strong (generally one-to-one) correspondence between the language and the architecture's machine code instructions. Each assembly language is specific to a particular computer architecture, in contrast to most high-level programming languages, which are generally portable across multiple architectures, but require interpreting or compiling.

来源:Wikipedia

新的汇编程序有宏支持来替换或解除指令,但这不是编译步骤,只是宏处理。