转:Nodejs相关的10大怪异的编程语言
转:Nodejs相关的10大怪异的编程语言
人们都认为编程语言很容易使用和学习。编程语言应该给你提供数据结构让你来解决实际问题,它们的语法也应清晰明了,容易理解且执行速度快,没有任何bug。但有时候编程语言设计者们会创建一些违背这些原则的语言,要么供研究使用要么纯属娱乐。下面是10种最怪异的最不切实际的编程语言。
##1)LOLCODE
很少有编程语言像LOLCODE这样注入了这么多网络时代的成分(译者注:LOLCODE是一种建立在高度缩写的网络英语之上的编程语言)
。它由英国兰卡斯特大学研究员 Adam Lindsay于2007年创建,该语言的关键字都是大写的且meme-fied.。你几乎可以想象一个猫在生产中使用它。
HAI
CAN HAS STDIO?
I HAS A VAR
IM IN YR LOOP
UP VAR!!1
VISIBLE VAR
IZ VAR BIGGER THAN 10? KTHX
IM OUTTA YR LOOP
KTHXBYE
与该份列表中的大部分语言一样,LOLCODE没有标准库可言。这意味着你只能使用LOLCODE来读取文件或写入文本到控制台而不能干其他的事。如果你需要功能更强的版本,那么看看因LOLCODE受到启发的LOLPython,它可以让你访问所有Python的强大的功能库.
更多的代码和例子请看维基百科介绍。
##2)Glass
Glass是一门深奥的编程语言,由Gregor Richards于2005年发展起来。它将非直观的后缀符号与沉重的面向对象结合起来,需要一个主栈与其面向对象的结构相结合才能进一步玩出花样。据作者所言没有其它的语言像这样执行,因为看起来非常的白痴。
下面是该语言的一个例子,程序输出Fibonacci 序列:
{F[f(_a)A!(_o)O!(_t)$(_n)1=,(_isle)(_n)*(_a)(le).?=/(_isle)^\(_n)*(_a)
s.?(_t)f.?(_n)*(_a)s.?(_t)f.?(_a)a.?]}{M[m(_a)A!(_f)F!(_o)O!(_n)=(_nlm)
=/(_nlm)(_n)*(_f)f.?(_o)(on).?" "(_o)o.?(_n)(_n)*(_a)a.?=(_nlm)(_n)*
(_a)(le).?=\]}
更多的例子和说明请看这个网页。
##3) Brainfuck
Brainfuck是晦涩难懂的语言巨星,受到了大批崇拜者的追捧。该语言是出了名的难以编程,仅有8个简单的命令和一个指令指针。它的设计就是为了挑战和娱乐程序员,而不是为了用于实际用途。它由Urban Müller于1993年创建。
下面是“Hello world!”的例子:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.
<<+++++++++++++++.>.+++.------.--------.>+.>.
更多请看 这里
##4) Chicken
Chicken不仅是语言的名字,也是该语言允许的唯一关键字。关键字重复的次数和换行决定执行的具体操作。下面是一个例子,你能猜出它是干嘛的吗?
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken
更多请看 这篇文章
##5) Whitespace
Whitespace是一门很出色的编程语言。它仅通过空格、制表符和回车来理解并忽略所有其他字符。这个特性还允许Whitespace程序隐藏在其他语言程序的源代码中,例如JavaScript,Javascript的缩进就是用空格写的。下面是一个例子用以打印“Hello, world!”(S表示单个空格,T表示制表符):
S S S T S S T S S S
T
S S S S S T T S S T S T
T
S S S S S T T S T T S S
T
S S S S S T T S T T S S
T
S S S S S T T S T T T T
T
S S S S S T S T T S S
T
S S S S S T S S S S S
T
S S S S S T T T S T T T
T
S S S S S T T S T T T T
T
S S S S S T T T S S T S
T
S S S S S T T S T T S S
T
S S S S S T T S S T S S
T
S S S S S T S S S S T
T
S S
学习更多请看 这里
##6) ///
///是一门极简派风格的编程语言,仅包含一个操作—即用/source/replacement/这样的形式进行字符串替换。它由Tanner Swett于2008年发明。该语言的功能十分有限,但是一些聪明的程序员能够将字符串替换转换为完整的工作程序,用以循环和输出数据,下面是一个简单的“Hello, world!”的程序:
/ world! world!/Hello,/ world! world! world!
学习更多请看 这里
##7) Befunge
Befunge是一个二维编程语言。你的代码放在一个固定大小的场地,该场地的每一列都能存放代码或者数据,你的程序可以替换任何想要替换的列。解释器从左上列开始从左到右解析。你可以用特殊的方向指令控制解释器的方向。例如,下面是一个无线循环的例子:
>v
^<
而下面这个是“Hello, world!”的程序:
0"!dlroW ,olleH">:#,_@
学习更多请看 这里
##8) Piet
Piet编程语言的程序看起来都像抽象画的位图,基本的构建块就是颜色块。它支持20种不同的颜色,有些实现支持的更多。编译器由图像周围的移动“指针”引导,在图像中从一个色块移动到下一个。下面是一个“Hello world!”程序:
Hello World in Piet
学习更多请看该语言的 主页
##9) Malbolge
Malbolge语言由Ben Olmstead于1998年发明,以“但丁的地狱”中地狱的第8圈命名。该名字不是随机选取的—该语言设计的初衷就是为了不可能写出有用的编程语言。在创建几年后,有人发现了设计中的漏洞使其能写Malbolge程序。你必须得成为一个密码科学家才能用它写出有意义的程序。下面是Malbolge中看起来像‘Hello World!”程序:
('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#"
`CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>
学习更多请看 这里
##10) ~English
~English是一门试图模仿自然声音语言的编程语言,其语法非常宽松,使程序员有很大的自由表达空间。但程序员不能自己定义函数而只能使用该语言内置的函数。下面是一个例子程序:
Display "Hello world!" and a newline.
Stop the program.
学习更多请看 这里 ,你可能也对 ]Shakespeare](http://en.wikipedia.org/wiki/Shakespeare_(programming_language)) 感兴趣。
##荣誉提名: JavaScript
Javascript是如今最受欢迎的编程语言,但受欢迎带来的副作用就是该语言自身的每处特性,无论该语言多美妙,还是每天给成千上万的程序员带来了bug,这使得JS也列在这里。这里有一个完整的网站列出了Javascript的怪异之处,给你一个例子,下面是两个简短的完全有效的JS片段(你可以在你的控制台上试验一下):
// This prints 10:
alert(++[[]][+[]]+[+[]]);
// And this “fail”:
alert((![]+[])[+[]]+(![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]);
更多的信息请看这些 StackOverflow上面的问题: 1、 2
##结论
包含在这份列表中的这些深奥的语言,给大家提供了一种提出和验证新思想的方法。有时候这些想法会影响整个工业界。但是它们中的大部分都是不切实际的且深奥、范围狭窄,你刚刚只学了其中的10种,但实际上有几百种。
##分享给大家看下,好东西分享下不是!
原文地址:http://blog.jobbole.com/53408/
转:Node.js相关的10大怪异的编程语言
人们都认为编程语言很容易使用和学习。编程语言应该为你提供数据结构来解决实际问题,并且语法清晰明了,易于理解和执行,没有bug。但有时候编程语言的设计者会创造一些违背这些原则的语言,要么是为了研究,要么纯粹是为了娱乐。以下是10种最怪异且不切实际的编程语言。
1)LOLCODE
LOLCODE 是一种注入了许多网络时代元素的编程语言。它由英国兰卡斯特大学研究员 Adam Lindsay 于2007年创建,关键字都是大写的且meme化的。你可以想象一个猫在生产中使用它。
HAI
CAN HAS STDIO?
I HAS A VAR
IM IN YR LOOP
UP VAR!!1
VISIBLE VAR
IZ VAR BIGGER THAN 10? KTHX
IM OUTTA YR LOOP
KTHXBYE
LOLCODE 没有标准库,这意味着你只能用它来读取文件或写入文本到控制台。更多细节请查看 LOLCODE 维基百科。
2)Glass
Glass 是一种深奥的编程语言,由 Gregor Richards 于2005年开发。它结合了非直观的后缀符号和面向对象编程。下面是该语言的一个例子,程序输出 Fibonacci 序列:
{F[f(_a)A!(_o)O!(_t)$(_n)1=,(_isle)(_n)*(_a)(le).?=/(_isle)^\(_n)*(_a)
s.?(_t)f.?(_n)*(_a)s.?(_t)f.?(_a)a.?]}{M[m(_a)A!(_f)F!(_o)O!(_n)=(_nlm)
=/(_nlm)(_n)*(_f)f.?(_o)(on).?" "(_o)o.?(_n)(_n)*(_a)a.?=(_nlm)(_n)*
(_a)(le).?=\]}
更多例子请查看 Glass 维基百科。
3)Brainfuck
Brainfuck 是一种晦涩难懂的语言,受到大量程序员的喜爱。该语言仅有8个简单命令和一个指令指针。它旨在挑战和娱乐程序员,而不是用于实际用途。它由 Urban Müller 于1993年创建。
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.
<<+++++++++++++++.>.+++.------.--------.>+.>.
更多细节请查看 Brainfuck 维基百科。
4)Chicken
Chicken 不仅是语言的名字,也是该语言允许的唯一关键字。关键字重复的次数和换行决定执行的具体操作。下面是一个例子,你能猜出它是干什么的吗?
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken
更多细节请查看 Chicken 维基百科。
5)Whitespace
Whitespace 是一种非常特别的编程语言,它仅通过空格、制表符和回车来理解,忽略所有其他字符。下面是一个例子用以打印“Hello, world!”:
S S S T S S T S S S
T
S S S S S T T S S T S T
T
S S S S S T T S T T S S
T
S S S S S T T S T T S S
T
S S S S S T T S T T T T
T
S S S S S T S T T S S
T
S S S S S T S S S S S
T
S S S S S T T T S T T T
T
S S S S S T T S T T T T
T
S S S S S T T T S S T S
T
S S S S S T T S T T S S
T
S S S S S T T S S T S S
T
S S S S S T S S S S T
T
S S
更多细节请查看 Whitespace 维基百科。
6)///
/// 是一种极简主义风格的编程语言,仅包含一个操作—即用/source/replacement/的形式进行字符串替换。它由 Tanner Swett 于2008年发明。
/ world! world!/Hello,/ world! world! world!
更多细节请查看 /// 维基百科。
7)Befunge
Befunge 是一个二维编程语言。你的代码放在一个固定大小的场地,每一列都能存放代码或数据。你的程序可以替换任何想要替换的列。解释器从左上角开始从左到右解析。
>v
^<
更多细节请查看 Befunge 维基百科。
8)Piet
Piet 编程语言的程序看起来像抽象画的位图,基本的构建块就是颜色块。它支持20种不同的颜色。编译器由图像周围的移动“指针”引导,在图像中从一个色块移动到下一个。下面是“Hello World!”程序:
更多细节请查看 Piet 主页。
9)Malbolge
Malbolge 语言由 Ben Olmstead 于1998年发明,以“但丁的地狱”中地狱的第8圈命名。该语言设计的初衷是为了不可能写出有用的编程语言。下面是 Malbolge 中看起来像“Hello World!”程序:
('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#"
`CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>
更多细节请查看 Malbolge 维基百科。
10)~English
~English 是一种试图模仿自然语言的编程语言,其语法非常宽松,使程序员有很大的自由表达空间。但程序员不能自己定义函数,只能使用该语言内置的函数。下面是一个例子程序:
Display "Hello world!" and a newline.
Stop the program.
更多细节请查看 ~English 维基百科。
荣誉提名: JavaScript
JavaScript 是当今最受欢迎的编程语言之一,但其特性有时也会给程序员带来困扰。这里有一个完整的网站列出了 JavaScript 的怪异之处,给你一个例子:
// This prints 10:
alert(++[[]][+[]]+[+[]]);
// And this "fails":
alert((![]+[])[+[]]+(![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]);
更多细节请查看 StackOverflow 上的问题 和 第二个问题。
这些深奥的语言提供了一种提出和验证新思想的方法。尽管这些想法大多数是不切实际的且范围狭窄,但它们仍然有趣且值得一看。
笑喷了
神奇的语言
在Node.js生态系统中,并不存在名为“Nodejs相关的10大怪异的编程语言”的帖子,但根据您提供的内容,我将概述并解释其中提到的一些有趣的编程语言及其特点,虽然这些语言本身与Node.js无关,但它们展示了编程语言设计的多样性。
示例:LOLCODE
LOLCODE 是一种基于网络文化的编程语言,语法类似于互联网梗。以下是一个简单的LOLCODE程序,用于计算数字1到10的总和:
HAI
CAN HAS STDIO?
I HAS A SUM ITZ 0
I HAS A NUM ITZ 1
IM IN YR LOOP UPPIN YR NUM TIL BOTH SAEM NUM AN 10
SUM R SUM + NUM
IM OUTTA YR LOOP
VISIBLE SUM
KTHXBYE
示例:Whitespace
Whitespace 是一种通过空格、制表符和换行符来编写代码的编程语言。以下是一个简单的Whitespace程序,用于输出 “Hello, world!”:
S S S T S S T S S S
T
S S S S S T T S S T S T
T
S S S S S T T S T T S S
T
S S S S S T T S T T S S
T
S S S S S T T S T T T T
T
S S S S S T S T T S S
T
S S S S S T S S S S S
T
S S S S S T T T S T T T
T
S S S S S T T S T T T T
T
S S S S S T T T S S T S
T
S S S S S T T S T T S S
T
S S S S S T T S S T S S
T
S S S S S T S S S S T
T
S S
总结
以上只是其中两种有趣的编程语言的示例。虽然这些语言可能不符合传统编程语言的标准,但它们提供了独特的视角,有助于理解编程语言的设计和实现。