全文共2447字,预计学习时长7分钟

图源:unsplash

当大家都在谈论c、c++、Java、Python时,还有些大神级语言“深藏不漏”,地狱难度的它们对于大多数开发人员来说几乎是无法理解的。这些语言被称为深奥的编程语言(或esolang)。

设计esolang的目的不在于普通软件开发,而是一个概念验证,或者仅仅为了有趣。以下是五种最难的深奥编程语言,我试着用这些语言分别执行‘Hello World!’程序。

Malbolge

Malbolge是1998年由Ben Olmstead发明的,被认为是最复杂的编程语言。据说,Malbolge编程语言的作者从来没有用该语言写过任何程序。Olmstead发明该语言近两年后Malbolge才有的hello world代码。

以下是在Malbolge中打印‘Hello World!’的代码片段。

(=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(: 8dc

输出如下:

使用 tio.run 执行的代码

Brainfuck

1993年,Urban Muller开发了Brainfuck,用于程序员娱乐玩耍。从名字本身就可看出,这门语言对所有程序员来说应该是极难理解的。整个语言只由8个不同的字符组成,用于实现所有代码。Muller开发的原始编译器只用了296个字节。

以下是在Brainfuck中打印‘Hello World!’的代码片段。

++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++ ..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

输出如下:

COW

COW是由Sean Heber在2003年开发的。当你看到代码时,就会明白为什么这门语言会被命名为“COW”。

COW在难度上与Brainfuck类似,但多了4个命令,也就是说,整个语言中有12个命令。以下是在COW中打印‘Hello, World!’的代码片段。

MoO MoOMoO MoO MoO MoO MoO MoO MOO moO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO moO MoOMoO MoO MoO moO MoO MoO MoO MoO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO mOo mOo mOomOo mOo MOo moo moO moO moO moO Moo moO MOO mOo MoO moO MOo moo mOo MOo MOo MOoMoo MoO MoO  MoO MoO MoO MoO MoO Moo Moo MoO MoO MoOMoo MMM mOo mOo mOo MoO MoO MoO MoO Moo moO Moo MOO moO moO MOo mOo mOo MOo moomoO moO MoO  MoO MoO MoO MoO MoO MoO MoO Moo MMM MMMMoo MoO MoO MoO Moo MMM MOo MOo MOo Moo MOo MOo MOo MOo MOo MOo MOo MOo Moo mOoMoO Moo

输出如下:

INTERCAL

Jim Lyon和Don Woods在1972年开发了INTERCAL,它模仿了众多编程语言。最初它的名字是“无发音缩写的编译器语言”。

INTERCAL的许多功能设计让程序员感到沮丧。比如,它使用了“PLEASE”等修饰语。如果代码中不经常使用“PLEASE”,编译器会报错,认为该程序“不够礼貌”。但如果“PLEASE”使用次数过多,编译器也会报错,称其“过分礼貌”。

以下是在INTERCAL中打印“Hello, World!”的代码片段。

DO ,1 <- #13PLEASE DO ,1 SUB #1 <- #238DO ,1 SUB #2 <- #108DO ,1 SUB #3 <- #112DO ,1 SUB #4 <- #0DO ,1 SUB #5 <- #64DO ,1 SUB #6 <- #194DO ,1 SUB #7 <- #48PLEASE DO ,1 SUB #8 <- #22DO ,1 SUB #9 <- #248DO ,1 SUB #10 <- #168DO ,1 SUB #11 <- #24DO ,1 SUB #12 <- #16DO ,1 SUB #13 <- #162PLEASE READ OUT ,1PLEASE GIVE UP

输出如下:

Whitespace

Whitespace是由Chris Morris和Edwin Brady在杜伦大学开发的,于2003年愚人节发布。整个语言都依赖于space,tab和linefeed(空格、制表符和换行符)来编写程序。Whitespace 解释器忽略非Whitespace字符,并将其视为代码注释。

以下是打印‘Hello World!’的代码片段。在下面的代码中,每个空格、制表符或换行符前面分别有注释‘S’、‘T’或‘L’。

S S S T    S S T       SS S LT             LS S S S S T             T             S S T       S T          LT             LS S S S S T             T             S T          T             S S LT             LS S S S S T             T             S T          T             S S LT             LS S S S S T             T             S T          T             T             T             LT             LS S S S S T             S T          T             SS LT             LS S S S S T             S S S S S LT             LS S S S S T             T             T             ST          T             T             LT             LS S S S S T             T             S T          T             T             T             LT             LS S S S S T             T             T             SS T       S LT             LS S S S S T             T             S T          T             S S LT             LS S S S S T             T             S S T       S S LT             LS S S S S T             S S S S TLT             LS S LLL

输出如下:

类似的深奥编程语言还有很多,真无法想象这些程序员无聊时都做了些什么打发时间。

推荐阅读专题

留言点赞发个朋友圈

我们一起分享AI学习与发展的干货

编译组:卢艳红、齐欣

相关链接:

https://levelup.gitconnected.com/5-most-difficult-programming-languages-in-the-world-549c3cf91b23

如转载,请后台留言,遵守转载规范

推荐文章阅读

ACL2018论文集50篇解读

EMNLP2017论文集28篇论文解读

2018年AI三大顶会中国学术成果全链接

ACL2017论文集:34篇解读干货全在这里

10篇AAAI2017经典论文回顾

长按识别二维码可添加关注

读芯君爱你

“Hello World”居然有这么鬼畜的打开方式?!相关推荐

  1. Java循环删除集合多个元素的正确打开方式

    首先说下不正确的打开方式: 第一:使用for循环删除集合的元素,示例代码如下 1 ArrayList<String> list = new ArrayList<String>( ...

  2. android删除打开方式,Android 打开方式选定后默认了改不回来?解决方法(三星s7为例)...

    Android 打开方式选定后默认了改不回来?解决方法(三星s7为例) 刚刚在测试东西,打开一个gif图,然后我故意选择用支付宝打开,然后...支付宝当然不支持,我觉得第二次打开它应该还会问我,没想到 ...

  3. 如何将matlab设置为默认打开方式,如何设置默认打开方式

    记得当时打开m文件时,右键选择打开方式的时候,由于没有MATLAB选项可供选择,就通过浏览找到matlab的执行文件,勾选了始终使用选择的程序打开这种文件,结果出来的默认打开方式居然是Internet ...

  4. 工具“正确”打开方式——如何用notion来谈恋爱

    老天爷,谁也想不到我的notion打开方式居然会是如此.之前一看全英文界面,还要慢吞吞的网速,直接就被我否决了. 结果,真香. 今天简单说一说如何用notion来谈恋爱 昨天又吵架了,想着如此内耗也不 ...

  5. w7打开计算机无删除键,Win7右键菜单无用的打开方式选项怎么删除?

    Win7右键菜单无用的打开方式选项怎么删除?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Win7右键菜单无用的打开方 ...

  6. linux firefox 显示PDF,修正Ubuntu下Firefox对未知文件的默认打开方式

    一般来说Firefox在下载文件的时候,会判断文件的后缀名,并且给予相对应的打开方式,比如这样: 但是有时候,即使这个后缀名很明显,Firefox也会给它标记一个"未知"的结果,在 ...

  7. codeforces的正确打开方式

    转载自:https://www.cnblogs.com/muzu/p/7616746.html codeforces的正确打开方式 1.背景 可能很多人都久闻codeforces网站的大名,却苦于各种 ...

  8. 关于win10应用打开方式清理

    win10使用时间一长,打开应用选择打开方式时居然发现里面有很多曾经用过但已经卸载的应用,如图: 一方面这会拖慢电脑速度,另一方面对于轻微强迫症患者来说这简直无法忍受,本人参考了网上一些方法,但都不太 ...

  9. 【转】无法将notepad++添加到打开方式列表中的解决办法

    问题:想要设置notepad++为默认打开方式,却发现在点击browse找到notepad++.exe点击打开后没有在打开方式列表中找到notepad++.  原因:更新程序版本后程序的路径发生了变动 ...

最新文章

  1. 华月互网获得2012全国十大IDC服务商
  2. excel表中判断A列与B列内容是否相同,相同的话在C列按条件输出!
  3. [书目20140322]如何管理软件企业(第2版)
  4. 安装flume1.5
  5. android sse 人脸识别,基于Android Camera2之openCamera 流程
  6. SkyCaiji蓝天数据采集发布系统源码v2.3
  7. 比反射更快:委托 第3部分
  8. aws rds监控慢sql_AWS RDS SQL Server恢复模型,备份和还原
  9. 李宏毅机器学习——梯度下降
  10. finedb(内置的HSQL数据库)迁移数据到MySQL
  11. iOS 开发中遇到的问题
  12. Word新建自己的样式
  13. 三面,字节跳动电商Java面经(已过)
  14. LDC 1.14.0 发布,高性能 dlang 编译器
  15. 多智能体强化学习-G2ANet
  16. MacOS Ventura 13.1 (22C65) 正式版带 OC 0.8.7 and winPE 双分区原版黑苹果镜像
  17. 移动CM201-2机顶盒系统设置apk
  18. 高通量测序与生物信息学面临的挑战
  19. DCMTK、ITK、VTK读取dicom信息
  20. 【男宝宝起名字】2019年7月出生侯姓男宝宝,钧字辈,起个什么名字好听?

热门文章

  1. R语言设置随机种子set.seed()函数使用
  2. IDEA连接远程服务器实现项目上传部署
  3. 教你如何选购一款适合自己的数码相机
  4. 慧通编程入门课程 - 3色彩斑斓
  5. 优先队列(堆)详细整理学习
  6. 【树莓派】CSI摄像头简单配置
  7. java 父窗口关闭_javascrpt控制父窗口关闭,子窗口也关闭(转)
  8. 爱上定焦镜头的6个理由
  9. 【MySQL】Python3 MySQL数据库的基本操作
  10. css3圆角每个值的意思,文本框默认有字鼠标移动字体消失