Programming languages 是否有任何编程范例不是基于操纵变量和函数?

Programming languages 是否有任何编程范例不是基于操纵变量和函数?,programming-languages,paradigms,Programming Languages,Paradigms,事实上,我所知道的每一种语言基本上都是一个主题的变体:您创建变量和函数,然后使用条件和其他构造操作它们。我知道函数式编程之类的语言与“传统”语言有些不同,但在本质上它们几乎是一样的。您仍然在使用变量(虽然变量是不可变的,但在某种程度上是不可变的),并创建函数是否有任何语言或系统完全摒弃了我们现在使用的语言或系统,并采用了完全不同的方法?通读并将所有页面链接到右侧的链接框中。根据你对它的看法,有些是完全不同的,或者它们基本上都是一样的。好吧,有一些。那完全不同。(下面是Piet中的Hello Wo

事实上,我所知道的每一种语言基本上都是一个主题的变体:您创建变量和函数,然后使用条件和其他构造操作它们。我知道函数式编程之类的语言与“传统”语言有些不同,但在本质上它们几乎是一样的。您仍然在使用变量(虽然变量是不可变的,但在某种程度上是不可变的),并创建函数

是否有任何语言或系统完全摒弃了我们现在使用的语言或系统,并采用了完全不同的方法?

通读并将所有页面链接到右侧的链接框中。根据你对它的看法,有些是完全不同的,或者它们基本上都是一样的。

好吧,有一些。那完全不同。(下面是Piet中的Hello World。)尽管如此,您可能会认为您正在处理一个包含一定数量整数的数据结构(在本例中是堆栈),然后您正在从堆栈中添加和删除内容,操作值,等等。所以实际上它仍然是一样的


检查一下,这是一个完全不同的系统,几乎所有的事情都是关于操作堆栈的。它几乎就像一个非常原始的小型虚拟机。

图形语言已经有过多次尝试。系统来自 国家文书可能是最成功的。它使用数据流图 使用作用于数据的组件

图形语言的另一个尝试是。我猜这件事的陪审团已经出局了。在一个标准委员会参与进来并把它变成适合所有人的东西之前,这可能是一个好主意

大量的机电系统由s控制,s是 用编程语言编程。它本质上是一门创造高质量产品的学科 可靠的有限状态机,但与程序的相似性很小 语言

还有一些深奥、晦涩和另类的语言,它们除了提醒人们图灵全集并不要求语言是合理的之外,基本上没有任何实际用途。有些人可能会把图灵机器本身归入这一类,但是,在这群人中,我真的很突出

深奥的语言也是一个有趣的练习,因为它根本没有流量控制

编辑:我差点忘了。它的源文本是ASCII字符的网格,其中每个单元格都是一个操作码。执行可以在四个方向中的任意一个方向上运行,因此可以在四个不同的序列中通过单个操作码。它是另一种深奥的语言,在1993年被设计为尽可能困难地为它编写编译器。并不是说这实际上阻止了某人这么做

我指出的几种语言都是深奥的语言。这些语言通常具有小型(通常只有一个或两个)用户社区。它们的产生有多种原因,而探索图灵完备的含义以及如何表示程序的边界是引用的更为重要的原因


所有深奥语言的鼻祖是1972年创立的。它是一种表面上类似COBOL的语言,但在它的许多怪癖中,需要程序有足够的礼貌(但不要太礼貌)才能继续执行。为了支持礼貌,
请做
的礼貌形式。一个值得注意的扩展是
FROM
语句,它可以使控制从指定位置流向此处。

本身不是一种语言,但在某些方面与更流行的数字计算机有很大的不同。

尽管您对,我认为你需要重新审视它,只是这次阅读是为了理解和学习,而不是用确认偏见来否定它,认为它“更相似”。用函数式风格编写代码与用函数式风格编写代码截然不同。然而,如果对你来说还不够不同,为什么不看看这些呢

  • 以和(IIRC)等语言为代表
  • 像这样的语言很难理解
  • (与函数相反!)如果计算中的变量让你不舒服的话,那就去掉它。这几乎是你在这个领域的唯一选择
  • 与上述情况密切相关。看看这方面的经典示例(尽管和都有内置的元素)

基本上,只要看一看这几十本书中的任何一本,阅读其中的描述,以获得理解和启发,而不是通过确认偏见来否定。为每种语言学习一种语言,这种语言对于你正在使用的“不同”的模糊定义来说是完全不同的,并从中获得乐趣。

这取决于你在问什么,但答案可能是否定的

原因是目前所有的计算机语言都是图灵完备的。这意味着这些语言中的任何一种都可以被该组中的任何其他语言模拟。然后,任何编程语言都可以有一个可以在当前计算机上运行的编译器或解释器(近似)。在架构上,它们确实有代码和数据的概念

因此,如果你认为函数式编程和命令式(“传统”)编程是一样的,因为它们在计算机上运行,那么就没有其他选择了

代码和数据转换为函数和数据结构(变量)。它们允许变化:

  • 不变性是函数式编程的主要因素
  • 代码和数据之间的差异可能会变得模糊。例如,表示函数可以用作数据结构。请参阅Lisp语言
  • 与此相关的是
  • 另一方面,如何表达程序也可能写得有点不同。以函数合成为基础
    10 INPUT "PASSWORD: ";A$
    20 IF A$="PASSWORD" THEN GOTO 40
    30 PRINT "TRY AGAIN" : GOTO 10
    40 PRINT "WELCOME"