1
8
不是语言本身,而是 analog computers |
2
16
尽管你高压辞退了 Functional Programming ,我认为你需要再看一遍,只是这次阅读是为了理解和学习,而不是用确认偏差来否定它,认为它“大同小异”。用函数式风格编写代码与用函数式风格编写代码截然不同 imperative style . 如果对你来说还不够不同,为什么不看看这些呢?:
基本上,只要看看几十个 programming paradigms 阅读描述以获得理解和启发,而不是通过确认偏差而否定。为每一种语言学习一种对于你所使用的“不同”的模糊定义来说完全不同的语言,并从中获得乐趣。 |
3
8
图形语言已经有过几次尝试。这个 LabVIEW 国家文书可能是最成功的。它使用数据流图 具有作用于数据的组件。 图形语言的另一个尝试是 UML . 我猜陪审团已经出局了。在一个标准委员会参与进来并把它变成适合每个人的东西之前,这可能是个好主意。 大量的机电系统是由计算机控制的 PLC 用编程 ladder logic . 它本质上是一种创造高度 语言。 还有一些深奥、晦涩、另类的语言,它们除了提醒人们图灵完备并不要求语言是合理的之外,基本上没有任何实际用途。有些人可能会把图灵机器本身归入这一类,但是 BrainF*ck ,和 Piet 深奥的语言 whenever 这也是一个有趣的练习,因为它完全没有流量控制。 编辑: 我差点忘了 Befunge . 它的源文本是一个ASCII字符网格,其中每个单元格都是一个操作码。执行在四个方向中的任何一个方向上运行,因此可以以四种不同的顺序通过一个操作码。它是另一种深奥的语言,在1993年被设计成尽可能难为它编写编译器。并不是说这实际上阻止了某人这么做。 我指出的几种语言都是深奥的语言。这些语言通常都有小的(通常只有一个或两个)用户群体。它们的创建有多种原因,而探索图灵完备的含义以及如何表示一个程序的边界则是更重要的原因。
INTERCAL
它创建于1972年。它是一种表面上类似于COBOL的语言,但在它的许多怪癖中,需要程序有足够的礼貌(但不要太礼貌)才能继续执行。为了支持礼貌,
|
4
6
好吧,有 Piet . 这完全不同。(下面是Piet中的Hello World。)尽管如此,您可能会认为您正在处理一个包含一些整数的数据结构(在本例中是一个堆栈),然后您正在从堆栈中添加和删除内容,操作值等,所以实际上它还是一样的。
|
5
3
这取决于你在问什么,但答案可能是否定的。 Turing Complete 是图灵完备的。这意味着这些语言中的任何一种都可以被这个组中的任何其他语言模拟。然后任何编程语言都可以有一个编译器或解释器,可以在我们当前的计算机上运行(近似)。从架构上讲,它们确实有代码和数据的概念。 所以,如果你认为函数式编程和命令式(“传统”)编程是一样的,因为它们在计算机上运行,那么就没有其他选择了。
程序的编写也可能有点不同。使用函数组合作为基础可能会引导您走向串联编程,尽管数据流编程(包括许多图形语言)和函数式编程也同样支持它。
不同的
编辑
另外,请参阅其他有关 看 |
6
3
问得好。让我们后退一步。在我的第一个回答中,我将试图解释,你要寻找的不是一种新的语言,而是一种新的架构,我相信,你至少知道一些重要的架构。
MS-DOS程序是一样的:它们运行一个wile,然后等待用户输入,然后再次运行。在Unix系统上,即使是多任务系统,游戏也非常相似,不止一个用户可以这样运行程序。 有两个穿透波:
同时,编译和程序结构也发生了变化,但我认为有一些不足:
此外,编程目标环境也发生了很大变化:
一些大而肥的项目成了平台:
也许你要找的不是编程语言。比如说,任务是在浏览器中显示一个数据列表,某种类型的表。web应用程序应该看起来:
HTML+XSLT是一种编程语言吗?不是。它们执行的任务是否与PHP在服务器端或JS在客户端执行的任务相同?绝对的。是公共平台吗?是的,所有的浏览器都支持它。 有效的 :更快的代码生成、更灵活的应用程序、社区工作支持、可扩展性、更易于维护、可重用性等。 (我在这里把答案分成两半;在下一部分,我会给你看一个,我正在玩一段时间。) |
7
2
通读 http://en.wikipedia.org/wiki/Programming_paradigm 以及右边链接框中链接的所有页面。取决于你如何看待它,有些是完全不同的或他们基本上都是一样的。 |
9
1
正如我所说,现在有很多平台或环境可以编程。对于某些平台,您可以从一长串语言中进行选择,例如Microsoft.NET,它可以用VisualBasic、C#等进行编程;其他情况下,非常不同的平台使用相同的语言,例如JAVA,它用于Android、Oracle SQL server存储过程等。 此外,还有一些非编程语言,它们覆盖一个域或它们表达某种配置,这远比真正的编程语言简单,但可以比编程语言更好地使用。举例:plc的梯形逻辑编程。 数据流编程就是这种编程的一种。让我们看看维基百科,什么是数据流编程(也称为基于流的编程):
发件人: http://en.wikipedia.org/wiki/Flow-based_programming , http://en.wikipedia.org/wiki/Dataflow_programming 维基百科的文章很棒,我也回答了一些其他的问题,所以我不想重复我自己。相反,我描述的是用于异步数据流服务器的语言。
这引用了一个名为“cmp”的组件实例,这是一种比较类型。
这定义了组件实例的端口值。 (把这些行放在一起,我们得到一个简短的数据流程序,这意味着:一个valus来自src,cmp检查它的值,如果它大于8,则传递给dst1,如果它小于8,则传递给dst2,如果它正好是8,则传递给dst3。)
有趣的是,有些严肃的项目实现了数据流编程,但他们甚至没有提到:
数据流程序可以显示,也可以编辑为图形(参见SynthEdit)。 |
10
0
最重要的不是语言,而是你用它做什么。许多语言会把你推向一个特定的方向,像Haskell这样的纯函数式语言会使你几乎不可能强制编程,例如,但是只要你不花时间去学习范例,大多数语言看起来都和实际运行的机器语言一样,计算条件并给内存空间赋值。 范例给了你想要的抽象。好的面向对象或函数代码看起来与您描述的完全不同。你不需要语言来做这件事。我见过用C++编写的面向对象的大代码和C++中的函数代码。尽管在正确的工作中使用正确的语言帮助很大。不幸的是,事情也反过来了。如果你不花时间去理解范例,你仍然会用Scheme或Smalltalk编写命令式代码。 |
11
0
|