经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 其他 » 业界动态 » 查看文章
盘点那些沙雕的编程语言
来源:w3xue  时间:2019/9/16 9:26:56  对本文有异议

第一次遇到这些语言时,我下意识觉得有些程序员可能工作不饱和。其实这些语言中有一些是为了特定目的而创建的,另一些则是在于挑战和娱乐。总之,非常羡慕这些又聪明又有时间的人了!我们来看看这些编程语言有多奇怪 。

Brainfuck

Brainfuck是一种极小化的程序语言,它是由Urban Müller在1993年创造的。由于fuck在英语中是脏话,这种语言有时被称为Brainf*ck或Brainf***,或被简称为BF。,目标是为Amiga OS 2.0创建一个图灵完备的语言,他可以为此编写有史以来最小的编译器。他的编译器大小为240字节。(虽然他后来对此进行了改进 - 他曾一度告诉我他已经设法将它降到200字节以下。)

Brainfuck程序有一个隐含的字节指针,称为“指针”,它可以在30000字节的数组中自由移动,最初都设置为零。指针本身被初始化为指向此数组的开头。

Brainfuck编程语言由八个命令组成,每个命令都表示为一个字符。

  • > 增加指针。

  • < 减少指针。

  • + 递增指针处的字节。

  • - 减少指针处的字节。

  • 。 输出指针处的字节。

  • , 输入一个字节并将其存储在指针的字节中。

  • [ 如果指针处的字节为零,则跳过匹配]。

  • ] 向后跳转到匹配[ 除非指针处的字节为零。

Brainfuck命令的语义也可以用C语言简洁地表达,如下所示(假设p先前已被定义为char *):

  • > 可以转变为++p;

  • < 可以转变为--p;

  • + 可以转变为++*p;

  • - 可以转变为--*p;

  • . 可以转变为putchar(*p);

  • , 可以转变为*p = getchar();

  • [ 可以转变为while (*p) {

  • ] 可以转变为}

下面来瞅瞅最简单的Hello world, 你能看懂吗?

1.jpg

Ook!

OOK!是一种为红毛猩猩设计的编程语言。OOK!与众所周知的深奥语言BrainF ***基本上是同构的 ,但语法元素更少。也不多说了,来看看Hello world

2.jpg

reMorse

reMorse是一种看似莫尔斯电码的语言。这种简单而富有挑战性的语言很容易让我们联想到潜艇和电报。 这种语言还是挺复杂的。 比如以下的HelloWorld例子都可以看出,连作者都懒得写完 Hello World 的代码,你就知道 reMorse 是一个多麻烦的语言了:

3.jpg

Malbolge

这门编程语言绝了,根据牛的叫声发明,写代码时学牛“哞。在设计编程语言时,追求易于理解,是绝大部分设计师的追求。可是,偏偏有人反其道行之。Malbolge就是其中的佼佼者。它追求的,就是尽量让你看不懂,最好能把你看懵圈了。使用Malbolge写“hello world”程序,代码是这个样子的:

4.jpg

cow语言

这是一门神奇的语言,就好像“两只老虎,两只老虎,跑得快”一样,没人能正常的读出这个歌词。当你在编写cow代码时,你的内心,就像一头牛一个,哞哞哞叫个不停。因为,cow语言也是模仿牛的叫声编程的,写hello world程序是这个样子的(让我想起了暗黑2的奶牛关):

5.jpg

INTERCAI

1972年,为了讽刺其他编程语言,唐·伍兹和詹姆斯·M.里昂两个普林斯顿大学的学生,发明了INTERCAL语言,这门语言不仅讽刺了当时的其他编程语言,而且对20世纪60年代拟定的语言结构和注释进行了冷嘲热讽。用INTERCAI写“hello world”,是这个样子的:

6.jpg

Whitespace

十分不幸,这种编程语言所做的正如其名:Whitespace 程序是用空格(whitespace)编写的。 Whitespace 官网上有对该语言使用方式的详细描述。

大多数现代编程语言并不考虑空格字符(空格,制表符以及换行符),忽略它们,就好像它们不存在一样。 我们认为,这对这些十分友好的字符成员十分不公正。是否因为它们是隐形的,就应该被忽略呢? Whitespace 就是一种想要纠正这种不公平的编程语言。在 Whitespace 语言里,任何非空白字符都是被忽略的,只能使用空格、制表符和换行符来编写程序。以下是用 Whitespace 编写的 Hello World :

7.jpg

Shakespeare

莎士比亚(Shakespeare)正如其名,是以伟大剧作家莎士比亚的作品为基础的编程语言。在莎士比亚语言中,每个程序都有一个标题、幕、场景和角色,用来组合成精彩的源代码,让它们读起来很有趣。用莎士比亚语言编写的 “Hello World”是这样子的 :

8.jpg

Piet

欣赏艺术的人一定会喜欢 Piet 这门编程语言。受到抽象艺术家彼埃·蒙德里安(Piet Mondrian)的启发,Piet 是一种将编程转换成抽象几何绘画的语言。程序由20种不同的颜色组成,然后由编译器根据十六进制值读取运行。Piet编写的HelloWorld例子是这样子的:

9.gif

Asciidots

Asciidots 语言力求看起来像艺术,以下是几个 Asciidots 示例程序,是不是挺艺术的。

10.jpg

Omgrofl

现在社交网络上很多简写词汇,比如 lol, omg, brb, wtf 之类的。所以有人就觉得用这些互联网缩略词作为命令是件很有趣的事,于是这门语言诞生了。一个典型的 Omgrofl 程序看起来就像十几岁青少年间的对话,所有的变量都是 lol, lool, loool 等形式。以下是Hello World的 Omgrofl 语言版本:

11.jpg

GolfScript

这门语言旨在实现简单易写,对于复杂的堆栈操作很有用。

12.jpg

JSFuck

这门语言有点厉害了,代码使用的字符集只有六个。它是一种弱类型编程语言,允许评估任何类型的表达式。而且由于它是 JavaScript 的一个子集,因此可以在 JavaScript 的引擎上运行。以下是我在Nodejs上运行的console.log(1)的JSFuck代码:

134.jpg

Velato

Velato 使用 MIDI 文件作为源代码,音乐的模式决定程序命令。以下是Hello World的 Velato 语言版本:

14.jpg

Whenever

没有哪个程序员不喜欢这么一种语言,当你给出计算机一个指令时,计算机就会根据你的要求去执行。但是 Whenever 似乎并不是这样的,它更像是你的宠物猫,它的代码并不是顺序执行的。它们更像是一种待办事项清单,它的设计原则是:

  • 代码总会被执行,但执行顺序和指定顺序无关

  • 不需要变量更不需要数据结构

好奇这种语言究竟有什么用?

Grass

Grass 是一种函数式编程语言,只使用字符「W」「w」和「v」。因此,Grass 中的程序被认为看起来像「草」的 ASCII 艺术。以下是一个在 Grass 中打印「W」的程序:

wWWwwww


 友情链接: NPS