你想要发明一个编程语言,你希望它是:

XiLaiTL大约 5 分钟

你想要发明一个编程语言,你希望它是:

□ 函数式 □ 声明式 □ 面向对象 □ 面向过程 □ 栈式编程 □ 多范式

○ 惰性求值 ○ 及早求值

○ 静态类型 ○ 动态类型

○ 函数求值无副作用 ○ 函数结果可能受外界影响

□ 不健康的宏扩展 □ 可视化编程

○ 初学者易上手 ○ 对非程序员友好 ○ 难用到无法理解

你倾向于认为:

□ 编程语言难在语法学习上

□ 不需要程序员来考虑垃圾回收

□ 电脑内存是无限大的

□ 你认为没人需要:

□ 并发 □ REPL □ 调试器 □ IDE □ I/O

□ 用其他语言与你的语言相互调用

□ 世界上大家都只用 ASCII

□ 开发成大型项目很轻松

□ 程序员学一门编程语言很简单啊

□ 程序员学一个专用的 IDE 很简单啊

□ 程序员乐意写一堆脚手架文件

□ 把一些行为设置成 ”未定义行为“ 可以让程序员不去依赖它们

□ "远距离的鬼魅行为"(这是一个物理学概念:https://arxiv.org/abs/1303.0614open in new window)让编程更有乐趣

不幸的是,你的语言缺少:

□ 容易理解的语法 □ 分号 □ 有意义的空白符 □ 宏 □ 隐式类型转换 □ goto

□ 异常 □ 闭包 □ 尾递归 □ 协程 □ 反射 □ 分型 □ 多继承

□ 操作符重载 □ 代数类型 □ 递归类型 □ 多态 □ 协变数组类型

□ monads □ 依赖类型 □ 中缀操作符 □ 嵌套注释 □ 跨行字符串

□ 正则 □ 传值调用 □ 传名调用 □ 传引用调用 □ call/cc

你在你的编程语言中引入了自己的编程哲学:

□ 程序员不需要理解范畴论就可以写“hello world”

□ 程序员写完“hello world”后不会因此患上肌肉过劳损

□ 具有重大意义的程序是用它实现了自己的编译器

□ 具有重大意义的程序不仅仅是用它实现了自己的编译器

□ 没有语言规范

□ 语言规范就是本身的实现

□ 本身的实现是闭源的

□ 实现是用专利保护的

□ 不是由你实现的

□ 类型系统是不完备的

□ 你的语言解释时具有二义性

□ 解释执行的语言永远无法在速度上超越 C

□ 编译后的程序永远没有“可扩展性“

□ 一个能够理解英语的编译器是”AI完备的“

□ 你的语言依赖的优化方法是不可能实现的

□ 世界上只有不到 100 个人足够聪明到能够使用你的语言

□ 你的语言实现中:

____需要指数时间复杂度

____是无法预料的

你的实现实际上有漏洞,因为:

□ CPU不是按你想象中的那样运行的

□ 内存不是按你想象中的那样运行的

□ 虚拟机不是按你想象中的那样运行的

□ 编译器”不是“按你想象中的那样运行的

□ 编译器”不能“按你想象中的那样运行

□ 你用掷骰子的方法解决了 shift-reduce 冲突

□ 你需要在你的 runtime 加入编译器

□ 你需要在编译时启动 runtime

□ 你的编译器报错让人无法理解

□ 危险操作只作为 warning

□ 你只需要滑稽地瞪一眼编译器就会崩溃

□ 你只需要滑稽地瞪一眼虚拟机就会崩溃

□ 你似乎不需要理解基本的优化技术

□ 你似乎不需要理解基本的系统编程

□ 你似乎不需要理解指针

□ 你似乎不需要理解函数

额外地,根据市场反馈,你会发现以下问题:

□ 你的语言无法满足生产力的提高

□ 你的语言无法满足易用性

□ 你公然地在你的跑分上作弊:

□ 使用图形计算、模拟器、加密算法的跑分时,只是在用你手写的汇编操作中强行调用了外部函数接口而已。

□ 进行字符串操作时,你不过是在调用 PCRE 而已。

□ 进行矩阵数学计算时,你不过是在调用 BLAS 而已。

□ 并且没人认为你的实现能快过:

□ 汇编 □ C □ Fortran □ Java □ Ruby □ Prolog

□ 你竟然毫无理由地拒绝正统的编程语言理论

□ 你竟然毫无理由地拒绝系统编程

□ 你竟然毫无理由地拒绝算法理论

□ 你竟然无理由地拒绝计算机科学理论

审视一下你的编程语言生态,你表示:

○ 你的复杂的示例代码可以写成一行,这一行是:_________

○ 我们已经有了一个不安全的声明式编程语言

○ 我们已经有了一个安全的命令式面向对象语言

○ 我们已经有了一个安全的静态及早求值函数式语言

○ 你重新发明了 Lisp 但是效果糟糕

○ 你重新发明了 Javascript 但是效果糟糕

○ 你重新发明了 Java 但是效果糟糕

○ 你重新发明了 C++ 但是效果糟糕

○ 你重新发明了 PHP 但是效果糟糕

○ 你重新发明了 PHP 而且效果拔群,但是你拿不出理由来

○ 你重新发明了 Brainfuck 但是一点都不好玩

总之,我认为你:

○ 你有一些新奇的想法,但是并不能实现

○ 这是一个垃圾语言,你应当为发明它而羞愧

○ 当你使用你的进行编程时,是对你发明它的一种惩罚

本文由 @江小傑open in new window 翻译,原文链接:http://colinm.org/language_checklist.htmlopen in new window

上次编辑于:
贡献者: XiLaiTL