专栏名称: 程序员小灰
一群喜爱编程技术和算法的小仓鼠。
目录
相关文章推荐
程序员小灰  ·  疯了!下载 DeepSeek 最高判20年! ·  3 天前  
OSC开源社区  ·  DeepSeek-V3满血版在国产沐曦GPU ... ·  2 天前  
OSC开源社区  ·  《7天精通DeepSeek实操手册》 ·  3 天前  
程序员的那些事  ·  趣图:初五迎财神,初六送穷鬼 ·  3 天前  
程序员的那些事  ·  美国人下载 DeepSeek,最高判 20 ... ·  3 天前  
51好读  ›  专栏  ›  程序员小灰

这几个难到令人发指的编程语言,学会了算我输

程序员小灰  · 公众号  · 程序员  · 2024-11-16 11:55

主要观点总结

本文介绍了世界上最难理解和编写的几种编程语言,包括Malbolge、INTERCAL、Brainfuck、COW、Whitespace以及wenyan文言文编程语言。文章展示了这些语言输出“Hello,world”的代码实例。

关键观点总结

关键观点1: 介绍Malbolge

Malbolge是一种三进制系统编程语言,只有三个操作符,代码自我修复且执行过程具有随机性,被认为是世界上最难理解和编写的编程语言之一。

关键观点2: 介绍INTERCAL

INTERCAL是一种故意设计得难以理解和使用的编程语言,其创造初衷是为了讽刺当时存在的各种编程语言。

关键观点3: 介绍Brainfuck

Brainfuck是一种极简编程语言,只有8个基本命令,尽管命令少而简单,但能完成所有计算任务,是编程语言中极简主义的代表。

关键观点4: 介绍COW

COW是一种使用牛的叫声作为指令核心的编程语言,其设计目标主要是娱乐性和挑战编程极限。

关键观点5: 介绍Whitespace

Whitespace是一种由空白字符组成的编程语言,所有语法都由空格、制表符和换行符控制,可见字符被视为注释。

关键观点6: 介绍wenyan

wenyan是一种严格遵循中国古典文学语法和语调的语言,其字母只包含繁体汉字和引号,对外国人来说可能较难理解。


正文

如果你认为学习 C、C++ 或 Java 这些编程语言很难,那只能说太年轻了,这个世界上还存在着很多入门即放弃的编程语言。


1、Malbolge

Malbolge是一种深奥编程语言(esoteric programming language),由 Ben Olmstead 在 1998年设计,被认为是世界上最难理解和编写的编程语言之一。

Malbolge 语言采用三进制系统,只有三个操作符,并且代码在运行时会自我修复,这使得它非常难以理解和调试。

Malbolge 的执行过程具有随机性,每次运行都可能产生不同的结果。

Malbolge 被认为是“来自地狱的编程语言”。

以下为 Malbolge 程序输出 “Hello,world” 的代码:

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


2、INTERCAL

INTERCAL 全称为 “Compiler Language With No Pronounceable Acronym”, 是一种故意设计得难以理解和使用的编程语言

INTERCAL 语言由唐·伍兹(Don Woods)和詹姆斯·M·里昂(James M. Lyon)在 1972 年于普林斯顿大学创造。

INTERCAL 的创造初衷是为了讽刺当时存在的各种编程语言,以及 20 世纪 60 年代提出的语言结构和符号

以下为 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 READOUT ,1PLEASE GIVE UP

3、Brainfuck

Brainfuck 是一种极简编程语言,由 Urban Müller 在 1993 年设计,初衷是创建一种尽可能小但又 Turing 完备的编程语言。

Brainfuck 只有 8 个基本命令,尽管它的命令少而简单,但能完成所有计算任务,这也让 Brainfuck 成为了编程语言中极简主义的代表。

Brainfuck 通过操作一个字节数组(通常为 30,000 个元素)来进行编程,这些命令主要包括:

  • > :指针右移一位

  • < :指针左移一位

  • + :当前指针指向的内存单元加 1

  • - :当前指针指向的内存单元减 1

  • . :输出当前指针指向的单元内容(通常输出为 ASCII 字符)

  • , :从输入读取一个字符,存入当前指针指向的单元

  • [ :如果当前单元值为 0,跳转到对应的 ]

  • ] :如果当前单元值不为 0,跳回到对应的 [

以下为 Brainfuck 程序输出 “Hello,world” 的代码:

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

4、COW

COW 由 Sean Heber 于 2003 年设计。

COW 的 特别之处在于仅使用 “moo” 作为指令核心,灵感来源于牛的叫声,十分符合恶搞和极简主义的风格。

COW 的设计目标显然不是实用性,而是娱乐性和挑战编程极限。

COW 的指令集总共包含 12 条指令,其中大多数都是由单词 “moo” 组合而成的变种:

  • moo :设置当前内存单元的值为 0。

  • mOo :将当前内存单元的值自增 1。

  • moO :将当前内存单元的值自减 1。

  • mOO :输出当前内存单元的 ASCII 值。

  • OOO :接收一个字符的输入并将其 ASCII 值存入当前单元。

  • Ooo :将指针右移到下一个内存单元。

  • oOo :将指针左移到上一个内存单元。

  • OOo :如果当前内存单元的值为 0,跳转到下一个 moo 指令。

  • MOO :程序终止。

以下为 COW 程序输出 “Hello,world” 的代码:

MoO MoO MoO MoO MoO MoO MoO MoO MOO moO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO moO MoO MoO MoO MoO moO MoO MoO MoO MoO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO mOo mOo mOo mOo mOo MOo moo moO moO moO moO Moo moO MOO mOo MoO moO MOo moo mOo MOo MOo MOo Moo MoO MoO  MoO MoO MoO MoO MoO Moo Moo MoO MoO MoO Moo MMM mOo mOo mOo MoO MoO MoO MoO Moo moO Moo MOO moO moO MOo mOo mOo MOo moo moO moO MoO  MoO MoO MoO MoO MoO MoO MoO Moo MMM MMM Moo MoO MoO MoO Moo MMM MOo MOo MOo Moo MOo MOo MOo MOo MOo MOo MOo MOo Moo mOo MoO Moo

5、Whitespace

Whitespace 由 Edwin Brady 和 Chris Morris 于 2002 年设计发布。

Whitespace 的独特之处在于, 所有的语法都是由空白字符组成 ,包括空格、制表符和换行符,而普通的可见字符会被忽略,也就是说在代码中,所有可见字符都被视为注释,而程序的核心逻辑完全由不可见字符控制。

Whitespace 的指令集中主要由以下几个部分组成,通过不同组合的空格(Space)、制表符(Tab)和换行符(LF)来表达:

  1. 堆栈操作 :进行数据的入栈、出栈、复制和交换等操作。

  • 例如: [空格][空格] 表示将数值推入堆栈。

  • 算术运算 :支持基本的加、减、乘、除、取模等运算。

    • 例如: [Tab][空格][加法] 表示对堆栈顶部的两个元素进行加法。

  • 堆栈访问 :用于访问和修改堆栈中数据。

    • 例如: [Tab][换行][存储] 表示将值存储在特定位置。

  • 流控制 :支持条件跳转、无条件跳转以及循环控制。

    • 例如: [空格][Tab][标记] 用于标记位置,以便之后跳转。

  • 输入输出 :支持输入输出操作,包括读取字符、数字输入和输出等。

    • 例如: [Tab][空格][输出字符] 表示输出栈顶字符。

    在下面的代码中,每个空格、制表符或换行符前面分别有一个注释 “S”、 T 或 “L”:

    S S S T  S S T  S S S L






    请到「今天看啥」查看全文