当前位置:首页 > 高端制造 > 正文

盘点世界上奇怪的 6 种编程语言

本文最初发布于LevelUpCoding博客,经原作者授权由InfoQ中文站翻译并分享。这些编程语言让我知道,不是世界上的每一件事都必须有用,也不是我们个人做的每一件事都应该有用,希望你觉得这是篇有趣的文章。以下是这6种有史以来最怪异、最不切实际的语言。1.///这是谷歌上最难搜索的语言之一,绝对是...

本文最初发布于LevelUpCoding博客,经原作者授权由InfoQ中文站翻译并分享。这些编程语言让我知道,不是世界上的每一件事都必须有用,也不是我们个人做的每一件事都应该有用,希望你觉得这是篇有趣......

本文最初发布于LevelUpCoding博客,经原作者授权由InfoQ中文站翻译并分享。

这些编程语言让我知道,不是世界上的每一件事都必须有用,也不是我们个人做的每一件事都应该有用,希望你觉得这是篇有趣的文章。

以下是这6种有史以来最怪异、最不切实际的语言。

1.///

这是谷歌上最难搜索的语言之一,绝对是我的最爱。///是一种极简主义语言,它只包含一个操作——/source/replacement/形式的字符串替换。这种语言非常有限,但是一些聪明的程序员能够将字符串替换操作转换为完全可以工作的程序,循环并输出数据。这是一个简单的“Hello,world!”程序:

/world!world!/Hello,/world!world!world!

复制代码

甚至还有一个用///编写的复杂程序。以下是斐波那契序列的实现代码:

/!/\/.\\0\/,\\,0,\\,1\/\/.\\1\/,\\,0\/\/,\\,\/.\/\/+\\+\/=\\=.\\1-\/\/=\\=\/+\\+\//!!!!!!!!!/.///+\+///-/\\\///0/1//1/*/++.1

复制代码

2.Glass

Glass是由GregorRichards开发的一种深奥的编程语言。它将非常不直观的后缀表示法与重量级的面向对象结合在一起,需要对主堆栈及面向对象结构做大量的处理。其他语言没有这样实现的,这使得它非常独特。

下面是“99瓶啤酒”程序的示例代码:

{B[b99^]}{P[(c__)oO!aA!][poo.?][b(_m)1=,(_x)0(_m)*ae.?=(_y)1=/(_x)"Nomore"oo.?(_x)0=(_y)0=\/(_y)(_m)*o(on).?(_y)0=\"bottle"oo.?(_x)1(_m)*ae.?=/(_x)^(_x)0=\"s"oo.?]}{C[(c__)oO!aA!sS!pP!][gn*][xn1=,][dnn*1as.?=][vn*pb.?"ofbeeronthewall,\n"pp.?n*pb.?qe"ofbeer,\n"pp.?"Takeonedown,passitaround\n"pp.?ln*1as.?=l*pb.?wu"ofbeeronthewall.\n\n"pp.?]}{M[moO!cC!bB!bb.?cx.?fcg.?=/fcv.?cd.?fcg.?=\]}

复制代码

3.Chicken

Chicken不仅是语言的名称,还是语言中唯一允许的关键字!重复次数和行数决定了所要执行的操作码。下面是一个示例程序。你能猜到它的作用吗?

虽然代码很多,但它只是打印“ChickenPower!”感兴趣的话,可以在这里试一下。

chickenchickenchickenchickenchickenchickenchickenchickenchickenchickenchickenchickenchickenchickenchickenchickenchicken

复制代码

4.Befunge

有趣的事实:Befunge被认为是第一种基于ASCII的二维通用编程语言。

它是一种二维编程语言。代码放在固定大小的代码区里,代码区中的每个单元格都可以保存代码或数据,程序可以用代码或数据替换其中的任何一个单元格。

解释器从左上角单元格开始,不断向右执行。你可以用特定的方向指令来控制解释器的方向。例如,下面是一个无限循环:

v^

复制代码

下面是一个“Hello,world!”:

0"!dlroW,olleH":#,_@

复制代码

阶乘也很简单:

:1-:vv*_$.@^_gt;\:^

复制代码

5.Piet

Piet是一种编程语言,使用这种语言编写的程序看起来像是抽象画的位图。这种语言是以彼埃·蒙德里安(PietMondrian)的名字命名的。Piet程序的基本构建块是色块,它支持20种不同的颜色,有一些实现还支持更多的颜色。编译是由一个“指针”引导的,它在图像周围移动,从一个连续的彩色区域移动到下一个彩色区域。这里提供了多个实例。


使用Piet编写的“Helloworld!”程序

6.ShakespeareProgrammingLanguage(SPL)

程序开头的角色列表声明了多个堆栈,它们的名字很自然,比如“Romeo”和“Juliet”。这些角色开始相互对话,操纵彼此最上面的值,相互压入和弹出,进行I/O操作。角色之间也可以相互提问,以条件语句的形式。总的来说,该编程模型与汇编语言非常相似,但要冗长得多。

下面是一个迷你示例,大致上展示了简化版的HelloWorld。

,,,theflattererofAndersenInsultingA/:Hamlet':TheinsultingofRomeo.[EnterHamletandRomeo]Hamlet:Youlyingstupidfatherlesssmellycoward!Youareasstupidasthedifferencebetweenarichbraveheroandthyself!Speakyourmind![ExitRomeo]SceneII:ThepraisingofJuliet.[EnterJuliet]Hamlet:ThouartassweetasthesumofthesumofRomeoandhishorseandhisblackcat!Speakthymind!Listentoyourheart!Juliet:AmIbetterthantheproductofamiserableliarandabeautifulflower?Hamlet:Ifso,letusreturntoszeneI.[Exeunt]

复制代码

最新文章