在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?
请每个回答只回答一个特征。
在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?
请每个回答只回答一个特征。
当前回答
因为我还没见过任何人提起它……RPG 2或3(报告程序生成器…又名火箭推进垃圾)是迄今为止我用过的最疯狂的语言。它几乎没有对程序流的控制(在文件顶部的Enter,在底部的Exit),并且编程语句是基于使用固定字体在特定列中定义的字符定义的(想想PUNCH CARDS!!)
要真正做到FUBAR,你必须尝试用DYL-280编程。它将RPG流程和逻辑与COBOL语法结合在一起。
在这里查找RPG: wikipedia.org /wiki/IBM_RPG
DYL-280的示例:http://99-bottles-of-beer.net/language-dyl-280-224.html
其他回答
Perl:
可以编写一个完全由标点符号组成的程序。
这是怎么回事?!
VB的设计者。NET做了一些非常愚蠢的事情来保持与Visual Basic 6.0的向后兼容性。当然,还不足以让它实际上是兼容的,只是足以让事情变得更加反直觉。但最糟糕的是,你不需要初始化变量,因为它们已经初始化了,除非在极少数情况下它们没有初始化。
For i As Integer = 1 To 3
Try
Dim k As Integer
k += 1
MsgBox(k)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
Next
这将输出1 2 3。
拥有一个你不能100%信任的功能不是一个功能,它是一个bug。说它是设计出来的,只会让它成为一个设计错误,而不是实现错误。
Haskell又说:
在Haskell中,你可以处理任意大小的文件,就好像它是一个简单的字符串。只有在实际使用字符串时,文件才会被读取。由于Haskell令人难以置信的懒惰,这样的程序将在恒定的空间中运行,而不管文件的大小:
main = interact (>>= \x -> if x == '\n' then "\r\n" else [x])
(这个程序将一个文件从stdin转换为stdout,并将LF替换为CRLF,交互函数将整个stdin输入到一个函数,并将输出移动到stdout。)
这种惰性也可能导致问题,因为如果关闭一个文件句柄,就不能完全shure,不管Haskell是否已经解析了其中的所有数据。
Python for循环中的else。
来自Python文档:
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print n, 'equals', x, '*', n/x
break
else:
# loop fell through without finding a factor
print n, 'is a prime number'
输出:
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3
在C语言中,
int x = 1;
int y = x++ + ++x;
printf("%d", y);
是模棱两可的,打印什么取决于编译器。编译器可以在计算++x之前或在语句的末尾存储x++的新值。