什么是语言不可知论?为什么这样称呼它?


55

什么语言是不可知的?为什么这样称呼它?


7
我认为它应该真正被称为语言多神论,因为人们相信完成某件事的途径不止一种。
chrisaycock 2010年

1
@muntoo,伪代码本身就是一种语言。
SK-logic

1
@ SK-logic好,然后;怎么样:您用伪代码编写的内容与语言无关
Mateen Ulhaq 2011年

1
@chrisaycock你的意思是多语言
dukeofgaming

1
它确实应该是语言通用的。并不是说您不确定计算机语言是否存在!
罗伯K

Answers:


57

语言不可知论是指独立于任何特定编程语言的编程方面。至少,这就是我过去三十年来使用它的方式。

“不可知”一词源自古希腊语,表示“不知道”。因此,不需要“语言不可知”的知识就不必了解计算机语言。与独立语言的含义相同。语言不可知的事物包括算法,Agile或绑定到多种语言的运行时库。

某些Mac OS X功能与语言无关,因为它们确实是为在Objective C中使用而设计的,只能在C或C ++中很难使用,甚至没有对许多语言的绑定。

使用“语言不可知”而不是其他术语也可能存在潜台词。

在口语英语中,有人说自己“不可知论”是指他们既不是宗教徒,也不是无神论者:他们“不了解”上帝。这通常是“我不喜欢谈论宗教,所以不要try依我”的口头代码。

因此,有时当人们谈论“与语言无关”时,他们试图避开关于哪种计算机语言更好的争论。


5
顺便说一句,不可知论来自“ a”(不是)+“ gnosis”(知识)。其他类似的词是“无神论者”和“非典型”。
鲍勃·墨菲

2
是的,我一直将它作为语言战争本质上是宗教战争的参考:与语言无关的技术/建议/概念避免了圣战。
Carson63000

离题:不可知论/不可知论是指知识。无神论者/有神论者是指相信或肯定存在。因此,从技术上讲,您可以拥有一个不可知论的宗教信仰者或不可知论的无神论者。但是解释很清楚。您还可以谈论数据库不可知系统
Borjab

@Borjab我是Vim不可知的信徒。但是出于实际原因,我使用Emacs。
布兰丁

与语言无关的是指与任何特定编程语言无关的编程方面。当您说什么意味着一个全部吗?基数很关键。例如,如果某条语句适用于OOP语言并且不限于一种特定的OOP语言,但不适用于功能语言,那么该语句语言是否不可知?
jaco0646 '18 -10-12


6

当一个解决方案被称为“与语言无关”时,您实际上是在说您的解决方案“不知道”语言,这意味着它是通用的或独立于语言特定的(范式,语言习语等)。

例如,设计模式与语言无关,因为描述它们的方式与具体实现无关紧要,只要它坚持整个或部分模式即可(v.gr.某些设计模式可以在没有OOP的情况下实现) 。

UML与语言无关,BPMN与语言无关,ERM与语言无关。伪代码算法与语言无关...

任何要编程但未用特定语言描述的内容都可以称为与语言无关。


2
不可知论的意思是“不知道”,而不是“不相信”。细微但重要的区别!
JacquesB 2015年

BPMN当然不是语言不可知的,因为它可以对流程进行建模。在某些编程语言中,您仅定义前提条件和期望的结果,然后隐式展开过程,例如Prolog。甚至Haskell和BPMN的配合也不是特别好,因为Haskell的惰性评估策略导致事情无法按照命令式定义的顺序发生。
back2dos

2

我之前从未听说过该术语,但是,我认为这意味着学习与任何特定编程语言无关的编程方面。


1
为什么这样称呼它?
路易·瑞斯

1
这几乎是我过去三十年来所使用的方式。
鲍勃·墨菲

1
我正在删除此回复,并将其发布为答案。
鲍勃·墨菲

@bob:同意。但是答案在哪里?
路易·瑞斯

@Louis Rhys:对不起,我花了几分钟时间才能正确编写它。它起来了。
鲍勃·墨菲
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.