鱼C论坛

 找回密码
 立即注册
查看: 23|回复: 2

[学习笔记] 几种难到令人发指的编程语言

[复制链接]
发表于 3 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 中英文泡椒 于 2024-11-23 17:45 编辑

你觉得学习的C、C++ 或 Java 这些编程语言难吗,如果你觉得已经把常见的编程语言都“拿捏”了

那你可以看看这几种编程语言,它们会颠覆你对编程界的印象的

dd186f8e3be6a0e52b74f2ff1a21202.png (酝酿震惊情绪)

1、Malbolge

这门由Ben Olmstead于1998年创造的深奥编程语言(esoteric programming language), 被认为是“来自地狱的编程语言”。

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

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

以下为 Malbolge 程序输出 “Hello,world” 的代码:
(=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc

Malbolge.png


2、INTERCAL

全称“Compiler Language With No Pronounceable Acronym”,由唐·伍兹与詹姆斯·M·里昂于普林斯顿大学联手打造,诞生于1972年。

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

以下为 INTERCAL 程序输出“Hello,world”的代码:
DO ,1 <- #13
PLEASE DO ,1 SUB #1 <- #238
DO ,1 SUB #2 <- #108
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #194
DO ,1 SUB #7 <- #48PLEASE 
DO ,1 SUB #8 <- #22
DO ,1 SUB #9 <- #248
DO ,1 SUB #10 <- #168
DO ,1 SUB #11 <- #24
DO ,1 SUB #12 <- #16
DO ,1 SUB #13 <- #162
PLEASE READOUT ,1
PLEASE GIVE UP

INTERCAL.png


3.wenyan

作为文言文编程语言,wenyan严格遵循中国古典文学的语法与韵味,其字母体系仅限于繁体汉字与「」引号,

对于非母语的老外而言,这无疑也是一门相当噩梦的编程语言,然而,相较于这篇出现的编程语音,wenyan 已经不算难了。

它在传承古典文化的同时,也为编程世界增添了一抹独特的东方韵味。

开源地址:
https://github.com/wenyan-lang/wenyan

以下为 wenyan 程序输出 “Hello,world” 的代码:
吾有一數。曰三。名之曰「甲」。
為是「甲」遍。  
吾有一言。曰「「問天地好在。」」。書之。
云云。

wenyan.png


4.Brainfuck

Urban Müller于1993年推出的极简编程语言,以其仅8个基本命令的极简设计,

却能实现所有计算功能,成为编程语言中极简主义的代表。

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

>:指针右移一位
<:指针左移一位
+:当前指针指向的内存单元加 1
:当前指针指向的内存单元减 1
.:输出当前指针指向的单元内容(通常输出为 ASCII 字符)
,:从输入读取一个字符,存入当前指针指向的单元
[:如果当前单元值为 0,跳转到对应的 ]
]:如果当前单元值不为 0,跳回到对应的 [

以下为 Brainfuck 程序输出 “Hello,world” 的代码:
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

Brainfuck.png


5.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” 的代码:

COW.png


6.Whitespace

由Edwin Brady与Chris Morris于2002年共同发布,Whitespace以其颠覆性的设计理念震撼了编程界。

在这门语言中,所有的语法结构均由空白字符(空格、制表符、换行符)构成,

而传统的可见字符则被视为注释,也就是说普通的可见字符会被忽略,所有的语法都是由空白字符组成

Whitespace 的指令集中主要由以下几个部分组成,

通过不同组合的空格(Space)、制表符(Tab)和换行符(LF)来表达:

1.堆栈操作:进行数据的入栈、出栈、复制和交换等操作。
例如:[空格][空格] 表示将数值推入堆栈。

2.算术运算:支持基本的加、减、乘、除、取模等运算。
例如:[Tab][空格][加法] 表示对堆栈顶部的两个元素进行加法。

3.堆栈访问:用于访问和修改堆栈中数据。
例如:[Tab][换行][存储] 表示将值存储在特定位置。

4.流控制:支持条件跳转、无条件跳转以及循环控制。
例如:[空格][Tab][标记] 用于标记位置,以便之后跳转。

5.输入输出:支持输入输出操作,包括读取字符、数字输入和输出等。
例如:[Tab][空格][输出字符] 表示输出栈顶字符。

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

Whitespace.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 1 小时前 | 显示全部楼层
涨姿势了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 1 小时前 | 显示全部楼层
这是密文吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 21:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表